]> scripts.mit.edu Git - autoinstalls/wordpress.git/commitdiff
WordPress 3.4 wordpress-3.4
authorEdward Z. Yang <ezyang@mit.edu>
Wed, 20 Jun 2012 03:36:14 +0000 (23:36 -0400)
committerEdward Z. Yang <ezyang@mit.edu>
Wed, 20 Jun 2012 03:36:14 +0000 (23:36 -0400)
Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
528 files changed:
index.php
license.txt
readme.html
wp-activate.php
wp-admin/about.php
wp-admin/admin-ajax.php
wp-admin/admin-functions.php
wp-admin/admin-header.php
wp-admin/admin-post.php
wp-admin/admin.php
wp-admin/async-upload.php
wp-admin/comment.php
wp-admin/credits.php
wp-admin/css/colors-classic.css
wp-admin/css/colors-classic.dev.css
wp-admin/css/colors-fresh.css
wp-admin/css/colors-fresh.dev.css
wp-admin/css/customize-controls-rtl.css [new file with mode: 0644]
wp-admin/css/customize-controls-rtl.dev.css [new file with mode: 0644]
wp-admin/css/customize-controls.css [new file with mode: 0644]
wp-admin/css/customize-controls.dev.css [new file with mode: 0644]
wp-admin/css/farbtastic.css
wp-admin/css/ie-rtl.css
wp-admin/css/ie-rtl.dev.css
wp-admin/css/ie.css
wp-admin/css/ie.dev.css
wp-admin/css/install.css
wp-admin/css/install.dev.css
wp-admin/css/media-rtl.css
wp-admin/css/media.css
wp-admin/css/media.dev.css
wp-admin/css/wp-admin-rtl.css
wp-admin/css/wp-admin-rtl.dev.css
wp-admin/css/wp-admin.css
wp-admin/css/wp-admin.dev.css
wp-admin/custom-background.php
wp-admin/custom-header.php
wp-admin/customize.php [new file with mode: 0644]
wp-admin/edit-comments.php
wp-admin/edit-form-advanced.php
wp-admin/edit-form-comment.php
wp-admin/edit-link-form.php
wp-admin/edit-tag-form.php
wp-admin/edit-tags.php
wp-admin/edit.php
wp-admin/export.php
wp-admin/freedoms.php
wp-admin/images/gray-star.png [deleted file]
wp-admin/images/icons32-2x.png [new file with mode: 0644]
wp-admin/images/icons32-vs-2x.png [new file with mode: 0644]
wp-admin/images/logo-login.png [deleted file]
wp-admin/images/menu-2x.png [new file with mode: 0644]
wp-admin/images/menu.png
wp-admin/images/press-this.png
wp-admin/images/screenshots/admin-flyouts.png [deleted file]
wp-admin/images/screenshots/captions-1.png [new file with mode: 0644]
wp-admin/images/screenshots/captions-2.png [new file with mode: 0644]
wp-admin/images/screenshots/coediting.png [deleted file]
wp-admin/images/screenshots/drag-and-drop.png [deleted file]
wp-admin/images/screenshots/flex-header-1.png [new file with mode: 0644]
wp-admin/images/screenshots/flex-header-2.png [new file with mode: 0644]
wp-admin/images/screenshots/flex-header-3.png [new file with mode: 0644]
wp-admin/images/screenshots/flex-header-media-library.png [new file with mode: 0644]
wp-admin/images/screenshots/help-screen.png [deleted file]
wp-admin/images/screenshots/media-icon.png [deleted file]
wp-admin/images/screenshots/new-feature-pointer.png [deleted file]
wp-admin/images/screenshots/theme-customizer.png [new file with mode: 0644]
wp-admin/images/screenshots/twitter-embed-1.png [new file with mode: 0644]
wp-admin/images/screenshots/twitter-embed-2.png [new file with mode: 0644]
wp-admin/images/screenshots/welcome-screen.png [deleted file]
wp-admin/images/star.png [deleted file]
wp-admin/images/stars-rtl.png [new file with mode: 0644]
wp-admin/images/stars.png [new file with mode: 0644]
wp-admin/images/wordpress-logo-2x.png [new file with mode: 0644]
wp-admin/images/wordpress-logo.png
wp-admin/images/wp-badge-2x.png [new file with mode: 0644]
wp-admin/import.php
wp-admin/includes/admin.php
wp-admin/includes/ajax-actions.php [new file with mode: 0644]
wp-admin/includes/bookmark.php
wp-admin/includes/class-ftp.php
wp-admin/includes/class-wp-comments-list-table.php
wp-admin/includes/class-wp-filesystem-base.php
wp-admin/includes/class-wp-filesystem-direct.php
wp-admin/includes/class-wp-filesystem-ftpext.php
wp-admin/includes/class-wp-filesystem-ftpsockets.php
wp-admin/includes/class-wp-links-list-table.php
wp-admin/includes/class-wp-list-table.php
wp-admin/includes/class-wp-media-list-table.php
wp-admin/includes/class-wp-ms-sites-list-table.php
wp-admin/includes/class-wp-ms-themes-list-table.php
wp-admin/includes/class-wp-ms-users-list-table.php
wp-admin/includes/class-wp-plugin-install-list-table.php
wp-admin/includes/class-wp-plugins-list-table.php
wp-admin/includes/class-wp-posts-list-table.php
wp-admin/includes/class-wp-terms-list-table.php
wp-admin/includes/class-wp-theme-install-list-table.php
wp-admin/includes/class-wp-themes-list-table.php
wp-admin/includes/class-wp-upgrader.php
wp-admin/includes/class-wp-users-list-table.php
wp-admin/includes/comment.php
wp-admin/includes/dashboard.php
wp-admin/includes/deprecated.php
wp-admin/includes/export.php
wp-admin/includes/file.php
wp-admin/includes/image-edit.php
wp-admin/includes/image.php
wp-admin/includes/import.php
wp-admin/includes/list-table.php
wp-admin/includes/manifest.php
wp-admin/includes/media.php
wp-admin/includes/menu.php
wp-admin/includes/meta-boxes.php
wp-admin/includes/misc.php
wp-admin/includes/ms-deprecated.php
wp-admin/includes/ms.php
wp-admin/includes/nav-menu.php
wp-admin/includes/plugin-install.php
wp-admin/includes/plugin.php
wp-admin/includes/post.php
wp-admin/includes/schema.php
wp-admin/includes/screen.php
wp-admin/includes/taxonomy.php
wp-admin/includes/template.php
wp-admin/includes/theme-install.php
wp-admin/includes/theme.php
wp-admin/includes/update-core.php
wp-admin/includes/update.php
wp-admin/includes/upgrade.php
wp-admin/includes/user.php
wp-admin/includes/widgets.php
wp-admin/index-extra.php [deleted file]
wp-admin/index.php
wp-admin/install-helper.php
wp-admin/install.php
wp-admin/js/common.dev.js
wp-admin/js/common.js
wp-admin/js/custom-background.dev.js
wp-admin/js/custom-background.js
wp-admin/js/customize-controls.dev.js [new file with mode: 0644]
wp-admin/js/customize-controls.js [new file with mode: 0644]
wp-admin/js/dashboard.dev.js
wp-admin/js/dashboard.js
wp-admin/js/edit-comments.dev.js
wp-admin/js/edit-comments.js
wp-admin/js/editor.dev.js
wp-admin/js/editor.js
wp-admin/js/inline-edit-post.dev.js
wp-admin/js/inline-edit-post.js
wp-admin/js/inline-edit-tax.dev.js
wp-admin/js/inline-edit-tax.js
wp-admin/js/media-gallery.dev.js [new file with mode: 0644]
wp-admin/js/media-gallery.js [new file with mode: 0644]
wp-admin/js/media-upload.dev.js
wp-admin/js/media-upload.js
wp-admin/js/media.dev.js
wp-admin/js/media.js
wp-admin/js/post.dev.js
wp-admin/js/post.js
wp-admin/js/postbox.dev.js
wp-admin/js/postbox.js
wp-admin/js/tags.dev.js
wp-admin/js/tags.js
wp-admin/js/theme-preview.dev.js
wp-admin/js/theme-preview.js
wp-admin/js/theme.dev.js
wp-admin/js/theme.js
wp-admin/js/user-profile.dev.js
wp-admin/js/user-profile.js
wp-admin/js/user-suggest.dev.js [new file with mode: 0644]
wp-admin/js/user-suggest.js [new file with mode: 0644]
wp-admin/js/utils.dev.js
wp-admin/js/utils.js
wp-admin/js/widgets.dev.js
wp-admin/js/widgets.js
wp-admin/js/word-count.dev.js
wp-admin/js/word-count.js
wp-admin/js/wp-fullscreen.dev.js
wp-admin/js/wp-fullscreen.js
wp-admin/link-add.php
wp-admin/link-parse-opml.php
wp-admin/link.php
wp-admin/load-scripts.php
wp-admin/load-styles.php
wp-admin/maint/repair.php
wp-admin/media-new.php
wp-admin/media-upload.php
wp-admin/media.php
wp-admin/menu-header.php
wp-admin/menu.php
wp-admin/moderation.php
wp-admin/ms-admin.php
wp-admin/ms-delete-site.php
wp-admin/ms-edit.php
wp-admin/ms-sites.php
wp-admin/ms-themes.php
wp-admin/ms-upgrade-network.php
wp-admin/ms-users.php
wp-admin/my-sites.php
wp-admin/nav-menus.php
wp-admin/network.php
wp-admin/network/about.php [new file with mode: 0644]
wp-admin/network/admin.php
wp-admin/network/credits.php [new file with mode: 0644]
wp-admin/network/edit.php
wp-admin/network/freedoms.php [new file with mode: 0644]
wp-admin/network/index-extra.php [deleted file]
wp-admin/network/menu.php
wp-admin/network/settings.php
wp-admin/network/site-info.php
wp-admin/network/site-new.php
wp-admin/network/site-settings.php
wp-admin/network/site-themes.php
wp-admin/network/site-users.php
wp-admin/network/sites.php
wp-admin/network/themes.php
wp-admin/network/user-new.php
wp-admin/network/users.php
wp-admin/options-discussion.php
wp-admin/options-general.php
wp-admin/options-head.php
wp-admin/options-media.php
wp-admin/options-permalink.php
wp-admin/options-reading.php
wp-admin/options-writing.php
wp-admin/options.php
wp-admin/plugin-editor.php
wp-admin/plugin-install.php
wp-admin/plugins.php
wp-admin/post-new.php
wp-admin/post.php
wp-admin/press-this.php
wp-admin/profile.php
wp-admin/setup-config.php
wp-admin/theme-editor.php
wp-admin/theme-install.php
wp-admin/themes.php
wp-admin/tools.php
wp-admin/update-core.php
wp-admin/update.php
wp-admin/upgrade-functions.php
wp-admin/upgrade.php
wp-admin/upload.php
wp-admin/user-edit.php
wp-admin/user-new.php
wp-admin/user/about.php [new file with mode: 0644]
wp-admin/user/admin.php
wp-admin/user/credits.php [new file with mode: 0644]
wp-admin/user/freedoms.php [new file with mode: 0644]
wp-admin/user/index-extra.php [deleted file]
wp-admin/user/menu.php
wp-admin/users.php
wp-admin/widgets.php
wp-app.php
wp-blog-header.php
wp-comments-post.php
wp-content/index.php
wp-content/plugins/akismet/admin.php
wp-content/plugins/akismet/akismet.css
wp-content/plugins/akismet/akismet.js
wp-content/plugins/akismet/akismet.php
wp-content/plugins/akismet/index.php [new file with mode: 0644]
wp-content/plugins/akismet/legacy.php
wp-content/plugins/akismet/readme.txt
wp-content/plugins/akismet/widget.php
wp-content/themes/twentyeleven/author.php
wp-content/themes/twentyeleven/content-single.php
wp-content/themes/twentyeleven/editor-style.css
wp-content/themes/twentyeleven/functions.php
wp-content/themes/twentyeleven/header.php
wp-content/themes/twentyeleven/inc/theme-customizer.js [new file with mode: 0644]
wp-content/themes/twentyeleven/inc/theme-options.php
wp-content/themes/twentyeleven/languages/twentyeleven.pot
wp-content/themes/twentyeleven/showcase.php
wp-content/themes/twentyeleven/style.css
wp-content/themes/twentyten/comments.php
wp-content/themes/twentyten/footer.php
wp-content/themes/twentyten/functions.php
wp-content/themes/twentyten/header.php
wp-content/themes/twentyten/languages/twentyten.pot
wp-content/themes/twentyten/loop-attachment.php
wp-content/themes/twentyten/loop-page.php
wp-content/themes/twentyten/loop-single.php
wp-content/themes/twentyten/loop.php
wp-content/themes/twentyten/style.css
wp-cron.php
wp-includes/admin-bar.php
wp-includes/atomlib.php
wp-includes/author-template.php
wp-includes/bookmark-template.php
wp-includes/bookmark.php
wp-includes/cache.php
wp-includes/canonical.php
wp-includes/capabilities.php
wp-includes/category-template.php
wp-includes/category.php
wp-includes/class-IXR.php
wp-includes/class-http.php
wp-includes/class-json.php
wp-includes/class-oembed.php
wp-includes/class-phpmailer.php
wp-includes/class-simplepie.php
wp-includes/class-smtp.php
wp-includes/class-wp-admin-bar.php
wp-includes/class-wp-ajax-response.php
wp-includes/class-wp-atom-server.php [new file with mode: 0644]
wp-includes/class-wp-customize-control.php [new file with mode: 0644]
wp-includes/class-wp-customize-manager.php [new file with mode: 0644]
wp-includes/class-wp-customize-section.php [new file with mode: 0644]
wp-includes/class-wp-customize-setting.php [new file with mode: 0644]
wp-includes/class-wp-editor.php
wp-includes/class-wp-error.php
wp-includes/class-wp-http-ixr-client.php
wp-includes/class-wp-theme.php [new file with mode: 0644]
wp-includes/class-wp-walker.php
wp-includes/class-wp-xmlrpc-server.php
wp-includes/class-wp.php
wp-includes/class.wp-dependencies.php
wp-includes/class.wp-scripts.php
wp-includes/class.wp-styles.php
wp-includes/comment-template.php
wp-includes/comment.php
wp-includes/cron.php
wp-includes/css/admin-bar-rtl.css
wp-includes/css/admin-bar.css
wp-includes/css/admin-bar.dev.css
wp-includes/css/editor-buttons.css [deleted file]
wp-includes/css/editor.css [new file with mode: 0644]
wp-includes/css/editor.dev.css [moved from wp-includes/css/editor-buttons.dev.css with 83% similarity]
wp-includes/css/jquery-ui-dialog.css
wp-includes/css/jquery-ui-dialog.dev.css
wp-includes/css/wp-pointer.css
wp-includes/default-constants.php
wp-includes/default-filters.php
wp-includes/default-widgets.php
wp-includes/deprecated.php
wp-includes/feed-atom-comments.php
wp-includes/feed-atom.php
wp-includes/feed-rss.php
wp-includes/feed-rss2.php
wp-includes/feed.php
wp-includes/formatting.php
wp-includes/functions.php
wp-includes/functions.wp-scripts.php
wp-includes/functions.wp-styles.php
wp-includes/general-template.php
wp-includes/http.php
wp-includes/images/admin-bar-sprite-2x.png [new file with mode: 0644]
wp-includes/js/admin-bar.dev.js
wp-includes/js/admin-bar.js
wp-includes/js/autosave.dev.js
wp-includes/js/customize-base.dev.js [new file with mode: 0644]
wp-includes/js/customize-base.js [new file with mode: 0644]
wp-includes/js/customize-loader.dev.js [new file with mode: 0644]
wp-includes/js/customize-loader.js [new file with mode: 0644]
wp-includes/js/customize-preview.dev.js [new file with mode: 0644]
wp-includes/js/customize-preview.js [new file with mode: 0644]
wp-includes/js/hoverIntent.dev.js
wp-includes/js/hoverIntent.js
wp-includes/js/imgareaselect/imgareaselect.css
wp-includes/js/imgareaselect/jquery.imgareaselect.dev.js
wp-includes/js/imgareaselect/jquery.imgareaselect.js
wp-includes/js/jquery/jquery.form.dev.js
wp-includes/js/jquery/jquery.form.js
wp-includes/js/jquery/jquery.hotkeys.dev.js
wp-includes/js/jquery/jquery.hotkeys.js
wp-includes/js/jquery/jquery.js
wp-includes/js/jquery/jquery.ui.touch-punch.js [new file with mode: 0644]
wp-includes/js/jquery/ui/jquery.effects.blind.min.js
wp-includes/js/jquery/ui/jquery.effects.bounce.min.js
wp-includes/js/jquery/ui/jquery.effects.clip.min.js
wp-includes/js/jquery/ui/jquery.effects.core.min.js
wp-includes/js/jquery/ui/jquery.effects.drop.min.js
wp-includes/js/jquery/ui/jquery.effects.explode.min.js
wp-includes/js/jquery/ui/jquery.effects.fade.min.js
wp-includes/js/jquery/ui/jquery.effects.fold.min.js
wp-includes/js/jquery/ui/jquery.effects.highlight.min.js
wp-includes/js/jquery/ui/jquery.effects.pulsate.min.js
wp-includes/js/jquery/ui/jquery.effects.scale.min.js
wp-includes/js/jquery/ui/jquery.effects.shake.min.js
wp-includes/js/jquery/ui/jquery.effects.slide.min.js
wp-includes/js/jquery/ui/jquery.effects.transfer.min.js
wp-includes/js/jquery/ui/jquery.ui.accordion.min.js
wp-includes/js/jquery/ui/jquery.ui.autocomplete.min.js
wp-includes/js/jquery/ui/jquery.ui.button.min.js
wp-includes/js/jquery/ui/jquery.ui.core.min.js
wp-includes/js/jquery/ui/jquery.ui.datepicker.min.js
wp-includes/js/jquery/ui/jquery.ui.dialog.min.js
wp-includes/js/jquery/ui/jquery.ui.draggable.min.js
wp-includes/js/jquery/ui/jquery.ui.droppable.min.js
wp-includes/js/jquery/ui/jquery.ui.mouse.min.js
wp-includes/js/jquery/ui/jquery.ui.position.min.js
wp-includes/js/jquery/ui/jquery.ui.progressbar.min.js
wp-includes/js/jquery/ui/jquery.ui.resizable.min.js
wp-includes/js/jquery/ui/jquery.ui.selectable.min.js
wp-includes/js/jquery/ui/jquery.ui.slider.min.js
wp-includes/js/jquery/ui/jquery.ui.sortable.min.js
wp-includes/js/jquery/ui/jquery.ui.tabs.min.js
wp-includes/js/jquery/ui/jquery.ui.widget.min.js
wp-includes/js/plupload/handlers.dev.js
wp-includes/js/plupload/handlers.js
wp-includes/js/plupload/wp-plupload.dev.js [new file with mode: 0644]
wp-includes/js/plupload/wp-plupload.js [new file with mode: 0644]
wp-includes/js/quicktags.dev.js
wp-includes/js/quicktags.js
wp-includes/js/swfupload/handlers.dev.js
wp-includes/js/swfupload/handlers.js
wp-includes/js/tinymce/langs/wp-langs-en.js
wp-includes/js/tinymce/langs/wp-langs.php
wp-includes/js/tinymce/mark_loaded_src.js [new file with mode: 0644]
wp-includes/js/tinymce/plugins/directionality/editor_plugin_src.js [new file with mode: 0644]
wp-includes/js/tinymce/plugins/fullscreen/editor_plugin_src.js [new file with mode: 0644]
wp-includes/js/tinymce/plugins/fullscreen/fullscreen.htm
wp-includes/js/tinymce/plugins/inlinepopups/editor_plugin_src.js [new file with mode: 0644]
wp-includes/js/tinymce/plugins/inlinepopups/template.htm
wp-includes/js/tinymce/plugins/media/editor_plugin.js
wp-includes/js/tinymce/plugins/media/editor_plugin_src.js [new file with mode: 0644]
wp-includes/js/tinymce/plugins/media/js/media.js
wp-includes/js/tinymce/plugins/media/media.htm
wp-includes/js/tinymce/plugins/media/moxieplayer.swf
wp-includes/js/tinymce/plugins/paste/blank.htm [deleted file]
wp-includes/js/tinymce/plugins/paste/editor_plugin.js
wp-includes/js/tinymce/plugins/paste/editor_plugin_src.js [new file with mode: 0644]
wp-includes/js/tinymce/plugins/paste/pastetext.htm
wp-includes/js/tinymce/plugins/paste/pasteword.htm
wp-includes/js/tinymce/plugins/spellchecker/editor_plugin.js
wp-includes/js/tinymce/plugins/spellchecker/editor_plugin_src.js [new file with mode: 0644]
wp-includes/js/tinymce/plugins/tabfocus/editor_plugin_src.js [new file with mode: 0644]
wp-includes/js/tinymce/plugins/wordpress/css/content.css [deleted file]
wp-includes/js/tinymce/plugins/wordpress/editor_plugin.js
wp-includes/js/tinymce/plugins/wordpress/editor_plugin_src.js [moved from wp-includes/js/tinymce/plugins/wordpress/editor_plugin.dev.js with 91% similarity]
wp-includes/js/tinymce/plugins/wpdialogs/editor_plugin_src.js [moved from wp-includes/js/tinymce/plugins/wpdialogs/editor_plugin.dev.js with 100% similarity]
wp-includes/js/tinymce/plugins/wpeditimage/css/editimage-rtl.css [deleted file]
wp-includes/js/tinymce/plugins/wpeditimage/css/editimage.css
wp-includes/js/tinymce/plugins/wpeditimage/editimage.html
wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.dev.js [deleted file]
wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.js
wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin_src.js [new file with mode: 0644]
wp-includes/js/tinymce/plugins/wpeditimage/js/editimage.dev.js
wp-includes/js/tinymce/plugins/wpeditimage/js/editimage.js
wp-includes/js/tinymce/plugins/wpfullscreen/css/wp-fullscreen.css
wp-includes/js/tinymce/plugins/wpfullscreen/editor_plugin.js
wp-includes/js/tinymce/plugins/wpfullscreen/editor_plugin_src.js [moved from wp-includes/js/tinymce/plugins/wpfullscreen/editor_plugin.dev.js with 94% similarity]
wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.js
wp-includes/js/tinymce/plugins/wpgallery/editor_plugin_src.js [moved from wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.dev.js with 96% similarity]
wp-includes/js/tinymce/plugins/wplink/editor_plugin_src.js [moved from wp-includes/js/tinymce/plugins/wplink/editor_plugin.dev.js with 100% similarity]
wp-includes/js/tinymce/themes/advanced/about.htm
wp-includes/js/tinymce/themes/advanced/anchor.htm
wp-includes/js/tinymce/themes/advanced/charmap.htm
wp-includes/js/tinymce/themes/advanced/color_picker.htm
wp-includes/js/tinymce/themes/advanced/editor_template.js
wp-includes/js/tinymce/themes/advanced/editor_template_src.js [new file with mode: 0644]
wp-includes/js/tinymce/themes/advanced/image.htm
wp-includes/js/tinymce/themes/advanced/js/anchor.js
wp-includes/js/tinymce/themes/advanced/js/charmap.js
wp-includes/js/tinymce/themes/advanced/js/color_picker.js
wp-includes/js/tinymce/themes/advanced/link.htm
wp-includes/js/tinymce/themes/advanced/shortcuts.htm
wp-includes/js/tinymce/themes/advanced/skins/default/content.css
wp-includes/js/tinymce/themes/advanced/skins/highcontrast/content.css
wp-includes/js/tinymce/themes/advanced/skins/o2k7/content.css
wp-includes/js/tinymce/themes/advanced/skins/wp_theme/content.css
wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/embedded.png [moved from wp-includes/js/tinymce/plugins/wordpress/img/embedded.png with 100% similarity]
wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/gallery.png [moved from wp-includes/js/tinymce/plugins/wpgallery/img/gallery.png with 100% similarity]
wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/more_bug.gif [moved from wp-includes/js/tinymce/plugins/wordpress/img/more_bug.gif with 100% similarity]
wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/page_bug.gif [moved from wp-includes/js/tinymce/plugins/wordpress/img/page_bug.gif with 100% similarity]
wp-includes/js/tinymce/themes/advanced/source_editor.htm
wp-includes/js/tinymce/tiny_mce.js
wp-includes/js/tinymce/wp-tinymce.js.gz
wp-includes/js/wp-pointer.dev.js
wp-includes/js/wp-pointer.js
wp-includes/js/wplink.dev.js
wp-includes/js/wplink.js
wp-includes/kses.php
wp-includes/l10n.php
wp-includes/link-template.php
wp-includes/load.php
wp-includes/locale.php
wp-includes/media.php
wp-includes/meta.php
wp-includes/ms-blogs.php
wp-includes/ms-default-constants.php
wp-includes/ms-default-filters.php
wp-includes/ms-deprecated.php
wp-includes/ms-files.php
wp-includes/ms-functions.php
wp-includes/ms-load.php
wp-includes/ms-settings.php
wp-includes/nav-menu-template.php
wp-includes/nav-menu.php
wp-includes/option.php [new file with mode: 0644]
wp-includes/pluggable.php
wp-includes/plugin.php
wp-includes/post-template.php
wp-includes/post-thumbnail-template.php
wp-includes/post.php
wp-includes/query.php
wp-includes/registration-functions.php
wp-includes/registration.php
wp-includes/rewrite.php
wp-includes/rss-functions.php
wp-includes/rss.php
wp-includes/script-loader.php
wp-includes/shortcodes.php
wp-includes/taxonomy.php
wp-includes/template-loader.php
wp-includes/template.php [new file with mode: 0644]
wp-includes/theme-compat/comments.php
wp-includes/theme-compat/header.php
wp-includes/theme-compat/sidebar.php
wp-includes/theme.php
wp-includes/update.php
wp-includes/user.php
wp-includes/vars.php
wp-includes/version.php
wp-includes/widgets.php
wp-includes/wlwmanifest.xml
wp-includes/wp-db.php
wp-includes/wp-diff.php
wp-load.php
wp-login.php
wp-mail.php
wp-pass.php [deleted file]
wp-register.php [deleted file]
wp-settings.php
wp-signup.php
wp-trackback.php
xmlrpc.php

index 49403ecc2d8a343da95ad8d354b4f16a73f094d9..1e3364ad1b39db3a83b85a2b1227f0301bb69cc8 100644 (file)
--- a/index.php
+++ b/index.php
@@ -15,4 +15,3 @@ define('WP_USE_THEMES', true);
 
 /** Loads the WordPress Environment and Template */
 require('./wp-blog-header.php');
 
 /** Loads the WordPress Environment and Template */
 require('./wp-blog-header.php');
-?>
\ No newline at end of file
index 431a146a67bc59b67b65cd66439bf48923b0ee49..ec05d2948477d42941702b9de842a00558c9170f 100644 (file)
@@ -37,16 +37,15 @@ and
 \r
 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
 \r
 \r
 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
 \r
-                   GNU GENERAL PUBLIC LICENSE\r
-                      Version 2, June 1991\r
-\r
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.\r
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA\r
+                    GNU GENERAL PUBLIC LICENSE\r
+                       Version 2, June 1991\r
 \r
 \r
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,\r
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\r
  Everyone is permitted to copy and distribute verbatim copies\r
  of this license document, but changing it is not allowed.\r
 \r
  Everyone is permitted to copy and distribute verbatim copies\r
  of this license document, but changing it is not allowed.\r
 \r
-                           Preamble\r
+                            Preamble\r
 \r
   The licenses for most software are designed to take away your\r
 freedom to share and change it.  By contrast, the GNU General Public\r
 \r
   The licenses for most software are designed to take away your\r
 freedom to share and change it.  By contrast, the GNU General Public\r
@@ -55,7 +54,7 @@ software--to make sure the software is free for all its users.  This
 General Public License applies to most of the Free Software\r
 Foundation's software and to any other program whose authors commit to\r
 using it.  (Some other Free Software Foundation software is covered by\r
 General Public License applies to most of the Free Software\r
 Foundation's software and to any other program whose authors commit to\r
 using it.  (Some other Free Software Foundation software is covered by\r
-the GNU Library General Public License instead.)  You can apply it to\r
+the GNU Lesser General Public License instead.)  You can apply it to\r
 your programs, too.\r
 \r
   When we speak of free software, we are referring to freedom, not\r
 your programs, too.\r
 \r
   When we speak of free software, we are referring to freedom, not\r
@@ -96,7 +95,7 @@ patent must be licensed for everyone's free use or not licensed at all.
   The precise terms and conditions for copying, distribution and\r
 modification follow.\r
 \r
   The precise terms and conditions for copying, distribution and\r
 modification follow.\r
 \r
-                   GNU GENERAL PUBLIC LICENSE\r
+                    GNU GENERAL PUBLIC LICENSE\r
    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\r
 \r
   0. This License applies to any program or other work which contains\r
    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\r
 \r
   0. This License applies to any program or other work which contains\r
@@ -160,6 +159,7 @@ distribute the same sections as part of a whole which is a work based
 on the Program, the distribution of the whole must be on the terms of\r
 this License, whose permissions for other licensees extend to the\r
 entire whole, and thus to each and every part regardless of who wrote it.\r
 on the Program, the distribution of the whole must be on the terms of\r
 this License, whose permissions for other licensees extend to the\r
 entire whole, and thus to each and every part regardless of who wrote it.\r
+\r
 Thus, it is not the intent of this section to claim rights or contest\r
 your rights to work written entirely by you; rather, the intent is to\r
 exercise the right to control the distribution of derivative or\r
 Thus, it is not the intent of this section to claim rights or contest\r
 your rights to work written entirely by you; rather, the intent is to\r
 exercise the right to control the distribution of derivative or\r
@@ -294,7 +294,7 @@ make exceptions for this.  Our decision will be guided by the two goals
 of preserving the free status of all derivatives of our free software and\r
 of promoting the sharing and reuse of software generally.\r
 \r
 of preserving the free status of all derivatives of our free software and\r
 of promoting the sharing and reuse of software generally.\r
 \r
-                           NO WARRANTY\r
+                            NO WARRANTY\r
 \r
   11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\r
 FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\r
 \r
   11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\r
 FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\r
@@ -316,8 +316,66 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
 PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\r
 POSSIBILITY OF SUCH DAMAGES.\r
 \r
 PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\r
 POSSIBILITY OF SUCH DAMAGES.\r
 \r
-                    END OF TERMS AND CONDITIONS\r
+                     END OF TERMS AND CONDITIONS\r
+\r
+            How to Apply These Terms to Your New Programs\r
+\r
+  If you develop a new program, and you want it to be of the greatest\r
+possible use to the public, the best way to achieve this is to make it\r
+free software which everyone can redistribute and change under these terms.\r
+\r
+  To do so, attach the following notices to the program.  It is safest\r
+to attach them to the start of each source file to most effectively\r
+convey the exclusion of warranty; and each file should have at least\r
+the "copyright" line and a pointer to where the full notice is found.\r
+\r
+    <one line to give the program's name and a brief idea of what it does.>\r
+    Copyright (C) <year>  <name of author>\r
+\r
+    This program is free software; you can redistribute it and/or modify\r
+    it under the terms of the GNU General Public License as published by\r
+    the Free Software Foundation; either version 2 of the License, or\r
+    (at your option) any later version.\r
+\r
+    This program is distributed in the hope that it will be useful,\r
+    but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+    GNU General Public License for more details.\r
+\r
+    You should have received a copy of the GNU General Public License along\r
+    with this program; if not, write to the Free Software Foundation, Inc.,\r
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
+\r
+Also add information on how to contact you by electronic and paper mail.\r
+\r
+If the program is interactive, make it output a short notice like this\r
+when it starts in an interactive mode:\r
+\r
+    Gnomovision version 69, Copyright (C) year name of author\r
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\r
+    This is free software, and you are welcome to redistribute it\r
+    under certain conditions; type `show c' for details.\r
+\r
+The hypothetical commands `show w' and `show c' should show the appropriate\r
+parts of the General Public License.  Of course, the commands you use may\r
+be called something other than `show w' and `show c'; they could even be\r
+mouse-clicks or menu items--whatever suits your program.\r
+\r
+You should also get your employer (if you work as a programmer) or your\r
+school, if any, to sign a "copyright disclaimer" for the program, if\r
+necessary.  Here is a sample; alter the names:\r
+\r
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\r
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.\r
+\r
+  <signature of Ty Coon>, 1 April 1989\r
+  Ty Coon, President of Vice\r
 \r
 \r
+This General Public License does not permit incorporating your program into\r
+proprietary programs.  If your program is a subroutine library, you may\r
+consider it more useful to permit linking proprietary applications with the\r
+library.  If this is what you want to do, use the GNU Lesser General\r
+Public License instead of this License.\r
 \r
 WRITTEN OFFER\r
 \r
 \r
 WRITTEN OFFER\r
 \r
index 8980b3791d63bc264243f1bcb5a27a1d6e0990c9..b32c540938ea47ded021d0df3d05ec0131fc1564 100644 (file)
@@ -7,8 +7,8 @@
 </head>
 <body>
 <h1 id="logo">
 </head>
 <body>
 <h1 id="logo">
-       <a href="http://wordpress.org/"><img alt="WordPress" src="wp-admin/images/wordpress-logo.png" width="250" height="68" /></a>
-       <br /> Version 3.3.2
+       <a href="http://wordpress.org/"><img alt="WordPress" src="wp-admin/images/wordpress-logo.png" /></a>
+       <br /> Version 3.4
 </h1>
 <p style="text-align: center">Semantic Personal Publishing Platform</p>
 
 </h1>
 <p style="text-align: center">Semantic Personal Publishing Platform</p>
 
 <h1>License</h1>
 <p>WordPress is free software, and is released under the terms of the <abbr title="GNU General Public License">GPL</abbr> version 2 or (at your option) any later version. See <a href="license.txt">license.txt</a>.</p>
 
 <h1>License</h1>
 <p>WordPress is free software, and is released under the terms of the <abbr title="GNU General Public License">GPL</abbr> version 2 or (at your option) any later version. See <a href="license.txt">license.txt</a>.</p>
 
-
 </body>
 </html>
 </body>
 </html>
index 4f72070943ecaeb68faed0def9697aa8db29fc1d..d470772ff6aacf7a2c6767e72c2290a761ef37d0 100644 (file)
@@ -63,9 +63,9 @@ get_header();
                                <?php
                                echo '<p class="lead-in">';
                                if ( $signup->domain . $signup->path == '' ) {
                                <?php
                                echo '<p class="lead-in">';
                                if ( $signup->domain . $signup->path == '' ) {
-                                       printf( __('Your account has been activated. You may now <a href="%1$s">log in</a> to the site using your chosen username of &#8220;%2$s&#8221;.  Please check your email inbox at %3$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can <a href="%4$s">reset your password</a>.'), network_site_url( 'wp-login.php', 'login' ), $signup->user_login, $signup->user_email, wp_lostpassword_url() );
+                                       printf( __('Your account has been activated. You may now <a href="%1$s">log in</a> to the site using your chosen username of &#8220;%2$s&#8221;. Please check your email inbox at %3$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can <a href="%4$s">reset your password</a>.'), network_site_url( 'wp-login.php', 'login' ), $signup->user_login, $signup->user_email, wp_lostpassword_url() );
                                } else {
                                } else {
-                                       printf( __('Your site at <a href="%1$s">%2$s</a> is active. You may now log in to your site using your chosen username of &#8220;%3$s&#8221;.  Please check your email inbox at %4$s for your password and login instructions.  If you do not receive an email, please check your junk or spam folder.  If you still do not receive an email within an hour, you can <a href="%5$s">reset your password</a>.'), 'http://' . $signup->domain, $signup->domain, $signup->user_login, $signup->user_email, wp_lostpassword_url() );
+                                       printf( __('Your site at <a href="%1$s">%2$s</a> is active. You may now log in to your site using your chosen username of &#8220;%3$s&#8221;. Please check your email inbox at %4$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can <a href="%5$s">reset your password</a>.'), 'http://' . $signup->domain, $signup->domain, $signup->user_login, $signup->user_email, wp_lostpassword_url() );
                                }
                                echo '</p>';
                        } else {
                                }
                                echo '</p>';
                        } else {
index 1ebc0f0da5290d702868a908c1581f0375c16e8e..3fa52e7912d0294e7b8f0af57deba3d7f75dadbd 100644 (file)
@@ -13,13 +13,13 @@ $title = __( 'About' );
 
 list( $display_version ) = explode( '-', $wp_version );
 
 
 list( $display_version ) = explode( '-', $wp_version );
 
-include( './admin-header.php' );
+include( ABSPATH . 'wp-admin/admin-header.php' );
 ?>
 <div class="wrap about-wrap">
 
 <h1><?php printf( __( 'Welcome to WordPress %s' ), $display_version ); ?></h1>
 
 ?>
 <div class="wrap about-wrap">
 
 <h1><?php printf( __( 'Welcome to WordPress %s' ), $display_version ); ?></h1>
 
-<div class="about-text"><?php printf( __( 'Thank you for updating to the latest version! Using WordPress %s will improve your looks, personality, and web publishing experience. Okay, just the last one, but still. :)' ), $display_version ); ?></div>
+<div class="about-text"><?php printf( __( 'Thank you for updating to the latest version! WordPress %s is already making your website better, faster, and more attractive, just like you!' ), $display_version ); ?></div>
 
 <div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>
 
 
 <div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>
 
@@ -33,107 +33,62 @@ include( './admin-header.php' );
        </a>
 </h2>
 
        </a>
 </h2>
 
-<div class="changelog point-releases">
-       <h3><?php echo _n( 'Maintenance and Security Release', 'Maintenance and Security Releases', 2 ); ?></h3>
-       <p><?php printf( _n( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
-         '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.', 12 ), '3.3.2', number_format_i18n( 12 ) ); ?>
-               <?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'http://codex.wordpress.org/Version_3.3.2' ); ?>
-       </p>
-       <p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue and fixed %2$s bug.',
-         '<strong>Version %1$s</strong> addressed a security issue and fixed %2$s bugs.', 15 ), '3.3.1', number_format_i18n( 15 ) ); ?>
-               <?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'http://codex.wordpress.org/Version_3.3.1' ); ?>
-       </p>
-</div>
-
 <div class="changelog">
 <div class="changelog">
-       <h3><?php _e( 'Easier Uploading' ); ?></h3>
+       <h3><?php _e( 'Live Theme Previews' ); ?></h3>
 
        <div class="feature-section images-stagger-right">
 
        <div class="feature-section images-stagger-right">
-               <div class="feature-images">
-                       <img src="images/screenshots/media-icon.png" width="200" class="angled-right" />
-                       <img src="images/screenshots/drag-and-drop.png" width="200" class="angled-left" />
-               </div>
-               <div class="left-feature">
-                       <h4><?php _e( 'File Type Detection' ); ?></h4>
-                       <p><?php _e( 'We&#8217;ve streamlined things! Instead of needing to click on a specific upload icon based on your file type, now there&#8217;s just one. Once your file is uploaded, the appropriate fields will be displayed for entering information based on the file type.' ); ?></p>
+               <img src="<?php echo esc_url( admin_url( 'images/screenshots/theme-customizer.png' ) ); ?>" class="image-50" />
+               <h4><?php _e( 'Try on New Themes' ); ?></h4>
+               <p><?php _e( 'Gone are the days of rushing to update your header, background, and the like as soon as you activate a new theme. You can now customize these options <strong>before</strong> activating a new theme. Note: this feature is available for installed themes only.' ); ?></p>
 
 
-                       <h4><?php _e( 'Drag-and-Drop Media Uploader' ); ?></h4>
-                       <p><?php _e( 'Adding photos or other files to posts and pages just got easier. Drag files from your desktop and drop them into the uploader. Add one file at a time, or many at once.' ); ?></p>
-
-                       <h4><?php _e( 'More File Formats' ); ?></h4>
-                       <p><?php _e( 'We&#8217;ve added the rar and 7z file formats to the list of allowed file types in the uploader.' ); ?></p>
-               </div>
+               <h4><?php _e( 'Customize Current Theme' ); ?></h4>
+               <p><?php _e( 'Satisfy your curiosity and try on a fresh coat of paint &mdash; you can also use the live preview mode to customize your current theme. Look for the Customize link on the Themes screen.' ); ?></p>
        </div>
 </div>
 
 <div class="changelog">
        </div>
 </div>
 
 <div class="changelog">
-       <h3><?php _e( 'Dashboard Design' ); ?></h3>
+       <h3><?php _e( 'Custom Headers' ); ?></h3>
 
 
-       <div class="feature-section text-features">
-               <h4><?php _e( 'Flyout Menus' ); ?></h4>
-               <p><?php _e( 'Speed up navigating the dashboard and reduce repetitive clicking with our new flyout submenus. As you hover over each main menu item in your dashboard navigation, the submenus will magically appear, providing single-click access to any dashboard screen.' ); ?></p>
-
-               <div>
-               <h4><?php _e( 'Header + Admin Bar = Toolbar' ); ?></h4>
-               <p><?php _e( 'To save space and increase efficiency, we&#8217;ve combined the admin bar and the old Dashboard header into one persistent toolbar. Hovering over the toolbar items will reveal submenus when available for quick access. ' ); ?></p>
+       <div class="feature-section">
+               <h4><?php _e( 'Flexible Sizes' ); ?></h4>
+               <p><?php _e( 'You can decide for yourself how tall or wide your custom header image should be. From now on, themes will provide a recommended image size for custom headers rather than a fixed requirement. Note: this feature requires <a href="http://codex.wordpress.org/Custom_Headers">theme support</a>.' ); ?></p>
+               <div class="three-col-images">
+                       <img src="<?php echo esc_url( admin_url( 'images/screenshots/flex-header-1.png' ) ); ?>" class="image-30 first-feature" />
+                       <img src="<?php echo esc_url( admin_url( 'images/screenshots/flex-header-2.png' ) ); ?>" class="image-30" />
+                       <img src="<?php echo esc_url( admin_url( 'images/screenshots/flex-header-3.png' ) ); ?>" class="image-30 last-feature" />
                </div>
        </div>
 
                </div>
        </div>
 
-       <div class="feature-section screenshot-features">
-               <div class="angled-left">
-                       <img src="images/screenshots/admin-flyouts.png" />
-                       <h4><?php _e( 'Responsive Design' ); ?></h4>
-                       <p><?php _e( 'Certain dashboard screens have been updated to look better at various sizes, including improved iPad/tablet support.' ); ?></p>
-               </div>
-               <div class="angled-right">
-                       <img src="images/screenshots/help-screen.png" />
-                       <h4><?php _e( 'Help Tabs' ); ?></h4>
-                       <p><?php _e( 'The Help tabs located in the upper corner of the dashboard screens below your name have gotten a facelift. Help content is broken into smaller sections for easier access, with links to relevant documentation and the support forums always visible.' ); ?></p>
-               </div>
+       <div class="feature-section images-stagger-right">
+               <img src="<?php echo esc_url( admin_url( 'images/screenshots/flex-header-media-library.png' ) ); ?>" class="image-50" />
+               <h4><?php _e( 'Choose from Media Library' ); ?></h4>
+               <p><?php _e( 'Tired of re-uploading the same custom header image every time you check out a new theme? Now you can choose header images from your media library for easier customization.' ); ?></p>
        </div>
 </div>
 
 <div class="changelog">
        </div>
 </div>
 
 <div class="changelog">
-       <h3><?php _e( 'Feels Like the First Time' ); ?></h3>
+       <h3><?php _e( 'Twitter Embeds' ); ?></h3>
 
        <div class="feature-section images-stagger-right">
 
        <div class="feature-section images-stagger-right">
-               <div class="feature-images">
-                       <img src="images/screenshots/new-feature-pointer.png" class="angled-right" />
-                       <img src="images/screenshots/welcome-screen.png" class="angled-left" />
-               </div>
-               <div class="left-feature">
-                       <h4><?php _e( 'New Feature Pointers' ); ?></h4>
-                       <p><?php _e( 'When we add new features, move navigation, or do anything else with the dashboard that might throw you for a loop when you update your WordPress site, we&#8217;ll let you know about it with new feature pointers explaining the change.' ); ?></p>
-
-                       <h4><?php _e( 'Post-update Changelog' ); ?></h4>
-                       <p><?php _e( 'This screen! From now on when you update WordPress, you&#8217;ll be brought to this screen &mdash; also accessible any time from the W logo in the corner of the toolbar &mdash; to get an overview of what&#8217;s changed.' ); ?></p>
-
-                       <h4><?php _e( 'Dashboard Welcome' ); ?></h4>
-                       <p><?php _e( 'The dashboard home screen will have a Welcome area that displays when a new WordPress installation is accessed for the first time, prompting the site owner to complete various setup tasks. Once dismissed, this welcome can be accessed via the dashboard home screen options tab.' ); ?></p>
-               </div>
+               <img src="<?php echo esc_url( admin_url( 'images/screenshots/twitter-embed-1.png' ) ); ?>" class="image-30" />
+               <img src="<?php echo esc_url( admin_url( 'images/screenshots/twitter-embed-2.png' ) ); ?>" class="image-30" />
+               <h4><?php _e( 'Share Tweets with Style' ); ?></h4>
+               <p><?php _e( 'You can now embed individual tweets in posts. It includes action links that allow readers to reply to, retweet, and favorite the tweet without leaving your site. Just paste a tweet URL on its own line.' ); ?></p>
+               <p><?php printf( __( 'This works with URLs from some other sites, too. For more, see the Codex article on <a href="%s">Embeds</a>.' ), __( 'http://codex.wordpress.org/Embeds' ) ); ?></p>
        </div>
 
 </div>
 
        </div>
 
 </div>
 
+
 <div class="changelog">
 <div class="changelog">
-       <h3><?php _e( 'Content Tools' ); ?></h3>
+       <h3><?php _e( 'Better Captions' ); ?></h3>
 
 
-       <div class="feature-section three-col">
-               <div>
-                       <h4><?php _e( 'Better Co-Editing' ); ?></h4>
-                       <img src="images/screenshots/coediting.png" class="element-screenshot" />
-                       <p><?php _e( 'Have you ever gone to edit a post after someone else has finished with it, only to get an alert that tells you the other person is still editing the post? From now on, you&#8217;ll only get that alert if another person is still on the editing screen &mdash; no more time lag.' ); ?></p>
-               </div>
-               <div>
-                       <h4><?php _e( 'Tumblr Importer' ); ?></h4>
-                       <p><?php _e( 'Want to import content from Tumblr to WordPress? No problem! Go to <span class="no-break">Tools &rarr; Import</span> to get the new Tumblr Importer, which maps your Tumblog posts to the matching WordPress post formats. Tip: Choose a theme designed to display post formats to get the greatest benefit from the importer.' ); ?></p>
-               </div>
-               <div class="last-feature">
-                       <h4><?php _e( 'Widget Improvements' ); ?></h4>
-                       <p><?php _e( 'Changing themes often requires widget re-configuration based on the number and position of sidebars. Now if you change back to a previous theme, the widgets will automatically go back to how you had them arranged in that theme. <em>Note: if you&#8217;ve added new widgets since the switch, you&#8217;ll need to rescue them from the Inactive Widgets area.</em>' ); ?></p>
-               </div>
+       <div class="feature-section images-stagger-right">
+               <img src="<?php echo esc_url( admin_url( 'images/screenshots/captions-1.png' ) ); ?>" class="image-30" />
+               <img src="<?php echo esc_url( admin_url( 'images/screenshots/captions-2.png' ) ); ?>" class="image-30" />
+               <h4><?php _e( 'HTML Support' ); ?></h4>
+               <p><?php _e( 'Basic HTML support has been added to the caption field in the image uploader. This allows you to add links &mdash; great for photo credits or licensing details &mdash; and basic formatting such as bold and italicized text.' ); ?></p>
        </div>
        </div>
-
 </div>
 
 <div class="changelog">
 </div>
 
 <div class="changelog">
@@ -141,49 +96,43 @@ include( './admin-header.php' );
 
        <div class="feature-section three-col">
                <div>
 
        <div class="feature-section three-col">
                <div>
-                       <h4><?php _e( 'Flexible Permalinks' ); ?></h4>
-                       <p><?php _e( 'You have more freedom when choosing a post permalink structure. Skip the date information or add a category slug without a performance penalty.' ); ?></p>
-               </div>
-               <div>
-                       <h4><?php _e( 'Post Slugs: Less Funky' ); ?></h4>
-                       <p><?php _e( 'Funky characters in post titles (e.g. curly quotes from a word processor) will no longer result in garbled post slugs.' ); ?></p>
-               </div>
-               <div class="last-feature">
-                       <h4><?php _e( 'jQuery and jQuery UI' ); ?></h4>
-                       <p><?php printf( __( 'WordPress now includes the entire jQuery UI stack and the latest version of jQuery: %s.' ), '1.7.1' ); ?></p>
-               </div>
-       </div>
+                       <h4><?php _e( 'Faster WP_Query' ); ?></h4>
+                       <p><?php _e( 'Post queries have been optimized to improve performance, especially for sites with large databases.' ); ?></p>
 
 
-       <div class="feature-section three-col">
-               <div>
-                       <h4 style="direction:ltr">is_main_query()</h4>
-                       <p><?php _e( 'This handy method will tell you if a <code>WP_Query</code> object is the main WordPress query or a secondary query.' ); ?></p>
+                       <h4><?php _e( 'Faster Translations' ); ?></h4>
+                       <p><?php _e( 'The number of strings loaded on the front end was greatly reduced, resulting in faster front page load times for localized installations.' ); ?> <?php _e( 'Also, better support for East Asian languages, right-to-left languages, theme translations, and more.' ); ?></p>
                </div>
                <div>
                </div>
                <div>
-                       <h4><?php _e( 'WP_Screen API' ); ?></h4>
-                       <p><?php _e( 'WordPress has a nice new API for working with admin screens. Create rich screens, add help documentation, adapt to screen contexts, and more.' ); ?></p>
+                       <h4><?php _e( 'Themes API' ); ?></h4>
+                       <p><?php _e( 'WP_Theme, wp_get_themes(), wp_get_theme(). Faster, uses less memory, makes use of persistent caching.' ); ?></p>
+
+                       <h4><?php _e( 'Custom Header and Background API' ); ?></h4>
+                       <p><?php  _e( 'Custom header and background API relocated into the theme support API.' ); ?></p>
                </div>
                <div class="last-feature">
                </div>
                <div class="last-feature">
-                       <h4><?php _e( 'Editor API Overhaul' ); ?></h4>
-                       <p><?php _e( 'The new editor API automatically pulls in all the JS and CSS goodness for the editor. It even supports multiple editors on the same page.' ); ?></p>
+                       <h4><?php _e( 'XML-RPC API' ); ?></h4>
+                       <p><?php printf( __( 'A new <a href="%s">WordPress API</a> that supports custom content types and taxonomies, as well as dozens of other bug fixes and improvements.' ), __( 'http://codex.wordpress.org/XML-RPC_WordPress_API' ) ); ?></p>
+
+                       <h4><?php _e( 'External Libraries' ); ?></h4>
+                       <p><?php _e( 'jQuery, jQuery UI, TinyMCE, Plupload, PHPMailer, SimplePie, and other libraries were updated. jQuery UI Touch Punch was introduced.' ); ?></p>
                </div>
        </div>
                </div>
        </div>
-
 </div>
 
 <div class="return-to-dashboard">
        <?php if ( current_user_can( 'update_core' ) && isset( $_GET['updated'] ) ) : ?>
 </div>
 
 <div class="return-to-dashboard">
        <?php if ( current_user_can( 'update_core' ) && isset( $_GET['updated'] ) ) : ?>
-       <a href="<?php echo esc_url( network_admin_url( 'update-core.php' ) ); ?>"><?php
+       <a href="<?php echo esc_url( self_admin_url( 'update-core.php' ) ); ?>"><?php
                is_multisite() ? _e( 'Return to Updates' ) : _e( 'Return to Dashboard &rarr; Updates' );
        ?></a> |
        <?php endif; ?>
                is_multisite() ? _e( 'Return to Updates' ) : _e( 'Return to Dashboard &rarr; Updates' );
        ?></a> |
        <?php endif; ?>
-       <a href="<?php echo esc_url( admin_url() ); ?>"><?php _e( 'Go to Dashboard &rarr; Home' ); ?></a>
+       <a href="<?php echo esc_url( self_admin_url() ); ?>"><?php
+               is_blog_admin() ? _e( 'Go to Dashboard &rarr; Home' ) : _e( 'Go to Dashboard' ); ?></a>
 </div>
 
 </div>
 <?php
 
 </div>
 
 </div>
 <?php
 
-include( './admin-footer.php' );
+include( ABSPATH . 'wp-admin/admin-footer.php' );
 
 // These are strings we may use to describe maintenance/security releases, where we aim for no new strings.
 return;
 
 // These are strings we may use to describe maintenance/security releases, where we aim for no new strings.
 return;
@@ -209,5 +158,3 @@ _n_noop( '<strong>Version %1$s</strong> addressed some security issues and fixed
          '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.' );
 
 __( 'For more information, see <a href="%s">the release notes</a>.' );
          '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.' );
 
 __( 'For more information, see <a href="%s">the release notes</a>.' );
-
-?>
\ No newline at end of file
index c21c861e4bbb2e4a9c6c14cfc7162bf59cabf67a..db44df78c969854b9b4269a4c02ab7856c43e0f7 100644 (file)
@@ -4,6 +4,8 @@
  *
  * @package WordPress
  * @subpackage Administration
  *
  * @package WordPress
  * @subpackage Administration
+ *
+ * @link http://codex.wordpress.org/AJAX_in_Plugins
  */
 
 /**
  */
 
 /**
  *
  * @since 2.1.0
  */
  *
  * @since 2.1.0
  */
-define('DOING_AJAX', true);
-define('WP_ADMIN', true);
-
-if ( ! isset( $_REQUEST['action'] ) )
-       die('-1');
-
-require_once('../wp-load.php');
-
-require_once('./includes/admin.php');
-@header('Content-Type: text/html; charset=' . get_option('blog_charset'));
-send_nosniff_header();
-
-do_action('admin_init');
-
-if ( ! is_user_logged_in() ) {
-
-       if ( isset( $_POST['action'] ) && $_POST['action'] == 'autosave' ) {
-               $id = isset($_POST['post_ID'])? (int) $_POST['post_ID'] : 0;
-
-               if ( ! $id )
-                       die('-1');
-
-               $message = sprintf( __('<strong>ALERT: You are logged out!</strong> Could not save draft. <a href="%s" target="_blank">Please log in again.</a>'), wp_login_url() );
-               $x = new WP_Ajax_Response( array(
-                       'what' => 'autosave',
-                       'id' => $id,
-                       'data' => $message
-               ) );
-               $x->send();
-       }
-
-       if ( !empty( $_REQUEST['action'] ) )
-               do_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] );
-
-       die('-1');
-}
-
-if ( isset( $_GET['action'] ) ) :
-switch ( $action = $_GET['action'] ) :
-case 'fetch-list' :
-
-       $list_class = $_GET['list_args']['class'];
-       check_ajax_referer( "fetch-list-$list_class", '_ajax_fetch_list_nonce' );
-
-       $current_screen = convert_to_screen( $_GET['list_args']['screen']['id'] );
-
-       define( 'WP_NETWORK_ADMIN', $current_screen->is_network );
-       define( 'WP_USER_ADMIN', $current_screen->is_user );
-
-       $wp_list_table = _get_list_table( $list_class );
-       if ( ! $wp_list_table )
-               die( '0' );
-
-       if ( ! $wp_list_table->ajax_user_can() )
-               die( '-1' );
-
-       $wp_list_table->ajax_response();
-
-       die( '0' );
-       break;
-case 'ajax-tag-search' :
-       if ( isset( $_GET['tax'] ) ) {
-               $taxonomy = sanitize_key( $_GET['tax'] );
-               $tax = get_taxonomy( $taxonomy );
-               if ( ! $tax )
-                       die( '0' );
-               if ( ! current_user_can( $tax->cap->assign_terms ) )
-                       die( '-1' );
-       } else {
-               die('0');
-       }
-
-       $s = stripslashes( $_GET['q'] );
-
-       if ( false !== strpos( $s, ',' ) ) {
-               $s = explode( ',', $s );
-               $s = $s[count( $s ) - 1];
-       }
-       $s = trim( $s );
-       if ( strlen( $s ) < 2 )
-               die; // require 2 chars for matching
-
-       $results = $wpdb->get_col( $wpdb->prepare( "SELECT t.name FROM $wpdb->term_taxonomy AS tt INNER JOIN $wpdb->terms AS t ON tt.term_id = t.term_id WHERE tt.taxonomy = %s AND t.name LIKE (%s)", $taxonomy, '%' . like_escape( $s ) . '%' ) );
-
-       echo join( $results, "\n" );
-       die;
-       break;
-case 'wp-compression-test' :
-       if ( !current_user_can( 'manage_options' ) )
-               die('-1');
-
-       if ( ini_get('zlib.output_compression') || 'ob_gzhandler' == ini_get('output_handler') ) {
-               update_site_option('can_compress_scripts', 0);
-               die('0');
-       }
-
-       if ( isset($_GET['test']) ) {
-               header( 'Expires: Wed, 11 Jan 1984 05:00:00 GMT' );
-               header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
-               header( 'Cache-Control: no-cache, must-revalidate, max-age=0' );
-               header( 'Pragma: no-cache' );
-               header('Content-Type: application/x-javascript; charset=UTF-8');
-               $force_gzip = ( defined('ENFORCE_GZIP') && ENFORCE_GZIP );
-               $test_str = '"wpCompressionTest Lorem ipsum dolor sit amet consectetuer mollis sapien urna ut a. Eu nonummy condimentum fringilla tempor pretium platea vel nibh netus Maecenas. Hac molestie amet justo quis pellentesque est ultrices interdum nibh Morbi. Cras mattis pretium Phasellus ante ipsum ipsum ut sociis Suspendisse Lorem. Ante et non molestie. Porta urna Vestibulum egestas id congue nibh eu risus gravida sit. Ac augue auctor Ut et non a elit massa id sodales. Elit eu Nulla at nibh adipiscing mattis lacus mauris at tempus. Netus nibh quis suscipit nec feugiat eget sed lorem et urna. Pellentesque lacus at ut massa consectetuer ligula ut auctor semper Pellentesque. Ut metus massa nibh quam Curabitur molestie nec mauris congue. Volutpat molestie elit justo facilisis neque ac risus Ut nascetur tristique. Vitae sit lorem tellus et quis Phasellus lacus tincidunt nunc Fusce. Pharetra wisi Suspendisse mus sagittis libero lacinia Integer consequat ac Phasellus. Et urna ac cursus tortor aliquam Aliquam amet tellus volutpat Vestibulum. Justo interdum condimentum In augue congue tellus sollicitudin Quisque quis nibh."';
-
-                if ( 1 == $_GET['test'] ) {
-                       echo $test_str;
-                       die;
-                } elseif ( 2 == $_GET['test'] ) {
-                       if ( !isset($_SERVER['HTTP_ACCEPT_ENCODING']) )
-                               die('-1');
-                       if ( false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'deflate') && function_exists('gzdeflate') && ! $force_gzip ) {
-                               header('Content-Encoding: deflate');
-                               $out = gzdeflate( $test_str, 1 );
-                       } elseif ( false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') && function_exists('gzencode') ) {
-                               header('Content-Encoding: gzip');
-                               $out = gzencode( $test_str, 1 );
-                       } else {
-                               die('-1');
-                       }
-                       echo $out;
-                       die;
-               } elseif ( 'no' == $_GET['test'] ) {
-                       update_site_option('can_compress_scripts', 0);
-               } elseif ( 'yes' == $_GET['test'] ) {
-                       update_site_option('can_compress_scripts', 1);
-               }
-       }
-
-       die('0');
-       break;
-case 'imgedit-preview' :
-       $post_id = intval($_GET['postid']);
-       if ( empty($post_id) || !current_user_can('edit_post', $post_id) )
-               die('-1');
-
-       check_ajax_referer( "image_editor-$post_id" );
-
-       include_once( ABSPATH . 'wp-admin/includes/image-edit.php' );
-       if ( ! stream_preview_image($post_id) )
-               die('-1');
-
-       die();
-       break;
-case 'menu-quick-search':
-       if ( ! current_user_can( 'edit_theme_options' ) )
-               die('-1');
-
-       require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
-
-       _wp_ajax_menu_quick_search( $_REQUEST );
-
-       exit;
-       break;
-case 'oembed-cache' :
-       $return = ( $wp_embed->cache_oembed( $_GET['post'] ) ) ? '1' : '0';
-       die( $return );
-       break;
-default :
-       do_action( 'wp_ajax_' . $_GET['action'] );
-       die('0');
-       break;
-endswitch;
-endif;
-
-/**
- * Sends back current comment total and new page links if they need to be updated.
- *
- * Contrary to normal success AJAX response ("1"), die with time() on success.
- *
- * @since 2.7
- *
- * @param int $comment_id
- * @return die
- */
-function _wp_ajax_delete_comment_response( $comment_id, $delta = -1 ) {
-       $total = (int) @$_POST['_total'];
-       $per_page = (int) @$_POST['_per_page'];
-       $page = (int) @$_POST['_page'];
-       $url = esc_url_raw( @$_POST['_url'] );
-       // JS didn't send us everything we need to know. Just die with success message
-       if ( !$total || !$per_page || !$page || !$url )
-               die( (string) time() );
-
-       $total += $delta;
-       if ( $total < 0 )
-               $total = 0;
-
-       // Only do the expensive stuff on a page-break, and about 1 other time per page
-       if ( 0 == $total % $per_page || 1 == mt_rand( 1, $per_page ) ) {
-               $post_id = 0;
-               $status = 'total_comments'; // What type of comment count are we looking for?
-               $parsed = parse_url( $url );
-               if ( isset( $parsed['query'] ) ) {
-                       parse_str( $parsed['query'], $query_vars );
-                       if ( !empty( $query_vars['comment_status'] ) )
-                               $status = $query_vars['comment_status'];
-                       if ( !empty( $query_vars['p'] ) )
-                               $post_id = (int) $query_vars['p'];
-               }
-
-               $comment_count = wp_count_comments($post_id);
-
-               if ( isset( $comment_count->$status ) ) // We're looking for a known type of comment count
-                       $total = $comment_count->$status;
-                       // else use the decremented value from above
-       }
-
-       $time = time(); // The time since the last comment count
-
-       $x = new WP_Ajax_Response( array(
-               'what' => 'comment',
-               'id' => $comment_id, // here for completeness - not used
-               'supplemental' => array(
-                       'total_items_i18n' => sprintf( _n( '1 item', '%s items', $total ), number_format_i18n( $total ) ),
-                       'total_pages' => ceil( $total / $per_page ),
-                       'total_pages_i18n' => number_format_i18n( ceil( $total / $per_page ) ),
-                       'total' => $total,
-                       'time' => $time
-               )
-       ) );
-       $x->send();
-}
-
-function _wp_ajax_add_hierarchical_term() {
-       $action = $_POST['action'];
-       $taxonomy = get_taxonomy(substr($action, 4));
-       check_ajax_referer( $action, '_ajax_nonce-add-' . $taxonomy->name );
-       if ( !current_user_can( $taxonomy->cap->edit_terms ) )
-               die('-1');
-       $names = explode(',', $_POST['new'.$taxonomy->name]);
-       $parent = isset($_POST['new'.$taxonomy->name.'_parent']) ? (int) $_POST['new'.$taxonomy->name.'_parent'] : 0;
-       if ( 0 > $parent )
-               $parent = 0;
-       if ( $taxonomy->name == 'category' )
-               $post_category = isset($_POST['post_category']) ? (array) $_POST['post_category'] : array();
-       else
-               $post_category = ( isset($_POST['tax_input']) && isset($_POST['tax_input'][$taxonomy->name]) ) ? (array) $_POST['tax_input'][$taxonomy->name] : array();
-       $checked_categories = array_map( 'absint', (array) $post_category );
-       $popular_ids = wp_popular_terms_checklist($taxonomy->name, 0, 10, false);
-
-       foreach ( $names as $cat_name ) {
-               $cat_name = trim($cat_name);
-               $category_nicename = sanitize_title($cat_name);
-               if ( '' === $category_nicename )
-                       continue;
-               if ( !($cat_id = term_exists($cat_name, $taxonomy->name, $parent)) ) {
-                       $new_term = wp_insert_term($cat_name, $taxonomy->name, array('parent' => $parent));
-                       $cat_id = $new_term['term_id'];
-               }
-               $checked_categories[] = $cat_id;
-               if ( $parent ) // Do these all at once in a second
-                       continue;
-               $category = get_term( $cat_id, $taxonomy->name );
-               ob_start();
-                       wp_terms_checklist( 0, array( 'taxonomy' => $taxonomy->name, 'descendants_and_self' => $cat_id, 'selected_cats' => $checked_categories, 'popular_cats' => $popular_ids ));
-               $data = ob_get_contents();
-               ob_end_clean();
-               $add = array(
-                       'what' => $taxonomy->name,
-                       'id' => $cat_id,
-                       'data' => str_replace( array("\n", "\t"), '', $data),
-                       'position' => -1
-               );
-       }
-
-       if ( $parent ) { // Foncy - replace the parent and all its children
-               $parent = get_term( $parent, $taxonomy->name );
-               $term_id = $parent->term_id;
-
-               while ( $parent->parent ) { // get the top parent
-                       $parent = &get_term( $parent->parent, $taxonomy->name );
-                       if ( is_wp_error( $parent ) )
-                               break;
-                       $term_id = $parent->term_id;
-               }
-
-               ob_start();
-                       wp_terms_checklist( 0, array('taxonomy' => $taxonomy->name, 'descendants_and_self' => $term_id, 'selected_cats' => $checked_categories, 'popular_cats' => $popular_ids));
-               $data = ob_get_contents();
-               ob_end_clean();
-               $add = array(
-                       'what' => $taxonomy->name,
-                       'id' => $term_id,
-                       'data' => str_replace( array("\n", "\t"), '', $data),
-                       'position' => -1
-               );
-       }
-
-       ob_start();
-               wp_dropdown_categories( array(
-                       'taxonomy' => $taxonomy->name, 'hide_empty' => 0, 'name' => 'new'.$taxonomy->name.'_parent', 'orderby' => 'name',
-                       'hierarchical' => 1, 'show_option_none' => '&mdash; '.$taxonomy->labels->parent_item.' &mdash;'
-               ) );
-       $sup = ob_get_contents();
-       ob_end_clean();
-       $add['supplemental'] = array( 'newcat_parent' => $sup );
+define( 'DOING_AJAX', true );
+define( 'WP_ADMIN', true );
 
 
-       $x = new WP_Ajax_Response( $add );
-       $x->send();
-}
-
-$id = isset($_POST['id'])? (int) $_POST['id'] : 0;
-switch ( $action = $_POST['action'] ) :
-case 'delete-comment' : // On success, die with time() instead of 1
-       if ( !$comment = get_comment( $id ) )
-               die( (string) time() );
-       if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) )
-               die('-1');
-
-       check_ajax_referer( "delete-comment_$id" );
-       $status = wp_get_comment_status( $comment->comment_ID );
-
-       $delta = -1;
-       if ( isset($_POST['trash']) && 1 == $_POST['trash'] ) {
-               if ( 'trash' == $status )
-                       die( (string) time() );
-               $r = wp_trash_comment( $comment->comment_ID );
-       } elseif ( isset($_POST['untrash']) && 1 == $_POST['untrash'] ) {
-               if ( 'trash' != $status )
-                       die( (string) time() );
-               $r = wp_untrash_comment( $comment->comment_ID );
-               if ( ! isset( $_POST['comment_status'] ) || $_POST['comment_status'] != 'trash' ) // undo trash, not in trash
-                       $delta = 1;
-       } elseif ( isset($_POST['spam']) && 1 == $_POST['spam'] ) {
-               if ( 'spam' == $status )
-                       die( (string) time() );
-               $r = wp_spam_comment( $comment->comment_ID );
-       } elseif ( isset($_POST['unspam']) && 1 == $_POST['unspam'] ) {
-               if ( 'spam' != $status )
-                       die( (string) time() );
-               $r = wp_unspam_comment( $comment->comment_ID );
-               if ( ! isset( $_POST['comment_status'] ) || $_POST['comment_status'] != 'spam' ) // undo spam, not in spam
-                       $delta = 1;
-       } elseif ( isset($_POST['delete']) && 1 == $_POST['delete'] ) {
-               $r = wp_delete_comment( $comment->comment_ID );
-       } else {
-               die('-1');
-       }
-
-       if ( $r ) // Decide if we need to send back '1' or a more complicated response including page links and comment counts
-               _wp_ajax_delete_comment_response( $comment->comment_ID, $delta );
+// Require an action parameter
+if ( empty( $_REQUEST['action'] ) )
        die( '0' );
        die( '0' );
-       break;
-case 'delete-tag' :
-       $tag_id = (int) $_POST['tag_ID'];
-       check_ajax_referer( "delete-tag_$tag_id" );
-
-       $taxonomy = !empty($_POST['taxonomy']) ? $_POST['taxonomy'] : 'post_tag';
-       $tax = get_taxonomy($taxonomy);
-
-       if ( !current_user_can( $tax->cap->delete_terms ) )
-               die('-1');
-
-       $tag = get_term( $tag_id, $taxonomy );
-       if ( !$tag || is_wp_error( $tag ) )
-               die('1');
-
-       if ( wp_delete_term($tag_id, $taxonomy))
-               die('1');
-       else
-               die('0');
-       break;
-case 'delete-link' :
-       check_ajax_referer( "delete-bookmark_$id" );
-       if ( !current_user_can( 'manage_links' ) )
-               die('-1');
-
-       $link = get_bookmark( $id );
-       if ( !$link || is_wp_error( $link ) )
-               die('1');
-
-       if ( wp_delete_link( $id ) )
-               die('1');
-       else
-               die('0');
-       break;
-case 'delete-meta' :
-       check_ajax_referer( "delete-meta_$id" );
-       if ( !$meta = get_metadata_by_mid( 'post', $id ) )
-               die('1');
-
-       if ( is_protected_meta( $meta->meta_key, 'post' ) || ! current_user_can( 'delete_post_meta',  $meta->post_id, $meta->meta_key ) )
-               die('-1');
-       if ( delete_meta( $meta->meta_id ) )
-               die('1');
-       die('0');
-       break;
-case 'delete-post' :
-       check_ajax_referer( "{$action}_$id" );
-       if ( !current_user_can( 'delete_post', $id ) )
-               die('-1');
-
-       if ( !get_post( $id ) )
-               die('1');
-
-       if ( wp_delete_post( $id ) )
-               die('1');
-       else
-               die('0');
-       break;
-case 'trash-post' :
-case 'untrash-post' :
-       check_ajax_referer( "{$action}_$id" );
-       if ( !current_user_can( 'delete_post', $id ) )
-               die('-1');
-
-       if ( !get_post( $id ) )
-               die('1');
-
-       if ( 'trash-post' == $action )
-               $done = wp_trash_post( $id );
-       else
-               $done = wp_untrash_post( $id );
-
-       if ( $done )
-               die('1');
-
-       die('0');
-       break;
-case 'delete-page' :
-       check_ajax_referer( "{$action}_$id" );
-       if ( !current_user_can( 'delete_page', $id ) )
-               die('-1');
-
-       if ( !get_page( $id ) )
-               die('1');
-
-       if ( wp_delete_post( $id ) )
-               die('1');
-       else
-               die('0');
-       break;
-case 'dim-comment' : // On success, die with time() instead of 1
-
-       if ( !$comment = get_comment( $id ) ) {
-               $x = new WP_Ajax_Response( array(
-                       'what' => 'comment',
-                       'id' => new WP_Error('invalid_comment', sprintf(__('Comment %d does not exist'), $id))
-               ) );
-               $x->send();
-       }
-
-       if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) && ! current_user_can( 'moderate_comments' ) )
-               die('-1');
-
-       $current = wp_get_comment_status( $comment->comment_ID );
-       if ( $_POST['new'] == $current )
-               die( (string) time() );
-
-       check_ajax_referer( "approve-comment_$id" );
-       if ( in_array( $current, array( 'unapproved', 'spam' ) ) )
-               $result = wp_set_comment_status( $comment->comment_ID, 'approve', true );
-       else
-               $result = wp_set_comment_status( $comment->comment_ID, 'hold', true );
-
-       if ( is_wp_error($result) ) {
-               $x = new WP_Ajax_Response( array(
-                       'what' => 'comment',
-                       'id' => $result
-               ) );
-               $x->send();
-       }
-
-       // Decide if we need to send back '1' or a more complicated response including page links and comment counts
-       _wp_ajax_delete_comment_response( $comment->comment_ID );
-       die( '0' );
-       break;
-case 'add-link-category' : // On the Fly
-       check_ajax_referer( $action );
-       if ( !current_user_can( 'manage_categories' ) )
-               die('-1');
-       $names = explode(',', $_POST['newcat']);
-       $x = new WP_Ajax_Response();
-       foreach ( $names as $cat_name ) {
-               $cat_name = trim($cat_name);
-               $slug = sanitize_title($cat_name);
-               if ( '' === $slug )
-                       continue;
-               if ( !$cat_id = term_exists( $cat_name, 'link_category' ) ) {
-                       $cat_id = wp_insert_term( $cat_name, 'link_category' );
-               }
-               $cat_id = $cat_id['term_id'];
-               $cat_name = esc_html(stripslashes($cat_name));
-               $x->add( array(
-                       'what' => 'link-category',
-                       'id' => $cat_id,
-                       'data' => "<li id='link-category-$cat_id'><label for='in-link-category-$cat_id' class='selectit'><input value='" . esc_attr($cat_id) . "' type='checkbox' checked='checked' name='link_category[]' id='in-link-category-$cat_id'/> $cat_name</label></li>",
-                       'position' => -1
-               ) );
-       }
-       $x->send();
-       break;
-case 'add-tag' :
-       check_ajax_referer( 'add-tag', '_wpnonce_add-tag' );
-       $post_type = !empty($_POST['post_type']) ? $_POST['post_type'] : 'post';
-       $taxonomy = !empty($_POST['taxonomy']) ? $_POST['taxonomy'] : 'post_tag';
-       $tax = get_taxonomy($taxonomy);
-
-       if ( !current_user_can( $tax->cap->edit_terms ) )
-               die('-1');
-
-       $x = new WP_Ajax_Response();
-
-       $tag = wp_insert_term($_POST['tag-name'], $taxonomy, $_POST );
-
-       if ( !$tag || is_wp_error($tag) || (!$tag = get_term( $tag['term_id'], $taxonomy )) ) {
-               $message = __('An error has occurred. Please reload the page and try again.');
-               if ( is_wp_error($tag) && $tag->get_error_message() )
-                       $message = $tag->get_error_message();
-
-               $x->add( array(
-                       'what' => 'taxonomy',
-                       'data' => new WP_Error('error', $message )
-               ) );
-               $x->send();
-       }
-
-       set_current_screen( $_POST['screen'] );
-
-       $wp_list_table = _get_list_table('WP_Terms_List_Table');
-
-       $level = 0;
-       if ( is_taxonomy_hierarchical($taxonomy) ) {
-               $level = count( get_ancestors( $tag->term_id, $taxonomy ) );
-               ob_start();
-               $wp_list_table->single_row( $tag, $level );
-               $noparents = ob_get_clean();
-       }
-
-       ob_start();
-       $wp_list_table->single_row( $tag );
-       $parents = ob_get_clean();
-
-       $x->add( array(
-               'what' => 'taxonomy',
-               'supplemental' => compact('parents', 'noparents')
-               ) );
-       $x->add( array(
-               'what' => 'term',
-               'position' => $level,
-               'supplemental' => (array) $tag
-               ) );
-       $x->send();
-       break;
-case 'get-tagcloud' :
-       if ( isset( $_POST['tax'] ) ) {
-               $taxonomy = sanitize_key( $_POST['tax'] );
-               $tax = get_taxonomy( $taxonomy );
-               if ( ! $tax )
-                       die( '0' );
-               if ( ! current_user_can( $tax->cap->assign_terms ) )
-                       die( '-1' );
-       } else {
-               die('0');
-       }
-
-       $tags = get_terms( $taxonomy, array( 'number' => 45, 'orderby' => 'count', 'order' => 'DESC' ) );
-
-       if ( empty( $tags ) )
-               die( isset( $tax->no_tagcloud ) ? $tax->no_tagcloud : __('No tags found!') );
-
-       if ( is_wp_error( $tags ) )
-               die( $tags->get_error_message() );
-
-       foreach ( $tags as $key => $tag ) {
-               $tags[ $key ]->link = '#';
-               $tags[ $key ]->id = $tag->term_id;
-       }
-
-       // We need raw tag names here, so don't filter the output
-       $return = wp_generate_tag_cloud( $tags, array('filter' => 0) );
-
-       if ( empty($return) )
-               die('0');
-
-       echo $return;
-
-       exit;
-       break;
-case 'get-comments' :
-       check_ajax_referer( $action );
-
-       set_current_screen( 'edit-comments' );
-
-       $wp_list_table = _get_list_table('WP_Post_Comments_List_Table');
-
-       if ( !current_user_can( 'edit_post', $post_id ) )
-               die('-1');
-
-       $wp_list_table->prepare_items();
-
-       if ( !$wp_list_table->has_items() )
-               die('1');
-
-       $x = new WP_Ajax_Response();
-       ob_start();
-       foreach ( $wp_list_table->items as $comment ) {
-               if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) )
-                       continue;
-               get_comment( $comment );
-               $wp_list_table->single_row( $comment );
-       }
-       $comment_list_item = ob_get_contents();
-       ob_end_clean();
-
-       $x->add( array(
-               'what' => 'comments',
-               'data' => $comment_list_item
-       ) );
-       $x->send();
-       break;
-case 'replyto-comment' :
-       check_ajax_referer( $action, '_ajax_nonce-replyto-comment' );
-
-       set_current_screen( 'edit-comments' );
-
-       $comment_post_ID = (int) $_POST['comment_post_ID'];
-       if ( !current_user_can( 'edit_post', $comment_post_ID ) )
-               die('-1');
-
-       $status = $wpdb->get_var( $wpdb->prepare("SELECT post_status FROM $wpdb->posts WHERE ID = %d", $comment_post_ID) );
-
-       if ( empty($status) )
-               die('1');
-       elseif ( in_array($status, array('draft', 'pending', 'trash') ) )
-               die( __('ERROR: you are replying to a comment on a draft post.') );
-
-       $user = wp_get_current_user();
-       if ( $user->ID ) {
-               $comment_author       = $wpdb->escape($user->display_name);
-               $comment_author_email = $wpdb->escape($user->user_email);
-               $comment_author_url   = $wpdb->escape($user->user_url);
-               $comment_content      = trim($_POST['content']);
-               if ( current_user_can( 'unfiltered_html' ) ) {
-                       if ( wp_create_nonce( 'unfiltered-html-comment' ) != $_POST['_wp_unfiltered_html_comment'] ) {
-                               kses_remove_filters(); // start with a clean slate
-                               kses_init_filters(); // set up the filters
-                       }
-               }
-       } else {
-               die( __('Sorry, you must be logged in to reply to a comment.') );
-       }
-
-       if ( '' == $comment_content )
-               die( __('ERROR: please type a comment.') );
-
-       $comment_parent = absint($_POST['comment_ID']);
-       $comment_auto_approved = false;
-       $commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID');
-
-       $comment_id = wp_new_comment( $commentdata );
-       $comment = get_comment($comment_id);
-       if ( ! $comment ) die('1');
-
-       $position = ( isset($_POST['position']) && (int) $_POST['position'] ) ? (int) $_POST['position'] : '-1';
-
-
-       // automatically approve parent comment
-       if ( !empty($_POST['approve_parent']) ) {
-               $parent = get_comment( $comment_parent );
-
-               if ( $parent && $parent->comment_approved === '0' && $parent->comment_post_ID == $comment_post_ID ) {
-                       if ( wp_set_comment_status( $parent->comment_ID, 'approve' ) )
-                               $comment_auto_approved = true;
-               }
-       }
-
-       ob_start();
-               if ( 'dashboard' == $_REQUEST['mode'] ) {
-                       require_once( ABSPATH . 'wp-admin/includes/dashboard.php' );
-                       _wp_dashboard_recent_comments_row( $comment );
-               } else {
-                       if ( 'single' == $_REQUEST['mode'] ) {
-                               $wp_list_table = _get_list_table('WP_Post_Comments_List_Table');
-                       } else {
-                               $wp_list_table = _get_list_table('WP_Comments_List_Table');
-                       }
-                       $wp_list_table->single_row( $comment );
-               }
-               $comment_list_item = ob_get_contents();
-       ob_end_clean();
-
-       $response =  array(
-               'what' => 'comment',
-               'id' => $comment->comment_ID,
-               'data' => $comment_list_item,
-               'position' => $position
-       );
-
-       if ( $comment_auto_approved )
-               $response['supplemental'] = array( 'parent_approved' => $parent->comment_ID );
-
-       $x = new WP_Ajax_Response();
-       $x->add( $response );
-       $x->send();
-       break;
-case 'edit-comment' :
-       check_ajax_referer( 'replyto-comment', '_ajax_nonce-replyto-comment' );
-
-       set_current_screen( 'edit-comments' );
-
-       $comment_id = (int) $_POST['comment_ID'];
-       if ( ! current_user_can( 'edit_comment', $comment_id ) )
-               die('-1');
-
-       if ( '' == $_POST['content'] )
-               die( __('ERROR: please type a comment.') );
-
-       $_POST['comment_status'] = $_POST['status'];
-       edit_comment();
-
-       $position = ( isset($_POST['position']) && (int) $_POST['position']) ? (int) $_POST['position'] : '-1';
-       $comments_status = isset($_POST['comments_listing']) ? $_POST['comments_listing'] : '';
-
-       $checkbox = ( isset($_POST['checkbox']) && true == $_POST['checkbox'] ) ? 1 : 0;
-       $wp_list_table = _get_list_table( $checkbox ? 'WP_Comments_List_Table' : 'WP_Post_Comments_List_Table' );
-
-       ob_start();
-               $wp_list_table->single_row( get_comment( $comment_id ) );
-               $comment_list_item = ob_get_contents();
-       ob_end_clean();
-
-       $x = new WP_Ajax_Response();
-
-       $x->add( array(
-               'what' => 'edit_comment',
-               'id' => $comment->comment_ID,
-               'data' => $comment_list_item,
-               'position' => $position
-       ));
-
-       $x->send();
-       break;
-case 'add-menu-item' :
-       if ( ! current_user_can( 'edit_theme_options' ) )
-               die('-1');
-
-       check_ajax_referer( 'add-menu_item', 'menu-settings-column-nonce' );
-
-       require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
-
-       // For performance reasons, we omit some object properties from the checklist.
-       // The following is a hacky way to restore them when adding non-custom items.
-
-       $menu_items_data = array();
-       foreach ( (array) $_POST['menu-item'] as $menu_item_data ) {
-               if (
-                       ! empty( $menu_item_data['menu-item-type'] ) &&
-                       'custom' != $menu_item_data['menu-item-type'] &&
-                       ! empty( $menu_item_data['menu-item-object-id'] )
-               ) {
-                       switch( $menu_item_data['menu-item-type'] ) {
-                               case 'post_type' :
-                                       $_object = get_post( $menu_item_data['menu-item-object-id'] );
-                               break;
-
-                               case 'taxonomy' :
-                                       $_object = get_term( $menu_item_data['menu-item-object-id'], $menu_item_data['menu-item-object'] );
-                               break;
-                       }
-
-                       $_menu_items = array_map( 'wp_setup_nav_menu_item', array( $_object ) );
-                       $_menu_item = array_shift( $_menu_items );
-
-                       // Restore the missing menu item properties
-                       $menu_item_data['menu-item-description'] = $_menu_item->description;
-               }
-
-               $menu_items_data[] = $menu_item_data;
-       }
-
-       $item_ids = wp_save_nav_menu_items( 0, $menu_items_data );
-       if ( is_wp_error( $item_ids ) )
-               die('-1');
 
 
-       foreach ( (array) $item_ids as $menu_item_id ) {
-               $menu_obj = get_post( $menu_item_id );
-               if ( ! empty( $menu_obj->ID ) ) {
-                       $menu_obj = wp_setup_nav_menu_item( $menu_obj );
-                       $menu_obj->label = $menu_obj->title; // don't show "(pending)" in ajax-added items
-                       $menu_items[] = $menu_obj;
-               }
-       }
+/** Load WordPress Bootstrap */
+require_once( dirname( dirname( __FILE__ ) ) . '/wp-load.php' );
 
 
-       if ( ! empty( $menu_items ) ) {
-               $args = array(
-                       'after' => '',
-                       'before' => '',
-                       'link_after' => '',
-                       'link_before' => '',
-                       'walker' => new Walker_Nav_Menu_Edit,
-               );
-               echo walk_nav_menu_tree( $menu_items, 0, (object) $args );
-       }
-       break;
-case 'add-meta' :
-       check_ajax_referer( 'add-meta', '_ajax_nonce-add-meta' );
-       $c = 0;
-       $pid = (int) $_POST['post_id'];
-       $post = get_post( $pid );
+/** Load WordPress Administration APIs */
+require_once( ABSPATH . 'wp-admin/includes/admin.php' );
 
 
-       if ( isset($_POST['metakeyselect']) || isset($_POST['metakeyinput']) ) {
-               if ( !current_user_can( 'edit_post', $pid ) )
-                       die('-1');
-               if ( isset($_POST['metakeyselect']) && '#NONE#' == $_POST['metakeyselect'] && empty($_POST['metakeyinput']) )
-                       die('1');
-               if ( $post->post_status == 'auto-draft' ) {
-                       $save_POST = $_POST; // Backup $_POST
-                       $_POST = array(); // Make it empty for edit_post()
-                       $_POST['action'] = 'draft'; // Warning fix
-                       $_POST['post_ID'] = $pid;
-                       $_POST['post_type'] = $post->post_type;
-                       $_POST['post_status'] = 'draft';
-                       $now = current_time('timestamp', 1);
-                       $_POST['post_title'] = sprintf('Draft created on %s at %s', date(get_option('date_format'), $now), date(get_option('time_format'), $now));
+/** Load Ajax Handlers for WordPress Core */
+require_once( ABSPATH . 'wp-admin/includes/ajax-actions.php' );
 
 
-                       if ( $pid = edit_post() ) {
-                               if ( is_wp_error( $pid ) ) {
-                                       $x = new WP_Ajax_Response( array(
-                                               'what' => 'meta',
-                                               'data' => $pid
-                                       ) );
-                                       $x->send();
-                               }
-                               $_POST = $save_POST; // Now we can restore original $_POST again
-                               if ( !$mid = add_meta( $pid ) )
-                                       die(__('Please provide a custom field value.'));
-                       } else {
-                               die('0');
-                       }
-               } else if ( !$mid = add_meta( $pid ) ) {
-                       die(__('Please provide a custom field value.'));
-               }
+@header( 'Content-Type: text/html; charset=' . get_option( 'blog_charset' ) );
+@header( 'X-Robots-Tag: noindex' );
 
 
-               $meta = get_metadata_by_mid( 'post', $mid );
-               $pid = (int) $meta->post_id;
-               $meta = get_object_vars( $meta );
-               $x = new WP_Ajax_Response( array(
-                       'what' => 'meta',
-                       'id' => $mid,
-                       'data' => _list_meta_row( $meta, $c ),
-                       'position' => 1,
-                       'supplemental' => array('postid' => $pid)
-               ) );
-       } else { // Update?
-               $mid = (int) key( $_POST['meta'] );
-               $key = stripslashes( $_POST['meta'][$mid]['key'] );
-               $value = stripslashes( $_POST['meta'][$mid]['value'] );
-               if ( '' == trim($key) )
-                       die(__('Please provide a custom field name.'));
-               if ( '' == trim($value) )
-                       die(__('Please provide a custom field value.'));
-               if ( ! $meta = get_metadata_by_mid( 'post', $mid ) )
-                       die('0'); // if meta doesn't exist
-               if ( is_protected_meta( $meta->meta_key, 'post' ) || is_protected_meta( $key, 'post' ) ||
-                       ! current_user_can( 'edit_post_meta', $meta->post_id, $meta->meta_key ) ||
-                       ! current_user_can( 'edit_post_meta', $meta->post_id, $key ) )
-                       die('-1');
-               if ( $meta->meta_value != $value || $meta->meta_key != $key ) {
-                       if ( !$u = update_metadata_by_mid( 'post', $mid, $value, $key ) )
-                               die('0'); // We know meta exists; we also know it's unchanged (or DB error, in which case there are bigger problems).
-               }
-
-               $x = new WP_Ajax_Response( array(
-                       'what' => 'meta',
-                       'id' => $mid, 'old_id' => $mid,
-                       'data' => _list_meta_row( array(
-                               'meta_key' => $key,
-                               'meta_value' => $value,
-                               'meta_id' => $mid
-                       ), $c ),
-                       'position' => 0,
-                       'supplemental' => array('postid' => $meta->post_id)
-               ) );
-       }
-       $x->send();
-       break;
-case 'add-user' :
-       check_ajax_referer( $action );
-       if ( !current_user_can('create_users') )
-               die('-1');
-       if ( !$user_id = add_user() )
-               die('0');
-       elseif ( is_wp_error( $user_id ) ) {
-               $x = new WP_Ajax_Response( array(
-                       'what' => 'user',
-                       'id' => $user_id
-               ) );
-               $x->send();
-       }
-       $user_object = new WP_User( $user_id );
-
-       $wp_list_table = _get_list_table('WP_Users_List_Table');
-
-       $x = new WP_Ajax_Response( array(
-               'what' => 'user',
-               'id' => $user_id,
-               'data' => $wp_list_table->single_row( $user_object, '', $user_object->roles[0] ),
-               'supplemental' => array(
-                       'show-link' => sprintf(__( 'User <a href="#%s">%s</a> added' ), "user-$user_id", $user_object->user_login),
-                       'role' => $user_object->roles[0]
-               )
-       ) );
-       $x->send();
-       break;
-case 'autosave' : // The name of this action is hardcoded in edit_post()
-       define( 'DOING_AUTOSAVE', true );
-
-       $nonce_age = check_ajax_referer( 'autosave', 'autosavenonce' );
-
-       $_POST['post_category'] = explode(",", $_POST['catslist']);
-       if ( $_POST['post_type'] == 'page' || empty($_POST['post_category']) )
-               unset($_POST['post_category']);
-
-       $do_autosave = (bool) $_POST['autosave'];
-       $do_lock = true;
-
-       $data = $alert = '';
-       /* translators: draft saved date format, see http://php.net/date */
-       $draft_saved_date_format = __('g:i:s a');
-       /* translators: %s: date and time */
-       $message = sprintf( __('Draft saved at %s.'), date_i18n( $draft_saved_date_format ) );
-
-       $supplemental = array();
-       if ( isset($login_grace_period) )
-               $alert .= sprintf( __('Your login has expired. Please open a new browser window and <a href="%s" target="_blank">log in again</a>. '), add_query_arg( 'interim-login', 1, wp_login_url() ) );
-
-       $id = $revision_id = 0;
-
-       $post_ID = (int) $_POST['post_ID'];
-       $_POST['ID'] = $post_ID;
-       $post = get_post($post_ID);
-       if ( 'auto-draft' == $post->post_status )
-               $_POST['post_status'] = 'draft';
-
-       if ( $last = wp_check_post_lock( $post->ID ) ) {
-               $do_autosave = $do_lock = false;
-
-               $last_user = get_userdata( $last );
-               $last_user_name = $last_user ? $last_user->display_name : __( 'Someone' );
-               $data = __( 'Autosave disabled.' );
-
-               $supplemental['disable_autosave'] = 'disable';
-               $alert .= sprintf( __( '%s is currently editing this article. If you update it, you will overwrite the changes.' ), esc_html( $last_user_name ) );
-       }
-
-       if ( 'page' == $post->post_type ) {
-               if ( !current_user_can('edit_page', $post_ID) )
-                       die(__('You are not allowed to edit this page.'));
-       } else {
-               if ( !current_user_can('edit_post', $post_ID) )
-                       die(__('You are not allowed to edit this post.'));
-       }
-
-       if ( $do_autosave ) {
-               // Drafts and auto-drafts are just overwritten by autosave
-               if ( 'auto-draft' == $post->post_status || 'draft' == $post->post_status ) {
-                       $id = edit_post();
-               } else { // Non drafts are not overwritten.  The autosave is stored in a special post revision.
-                       $revision_id = wp_create_post_autosave( $post->ID );
-                       if ( is_wp_error($revision_id) )
-                               $id = $revision_id;
-                       else
-                               $id = $post->ID;
-               }
-               $data = $message;
-       } else {
-               if ( ! empty( $_POST['auto_draft'] ) )
-                       $id = 0; // This tells us it didn't actually save
-               else
-                       $id = $post->ID;
-       }
-
-       if ( $do_lock && empty( $_POST['auto_draft'] ) && $id && is_numeric( $id ) ) {
-               $lock_result = wp_set_post_lock( $id );
-               $supplemental['active-post-lock'] = implode( ':', $lock_result );
-       }
-
-       if ( $nonce_age == 2 ) {
-               $supplemental['replace-autosavenonce'] = wp_create_nonce('autosave');
-               $supplemental['replace-getpermalinknonce'] = wp_create_nonce('getpermalink');
-               $supplemental['replace-samplepermalinknonce'] = wp_create_nonce('samplepermalink');
-               $supplemental['replace-closedpostboxesnonce'] = wp_create_nonce('closedpostboxes');
-               $supplemental['replace-_ajax_linking_nonce'] = wp_create_nonce( 'internal-linking' );
-               if ( $id ) {
-                       if ( $_POST['post_type'] == 'post' )
-                               $supplemental['replace-_wpnonce'] = wp_create_nonce('update-post_' . $id);
-                       elseif ( $_POST['post_type'] == 'page' )
-                               $supplemental['replace-_wpnonce'] = wp_create_nonce('update-page_' . $id);
-               }
-       }
-
-       if ( ! empty($alert) )
-               $supplemental['alert'] = $alert;
-
-       $x = new WP_Ajax_Response( array(
-               'what' => 'autosave',
-               'id' => $id,
-               'data' => $id ? $data : '',
-               'supplemental' => $supplemental
-       ) );
-       $x->send();
-       break;
-case 'closed-postboxes' :
-       check_ajax_referer( 'closedpostboxes', 'closedpostboxesnonce' );
-       $closed = isset( $_POST['closed'] ) ? explode( ',', $_POST['closed']) : array();
-       $closed = array_filter($closed);
-
-       $hidden = isset( $_POST['hidden'] ) ? explode( ',', $_POST['hidden']) : array();
-       $hidden = array_filter($hidden);
-
-       $page = isset( $_POST['page'] ) ? $_POST['page'] : '';
-
-       if ( $page != sanitize_key( $page ) )
-               die('0');
-
-       if ( ! $user = wp_get_current_user() )
-               die('-1');
-
-       if ( is_array($closed) )
-               update_user_option($user->ID, "closedpostboxes_$page", $closed, true);
-
-       if ( is_array($hidden) ) {
-               $hidden = array_diff( $hidden, array('submitdiv', 'linksubmitdiv', 'manage-menu', 'create-menu') ); // postboxes that are always shown
-               update_user_option($user->ID, "metaboxhidden_$page", $hidden, true);
-       }
-
-       die('1');
-       break;
-case 'hidden-columns' :
-       check_ajax_referer( 'screen-options-nonce', 'screenoptionnonce' );
-       $hidden = isset( $_POST['hidden'] ) ? $_POST['hidden'] : '';
-       $hidden = explode( ',', $_POST['hidden'] );
-       $page = isset( $_POST['page'] ) ? $_POST['page'] : '';
-
-       if ( $page != sanitize_key( $page ) )
-               die('0');
-
-       if ( ! $user = wp_get_current_user() )
-               die('-1');
-
-       if ( is_array($hidden) )
-               update_user_option($user->ID, "manage{$page}columnshidden", $hidden, true);
-
-       die('1');
-       break;
-case 'update-welcome-panel' :
-       check_ajax_referer( 'welcome-panel-nonce', 'welcomepanelnonce' );
-
-       if ( ! current_user_can( 'edit_theme_options' ) )
-               die('-1');
-
-       update_user_meta( get_current_user_id(), 'show_welcome_panel', empty( $_POST['visible'] ) ? 0 : 1 );
-
-       die('1');
-       break;
-case 'menu-get-metabox' :
-       if ( ! current_user_can( 'edit_theme_options' ) )
-               die('-1');
-
-       require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
-
-       if ( isset( $_POST['item-type'] ) && 'post_type' == $_POST['item-type'] ) {
-               $type = 'posttype';
-               $callback = 'wp_nav_menu_item_post_type_meta_box';
-               $items = (array) get_post_types( array( 'show_in_nav_menus' => true ), 'object' );
-       } elseif ( isset( $_POST['item-type'] ) && 'taxonomy' == $_POST['item-type'] ) {
-               $type = 'taxonomy';
-               $callback = 'wp_nav_menu_item_taxonomy_meta_box';
-               $items = (array) get_taxonomies( array( 'show_ui' => true ), 'object' );
-       }
-
-       if ( ! empty( $_POST['item-object'] ) && isset( $items[$_POST['item-object']] ) ) {
-               $item = apply_filters( 'nav_menu_meta_box_object', $items[ $_POST['item-object'] ] );
-               ob_start();
-               call_user_func_array($callback, array(
-                       null,
-                       array(
-                               'id' => 'add-' . $item->name,
-                               'title' => $item->labels->name,
-                               'callback' => $callback,
-                               'args' => $item,
-                       )
-               ));
-
-               $markup = ob_get_clean();
-
-               echo json_encode(array(
-                       'replace-id' => $type . '-' . $item->name,
-                       'markup' => $markup,
-               ));
-       }
-
-       exit;
-       break;
-case 'menu-quick-search':
-       if ( ! current_user_can( 'edit_theme_options' ) )
-               die('-1');
-
-       require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
-
-       _wp_ajax_menu_quick_search( $_REQUEST );
-
-       exit;
-       break;
-case 'wp-link-ajax':
-       check_ajax_referer( 'internal-linking', '_ajax_linking_nonce' );
-
-       $args = array();
-
-       if ( isset( $_POST['search'] ) )
-               $args['s'] = stripslashes( $_POST['search'] );
-       $args['pagenum'] = ! empty( $_POST['page'] ) ? absint( $_POST['page'] ) : 1;
-
-       require(ABSPATH . WPINC . '/class-wp-editor.php');
-       $results = _WP_Editors::wp_link_query( $args );
-
-       if ( ! isset( $results ) )
-               die( '0' );
-
-       echo json_encode( $results );
-       echo "\n";
-
-       exit;
-       break;
-case 'menu-locations-save':
-       if ( ! current_user_can( 'edit_theme_options' ) )
-               die('-1');
-       check_ajax_referer( 'add-menu_item', 'menu-settings-column-nonce' );
-       if ( ! isset( $_POST['menu-locations'] ) )
-               die('0');
-       set_theme_mod( 'nav_menu_locations', array_map( 'absint', $_POST['menu-locations'] ) );
-       die('1');
-       break;
-case 'meta-box-order':
-       check_ajax_referer( 'meta-box-order' );
-       $order = isset( $_POST['order'] ) ? (array) $_POST['order'] : false;
-       $page_columns = isset( $_POST['page_columns'] ) ? $_POST['page_columns'] : 'auto';
-
-       if ( $page_columns != 'auto' )
-               $page_columns = (int) $page_columns;
-
-       $page = isset( $_POST['page'] ) ? $_POST['page'] : '';
-
-       if ( $page != sanitize_key( $page ) )
-               die('0');
-
-       if ( ! $user = wp_get_current_user() )
-               die('-1');
-
-       if ( $order )
-               update_user_option($user->ID, "meta-box-order_$page", $order, true);
-
-       if ( $page_columns )
-               update_user_option($user->ID, "screen_layout_$page", $page_columns, true);
-
-       die('1');
-       break;
-case 'get-permalink':
-       check_ajax_referer( 'getpermalink', 'getpermalinknonce' );
-       $post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0;
-       die(add_query_arg(array('preview' => 'true'), get_permalink($post_id)));
-break;
-case 'sample-permalink':
-       check_ajax_referer( 'samplepermalink', 'samplepermalinknonce' );
-       $post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0;
-       $title = isset($_POST['new_title'])? $_POST['new_title'] : '';
-       $slug = isset($_POST['new_slug'])? $_POST['new_slug'] : null;
-       die(get_sample_permalink_html($post_id, $title, $slug));
-break;
-case 'inline-save':
-       check_ajax_referer( 'inlineeditnonce', '_inline_edit' );
-
-       if ( ! isset($_POST['post_ID']) || ! ( $post_ID = (int) $_POST['post_ID'] ) )
-               exit;
-
-       if ( 'page' == $_POST['post_type'] ) {
-               if ( ! current_user_can( 'edit_page', $post_ID ) )
-                       die( __('You are not allowed to edit this page.') );
-       } else {
-               if ( ! current_user_can( 'edit_post', $post_ID ) )
-                       die( __('You are not allowed to edit this post.') );
-       }
-
-       set_current_screen( $_POST['screen'] );
-
-       if ( $last = wp_check_post_lock( $post_ID ) ) {
-               $last_user = get_userdata( $last );
-               $last_user_name = $last_user ? $last_user->display_name : __( 'Someone' );
-               printf( $_POST['post_type'] == 'page' ? __( 'Saving is disabled: %s is currently editing this page.' ) : __( 'Saving is disabled: %s is currently editing this post.' ),        esc_html( $last_user_name ) );
-               exit;
-       }
-
-       $data = &$_POST;
-
-       $post = get_post( $post_ID, ARRAY_A );
-       $post = add_magic_quotes($post); //since it is from db
-
-       $data['content'] = $post['post_content'];
-       $data['excerpt'] = $post['post_excerpt'];
-
-       // rename
-       $data['user_ID'] = $GLOBALS['user_ID'];
-
-       if ( isset($data['post_parent']) )
-               $data['parent_id'] = $data['post_parent'];
-
-       // status
-       if ( isset($data['keep_private']) && 'private' == $data['keep_private'] )
-               $data['post_status'] = 'private';
-       else
-               $data['post_status'] = $data['_status'];
-
-       if ( empty($data['comment_status']) )
-               $data['comment_status'] = 'closed';
-       if ( empty($data['ping_status']) )
-               $data['ping_status'] = 'closed';
-
-       // update the post
-       edit_post();
-
-       $wp_list_table = _get_list_table('WP_Posts_List_Table');
-
-       $mode = $_POST['post_view'];
-       $wp_list_table->display_rows( array( get_post( $_POST['post_ID'] ) ) );
-
-       exit;
-       break;
-case 'inline-save-tax':
-       check_ajax_referer( 'taxinlineeditnonce', '_inline_edit' );
-
-       $taxonomy = sanitize_key( $_POST['taxonomy'] );
-       $tax = get_taxonomy( $taxonomy );
-       if ( ! $tax )
-               die( '0' );
-
-       if ( ! current_user_can( $tax->cap->edit_terms ) )
-               die( '-1' );
-
-       set_current_screen( 'edit-' . $taxonomy );
-
-       $wp_list_table = _get_list_table('WP_Terms_List_Table');
-
-       if ( ! isset($_POST['tax_ID']) || ! ( $id = (int) $_POST['tax_ID'] ) )
-               die(-1);
-
-       $tag = get_term( $id, $taxonomy );
-       $_POST['description'] = $tag->description;
-
-       $updated = wp_update_term($id, $taxonomy, $_POST);
-       if ( $updated && !is_wp_error($updated) ) {
-               $tag = get_term( $updated['term_id'], $taxonomy );
-               if ( !$tag || is_wp_error( $tag ) ) {
-                       if ( is_wp_error($tag) && $tag->get_error_message() )
-                               die( $tag->get_error_message() );
-                       die( __('Item not updated.') );
-               }
-
-               echo $wp_list_table->single_row( $tag );
-       } else {
-               if ( is_wp_error($updated) && $updated->get_error_message() )
-                       die( $updated->get_error_message() );
-               die( __('Item not updated.') );
-       }
-
-       exit;
-       break;
-case 'find_posts':
-       check_ajax_referer( 'find-posts' );
-
-       if ( empty($_POST['ps']) )
-               exit;
-
-       if ( !empty($_POST['post_type']) && in_array( $_POST['post_type'], get_post_types() ) )
-               $what = $_POST['post_type'];
-       else
-               $what = 'post';
-
-       $s = stripslashes($_POST['ps']);
-       preg_match_all('/".*?("|$)|((?<=[\\s",+])|^)[^\\s",+]+/', $s, $matches);
-       $search_terms = array_map('_search_terms_tidy', $matches[0]);
-
-       $searchand = $search = '';
-       foreach ( (array) $search_terms as $term ) {
-               $term = esc_sql( like_escape( $term ) );
-               $search .= "{$searchand}(($wpdb->posts.post_title LIKE '%{$term}%') OR ($wpdb->posts.post_content LIKE '%{$term}%'))";
-               $searchand = ' AND ';
-       }
-       $term = esc_sql( like_escape( $s ) );
-       if ( count($search_terms) > 1 && $search_terms[0] != $s )
-               $search .= " OR ($wpdb->posts.post_title LIKE '%{$term}%') OR ($wpdb->posts.post_content LIKE '%{$term}%')";
-
-       $posts = $wpdb->get_results( "SELECT ID, post_title, post_status, post_date FROM $wpdb->posts WHERE post_type = '$what' AND post_status IN ('draft', 'publish') AND ($search) ORDER BY post_date_gmt DESC LIMIT 50" );
-
-       if ( ! $posts ) {
-               $posttype = get_post_type_object($what);
-               exit($posttype->labels->not_found);
-       }
-
-       $html = '<table class="widefat" cellspacing="0"><thead><tr><th class="found-radio"><br /></th><th>'.__('Title').'</th><th>'.__('Date').'</th><th>'.__('Status').'</th></tr></thead><tbody>';
-       foreach ( $posts as $post ) {
-
-               switch ( $post->post_status ) {
-                       case 'publish' :
-                       case 'private' :
-                               $stat = __('Published');
-                               break;
-                       case 'future' :
-                               $stat = __('Scheduled');
-                               break;
-                       case 'pending' :
-                               $stat = __('Pending Review');
-                               break;
-                       case 'draft' :
-                               $stat = __('Draft');
-                               break;
-               }
-
-               if ( '0000-00-00 00:00:00' == $post->post_date ) {
-                       $time = '';
-               } else {
-                       /* translators: date format in table columns, see http://php.net/date */
-                       $time = mysql2date(__('Y/m/d'), $post->post_date);
-               }
-
-               $html .= '<tr class="found-posts"><td class="found-radio"><input type="radio" id="found-'.$post->ID.'" name="found_post_id" value="' . esc_attr($post->ID) . '"></td>';
-               $html .= '<td><label for="found-'.$post->ID.'">'.esc_html( $post->post_title ).'</label></td><td>'.esc_html( $time ).'</td><td>'.esc_html( $stat ).'</td></tr>'."\n\n";
-       }
-       $html .= '</tbody></table>';
-
-       $x = new WP_Ajax_Response();
-       $x->add( array(
-               'what' => $what,
-               'data' => $html
-       ));
-       $x->send();
-
-       break;
-case 'widgets-order' :
-       check_ajax_referer( 'save-sidebar-widgets', 'savewidgets' );
-
-       if ( !current_user_can('edit_theme_options') )
-               die('-1');
-
-       unset( $_POST['savewidgets'], $_POST['action'] );
-
-       // save widgets order for all sidebars
-       if ( is_array($_POST['sidebars']) ) {
-               $sidebars = array();
-               foreach ( $_POST['sidebars'] as $key => $val ) {
-                       $sb = array();
-                       if ( !empty($val) ) {
-                               $val = explode(',', $val);
-                               foreach ( $val as $k => $v ) {
-                                       if ( strpos($v, 'widget-') === false )
-                                               continue;
-
-                                       $sb[$k] = substr($v, strpos($v, '_') + 1);
-                               }
-                       }
-                       $sidebars[$key] = $sb;
-               }
-               wp_set_sidebars_widgets($sidebars);
-               die('1');
-       }
-
-       die('-1');
-       break;
-case 'save-widget' :
-       check_ajax_referer( 'save-sidebar-widgets', 'savewidgets' );
-
-       if ( !current_user_can('edit_theme_options') || !isset($_POST['id_base']) )
-               die('-1');
-
-       unset( $_POST['savewidgets'], $_POST['action'] );
-
-       do_action('load-widgets.php');
-       do_action('widgets.php');
-       do_action('sidebar_admin_setup');
-
-       $id_base = $_POST['id_base'];
-       $widget_id = $_POST['widget-id'];
-       $sidebar_id = $_POST['sidebar'];
-       $multi_number = !empty($_POST['multi_number']) ? (int) $_POST['multi_number'] : 0;
-       $settings = isset($_POST['widget-' . $id_base]) && is_array($_POST['widget-' . $id_base]) ? $_POST['widget-' . $id_base] : false;
-       $error = '<p>' . __('An error has occurred. Please reload the page and try again.') . '</p>';
-
-       $sidebars = wp_get_sidebars_widgets();
-       $sidebar = isset($sidebars[$sidebar_id]) ? $sidebars[$sidebar_id] : array();
-
-       // delete
-       if ( isset($_POST['delete_widget']) && $_POST['delete_widget'] ) {
-
-               if ( !isset($wp_registered_widgets[$widget_id]) )
-                       die($error);
-
-               $sidebar = array_diff( $sidebar, array($widget_id) );
-               $_POST = array('sidebar' => $sidebar_id, 'widget-' . $id_base => array(), 'the-widget-id' => $widget_id, 'delete_widget' => '1');
-       } elseif ( $settings && preg_match( '/__i__|%i%/', key($settings) ) ) {
-               if ( !$multi_number )
-                       die($error);
-
-               $_POST['widget-' . $id_base] = array( $multi_number => array_shift($settings) );
-               $widget_id = $id_base . '-' . $multi_number;
-               $sidebar[] = $widget_id;
-       }
-       $_POST['widget-id'] = $sidebar;
-
-       foreach ( (array) $wp_registered_widget_updates as $name => $control ) {
-
-               if ( $name == $id_base ) {
-                       if ( !is_callable( $control['callback'] ) )
-                               continue;
-
-                       ob_start();
-                               call_user_func_array( $control['callback'], $control['params'] );
-                       ob_end_clean();
-                       break;
-               }
-       }
-
-       if ( isset($_POST['delete_widget']) && $_POST['delete_widget'] ) {
-               $sidebars[$sidebar_id] = $sidebar;
-               wp_set_sidebars_widgets($sidebars);
-               echo "deleted:$widget_id";
-               die();
-       }
-
-       if ( !empty($_POST['add_new']) )
-               die();
-
-       if ( $form = $wp_registered_widget_controls[$widget_id] )
-               call_user_func_array( $form['callback'], $form['params'] );
-
-       die();
-       break;
-case 'image-editor':
-       $attachment_id = intval($_POST['postid']);
-       if ( empty($attachment_id) || !current_user_can('edit_post', $attachment_id) )
-               die('-1');
-
-       check_ajax_referer( "image_editor-$attachment_id" );
-       include_once( ABSPATH . 'wp-admin/includes/image-edit.php' );
-
-       $msg = false;
-       switch ( $_POST['do'] ) {
-               case 'save' :
-                       $msg = wp_save_image($attachment_id);
-                       $msg = json_encode($msg);
-                       die($msg);
-                       break;
-               case 'scale' :
-                       $msg = wp_save_image($attachment_id);
-                       break;
-               case 'restore' :
-                       $msg = wp_restore_image($attachment_id);
-                       break;
-       }
-
-       wp_image_editor($attachment_id, $msg);
-       die();
-       break;
-case 'set-post-thumbnail':
-       $post_ID = intval( $_POST['post_id'] );
-       if ( !current_user_can( 'edit_post', $post_ID ) )
-               die( '-1' );
-       $thumbnail_id = intval( $_POST['thumbnail_id'] );
-
-       check_ajax_referer( "set_post_thumbnail-$post_ID" );
-
-       if ( $thumbnail_id == '-1' ) {
-               if ( delete_post_thumbnail( $post_ID ) )
-                       die( _wp_post_thumbnail_html() );
-               else
-                       die( '0' );
-       }
-
-       if ( set_post_thumbnail( $post_ID, $thumbnail_id ) )
-               die( _wp_post_thumbnail_html( $thumbnail_id ) );
-       die( '0' );
-       break;
-case 'date_format' :
-       die( date_i18n( sanitize_option( 'date_format', $_POST['date'] ) ) );
-       break;
-case 'time_format' :
-       die( date_i18n( sanitize_option( 'time_format', $_POST['date'] ) ) );
-       break;
-case 'wp-fullscreen-save-post' :
-       $post_id = isset( $_POST['post_ID'] ) ? (int) $_POST['post_ID'] : 0;
-
-       $post = $post_type = null;
-
-       if ( $post_id )
-               $post = get_post( $post_id );
-
-       if ( $post )
-               $post_type = $post->post_type;
-       elseif ( isset( $_POST['post_type'] ) && post_type_exists( $_POST['post_type'] ) )
-               $post_type = $_POST['post_type'];
-
-       check_ajax_referer('update-' . $post_type . '_' . $post_id, '_wpnonce');
-
-       $post_id = edit_post();
-
-       if ( is_wp_error($post_id) ) {
-               if ( $post_id->get_error_message() )
-                       $message = $post_id->get_error_message();
-               else
-                       $message = __('Save failed');
-
-               echo json_encode( array( 'message' => $message, 'last_edited' => '' ) );
-               die();
-       } else {
-               $message = __('Saved.');
-       }
-
-       if ( $post ) {
-               $last_date = mysql2date( get_option('date_format'), $post->post_modified );
-               $last_time = mysql2date( get_option('time_format'), $post->post_modified );
-       } else {
-               $last_date = date_i18n( get_option('date_format') );
-               $last_time = date_i18n( get_option('time_format') );
-       }
-
-       if ( $last_id = get_post_meta($post_id, '_edit_last', true) ) {
-               $last_user = get_userdata($last_id);
-               $last_edited = sprintf( __('Last edited by %1$s on %2$s at %3$s'), esc_html( $last_user->display_name ), $last_date, $last_time );
-       } else {
-               $last_edited = sprintf( __('Last edited on %1$s at %2$s'), $last_date, $last_time );
-       }
-
-       echo json_encode( array( 'message' => $message, 'last_edited' => $last_edited ) );
-       die();
-       break;
-case 'wp-remove-post-lock' :
-       if ( empty( $_POST['post_ID'] ) || empty( $_POST['active_post_lock'] ) )
-               die( '0' );
-       $post_id = (int) $_POST['post_ID'];
-       if ( ! $post = get_post( $post_id ) )
-               die( '0' );
-
-       check_ajax_referer( 'update-' . $post->post_type . '_' . $post_id );
-
-       if ( ! current_user_can( 'edit_post', $post_id ) )
-               die( '-1' );
-
-       $active_lock = array_map( 'absint', explode( ':', $_POST['active_post_lock'] ) );
-       if ( $active_lock[1] != get_current_user_id() )
-               die( '0' );
-
-       $new_lock = ( time() - apply_filters( 'wp_check_post_lock_window', AUTOSAVE_INTERVAL * 2 ) + 5 ) . ':' . $active_lock[1];
-       update_post_meta( $post_id, '_edit_lock', $new_lock, implode( ':', $active_lock ) );
-       die( '1' );
-case 'dismiss-wp-pointer' :
-       $pointer = $_POST['pointer'];
-       if ( $pointer != sanitize_key( $pointer ) )
-               die( '0' );
-
-//     check_ajax_referer( 'dismiss-pointer_' . $pointer );
-
-       $dismissed = array_filter( explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) ) );
-
-       if ( in_array( $pointer, $dismissed ) )
-               die( '0' );
-
-       $dismissed[] = $pointer;
-       $dismissed = implode( ',', $dismissed );
+send_nosniff_header();
 
 
-       update_user_meta( get_current_user_id(), 'dismissed_wp_pointers', $dismissed );
-       die( '1' );
-       break;
-default :
-       do_action( 'wp_ajax_' . $_POST['action'] );
-       die('0');
-       break;
-endswitch;
-?>
+do_action( 'admin_init' );
+
+$core_actions_get = array(
+       'fetch-list', 'ajax-tag-search', 'wp-compression-test', 'imgedit-preview', 'oembed-cache',
+       'autocomplete-user', 'dashboard-widgets', 'logged-in',
+);
+
+$core_actions_post = array(
+       'oembed-cache', 'image-editor', 'delete-comment', 'delete-tag', 'delete-link',
+       'delete-meta', 'delete-post', 'trash-post', 'untrash-post', 'delete-page', 'dim-comment',
+       'add-link-category', 'add-tag', 'get-tagcloud', 'get-comments', 'replyto-comment',
+       'edit-comment', 'add-menu-item', 'add-meta', 'add-user', 'autosave', 'closed-postboxes',
+       'hidden-columns', 'update-welcome-panel', 'menu-get-metabox', 'wp-link-ajax',
+       'menu-locations-save', 'menu-quick-search', 'meta-box-order', 'get-permalink',
+       'sample-permalink', 'inline-save', 'inline-save-tax', 'find_posts', 'widgets-order',
+       'save-widget', 'set-post-thumbnail', 'date_format', 'time_format', 'wp-fullscreen-save-post',
+       'wp-remove-post-lock', 'dismiss-wp-pointer', 'upload-attachment',
+);
+
+// Register core Ajax calls.
+if ( ! empty( $_GET['action'] ) && in_array( $_GET['action'], $core_actions_get ) )
+       add_action( 'wp_ajax_' . $_GET['action'], 'wp_ajax_' . str_replace( '-', '_', $_GET['action'] ), 1 );
+
+if ( ! empty( $_POST['action'] ) && in_array( $_POST['action'], $core_actions_post ) )
+       add_action( 'wp_ajax_' . $_POST['action'], 'wp_ajax_' . str_replace( '-', '_', $_POST['action'] ), 1 );
+
+add_action( 'wp_ajax_nopriv_autosave', 'wp_ajax_nopriv_autosave', 1 );
+
+if ( is_user_logged_in() )
+       do_action( 'wp_ajax_' . $_REQUEST['action'] ); // Authenticated actions
+else
+       do_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] ); // Non-admin actions
+
+// Default status
+die( '0' );
index b8c84fdad7065bcebf1035ee8ec828ef8f862de0..f59674908931d8c67ec8504970fac7f3f795d733 100644 (file)
@@ -13,4 +13,3 @@ _deprecated_file( basename(__FILE__), '2.5', 'wp-admin/includes/admin.php' );
 
 /** WordPress Administration API: Includes all Administration functions. */
 require_once(ABSPATH . 'wp-admin/includes/admin.php');
 
 /** WordPress Administration API: Includes all Administration functions. */
 require_once(ABSPATH . 'wp-admin/includes/admin.php');
-?>
\ No newline at end of file
index a34a51b882e59990e079f96c8a5a7a879d17b114..248897c9877233ba4e4f1e6f0e3278050bf746c8 100644 (file)
@@ -11,7 +11,7 @@ if ( ! defined( 'WP_ADMIN' ) )
        require_once( './admin.php' );
 
 // In case admin-header.php is included in a function.
        require_once( './admin.php' );
 
 // In case admin-header.php is included in a function.
-global $title, $hook_suffix, $current_screen, $wp_locale, $pagenow, $wp_version, $is_iphone,
+global $title, $hook_suffix, $current_screen, $wp_locale, $pagenow, $wp_version,
        $current_site, $update_title, $total_update_count, $parent_file;
 
 // Catch plugins that include admin-header.php before admin.php completes.
        $current_site, $update_title, $total_update_count, $parent_file;
 
 // Catch plugins that include admin-header.php before admin.php completes.
@@ -55,7 +55,7 @@ var userSettings = {
                'uid': '<?php if ( ! isset($current_user) ) $current_user = wp_get_current_user(); echo $current_user->ID; ?>',
                'time':'<?php echo time() ?>'
        },
                'uid': '<?php if ( ! isset($current_user) ) $current_user = wp_get_current_user(); echo $current_user->ID; ?>',
                'time':'<?php echo time() ?>'
        },
-       ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>',
+       ajaxurl = '<?php echo admin_url( 'admin-ajax.php', 'relative' ); ?>',
        pagenow = '<?php echo $current_screen->id; ?>',
        typenow = '<?php echo $current_screen->post_type; ?>',
        adminpage = '<?php echo $admin_body_class; ?>',
        pagenow = '<?php echo $current_screen->id; ?>',
        typenow = '<?php echo $current_screen->post_type; ?>',
        adminpage = '<?php echo $admin_body_class; ?>',
@@ -85,13 +85,26 @@ if ( is_rtl() )
 $admin_body_class .= ' branch-' . str_replace( array( '.', ',' ), '-', floatval( $wp_version ) );
 $admin_body_class .= ' version-' . str_replace( '.', '-', preg_replace( '/^([.0-9]+).*/', '$1', $wp_version ) );
 $admin_body_class .= ' admin-color-' . sanitize_html_class( get_user_option( 'admin_color' ), 'fresh' );
 $admin_body_class .= ' branch-' . str_replace( array( '.', ',' ), '-', floatval( $wp_version ) );
 $admin_body_class .= ' version-' . str_replace( '.', '-', preg_replace( '/^([.0-9]+).*/', '$1', $wp_version ) );
 $admin_body_class .= ' admin-color-' . sanitize_html_class( get_user_option( 'admin_color' ), 'fresh' );
+$admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace( '_', '-', get_locale() ) ) );
 
 
-if ( $is_iphone ) { ?>
-<style type="text/css">.row-actions{visibility:visible;}</style>
-<?php } ?>
+if ( wp_is_mobile() )
+       $admin_body_class .= ' mobile';
+
+$admin_body_class .= ' no-customize-support';
+
+?>
 </head>
 <body class="wp-admin no-js <?php echo apply_filters( 'admin_body_class', '' ) . " $admin_body_class"; ?>">
 </head>
 <body class="wp-admin no-js <?php echo apply_filters( 'admin_body_class', '' ) . " $admin_body_class"; ?>">
-<script type="text/javascript">document.body.className = document.body.className.replace('no-js','js');</script>
+<script type="text/javascript">
+       document.body.className = document.body.className.replace('no-js','js');
+</script>
+
+<?php
+// If the customize-loader script is enqueued, make sure the customize
+// body classes are correct as early as possible.
+if ( wp_script_is( 'customize-loader', 'queue' ) && current_user_can( 'edit_theme_options' ) )
+       wp_customize_support_script();
+?>
 
 <div id="wpwrap">
 <?php require(ABSPATH . 'wp-admin/menu-header.php'); ?>
 
 <div id="wpwrap">
 <?php require(ABSPATH . 'wp-admin/menu-header.php'); ?>
index 5f9eccb542e4176fbffb5dc99f5c8f8b4aa70827..f4af998e334b21468f42da913f356bb1cab6915e 100644 (file)
@@ -29,5 +29,3 @@ if ( !empty($_REQUEST['action']) )
        $action .= '_' . $_REQUEST['action'];
 
 do_action($action);
        $action .= '_' . $_REQUEST['action'];
 
 do_action($action);
-
-?>
\ No newline at end of file
index 46e45e34d837f89d2896c41fa0a056bd301ee48a..015ced3013a14a49aecc0fd2fb8d9ff21c2a1190 100644 (file)
  * @since 2.3.2
  */
 if ( ! defined('WP_ADMIN') )
  * @since 2.3.2
  */
 if ( ! defined('WP_ADMIN') )
-       define('WP_ADMIN', TRUE);
+       define('WP_ADMIN', true);
 
 if ( ! defined('WP_NETWORK_ADMIN') )
 
 if ( ! defined('WP_NETWORK_ADMIN') )
-       define('WP_NETWORK_ADMIN', FALSE);
+       define('WP_NETWORK_ADMIN', false);
 
 if ( ! defined('WP_USER_ADMIN') )
 
 if ( ! defined('WP_USER_ADMIN') )
-       define('WP_USER_ADMIN', FALSE);
+       define('WP_USER_ADMIN', false);
 
 if ( ! WP_NETWORK_ADMIN && ! WP_USER_ADMIN ) {
 
 if ( ! WP_NETWORK_ADMIN && ! WP_USER_ADMIN ) {
-       define('WP_BLOG_ADMIN', TRUE);
+       define('WP_BLOG_ADMIN', true);
 }
 
 if ( isset($_GET['import']) && !defined('WP_LOAD_IMPORTERS') )
 }
 
 if ( isset($_GET['import']) && !defined('WP_LOAD_IMPORTERS') )
@@ -30,7 +30,7 @@ if ( isset($_GET['import']) && !defined('WP_LOAD_IMPORTERS') )
 require_once(dirname(dirname(__FILE__)) . '/wp-load.php');
 
 if ( get_option('db_upgraded') ) {
 require_once(dirname(dirname(__FILE__)) . '/wp-load.php');
 
 if ( get_option('db_upgraded') ) {
-       $wp_rewrite->flush_rules();
+       flush_rewrite_rules();
        update_option( 'db_upgraded',  false );
 
        /**
        update_option( 'db_upgraded',  false );
 
        /**
@@ -153,7 +153,6 @@ if ( isset($plugin_page) ) {
                if ( validate_file($plugin_page) )
                        wp_die(__('Invalid plugin page'));
 
                if ( validate_file($plugin_page) )
                        wp_die(__('Invalid plugin page'));
 
-
                if ( !( file_exists(WP_PLUGIN_DIR . "/$plugin_page") && is_file(WP_PLUGIN_DIR . "/$plugin_page") ) && !( file_exists(WPMU_PLUGIN_DIR . "/$plugin_page") && is_file(WPMU_PLUGIN_DIR . "/$plugin_page") ) )
                        wp_die(sprintf(__('Cannot load %s.'), htmlentities($plugin_page)));
 
                if ( !( file_exists(WP_PLUGIN_DIR . "/$plugin_page") && is_file(WP_PLUGIN_DIR . "/$plugin_page") ) && !( file_exists(WPMU_PLUGIN_DIR . "/$plugin_page") && is_file(WPMU_PLUGIN_DIR . "/$plugin_page") ) )
                        wp_die(sprintf(__('Cannot load %s.'), htmlentities($plugin_page)));
 
@@ -229,5 +228,3 @@ if ( isset($plugin_page) ) {
 
 if ( !empty($_REQUEST['action']) )
        do_action('admin_action_' . $_REQUEST['action']);
 
 if ( !empty($_REQUEST['action']) )
        do_action('admin_action_' . $_REQUEST['action']);
-
-?>
index 1bd267fa52b81c5585d4a945e48c29eba61ea5d1..e9d59e2258168c68e1e08719d7f8748c884960d9 100644 (file)
@@ -66,5 +66,3 @@ if ( $_REQUEST['short'] ) {
        $type = $_REQUEST['type'];
        echo apply_filters("async_upload_{$type}", $id);
 }
        $type = $_REQUEST['type'];
        echo apply_filters("async_upload_{$type}", $id);
 }
-
-?>
index b2c69cb75298a2c3bf3dc2025dc479579e7240f0..de5483e28642a7215b802834f02581ecc344728c 100644 (file)
@@ -65,7 +65,7 @@ case 'editcomment' :
        $comment_id = absint( $_GET['c'] );
 
        if ( !$comment = get_comment( $comment_id ) )
        $comment_id = absint( $_GET['c'] );
 
        if ( !$comment = get_comment( $comment_id ) )
-               comment_footer_die( __('Oops, no comment with this ID.') . sprintf(' <a href="%s">'.__('Go back').'</a>!', 'javascript:history.go(-1)') );
+               comment_footer_die( __('Oops, no comment with this ID.') . sprintf(' <a href="%s">' . __('Go back') . '</a>.', 'javascript:history.go(-1)') );
 
        if ( !current_user_can( 'edit_comment', $comment_id ) )
                comment_footer_die( __('You are not allowed to edit this comment.') );
 
        if ( !current_user_can( 'edit_comment', $comment_id ) )
                comment_footer_die( __('You are not allowed to edit this comment.') );
@@ -73,9 +73,6 @@ case 'editcomment' :
        if ( 'trash' == $comment->comment_approved )
                comment_footer_die( __('This comment is in the Trash. Please move it out of the Trash if you want to edit it.') );
 
        if ( 'trash' == $comment->comment_approved )
                comment_footer_die( __('This comment is in the Trash. Please move it out of the Trash if you want to edit it.') );
 
-       if ( 'spam' == $comment->comment_approved )
-               comment_footer_die( __('This comment is marked as Spam. Please mark it as Not Spam if you want to edit it.') );
-
        $comment = get_comment_to_edit( $comment_id );
 
        include('./edit-form-comment.php');
        $comment = get_comment_to_edit( $comment_id );
 
        include('./edit-form-comment.php');
@@ -222,7 +219,7 @@ case 'unapprovecomment' :
        $noredir = isset($_REQUEST['noredir']);
 
        if ( !$comment = get_comment($comment_id) )
        $noredir = isset($_REQUEST['noredir']);
 
        if ( !$comment = get_comment($comment_id) )
-               comment_footer_die( __('Oops, no comment with this ID.') . sprintf(' <a href="%s">'.__('Go back').'</a>!', 'edit-comments.php') );
+               comment_footer_die( __('Oops, no comment with this ID.') . sprintf(' <a href="%s">' . __('Go back') . '</a>.', 'edit-comments.php') );
        if ( !current_user_can( 'edit_comment', $comment->comment_ID ) )
                comment_footer_die( __('You are not allowed to edit comments on this post.') );
 
        if ( !current_user_can( 'edit_comment', $comment->comment_ID ) )
                comment_footer_die( __('You are not allowed to edit comments on this post.') );
 
@@ -295,5 +292,3 @@ default:
 } // end switch
 
 include('./admin-footer.php');
 } // end switch
 
 include('./admin-footer.php');
-
-?>
index cdc84c7c6989a621a407c4c21012bd0c00441593..68f7ed6cf0d44dc9acfce5ef4feb2e3015af5117 100644 (file)
@@ -17,7 +17,9 @@ function wp_credits() {
 
        $results = get_site_transient( 'wordpress_credits_' . $locale );
 
 
        $results = get_site_transient( 'wordpress_credits_' . $locale );
 
-       if ( ! is_array( $results ) ) {
+       if ( ! is_array( $results )
+               || ( isset( $results['data']['version'] ) && strpos( $wp_version, $results['data']['version'] ) !== 0 )
+       ) {
                $response = wp_remote_get( "http://api.wordpress.org/core/credits/1.0/?version=$wp_version&locale=$locale" );
 
                if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) )
                $response = wp_remote_get( "http://api.wordpress.org/core/credits/1.0/?version=$wp_version&locale=$locale" );
 
                if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) )
@@ -44,13 +46,13 @@ function _wp_credits_build_object_link( &$data ) {
 
 list( $display_version ) = explode( '-', $wp_version );
 
 
 list( $display_version ) = explode( '-', $wp_version );
 
-include( './admin-header.php' );
+include( ABSPATH . 'wp-admin/admin-header.php' );
 ?>
 <div class="wrap about-wrap">
 
 <h1><?php printf( __( 'Welcome to WordPress %s' ), $display_version ); ?></h1>
 
 ?>
 <div class="wrap about-wrap">
 
 <h1><?php printf( __( 'Welcome to WordPress %s' ), $display_version ); ?></h1>
 
-<div class="about-text"><?php printf( __( 'Thank you for updating to the latest version! Using WordPress %s will improve your looks, personality, and web publishing experience. Okay, just the last one, but still. :)' ), $display_version ); ?></div>
+<div class="about-text"><?php printf( __( 'Thank you for updating to the latest version! WordPress %s is already making your website better, faster, and more attractive, just like you!' ), $display_version ); ?></div>
 
 <div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>
 
 
 <div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>
 
@@ -73,7 +75,7 @@ if ( ! $credits ) {
                'http://wordpress.org/about/',
                /* translators: Url to the codex documentation on contributing to WordPress used on the credits page */
                __( 'http://codex.wordpress.org/Contributing_to_WordPress' ) ) . '</p>';
                'http://wordpress.org/about/',
                /* translators: Url to the codex documentation on contributing to WordPress used on the credits page */
                __( 'http://codex.wordpress.org/Contributing_to_WordPress' ) ) . '</p>';
-       include( './admin-footer.php' );
+       include( ABSPATH . 'wp-admin/admin-footer.php' );
        exit;
 }
 
        exit;
 }
 
@@ -134,7 +136,7 @@ foreach ( $credits['groups'] as $group_slug => $group_data ) {
 </div>
 <?php
 
 </div>
 <?php
 
-include( './admin-footer.php' );
+include( ABSPATH . 'wp-admin/admin-footer.php' );
 
 return;
 
 
 return;
 
@@ -157,5 +159,3 @@ __( 'XML-RPC' );
 __( 'Internationalization' );
 __( 'External Libraries' );
 __( 'Icon Design' );
 __( 'Internationalization' );
 __( 'External Libraries' );
 __( 'Icon Design' );
-
-?>
index fae10241c9c69fa624f495f64051c9c3a0888f15..91017ee62703d2491161f5a3500650f42f90929e 100644 (file)
@@ -1 +1 @@
-html,.wp-dialog{background-color:#fff;}* html input,* html .widget{border-color:#dfdfdf;}textarea,input[type="text"],input[type="password"],input[type="file"],input[type="button"],input[type="submit"],input[type="reset"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="url"],select{border-color:#dfdfdf;background-color:#fff;}kbd,code{background:#eaeaea;}input[readonly]{background-color:#eee;}.find-box-search{border-color:#dfdfdf;background-color:#f1f1f1;}.find-box{background-color:#f1f1f1;}.find-box-inside{background-color:#fff;}a.page-numbers:hover{border-color:#999;}body,#wpbody,.form-table .pre{color:#333;}body>#upload-menu{border-bottom-color:#fff;}#postcustomstuff table,#your-profile fieldset,#rightnow,div.dashboard-widget,#dashboard-widgets p.dashboard-widget-links{border-color:#D1E5EE;}#poststuff .inside label.spam,#poststuff .inside label.deleted{color:red;}#poststuff .inside label.waiting{color:orange;}#poststuff .inside label.approved{color:green;}#postcustomstuff table{border-color:#dfdfdf;background-color:#F9F9F9;}#postcustomstuff thead th{background-color:#F1F1F1;}#postcustomstuff table input,#postcustomstuff table textarea{border-color:#dfdfdf;background-color:#fff;}.widefat{border-color:#D1E5EE;background-color:#fff;}div.dashboard-widget-error{background-color:#c43;}div.dashboard-widget-notice{background-color:#cfe1ef;}div.dashboard-widget-submit{border-top-color:#ccc;}div.tabs-panel,.wp-tab-panel,ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-color:#dfdfdf;background-color:#fff;}ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{background-color:#fff;}input.disabled,textarea.disabled{background-color:#ccc;}#plugin-information .action-button a,#plugin-information .action-button a:hover,#plugin-information .action-button a:visited{color:#fff;}.widget .widget-top,.postbox h3,.stuffbox h3,.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.find-box-head,.sidebar-name,#nav-menu-header,#nav-menu-footer,.menu-item-handle,#fullscreen-topbar{background-color:#f5fafd;background-image:-ms-linear-gradient(top,#f7fcfe,#eff8ff);background-image:-moz-linear-gradient(top,#f7fcfe,#eff8ff);background-image:-o-linear-gradient(top,#f7fcfe,#eff8ff);background-image:-webkit-gradient(linear,left top,left bottom,from(#f7fcfe),to(#eff8ff));background-image:-webkit-linear-gradient(top,#f7fcfe,#eff8ff);background-image:linear-gradient(top,#f7fcfe,#eff8ff);}.widget .widget-top,.postbox h3,.stuffbox h3{border-bottom-color:#D1E5EE;text-shadow:#fff 0 1px 0;-moz-box-shadow:0 1px 0 #fff;-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff;}.form-table th,.form-wrap label{color:#222;text-shadow:#fff 0 1px 0;}.description,.form-wrap p{color:#666;}strong .post-com-count span{background-color:#21759b;}.sorthelper{background-color:#ccf3fa;}.ac_match,.subsubsub a.current{color:#000;}.wrap h2{color:#174f69;}.wrap .add-new-h2{background:#f1f1f1;}.subtitle{color:#777;}.ac_over{background-color:#f0f0b8;}.ac_results{background-color:#fff;border-color:#808080;}.ac_results li{color:#101010;}.alternate,.alt{background-color:#f7fcfe;}.available-theme a.screenshot{background-color:#f1f1f1;border-color:#ddd;}.bar{background-color:#e8e8e8;border-right-color:#99d;}#media-upload,#media-upload .media-item .slidetoggle{background:#fff;}#media-upload .slidetoggle{border-top-color:#dfdfdf;}div.error,.login #login_error{background-color:#ffebe8;border-color:#c00;}div.error a{color:#c00;}.form-invalid{background-color:#ffebe8!important;}.form-invalid input,.form-invalid select{border-color:#c00!important;}.submit{border-color:#DFDFDF;}.highlight{background-color:#e4f2fd;color:#000;}.howto,.nonessential,#edit-slug-box,.form-input-tip,.subsubsub{color:#666;}.media-upload-form label.form-help,td.help{color:#9a9a9a;}.post-com-count{background-image:url(../images/bubble_bg.gif);color:#fff;}.post-com-count span{background-color:#bbb;color:#fff;}.post-com-count:hover span{background-color:#d54e21;}.quicktags,.search{background-color:#ccc;color:#000;}.side-info h5{border-bottom-color:#dadada;}.side-info ul{color:#666;}.button,.button-secondary,.submit input,input[type=button],input[type=submit]{border-color:#bbb;color:#464646;}.button:hover,.button-secondary:hover,.submit input:hover,input[type=button]:hover,input[type=submit]:hover{color:#000;border-color:#666;}.button,.submit input,.button-secondary{background:#f2f2f2 url(../images/white-grad.png) repeat-x scroll left top;text-shadow:rgba(255,255,255,1) 0 1px 0;}.button:active,.submit input:active,.button-secondary:active{background:#eee url(../images/white-grad-active.png) repeat-x scroll left top;}input.button-primary,button.button-primary,a.button-primary{border-color:#298cba;font-weight:bold;color:#fff;background:#21759B url(../images/button-grad.png) repeat-x scroll left top;text-shadow:rgba(0,0,0,0.3) 0 -1px 0;}input.button-primary:active,button.button-primary:active,a.button-primary:active{background:#21759b url(../images/button-grad-active.png) repeat-x scroll left top;color:#eaf2fa;}input.button-primary:hover,button.button-primary:hover,a.button-primary:hover,a.button-primary:focus,a.button-primary:active{border-color:#13455b;color:#eaf2fa;}.button-disabled,.button[disabled],.button:disabled,.button-secondary[disabled],.button-secondary:disabled,a.button.disabled{color:#aaa!important;border-color:#ddd!important;}.button-primary-disabled,.button-primary[disabled],.button-primary:disabled{color:#9FD0D5!important;background:#298CBA!important;}a:hover,a:active,a:focus{color:#d54e21;}#adminmenu a:hover,#adminmenu li.menu-top>a:focus,#adminmenu ul.wp-submenu a:hover,#the-comment-list .comment a:hover,#rightnow a:hover,#media-upload a.del-link:hover,div.dashboard-widget-submit input:hover,.subsubsub a:hover,.subsubsub a.current:hover,.ui-tabs-nav a:hover,.plugins .inactive a:hover,#all-plugins-table .plugins .inactive a:hover,#search-plugins-table .plugins .inactive a:hover{color:#d54e21;}#the-comment-list .comment-item,#dashboard-widgets #dashboard_quick_press form p.submit{border-color:#dfdfdf;}#side-sortables .category-tabs .tabs a,#side-sortables .add-menu-item-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#333;}#rightnow .rbutton{background-color:#ebebeb;color:#264761;}.submitbox .submit{background-color:#464646;color:#ccc;}.plugins a.delete:hover,#all-plugins-table .plugins a.delete:hover,#search-plugins-table .plugins a.delete:hover,.submitbox .submitdelete{color:#f00;border-bottom-color:#f00;}.submitbox .submitdelete:hover,#media-items a.delete:hover{color:#fff;background-color:#f00;border-bottom-color:#f00;}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:#f00;border-bottom-color:#f00;}.tablenav .dots{border-color:transparent;}.tablenav .next,.tablenav .prev{border-color:transparent;color:#21759b;}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#d54e21;}div.updated,.login .message{background-color:#ffffe0;border-color:#e6db55;}.update-message{color:#000;}a.page-numbers{border-bottom-color:#B8D3E2;}.commentlist li{border-bottom-color:#ccc;}.widefat td,.widefat th{border-top-color:#fff;border-bottom-color:#D0DFE9;}.widefat th{text-shadow:rgba(255,255,255,0.8) 0 1px 0;}.widefat td{color:#555;}.widefat p,.widefat ol,.widefat ul{color:#333;}.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.find-box-head{color:#333;}th.sortable a:hover,th.sortable a:active,th.sortable a:focus{color:#333;}h3.dashboard-widget-title small a{color:#d7d7d7;}h3.dashboard-widget-title small a:hover{color:#fff;}a,#adminmenu a,#the-comment-list p.comment-author strong a,#media-upload a.del-link,#media-items a.delete,.plugins a.delete,.ui-tabs-nav a{color:#21759b;}#adminmenu .awaiting-mod,#adminmenu .update-plugins,#sidemenu a .update-plugins,#rightnow .reallynow{background-color:#464646;color:#fff;-moz-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0;}#plugin-information .action-button{background-color:#d54e21;color:#fff;}#adminmenu li.current a .awaiting-mod,#adminmenu li a.wp-has-current-submenu .update-plugins{background-color:#464646;color:#fff;-moz-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0;}div#media-upload-header,div#plugin-information-header{background-color:#f9f9f9;border-bottom-color:#dfdfdf;}#currenttheme img{border-color:#666;}#dashboard_secondary div.dashboard-widget-content ul li a{background-color:#f9f9f9;}input.readonly,textarea.readonly{background-color:#ddd;}.quicktags-toolbar input{background:#fff;background-image:-ms-linear-gradient(bottom,#e5f0f8,#fff);background-image:-moz-linear-gradient(bottom,#e5f0f8,#fff);background-image:-o-linear-gradient(bottom,#e5f0f8,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#e5f0f8),to(#fff));background-image:-webkit-linear-gradient(bottom,#e5f0f8,#fff)!important;background-image:linear-gradient(bottom,#e5f0f8,#fff);}#editable-post-name{background-color:#fffbcc;}#edit-slug-box strong,.tablenav .displaying-num,#submitted-on,.submitted-on{color:#777;}.login #nav a,.login #backtoblog a{color:#21759b!important;}.login #nav a:hover,.login #backtoblog a:hover{color:#d54e21!important;}#footer{color:#777;border-color:#b0c8d7;}#media-items .media-item,.media-item .describe,.imgedit-group{border-color:#dfdfdf;}.checkbox,.side-info,.plugins tr,#your-profile #rich_editing{background-color:#fcfcfc;}.plugins .inactive,.plugins .inactive th,.plugins .inactive td,tr.inactive+tr.plugin-update-tr .plugin-update{background-color:#f4f4f4;}.plugin-update-tr .update-message{background-color:#fffbe4;border-color:#dfdfdf;}.plugins .active,.plugins .active th,.plugins .active td{color:#000;}.plugins .inactive a{color:#579;}#the-comment-list tr.undo,#the-comment-list div.undo{background-color:#f4f4f4;}#the-comment-list .unapproved{background-color:#ffffe0;}#the-comment-list .approve a{color:#006505;}#the-comment-list .unapprove a{color:#d98500;}table.widefat span.delete a,table.widefat span.trash a,table.widefat span.spam a,#dashboard_recent_comments .delete a,#dashboard_recent_comments .trash a,#dashboard_recent_comments .spam a{color:#bc0b0b;}.welcome-panel{border-color:#d1e5ee;}.welcome-panel p{color:#777;}.welcome-panel-column p{color:#464646;}.welcome-panel h3{text-shadow:1px 1px 1px white;}.widget,#widget-list .widget-top,.postbox,#titlediv,#poststuff .postarea,.stuffbox{border-color:#d1e5ee;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;-webkit-border-radius:3px;border-radius:3px;}.widget,#widget-list .widget-top,.postbox,.menu-item-settings{background-color:#f7fcfe;}.postbox h3{color:#174f69;}.widget .widget-top{color:#174f69;}.sidebar-name:hover h3,.postbox h3:hover{color:#000;}.curtime #timestamp{background-image:url(../images/date-button.gif);}#quicktags #ed_link{color:#00f;}#rightnow .youhave{background-color:#f0f6fb;}#rightnow a{color:#448abd;}.tagchecklist span a,#bulk-titles div a{background:url(../images/xit.gif) no-repeat;}.tagchecklist span a:hover,#bulk-titles div a:hover{background:url(../images/xit.gif) no-repeat -10px 0;}#update-nag,.update-nag{background-color:#fffbcc;border-color:#e6db55;color:#555;}.login #backtoblog a{color:#464646;}#wphead{border-bottom:#d0dfe9 1px solid;}#wphead h1 a{color:#174f69;}#footer a:link,#footer a:visited{text-decoration:none;}#footer a:hover{color:#000;text-decoration:underline;}.file-error,abbr.required,.widget-control-remove:hover,table.widefat .delete a:hover,table.widefat .trash a:hover,table.widefat .spam a:hover,#dashboard_recent_comments .delete a:hover,#dashboard_recent_comments .trash a:hover #dashboard_recent_comments .spam a:hover{color:#f00;}#pass-strength-result{background-color:#eee;border-color:#ddd!important;}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important;}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important;}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important;}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important;}#quicktags{border-color:#cfdfe9;background-color:#cfdfe9;background-image:url("../images/ed-bg-vs.gif?ver=20101102");}.quicktags-toolbar input{border-color:#b2c4c8;}.quicktags-toolbar input:hover{border-color:#d0dfe9;background:#f0f8fe;}#poststuff .wp-editor-wrap .wp_themeSkin .mceStatusbar{border-color:#d0dfe9;}#poststuff .wp-editor-wrap .wp_themeSkin .mceStatusbar *{color:#555;}#poststuff #editor-toolbar .active{border-color:#d0dfe9 #d0dfe9 #eff8ff;background-color:#eff8ff;color:#333;}#post-status-info{background-color:#eff8ff;}.wp-editor-wrap .wp_themeSkin *,.wp-editor-wrap .wp_themeSkin a:hover,.wp-editor-wrap .wp_themeSkin a:link,.wp-editor-wrap .wp_themeSkin a:visited,.wp-editor-wrap .wp_themeSkin a:active{color:#000;}.wp-editor-wrap .wp_themeSkin table.mceLayout{border-color:#bed1dd #bed1dd #d0dfe9;}#editorcontainer #content,#editorcontainer .wp-editor-wrap .wp_themeSkin .mceIframeContainer{-moz-box-shadow:inset 1px 1px 2px rgba(0,0,0,0.1);-webkit-box-shadow:inset 1px 1px 2px rgba(0,0,0,0.1);box-shadow:inset 1px 1px 2px rgba(0,0,0,0.1);}.wp-editor-wrap .wp_themeSkin iframe{background:transparent;}.wp-editor-wrap .wp_themeSkin .mceStatusbar{color:#000;background-color:#f5f5f5;}.wp-editor-wrap .wp_themeSkin .mceButton{border-color:#B0C8D7;background-color:#cfdfe9;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff);}.wp-editor-wrap .wp_themeSkin a.mceButtonEnabled:hover{border-color:#5589AA!important;background-color:#c9c9c9;background-image:-ms-linear-gradient(bottom,#bdccd5,#fff);background-image:-moz-linear-gradient(bottom,#bdccd5,#fff);background-image:-o-linear-gradient(bottom,#bdccd5,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#bdccd5),to(#fff));background-image:-webkit-linear-gradient(bottom,#bdccd5,#fff)!important;background-image:linear-gradient(bottom,#bdccd5,#fff);}.wp-editor-wrap .wp_themeSkin a.mceButton:active,.wp-editor-wrap .wp_themeSkin a.mceButtonEnabled:active,.wp-editor-wrap .wp_themeSkin a.mceButtonSelected:active,.wp-editor-wrap .wp_themeSkin a.mceButtonActive,.wp-editor-wrap .wp_themeSkin a.mceButtonActive:active,.wp-editor-wrap .wp_themeSkin a.mceButtonActive:hover{background:#B0C8D7!important;background-image:-ms-linear-gradient(bottom,#fff,#cfdfe9);background-image:-moz-linear-gradient(bottom,#fff,#cfdfe9);background-image:-o-linear-gradient(bottom,#fff,#cfdfe9);background-image:-webkit-gradient(linear,left bottom,left top,from(#fff),to(#cfdfe9));background-image:-webkit-linear-gradient(bottom,#fff,#cfdfe9)!important;background-image:linear-gradient(bottom,#fff,#cfdfe9);border-color:#5589AA!important;}.wp-editor-wrap .wp_themeSkin .mceButtonDisabled{border-color:#B0C8D7!important;}.wp-editor-wrap .wp_themeSkin .mceListBox .mceText,.wp-editor-wrap .wp_themeSkin .mceListBox .mceOpen{border-color:#B0C8D7;background-color:#cfdfe9;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff);}.wp-editor-wrap .wp_themeSkin .mceListBox .mceOpen{border-left:0!important;}.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp-editor-wrap .wp_themeSkin .mceListBoxHover .mceOpen,.wp-editor-wrap .wp_themeSkin .mceListBoxHover:active .mceOpen,.wp-editor-wrap .wp_themeSkin .mceListBoxSelected .mceOpen,.wp-editor-wrap .wp_themeSkin .mceListBoxSelected .mceText,.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:active .mceText{background:#B0C8D7;border-color:#5589AA!important;}.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:hover .mceText,.wp-editor-wrap .wp_themeSkin .mceListBoxHover .mceText,.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp-editor-wrap .wp_themeSkin .mceListBoxHover .mceOpen{border-color:#5589AA!important;background-color:#c9c9c9;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff);}.wp-editor-wrap .wp_themeSkin select.mceListBox{border-color:#B2B2B2;background-color:#fff;}.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceAction,.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceOpen{border-color:#B0C8D7;}.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceOpen:hover,.wp-editor-wrap .wp_themeSkin .mceSplitButtonSelected a.mceOpen,.wp-editor-wrap .wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceAction:hover{border-color:#5589AA!important;}.wp-editor-wrap .wp_themeSkin table.mceSplitButton td{background-color:#cfdfe9;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff);}.wp-editor-wrap .wp_themeSkin table.mceSplitButton:hover td{background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff);}.wp-editor-wrap .wp_themeSkin .mceSplitButtonActive{background-color:#B0C8D7;}.wp-editor-wrap .wp_themeSkin div.mceColorSplitMenu table{background-color:#ebebeb;border-color:#B2B2B2;}.wp-editor-wrap .wp_themeSkin .mceColorSplitMenu a{border-color:#B2B2B2;}.wp-editor-wrap .wp_themeSkin .mceColorSplitMenu a.mceMoreColors{border-color:#fff;}.wp-editor-wrap .wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover{border-color:#0A246A;background-color:#B6BDD2;}.wp-editor-wrap .wp_themeSkin a.mceMoreColors:hover{border-color:#0A246A;}.wp-editor-wrap .wp_themeSkin .mceMenu{border-color:#ddd;}.wp-editor-wrap .wp_themeSkin .mceMenu table{background-color:#ebeaeb;}.wp-editor-wrap .wp_themeSkin .mceMenu .mceText{color:#000;}.wp-editor-wrap .wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover,.wp-editor-wrap .wp_themeSkin .mceMenu .mceMenuItemActive{background-color:#f5f5f5;}.wp-editor-wrap .wp_themeSkin td.mceMenuItemSeparator{background-color:#aaa;}.wp-editor-wrap .wp_themeSkin .mceMenuItemTitle a{background-color:#ccc;border-bottom-color:#aaa;}.wp-editor-wrap .wp_themeSkin .mceMenuItemTitle span.mceText{color:#000;}.wp-editor-wrap .wp_themeSkin .mceMenuItemDisabled .mceText{color:#888;}.wp-editor-wrap .wp_themeSkin tr.mceFirst td.mceToolbar{background:#cfdfe9 url("../images/ed-bg-vs.gif?ver=20101102") repeat-x scroll left top;border-color:#cfdfe9;}.wp-admin #mceModalBlocker{background:#000;}.wp-admin .clearlooks2 .mceFocus .mceTop .mceLeft{background:#444;border-left:1px solid #999;border-top:1px solid #999;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;}.wp-admin .clearlooks2 .mceFocus .mceTop .mceRight{background:#444;border-right:1px solid #999;border-top:1px solid #999;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;}.wp-admin .clearlooks2 .mceMiddle .mceLeft{background:#f1f1f1;border-left:1px solid #999;}.wp-admin .clearlooks2 .mceMiddle .mceRight{background:#f1f1f1;border-right:1px solid #999;}.wp-admin .clearlooks2 .mceBottom{background:#f1f1f1;border-bottom:1px solid #999;}.wp-admin .clearlooks2 .mceBottom .mceLeft{background:#f1f1f1;border-bottom:1px solid #999;border-left:1px solid #999;}.wp-admin .clearlooks2 .mceBottom .mceCenter{background:#f1f1f1;border-bottom:1px solid #999;}.wp-admin .clearlooks2 .mceBottom .mceRight{background:#f1f1f1;border-bottom:1px solid #999;border-right:1px solid #999;}.wp-admin .clearlooks2 .mceFocus .mceTop span{color:#e5e5e5;}.wp-editor-wrap .wp-switch-editor{background-color:#f5fafd;border-color:#d1e5ee #d1e5ee #d1e5ee;color:#999;}.wp-editor-wrap.tmce-active .switch-tmce,.wp-editor-wrap.html-active .switch-html{background-color:#eff8ff;border-color:#d1e5ee #d1e5ee #eff8ff;color:#333;}.wp-editor-wrap.quicktags-toolbar input{color:#464646;border-color:#d1e5ee;background-color:#eff8ff;background-image:-ms-linear-gradient(bottom,#eff8ff,#fff);background-image:-moz-linear-gradient(bottom,#eff8ff,#fff);background-image:-o-linear-gradient(bottom,#eff8ff,#fff);background-image:-webkit-linear-gradient(bottom,#eff8ff,#fff);background-image:linear-gradient(bottom,#eff8ff,#fff);}.wp-editor-wrap .quicktags-toolbar,.wp-editor-wrap.wp_themeSkin tr.mceFirst td.mceToolbar{border-bottom:1px solid #ccc;background-color:#eff8ff;background-image:-ms-linear-gradient(bottom,#cfdfe9,#eff8ff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#eff8ff);background-image:-o-linear-gradient(bottom,#cfdfe9,#eff8ff);background-image:-webkit-linear-gradient(bottom,#cfdfe9,#eff8ff);background-image:linear-gradient(bottom,#cfdfe9,#eff8ff);}.wp-editor-wrap .quicktags-toolbar input:hover{border-color:#aaa;background:#ddd;}.wp-editor-wrap.wp_themeSkin .mceButton,.wp-editor-wrap.wp_themeSkin .mceListBox .mceText,.wp-editor-wrap.wp_themeSkin .mceListBox .mceOpen{border-color:#ccc;background-color:#eff8ff;background-image:-ms-linear-gradient(bottom,#eff8ff,#fff);background-image:-moz-linear-gradient(bottom,#eff8ff,#fff);background-image:-o-linear-gradient(bottom,#eff8ff,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#fff));background-image:-webkit-linear-gradient(bottom,#eff8ff,#fff);background-image:linear-gradient(bottom,#eff8ff,#fff);}.wp-editor-wrap.wp_themeSkin a.mceButtonEnabled:hover{border-color:#a0a0a0;background:#ddd;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff);background-image:linear-gradient(bottom,#cfdfe9,#fff);}#titlediv #title{border-color:#bdccd5;}#editorcontainer{border-color:#bdccd5 #bdccd5 #d0dfe9;}#post-status-info{border-color:#d0dfe9 #bdccd5 #bdccd5;}.editwidget .widget-inside{border-color:#d0dfe9;}#titlediv #title{background-color:#fff;}#tTips p#tTips_inside{background-color:#ddd;color:#333;}#timestampdiv input,#namediv input,#poststuff .inside .the-tagcloud{border-color:#ddd;}#adminmenuback,#adminmenuwrap{background-color:#EFF8FF;border-color:#D1E5EE;}#adminmenushadow,#adminmenuback{background-image:url(../images/menu-shadow.png);background-position:top right;background-repeat:repeat-y;}#adminmenu li.wp-menu-separator{background:#D1E5EE;border-color:#bed1dd;}#adminmenu div.separator{border-color:#D1E5EE;}#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/arrows-dark-vs.png) no-repeat -1px 6px;}#adminmenu .wp-has-submenu:hover .wp-menu-toggle,#adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/arrows-vs.png) no-repeat -2px 6px;}#adminmenu a.menu-top,.folded #adminmenu li.menu-top,#adminmenu .wp-submenu .wp-submenu-head{border-top-color:#fff;border-bottom-color:#cae6ff;}#adminmenu li.wp-menu-open{border-color:#d1e5ee;}#adminmenu li.menu-top:hover>a,#adminmenu li.menu-top.focused>a,#adminmenu li.menu-top>a:focus{background-color:#e0f1ff;text-shadow:0 1px 0 rgba(255,255,255,0.4);}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top,#adminmenu .wp-menu-arrow,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background-color:#5589AA;background-image:-ms-linear-gradient(bottom,#5589AA,#619bbb);background-image:-moz-linear-gradient(bottom,#5589AA,#619bbb);background-image:-o-linear-gradient(bottom,#5589AA,#619bbb);background-image:-webkit-gradient(linear,left bottom,left top,from(#5589AA),to(#619bbb));background-image:-webkit-linear-gradient(bottom,#5589AA,#619bbb);background-image:linear-gradient(bottom,#5589AA,#619bbb);}#adminmenu .wp-menu-arrow div{background-color:#5589AA;background-image:-ms-linear-gradient(right bottom,#5589AA,#619bbb);background-image:-moz-linear-gradient(right bottom,#5589AA,#619bbb);background-image:-o-linear-gradient(right bottom,#5589AA,#619bbb);background-image:-webkit-gradient(linear,right bottom,left top,from(#5589AA),to(#619bbb));background-image:-webkit-linear-gradient(right bottom,#5589AA,#619bbb);background-image:linear-gradient(right bottom,#5589AA,#619bbb);}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{border-top-color:#fff;border-bottom-color:#cae6ff;background:#e0f1ff;}#adminmenu li.wp-not-current-submenu .wp-menu-arrow div{background:#e0f1ff;border-color:#cae6ff;}.folded #adminmenu li.menu-top li:hover a{background-image:none;}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{text-shadow:0 -1px 0 #333;color:#fff;border-top-color:#5A8FAD;border-bottom-color:#5589AA;}.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{border-top-color:#5A8FAD;border-bottom-color:#5589AA;}#adminmenu .wp-submenu a:hover,#adminmenu .wp-submenu a:focus{background-color:#EFF8FF;color:#333;}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover{color:#333;}#adminmenu .wp-submenu ul{background-color:#fff;}#adminmenu .wp-submenu-wrap,#adminmenu .wp-submenu ul{border-color:#d0dfe9;}#adminmenu .wp-submenu-wrap,.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:2px 2px 5px rgba(0,0,0,0.4);box-shadow:2px 2px 5px rgba(0,0,0,0.4);}#adminmenu .wp-submenu .wp-submenu-head{border-right-color:#e8eff4;background-color:#EFF8FF;}#adminmenu div.wp-submenu{background-color:transparent;}#collapse-menu{color:#A0C3D5;}#collapse-menu:hover{color:#5A8FAD;}#collapse-button{border-color:#d0dfe9;background-color:#eff8ff;background-image:-ms-linear-gradient(bottom,#eff8ff,#fff);background-image:-moz-linear-gradient(bottom,#eff8ff,#fff);background-image:-o-linear-gradient(bottom,#eff8ff,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#fff));background-image:-webkit-linear-gradient(bottom,#eff8ff,#fff);background-image:linear-gradient(bottom,#eff8ff,#fff);}#collapse-menu:hover #collapse-button{border-color:#A0C3D5;}#collapse-button div{background:transparent url(../images/arrows-vs.png) no-repeat 0 -72px;}.folded #collapse-button div{background-position:0 -108px;}.icon16.icon-dashboard,#adminmenu .menu-icon-dashboard div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -60px -33px;}#adminmenu .menu-icon-dashboard:hover div.wp-menu-image,#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-dashboard.current div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -60px -1px;}.icon16.icon-post,#adminmenu .menu-icon-post div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -271px -33px;}#adminmenu .menu-icon-post:hover div.wp-menu-image,#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -271px -1px;}.icon16.icon-media,#adminmenu .menu-icon-media div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -120px -33px;}#adminmenu .menu-icon-media:hover div.wp-menu-image,#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -120px -1px;}.icon16.icon-links,#adminmenu .menu-icon-links div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -90px -33px;}#adminmenu .menu-icon-links:hover div.wp-menu-image,#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -90px -1px;}.icon16.icon-page,#adminmenu .menu-icon-page div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -150px -33px;}#adminmenu .menu-icon-page:hover div.wp-menu-image,#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -150px -1px;}.icon16.icon-comments,#adminmenu .menu-icon-comments div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -30px -33px;}#adminmenu .menu-icon-comments:hover div.wp-menu-image,#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-comments.current div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -30px -1px;}.icon16.icon-appearance,#adminmenu .menu-icon-appearance div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll 0 -33px;}#adminmenu .menu-icon-appearance:hover div.wp-menu-image,#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll 0 -1px;}.icon16.icon-plugins,#adminmenu .menu-icon-plugins div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -180px -33px;}#adminmenu .menu-icon-plugins:hover div.wp-menu-image,#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -180px -1px;}.icon16.icon-users,#adminmenu .menu-icon-users div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -300px -33px;}#adminmenu .menu-icon-users:hover div.wp-menu-image,#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-users.current div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -300px -1px;}.icon16.icon-tools,#adminmenu .menu-icon-tools div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -210px -33px;}#adminmenu .menu-icon-tools:hover div.wp-menu-image,#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-tools.current div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -210px -1px;}.icon16.icon-settings,#icon-options-general,#adminmenu .menu-icon-settings div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -240px -33px;}#adminmenu .menu-icon-settings:hover div.wp-menu-image,#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -240px -1px;}.icon16.icon-site,#adminmenu .menu-icon-site div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -360px -33px;}#adminmenu .menu-icon-site:hover div.wp-menu-image,#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -360px -1px;}.icon32.icon-post,#icon-edit,#icon-post{background:transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -552px -5px;}.icon32.icon-dashboard,#icon-index{background:transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -137px -5px;}.icon32.icon-media,#icon-upload{background:transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -251px -5px;}.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category{background:transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -190px -5px;}.icon32.icon-page,#icon-edit-pages,#icon-page{background:transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -312px -5px;}.icon32.icon-comments,#icon-edit-comments{background:transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -72px -5px;}.icon32.icon-appearance,#icon-themes{background:transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -11px -5px;}.icon32.icon-plugins,#icon-plugins{background:transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -370px -5px;}.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit{background:transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -600px -5px;}.icon32.icon-tools,#icon-tools,#icon-admin{background:transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -432px -5px;}.icon32.icon-settings,#icon-options-general{background:transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -492px -5px;}.icon32.icon-site,#icon-ms-admin{background:transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -659px -5px;}table.diff .diff-deletedline{background-color:#fdd;}table.diff .diff-deletedline del{background-color:#f99;}table.diff .diff-addedline{background-color:#dfd;}table.diff .diff-addedline ins{background-color:#9f9;}#att-info{background-color:#E4F2FD;}#sidemenu a{background-color:#f9f9f9;border-color:#f9f9f9;border-bottom-color:#dfdfdf;}#sidemenu a.current{background-color:#fff;border-color:#dfdfdf #dfdfdf #fff;color:#D54E21;}#screen-meta{background-color:#EFF8FF;border-color:#D1E5EE;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.05);box-shadow:0 1px 3px rgba(0,0,0,0.05);}#contextual-help-back{background:#fff;}.contextual-help-tabs a:hover{background-color:#ceeaff;color:#333;}#contextual-help-back,.contextual-help-tabs .active{border-color:#D1E5EE;}.contextual-help-tabs .active,.contextual-help-tabs .active a,.contextual-help-tabs .active a:hover{background:#fff;color:#000;}#screen-options-link-wrap,#contextual-help-link-wrap{background-color:#eff8ff;border-right:1px solid #D1E5EE;border-left:1px solid #D1E5EE;border-bottom:1px solid #D1E5EE;background-image:-ms-linear-gradient(bottom,#eff8ff,#fff);background-image:-moz-linear-gradient(bottom,#eff8ff,#fff);background-image:-o-linear-gradient(bottom,#eff8ff,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#fff));background-image:-webkit-linear-gradient(bottom,#eff8ff,#fff);background-image:linear-gradient(bottom,#eff8ff,#fff);}#screen-meta-links a.show-settings{color:#606060;}#screen-meta-links a.show-settings:hover{color:#000;}#screen-meta-links a.show-settings{background:transparent url(../images/arrows.png) no-repeat right 3px;}#screen-meta-links a.show-settings.screen-meta-active{background:transparent url(../images/arrows.png) no-repeat right -33px;}#replyerror{border-color:#ddd;background-color:#f9f9f9;}.vim-current,.vim-current th,.vim-current td{background-color:#E4F2FD!important;}.star-average,.star.star-rating{background-color:#fc0;}div.star.select:hover{background-color:#d00;}div.star img{border-left:1px solid #fff;border-right:1px solid #fff;}#plugin-information .fyi ul{background-color:#eaf3fa;}#plugin-information .fyi h2.mainheader{background-color:#cee1ef;}#plugin-information pre,#plugin-information code{background-color:#ededff;}#plugin-information pre{border:1px solid #ccc;}.inline-edit-row fieldset input[type="text"],.inline-edit-row fieldset textarea,#bulk-titles{border-color:#ddd;}.inline-editor div.title{background-color:#EAF3FA;}.inline-editor ul.cat-checklist{background-color:#fff;border-color:#ddd;}.inline-editor .categories .catshow,.inline-editor .categories .cathide{color:#21759b;}.inline-editor .quick-edit-save{background-color:#f1f1f1;}fieldset.inline-edit-col-right .inline-edit-col{border-color:#dfdfdf;}.attention{color:#D54E21;}.meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows-vs.png) no-repeat 6px 7px;}.tablenav .tablenav-pages{color:#555;}.tablenav .tablenav-pages a{border-color:#d1e5ee;background:#eee url('../images/menu-bits-vs.gif?ver=20101102') repeat-x scroll left -379px;}.tablenav .tablenav-pages a:hover,.tablenav .tablenav-pages a:focus{color:#d54e21;}.tablenav .tablenav-pages a.disabled,.tablenav .tablenav-pages a.disabled:hover,.tablenav .tablenav-pages a.disabled:focus{color:#aaa;}.tablenav .tablenav-pages .current{background:#dfdfdf;border-color:#d3d3d3;}#availablethemes,#availablethemes td{border-color:#ddd;}#current-theme img{border-color:#999;}#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{color:#999;}#TB_window #TB_title a.tb-theme-preview-link:hover,#TB_window #TB_title a.tb-theme-preview-link:focus{color:#ccc;}.misc-pub-section{border-top-color:#fff;border-bottom-color:#eee;}#minor-publishing{border-bottom-color:#ddd;}#post-body .misc-pub-section{border-right-color:#eee;}.post-com-count span{background-color:#bbb;}.form-table .color-palette td{border-color:#fff;}.sortable-placeholder{border-color:#bbb;background-color:#f5f5f5;}#post-body ul.category-tabs li.tabs a,#post-body ul.add-menu-item-tabs li.tabs a,body.press-this ul.category-tabs li.tabs a{color:#333;}.view-switch #view-switch-list{background:transparent url(../images/list.png) no-repeat 0 0;}.view-switch .current #view-switch-list{background:transparent url(../images/list.png) no-repeat -40px 0;}.view-switch #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -20px 0;}.view-switch .current #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -60px 0;}#header-logo{background:transparent url(../images/wp-logo-vs.png?ver=20101102) no-repeat scroll center center;}.popular-tags,.feature-filter{background-color:#fff;border-color:#DFDFDF;}#theme-information .action-button{border-top-color:#DFDFDF;}.theme-listing br.line{border-bottom-color:#ccc;}div.widgets-sortables,#widgets-left .inactive{background-color:#f7fcfe;border-color:#d0dfe9;}#available-widgets .widget-holder{background-color:#f7fcfe;border-color:#d0dfe9;}#available-widgets .widget-description{color:#555;}.sidebar-name{color:#464646;background-color:#f7fcfe;background-image:-ms-linear-gradient(top,#ECF8FE,#f7fcfe);background-image:-moz-linear-gradient(top,#ECF8FE,#f7fcfe);background-image:-o-linear-gradient(top,#ECF8FE,#f7fcfe);background-image:-webkit-gradient(linear,left top,left bottom,from(#ECF8FE),to(#f7fcfe));background-image:-webkit-linear-gradient(top,#ECF8FE,#f7fcfe);background-image:linear-gradient(top,#ECF8FE,#f7fcfe);text-shadow:#fff 0 1px 0;border-color:#d0dfe9;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;}.sidebar-name:hover,#removing-widget{color:#d54e21;}#removing-widget span{color:black;}.sidebar-name-arrow{background:transparent url(../images/arrows-vs.png) no-repeat 5px 9px;}.sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px;}.in-widget-title{color:#606060;}.deleting .widget-title *{color:#aaa;}.imgedit-menu div{border-color:#d5d5d5;background-color:#f1f1f1;}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea;}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;filter:alpha(opacity=50);opacity:.5;}#dashboard_recent_comments div.undo{border-top-color:#dfdfdf;}.comment-ays,.comment-ays th{border-color:#ddd;}.comment-ays th{background-color:#f1f1f1;}#menu-management .menu-edit{border-color:#d0dfe9;}#post-body{background:#fff;border-top-color:#fff;border-bottom-color:#d0dfe9;}#nav-menu-header{border-bottom-color:#d0dfe9;}#nav-menu-footer{border-top-color:#fff;}#menu-management .nav-tabs-arrow a{color:#C1C1C1;}#menu-management .nav-tabs-arrow a:hover{color:#D54E21;}#menu-management .nav-tabs-arrow a:active{color:#464646;}#menu-management .nav-tab-active{border-color:#dfdfdf;}#menu-management .nav-tab{background:#f7fcfe;border-color:#d0dfe9;}.js .input-with-default-title{color:#aaa;}#cancel-save{color:#f00;}#cancel-save:hover{background-color:#F00;color:#fff;}.list-container{border-color:#dfdfdf;}.menu-item-handle{border-color:#d0dfe9;}.menu li.deleting .menu-item-handle{background-color:#f66;text-shadow:#ccc;}.item-type{color:#999;}.item-controls .menu-item-delete:hover{color:#f00;}.nav-menus-php .item-edit{background:transparent url(../images/arrows-vs.png) no-repeat 8px 10px;border-bottom-color:#eff8ff;}.item-edit:hover{background:transparent url(../images/arrows-dark-vs.png) no-repeat 8px 10px;}.menu-item-settings{border-color:#d0dfe9;}.link-to-original{color:#777;border-color:#d0dfe9;}#cancel-save:hover{color:#fff!important;}#update-menu-item{color:#fff!important;}#update-menu-item:hover,#update-menu-item:active,#update-menu-item:focus{color:#eaf2fa!important;border-color:#13455b!important;}.submitbox .submitcancel{color:#21759B;border-bottom-color:#21759B;}.submitbox .submitcancel:hover{background:#21759B;color:#fff;}#menu-management .nav-tab-active,.menu-item-handle,.menu-item-settings{-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;}#menu-management .nav-tab-active{background:#eff8ff;border-bottom-color:#eff8ff;}#upload-form label{color:#777;}.fullscreen-overlay{background:#fff;}.wp-fullscreen-focus #wp-fullscreen-title,.wp-fullscreen-focus #wp-fullscreen-container{border-color:#BED1DD;}#fullscreen-topbar{border-bottom-color:#D1E5EE;}.about-wrap h1{color:#333;text-shadow:1px 1px 1px white;}.about-text{color:#777;}.wp-badge{color:#fff;text-shadow:0 -1px 0 rgba(22,57,81,0.3);}.about-wrap h2 .nav-tab{color:#21759B;}.about-wrap h2 .nav-tab:hover{color:#d54e21;}.about-wrap h2 .nav-tab-active,.about-wrap h2 .nav-tab-active:hover{color:#333;}.about-wrap h2 .nav-tab-active{text-shadow:1px 1px 1px white;color:#464646;}.about-wrap h3{color:#333;text-shadow:1px 1px 1px white;}.about-wrap .feature-section h4{color:#464646;}.about-wrap .feature-section img{background:#fff;border-color:#dfdfdf;-moz-box-shadow:0 0 6px rgba(0,0,0,0.3);-webkit-box-shadow:0 0 6px rgba(0,0,0,0.3);box-shadow:0 0 6px rgba(0,0,0,0.3);}.about-wrap .point-releases{border-bottom:1px solid #dfdfdf;}.about-wrap .point-releases h3{border-top:1px solid #dfdfdf;}.about-wrap .point-releases h3:first-child{border:0;}.about-wrap h4.wp-people-group{text-shadow:1px 1px 1px white;}.about-wrap li.wp-person img.gravatar{-moz-box-shadow:0 0 4px rgba(0,0,0,0.4);-webkit-box-shadow:0 0 4px rgba(0,0,0,0.4);box-shadow:0 0 4px rgba(0,0,0,0.4);}.about-wrap li.wp-person .title{color:#464646;text-shadow:1px 1px 1px white;}.freedoms-php .about-wrap ol li{color:#999;}.freedoms-php .about-wrap ol p{color:#464646;}.rtl .bar{border-right-color:none;border-left-color:#99d;}.rtl .post-com-count{background-image:url(../images/bubble_bg-rtl.gif);}.rtl #screen-meta-links a.show-settings{background-position:left 3px;}.rtl #screen-meta-links a.show-settings.screen-meta-active{background-position:left -33px;}.rtl #adminmenushadow,.rtl #adminmenuback{background-image:url(../images/menu-shadow-rtl.png);background-position:top left;}.rtl #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,.rtl #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/arrows-dark-vs.png) no-repeat 8px 6px;}.rtl #adminmenu .wp-has-submenu:hover .wp-menu-toggle,.rtl #adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/arrows-vs.png) no-repeat 8px 6px;}.rtl #adminmenu .wp-submenu .wp-submenu-head{border-right-color:none;border-left-color:#d1e5ee;}.rtl #adminmenu .wp-submenu-wrap,.rtl.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4);}.rtl #collapse-button div{background-position:0 -108px;}.rtl.folded #collapse-button div{background-position:0 -72px;}.rtl .meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows-vs.png) no-repeat 6px 7px;}.rtl .tablenav .tablenav-pages a{border-color:#d1e5ee;background:#eee url('../images/menu-bits-rtl-vs.gif?ver=20100610') repeat-x scroll right -379px;}.rtl #post-body .misc-pub-section{border-right-color:none;border-left-color:#d1e5ee;}.rtl .sidebar-name-arrow{background:transparent url(../images/arrows-vs.png) no-repeat 5px 9px;}.rtl .sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px;}
\ No newline at end of file
+html,.wp-dialog{background-color:#fff}* html input,* html .widget{border-color:#dfdfdf}textarea,input[type="text"],input[type="password"],input[type="file"],input[type="button"],input[type="submit"],input[type="reset"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="url"],select{border-color:#dfdfdf;background-color:#fff;color:#333}select{color:#000}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="file"]:focus,input[type="button"]:focus,input[type="submit"]:focus,input[type="reset"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="url"]:focus,select:focus{border-color:#d1e5ee}kbd,code{background:#eaeaea}input[readonly]{background-color:#eee}.find-box-search{border-color:#dfdfdf;background-color:#f1f1f1}.find-box{background-color:#f1f1f1}.find-box-inside{background-color:#fff}a.page-numbers:hover{border-color:#999}body,#wpbody,.form-table .pre,.ui-autocomplete li a{color:#333}body>#upload-menu{border-bottom-color:#fff}#postcustomstuff table,#your-profile fieldset,#rightnow,div.dashboard-widget,#dashboard-widgets p.dashboard-widget-links{border-color:#d1e5ee}#poststuff .inside label.spam,#poststuff .inside label.deleted{color:red}#poststuff .inside label.waiting{color:orange}#poststuff .inside label.approved{color:green}#postcustomstuff table{border-color:#dfdfdf;background-color:#f9f9f9}#postcustomstuff thead th{background-color:#f1f1f1}#postcustomstuff table input,#postcustomstuff table textarea{border-color:#dfdfdf;background-color:#fff}.widefat{border-color:#d1e5ee;background-color:#fff}div.dashboard-widget-error{background-color:#c43}div.dashboard-widget-notice{background-color:#cfe1ef}div.dashboard-widget-submit{border-top-color:#ccc}ul.category-tabs li{border-color:transparent}div.tabs-panel,.wp-tab-panel,ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-color:#dfdfdf;background-color:#fff}ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{background-color:#fff}input.disabled,textarea.disabled{background-color:#ccc}#plugin-information .action-button a,#plugin-information .action-button a:hover,#plugin-information .action-button a:visited{color:#fff}.widget .widget-top,.postbox h3,.stuffbox h3,.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.find-box-head,.sidebar-name,#nav-menu-header,#nav-menu-footer,.menu-item-handle,#fullscreen-topbar{background-color:#f5fafd;background-image:-ms-linear-gradient(top,#f7fcfe,#eff8ff);background-image:-moz-linear-gradient(top,#f7fcfe,#eff8ff);background-image:-o-linear-gradient(top,#f7fcfe,#eff8ff);background-image:-webkit-gradient(linear,left top,left bottom,from(#f7fcfe),to(#eff8ff));background-image:-webkit-linear-gradient(top,#f7fcfe,#eff8ff);background-image:linear-gradient(top,#f7fcfe,#eff8ff)}.widget .widget-top,.postbox h3,.stuffbox h3{border-bottom-color:#d1e5ee;text-shadow:#fff 0 1px 0;-moz-box-shadow:0 1px 0 #fff;-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff}.form-table th,.form-wrap label{color:#222;text-shadow:#fff 0 1px 0}.description,.form-wrap p{color:#666}strong .post-com-count span{background-color:#21759b}.sorthelper{background-color:#ccf3fa}.ac_match,.subsubsub a.current{color:#000}.wrap h2{color:#174f69}.wrap .add-new-h2{background:#f1f1f1}.subtitle{color:#777}.ac_over{background-color:#f0f0b8}.ac_results{background-color:#fff;border-color:#808080}.ac_results li{color:#101010}.alternate,.alt{background-color:#f7fcfe}.available-theme a.screenshot{background-color:#f1f1f1;border-color:#ddd}.bar{background-color:#e8e8e8;border-right-color:#99d}#media-upload,#media-upload .media-item .slidetoggle{background:#fff}#media-upload .slidetoggle{border-top-color:#dfdfdf}div.error,.login #login_error{background-color:#ffebe8;border-color:#c00}div.error a{color:#c00}.form-invalid{background-color:#ffebe8!important}.form-invalid input,.form-invalid select{border-color:#c00!important}.submit,#commentsdiv #add-new-comment{border-color:#dfdfdf}.highlight{background-color:#e4f2fd;color:#000}.howto,.nonessential,#edit-slug-box,.form-input-tip,.subsubsub{color:#666}.media-upload-form label.form-help,td.help{color:#9a9a9a}.ui-autocomplete{background-color:#eff8ff;border-color:#d1e5ee}.ui-autocomplete li a.ui-state-hover{background-color:#def1ff}.post-com-count{background-image:url(../images/bubble_bg.gif);color:#fff}.post-com-count span{background-color:#bbb;color:#fff}.post-com-count:hover span{background-color:#d54e21}.quicktags,.search{background-color:#ccc;color:#000}.side-info h5{border-bottom-color:#dadada}.side-info ul{color:#666}.button,.button-secondary,.submit input,input[type=button],input[type=submit]{border-color:#bbb;color:#464646}.button:hover,.button-secondary:hover,.submit input:hover,input[type=button]:hover,input[type=submit]:hover{color:#000;border-color:#666}.button,.submit input,.button-secondary{background:#f2f2f2 url(../images/white-grad.png) repeat-x scroll left top;text-shadow:rgba(255,255,255,1) 0 1px 0}.button:active,.submit input:active,.button-secondary:active{background:#eee url(../images/white-grad-active.png) repeat-x scroll left top}input.button-primary,button.button-primary,a.button-primary{border-color:#298cba;font-weight:bold;color:#fff;background:#21759b url(../images/button-grad.png) repeat-x scroll left top;text-shadow:rgba(0,0,0,0.3) 0 -1px 0}input.button-primary:active,button.button-primary:active,a.button-primary:active{background:#21759b url(../images/button-grad-active.png) repeat-x scroll left top;color:#eaf2fa}input.button-primary:hover,button.button-primary:hover,a.button-primary:hover,a.button-primary:focus,a.button-primary:active{border-color:#13455b;color:#eaf2fa}.button-disabled,.button[disabled],.button:disabled,.button-secondary[disabled],.button-secondary:disabled,a.button.disabled{color:#aaa!important;border-color:#ddd!important}.button-primary-disabled,.button-primary[disabled],.button-primary:disabled{color:#9fd0d5!important;background:#298cba!important}a:hover,a:active,a:focus{color:#d54e21}#adminmenu a:hover,#adminmenu li.menu-top>a:focus,#adminmenu ul.wp-submenu a:hover,#the-comment-list .comment a:hover,#rightnow a:hover,#media-upload a.del-link:hover,div.dashboard-widget-submit input:hover,.subsubsub a:hover,.subsubsub a.current:hover,.ui-tabs-nav a:hover,.plugins .inactive a:hover,#all-plugins-table .plugins .inactive a:hover,#search-plugins-table .plugins .inactive a:hover{color:#d54e21}#the-comment-list .comment-item,#dashboard-widgets #dashboard_quick_press form p.submit{border-color:#dfdfdf}#side-sortables .category-tabs .tabs a,#side-sortables .add-menu-item-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#333}#rightnow .rbutton{background-color:#ebebeb;color:#264761}.submitbox .submit{background-color:#464646;color:#ccc}.plugins a.delete:hover,#all-plugins-table .plugins a.delete:hover,#search-plugins-table .plugins a.delete:hover,.submitbox .submitdelete{color:#f00;border-bottom-color:#f00}.submitbox .submitdelete:hover,#media-items a.delete:hover{color:#fff;background-color:#f00;border-bottom-color:#f00}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:#f00;border-bottom-color:#f00}.tablenav .dots{border-color:transparent}.tablenav .next,.tablenav .prev{border-color:transparent;color:#21759b}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#d54e21}div.updated,.login .message{background-color:#ffffe0;border-color:#e6db55}.update-message{color:#000}a.page-numbers{border-bottom-color:#b8d3e2}.commentlist li{border-bottom-color:#ccc}.widefat td,.widefat th{border-top-color:#fff;border-bottom-color:#d0dfe9}.widefat th{text-shadow:rgba(255,255,255,0.8) 0 1px 0}.widefat td{color:#555}.widefat p,.widefat ol,.widefat ul{color:#333}.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.find-box-head{color:#333}th.sortable a:hover,th.sortable a:active,th.sortable a:focus{color:#333}h3.dashboard-widget-title small a{color:#d7d7d7}h3.dashboard-widget-title small a:hover{color:#fff}a,#adminmenu a,#the-comment-list p.comment-author strong a,#media-upload a.del-link,#media-items a.delete,.plugins a.delete,.ui-tabs-nav a{color:#21759b}#adminmenu .awaiting-mod,#adminmenu .update-plugins,#sidemenu a .update-plugins,#rightnow .reallynow{background-color:#464646;color:#fff;-moz-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}#plugin-information .action-button{background-color:#d54e21;color:#fff}#adminmenu li.current a .awaiting-mod,#adminmenu li a.wp-has-current-submenu .update-plugins{background-color:#464646;color:#fff;-moz-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}div#media-upload-header,div#plugin-information-header{background-color:#f9f9f9;border-bottom-color:#dfdfdf}#currenttheme img{border-color:#666}#dashboard_secondary div.dashboard-widget-content ul li a{background-color:#f9f9f9}input.readonly,textarea.readonly{background-color:#ddd}.quicktags-toolbar input{background:#fff;background-image:-ms-linear-gradient(bottom,#e5f0f8,#fff);background-image:-moz-linear-gradient(bottom,#e5f0f8,#fff);background-image:-o-linear-gradient(bottom,#e5f0f8,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#e5f0f8),to(#fff));background-image:-webkit-linear-gradient(bottom,#e5f0f8,#fff)!important;background-image:linear-gradient(bottom,#e5f0f8,#fff)}#editable-post-name{background-color:#fffbcc}#edit-slug-box strong,.tablenav .displaying-num,#submitted-on,.submitted-on{color:#777}.login #nav a,.login #backtoblog a{color:#21759b!important}.login #nav a:hover,.login #backtoblog a:hover{color:#d54e21!important}#footer{color:#777;border-color:#b0c8d7}#media-items .media-item,.media-item .describe,.imgedit-group{border-color:#dfdfdf}.checkbox,.side-info,.plugins tr,#your-profile #rich_editing{background-color:#fcfcfc}.plugins .inactive,.plugins .inactive th,.plugins .inactive td,tr.inactive+tr.plugin-update-tr .plugin-update{background-color:#f4f4f4}.plugin-update-tr .update-message{background-color:#fffbe4;border-color:#dfdfdf}.plugins .active,.plugins .active th,.plugins .active td{color:#000}.plugins .inactive a{color:#579}#the-comment-list tr.undo,#the-comment-list div.undo{background-color:#f4f4f4}#the-comment-list .unapproved{background-color:#ffffe0}#the-comment-list .approve a{color:#006505}#the-comment-list .unapprove a{color:#d98500}table.widefat span.delete a,table.widefat span.trash a,table.widefat span.spam a,#dashboard_recent_comments .delete a,#dashboard_recent_comments .trash a,#dashboard_recent_comments .spam a{color:#bc0b0b}.welcome-panel{border-color:#d1e5ee}.welcome-panel p{color:#777}.welcome-panel-column p{color:#464646}.welcome-panel h3{text-shadow:1px 1px 1px white}.widget,#widget-list .widget-top,.postbox,#titlediv,#poststuff .postarea,.stuffbox{border-color:#d1e5ee;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;-webkit-border-radius:3px;border-radius:3px}.widget,#widget-list .widget-top,.postbox,.menu-item-settings{background-color:#f7fcfe}.postbox h3{color:#174f69}.widget .widget-top{color:#174f69}.sidebar-name:hover h3,.postbox h3:hover{color:#000}.curtime #timestamp{background-image:url(../images/date-button.gif)}#quicktags #ed_link{color:#00f}#rightnow .youhave{background-color:#f0f6fb}#rightnow a{color:#448abd}.tagchecklist span a,#bulk-titles div a{background:url(../images/xit.gif) no-repeat}.tagchecklist span a:hover,#bulk-titles div a:hover{background:url(../images/xit.gif) no-repeat -10px 0}#update-nag,.update-nag{background-color:#fffbcc;border-color:#e6db55;color:#555}.login #backtoblog a{color:#464646}#wphead{border-bottom:#d0dfe9 1px solid}#wphead h1 a{color:#174f69}#footer a:link,#footer a:visited{text-decoration:none}#footer a:hover{color:#000;text-decoration:underline}.file-error,abbr.required,.widget-control-remove:hover,table.widefat .delete a:hover,table.widefat .trash a:hover,table.widefat .spam a:hover,#dashboard_recent_comments .delete a:hover,#dashboard_recent_comments .trash a:hover #dashboard_recent_comments .spam a:hover{color:#f00}#pass-strength-result{background-color:#eee;border-color:#ddd!important}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important}#quicktags{border-color:#cfdfe9;background-color:#cfdfe9;background-image:url("../images/ed-bg-vs.gif?ver=20101102")}.quicktags-toolbar input{border-color:#b2c4c8}.quicktags-toolbar input:hover{border-color:#d0dfe9;background:#f0f8fe}#poststuff .wp-editor-wrap .wp_themeSkin .mceStatusbar{border-color:#d0dfe9}#poststuff .wp-editor-wrap .wp_themeSkin .mceStatusbar *{color:#555}#poststuff #editor-toolbar .active{border-color:#d0dfe9 #d0dfe9 #eff8ff;background-color:#eff8ff;color:#333}#post-status-info{background-color:#eff8ff}.wp-editor-wrap .wp_themeSkin *,.wp-editor-wrap .wp_themeSkin a:hover,.wp-editor-wrap .wp_themeSkin a:link,.wp-editor-wrap .wp_themeSkin a:visited,.wp-editor-wrap .wp_themeSkin a:active{color:#000}.wp-editor-wrap .wp_themeSkin table.mceLayout{border-color:#bed1dd #bed1dd #d0dfe9}#editorcontainer #content,#editorcontainer .wp-editor-wrap .wp_themeSkin .mceIframeContainer{-moz-box-shadow:inset 1px 1px 2px rgba(0,0,0,0.1);-webkit-box-shadow:inset 1px 1px 2px rgba(0,0,0,0.1);box-shadow:inset 1px 1px 2px rgba(0,0,0,0.1)}.wp-editor-wrap .wp_themeSkin iframe{background:transparent}.wp-editor-wrap .wp_themeSkin .mceStatusbar{color:#000;background-color:#f5f5f5}.wp-editor-wrap .wp_themeSkin .mceButton{border-color:#b0c8d7;background-color:#cfdfe9;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff)}.wp-editor-wrap .wp_themeSkin a.mceButtonEnabled:hover{border-color:#5589aa!important;background-color:#c9c9c9;background-image:-ms-linear-gradient(bottom,#bdccd5,#fff);background-image:-moz-linear-gradient(bottom,#bdccd5,#fff);background-image:-o-linear-gradient(bottom,#bdccd5,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#bdccd5),to(#fff));background-image:-webkit-linear-gradient(bottom,#bdccd5,#fff)!important;background-image:linear-gradient(bottom,#bdccd5,#fff)}.wp-editor-wrap .wp_themeSkin a.mceButton:active,.wp-editor-wrap .wp_themeSkin a.mceButtonEnabled:active,.wp-editor-wrap .wp_themeSkin a.mceButtonSelected:active,.wp-editor-wrap .wp_themeSkin a.mceButtonActive,.wp-editor-wrap .wp_themeSkin a.mceButtonActive:active,.wp-editor-wrap .wp_themeSkin a.mceButtonActive:hover{background:#b0c8d7!important;background-image:-ms-linear-gradient(bottom,#fff,#cfdfe9);background-image:-moz-linear-gradient(bottom,#fff,#cfdfe9);background-image:-o-linear-gradient(bottom,#fff,#cfdfe9);background-image:-webkit-gradient(linear,left bottom,left top,from(#fff),to(#cfdfe9));background-image:-webkit-linear-gradient(bottom,#fff,#cfdfe9)!important;background-image:linear-gradient(bottom,#fff,#cfdfe9);border-color:#5589aa!important}.wp-editor-wrap .wp_themeSkin .mceButtonDisabled{border-color:#b0c8d7!important}.wp-editor-wrap .wp_themeSkin .mceListBox .mceText,.wp-editor-wrap .wp_themeSkin .mceListBox .mceOpen{border-color:#b0c8d7;background-color:#cfdfe9;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff)}.wp-editor-wrap .wp_themeSkin .mceListBox .mceOpen{border-left:0!important}.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp-editor-wrap .wp_themeSkin .mceListBoxHover .mceOpen,.wp-editor-wrap .wp_themeSkin .mceListBoxHover:active .mceOpen,.wp-editor-wrap .wp_themeSkin .mceListBoxSelected .mceOpen,.wp-editor-wrap .wp_themeSkin .mceListBoxSelected .mceText,.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:active .mceText{background:#b0c8d7;border-color:#5589aa!important}.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:hover .mceText,.wp-editor-wrap .wp_themeSkin .mceListBoxHover .mceText,.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp-editor-wrap .wp_themeSkin .mceListBoxHover .mceOpen{border-color:#5589aa!important;background-color:#c9c9c9;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff)}.wp-editor-wrap .wp_themeSkin select.mceListBox{border-color:#b2b2b2;background-color:#fff}.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceAction,.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceOpen{border-color:#b0c8d7}.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceOpen:hover,.wp-editor-wrap .wp_themeSkin .mceSplitButtonSelected a.mceOpen,.wp-editor-wrap .wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceAction:hover{border-color:#5589aa!important}.wp-editor-wrap .wp_themeSkin table.mceSplitButton td{background-color:#cfdfe9;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff)}.wp-editor-wrap .wp_themeSkin table.mceSplitButton:hover td{background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff)}.wp-editor-wrap .wp_themeSkin .mceSplitButtonActive{background-color:#b0c8d7}.wp-editor-wrap .wp_themeSkin div.mceColorSplitMenu table{background-color:#ebebeb;border-color:#b2b2b2}.wp-editor-wrap .wp_themeSkin .mceColorSplitMenu a{border-color:#b2b2b2}.wp-editor-wrap .wp_themeSkin .mceColorSplitMenu a.mceMoreColors{border-color:#fff}.wp-editor-wrap .wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover{border-color:#0a246a;background-color:#b6bdd2}.wp-editor-wrap .wp_themeSkin a.mceMoreColors:hover{border-color:#0a246a}.wp-editor-wrap .wp_themeSkin .mceMenu{border-color:#ddd}.wp-editor-wrap .wp_themeSkin .mceMenu table{background-color:#ebeaeb}.wp-editor-wrap .wp_themeSkin .mceMenu .mceText{color:#000}.wp-editor-wrap .wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover,.wp-editor-wrap .wp_themeSkin .mceMenu .mceMenuItemActive{background-color:#f5f5f5}.wp-editor-wrap .wp_themeSkin td.mceMenuItemSeparator{background-color:#aaa}.wp-editor-wrap .wp_themeSkin .mceMenuItemTitle a{background-color:#ccc;border-bottom-color:#aaa}.wp-editor-wrap .wp_themeSkin .mceMenuItemTitle span.mceText{color:#000}.wp-editor-wrap .wp_themeSkin .mceMenuItemDisabled .mceText{color:#888}.wp-editor-wrap .wp_themeSkin tr.mceFirst td.mceToolbar{background:#cfdfe9 url("../images/ed-bg-vs.gif?ver=20101102") repeat-x scroll left top;border-color:#cfdfe9}.wp-admin #mceModalBlocker{background:#000}.wp-admin .clearlooks2 .mceFocus .mceTop .mceLeft{background:#444;border-left:1px solid #999;border-top:1px solid #999;-webkit-border-top-left-radius:3px;border-top-left-radius:3px}.wp-admin .clearlooks2 .mceFocus .mceTop .mceRight{background:#444;border-right:1px solid #999;border-top:1px solid #999;-webkit-border-top-right-radius:3px;border-top-right-radius:3px}.wp-admin .clearlooks2 .mceMiddle .mceLeft{background:#f1f1f1;border-left:1px solid #999}.wp-admin .clearlooks2 .mceMiddle .mceRight{background:#f1f1f1;border-right:1px solid #999}.wp-admin .clearlooks2 .mceBottom{background:#f1f1f1;border-bottom:1px solid #999}.wp-admin .clearlooks2 .mceBottom .mceLeft{background:#f1f1f1;border-bottom:1px solid #999;border-left:1px solid #999}.wp-admin .clearlooks2 .mceBottom .mceCenter{background:#f1f1f1;border-bottom:1px solid #999}.wp-admin .clearlooks2 .mceBottom .mceRight{background:#f1f1f1;border-bottom:1px solid #999;border-right:1px solid #999}.wp-admin .clearlooks2 .mceFocus .mceTop span{color:#e5e5e5}.wp-editor-wrap .wp-switch-editor{background-color:#f5fafd;border-color:#d1e5ee #d1e5ee #d1e5ee;color:#999}.wp-editor-wrap.tmce-active .switch-tmce,.wp-editor-wrap.html-active .switch-html{background-color:#eff8ff;border-color:#d1e5ee #d1e5ee #eff8ff;color:#333}.wp-editor-wrap.quicktags-toolbar input{color:#464646;border-color:#d1e5ee;background-color:#eff8ff;background-image:-ms-linear-gradient(bottom,#eff8ff,#fff);background-image:-moz-linear-gradient(bottom,#eff8ff,#fff);background-image:-o-linear-gradient(bottom,#eff8ff,#fff);background-image:-webkit-linear-gradient(bottom,#eff8ff,#fff);background-image:linear-gradient(bottom,#eff8ff,#fff)}.wp-editor-wrap .quicktags-toolbar,.wp-editor-wrap.wp_themeSkin tr.mceFirst td.mceToolbar{border-bottom:1px solid #ccc;background-color:#eff8ff;background-image:-ms-linear-gradient(bottom,#cfdfe9,#eff8ff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#eff8ff);background-image:-o-linear-gradient(bottom,#cfdfe9,#eff8ff);background-image:-webkit-linear-gradient(bottom,#cfdfe9,#eff8ff);background-image:linear-gradient(bottom,#cfdfe9,#eff8ff)}.wp-editor-wrap .quicktags-toolbar input:hover{border-color:#aaa;background:#ddd}.wp-editor-wrap.wp_themeSkin .mceButton,.wp-editor-wrap.wp_themeSkin .mceListBox .mceText,.wp-editor-wrap.wp_themeSkin .mceListBox .mceOpen{border-color:#ccc;background-color:#eff8ff;background-image:-ms-linear-gradient(bottom,#eff8ff,#fff);background-image:-moz-linear-gradient(bottom,#eff8ff,#fff);background-image:-o-linear-gradient(bottom,#eff8ff,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#fff));background-image:-webkit-linear-gradient(bottom,#eff8ff,#fff);background-image:linear-gradient(bottom,#eff8ff,#fff)}.wp-editor-wrap.wp_themeSkin a.mceButtonEnabled:hover{border-color:#a0a0a0;background:#ddd;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff);background-image:linear-gradient(bottom,#cfdfe9,#fff)}#titlediv #title{border-color:#bdccd5}#editorcontainer{border-color:#bdccd5 #bdccd5 #d0dfe9}#post-status-info{border-color:#d0dfe9 #bdccd5 #bdccd5}.editwidget .widget-inside{border-color:#d0dfe9}#titlediv #title{background-color:#fff}#tTips p#tTips_inside{background-color:#ddd;color:#333}#timestampdiv input,#namediv input,#poststuff .inside .the-tagcloud{border-color:#ddd}#adminmenuback,#adminmenuwrap{background-color:#eff8ff;border-color:#d1e5ee}#adminmenushadow,#adminmenuback{background-image:url(../images/menu-shadow.png);background-position:top right;background-repeat:repeat-y}#adminmenu li.wp-menu-separator{background:#d1e5ee;border-color:#bed1dd}#adminmenu div.separator{border-color:#d1e5ee}#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/arrows-dark-vs.png) no-repeat -1px 6px}#adminmenu .wp-has-submenu:hover .wp-menu-toggle,#adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/arrows-vs.png) no-repeat -2px 6px}#adminmenu a.menu-top,.folded #adminmenu li.menu-top,#adminmenu .wp-submenu .wp-submenu-head{border-top-color:#fff;border-bottom-color:#cae6ff}#adminmenu li.wp-menu-open{border-color:#d1e5ee}#adminmenu li.menu-top:hover>a,#adminmenu li.menu-top.focused>a,#adminmenu li.menu-top>a:focus{background-color:#e0f1ff;text-shadow:0 1px 0 rgba(255,255,255,0.4)}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top,#adminmenu .wp-menu-arrow,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background-color:#5589aa;background-image:-ms-linear-gradient(bottom,#5589aa,#619bbb);background-image:-moz-linear-gradient(bottom,#5589aa,#619bbb);background-image:-o-linear-gradient(bottom,#5589aa,#619bbb);background-image:-webkit-gradient(linear,left bottom,left top,from(#5589aa),to(#619bbb));background-image:-webkit-linear-gradient(bottom,#5589aa,#619bbb);background-image:linear-gradient(bottom,#5589aa,#619bbb)}#adminmenu .wp-menu-arrow div{background-color:#5589aa;background-image:-ms-linear-gradient(right bottom,#5589aa,#619bbb);background-image:-moz-linear-gradient(right bottom,#5589aa,#619bbb);background-image:-o-linear-gradient(right bottom,#5589aa,#619bbb);background-image:-webkit-gradient(linear,right bottom,left top,from(#5589aa),to(#619bbb));background-image:-webkit-linear-gradient(right bottom,#5589aa,#619bbb);background-image:linear-gradient(right bottom,#5589aa,#619bbb)}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{border-top-color:#fff;border-bottom-color:#cae6ff;background:#e0f1ff}#adminmenu li.wp-not-current-submenu .wp-menu-arrow div{background:#e0f1ff;border-color:#cae6ff}.folded #adminmenu li.menu-top li:hover a{background-image:none}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{text-shadow:0 -1px 0 #333;color:#fff;border-top-color:#5a8fad;border-bottom-color:#5589aa}.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{border-top-color:#5a8fad;border-bottom-color:#5589aa}#adminmenu .wp-submenu a:hover,#adminmenu .wp-submenu a:focus{background-color:#eff8ff;color:#333}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover{color:#333}#adminmenu .wp-submenu ul{background-color:#fff}#adminmenu .wp-submenu-wrap,#adminmenu .wp-submenu ul{border-color:#d0dfe9}#adminmenu .wp-submenu-wrap,.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:2px 2px 5px rgba(0,0,0,0.4);box-shadow:2px 2px 5px rgba(0,0,0,0.4)}#adminmenu .wp-submenu .wp-submenu-head{border-right-color:#e8eff4;background-color:#eff8ff}#adminmenu div.wp-submenu{background-color:transparent}#collapse-menu{color:#a0c3d5}#collapse-menu:hover{color:#5a8fad}#collapse-button{border-color:#d0dfe9;background-color:#eff8ff;background-image:-ms-linear-gradient(bottom,#eff8ff,#fff);background-image:-moz-linear-gradient(bottom,#eff8ff,#fff);background-image:-o-linear-gradient(bottom,#eff8ff,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#fff));background-image:-webkit-linear-gradient(bottom,#eff8ff,#fff);background-image:linear-gradient(bottom,#eff8ff,#fff)}#collapse-menu:hover #collapse-button{border-color:#a0c3d5}#collapse-button div{background:transparent url(../images/arrows-vs.png) no-repeat 0 -72px}.folded #collapse-button div{background-position:0 -108px}@media only screen and (max-width:900px){#adminmenu li.menu-top{border-top-color:#fff;border-bottom-color:#cae6ff}#adminmenu li.wp-has-current-submenu,#adminmenu li.current.menu-top{background-color:#5589aa;background-image:-ms-linear-gradient(bottom,#5589aa,#619bbb);background-image:-moz-linear-gradient(bottom,#5589aa,#619bbb);background-image:-o-linear-gradient(bottom,#5589aa,#619bbb);background-image:-webkit-gradient(linear,left bottom,left top,from(#5589aa),to(#619bbb));background-image:-webkit-linear-gradient(bottom,#5589aa,#619bbb);background-image:linear-gradient(bottom,#5589aa,#619bbb)}#adminmenu li.menu-top li:hover a{background-image:none}#adminmenu li.wp-has-current-submenu,#adminmenu li.current.menu-top{border-top-color:#5a8fad;border-bottom-color:#5589aa}#adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:2px 2px 5px rgba(0,0,0,0.4);box-shadow:2px 2px 5px rgba(0,0,0,0.4)}#collapse-button div{background-position:0 -108px}}.icon16,.icon32,div.wp-menu-image{background-color:transparent;background-repeat:no-repeat}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image{background-image:url('../images/menu-vs.png?ver=20120201')}.icon16.icon-dashboard,#adminmenu .menu-icon-dashboard div.wp-menu-image{background-position:-59px -33px}#adminmenu .menu-icon-dashboard:hover div.wp-menu-image,#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-dashboard.current div.wp-menu-image{background-position:-59px -1px}.icon16.icon-post,#adminmenu .menu-icon-post div.wp-menu-image{background-position:-269px -33px}#adminmenu .menu-icon-post:hover div.wp-menu-image,#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-post.current div.wp-menu-image{background-position:-269px -1px}.icon16.icon-media,#adminmenu .menu-icon-media div.wp-menu-image{background-position:-119px -33px}#adminmenu .menu-icon-media:hover div.wp-menu-image,#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-media.current div.wp-menu-image{background-position:-119px -1px}.icon16.icon-links,#adminmenu .menu-icon-links div.wp-menu-image{background-position:-89px -33px}#adminmenu .menu-icon-links:hover div.wp-menu-image,#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-links.current div.wp-menu-image{background-position:-89px -1px}.icon16.icon-page,#adminmenu .menu-icon-page div.wp-menu-image{background-position:-149px -33px}#adminmenu .menu-icon-page:hover div.wp-menu-image,#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-page.current div.wp-menu-image{background-position:-149px -1px}.icon16.icon-comments,#adminmenu .menu-icon-comments div.wp-menu-image{background-position:-29px -33px}#adminmenu .menu-icon-comments:hover div.wp-menu-image,#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-comments.current div.wp-menu-image{background-position:-29px -1px}.icon16.icon-appearance,#adminmenu .menu-icon-appearance div.wp-menu-image{background-position:1px -33px}#adminmenu .menu-icon-appearance:hover div.wp-menu-image,#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-appearance.current div.wp-menu-image{background-position:1px -1px}.icon16.icon-plugins,#adminmenu .menu-icon-plugins div.wp-menu-image{background-position:-179px -33px}#adminmenu .menu-icon-plugins:hover div.wp-menu-image,#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-plugins.current div.wp-menu-image{background-position:-179px -1px}.icon16.icon-users,#adminmenu .menu-icon-users div.wp-menu-image{background-position:-300px -33px}#adminmenu .menu-icon-users:hover div.wp-menu-image,#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-users.current div.wp-menu-image{background-position:-300px -1px}.icon16.icon-tools,#adminmenu .menu-icon-tools div.wp-menu-image{background-position:-209px -33px}#adminmenu .menu-icon-tools:hover div.wp-menu-image,#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-tools.current div.wp-menu-image{background-position:-209px -1px}.icon16.icon-settings,#adminmenu .menu-icon-settings div.wp-menu-image{background-position:-239px -33px}#adminmenu .menu-icon-settings:hover div.wp-menu-image,#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-settings.current div.wp-menu-image{background-position:-239px -1px}.icon16.icon-site,#adminmenu .menu-icon-site div.wp-menu-image{background-position:-359px -33px}#adminmenu .menu-icon-site:hover div.wp-menu-image,#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-site.current div.wp-menu-image{background-position:-359px -1px}.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin{background-image:url(../images/icons32-vs.png?ver=20111206)}.icon32.icon-post,#icon-edit,#icon-post{background-position:-552px -5px}.icon32.icon-dashboard,#icon-index{background-position:-137px -5px}.icon32.icon-media,#icon-upload{background-position:-251px -5px}.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category{background-position:-190px -5px}.icon32.icon-page,#icon-edit-pages,#icon-page{background-position:-312px -5px}.icon32.icon-comments,#icon-edit-comments{background-position:-72px -5px}.icon32.icon-appearance,#icon-themes{background-position:-11px -5px}.icon32.icon-plugins,#icon-plugins{background-position:-370px -5px}.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit{background-position:-600px -5px}.icon32.icon-tools,#icon-tools,#icon-admin{background-position:-432px -5px}.icon32.icon-settings,#icon-options-general{background-position:-492px -5px}.icon32.icon-site,#icon-ms-admin{background-position:-659px -5px}@media only screen and (-webkit-min-device-pixel-ratio:1.5){.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin{background-image:url(../images/icons32-vs-2x.png?ver=20120412);background-size:708px 45px}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image{background-image:url('../images/menu-2x.png?ver=20120412');background-size:390px 64px}}table.diff .diff-deletedline{background-color:#fdd}table.diff .diff-deletedline del{background-color:#f99}table.diff .diff-addedline{background-color:#dfd}table.diff .diff-addedline ins{background-color:#9f9}#att-info{background-color:#e4f2fd}#sidemenu a{background-color:#f9f9f9;border-color:#f9f9f9;border-bottom-color:#dfdfdf}#sidemenu a.current{background-color:#fff;border-color:#dfdfdf #dfdfdf #fff;color:#d54e21}#screen-meta{background-color:#eff8ff;border-color:#d1e5ee;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.05);box-shadow:0 1px 3px rgba(0,0,0,0.05)}#contextual-help-back{background:#fff}.contextual-help-tabs a:hover{background-color:#ceeaff;color:#333}#contextual-help-back,.contextual-help-tabs .active{border-color:#d1e5ee}.contextual-help-tabs .active,.contextual-help-tabs .active a,.contextual-help-tabs .active a:hover{background:#fff;color:#000}#screen-options-link-wrap,#contextual-help-link-wrap{background-color:#eff8ff;border-right:1px solid #d1e5ee;border-left:1px solid #d1e5ee;border-bottom:1px solid #d1e5ee;background-image:-ms-linear-gradient(bottom,#eff8ff,#eff8ff);background-image:-moz-linear-gradient(bottom,#def1ff,#eff8ff);background-image:-o-linear-gradient(bottom,#def1ff,#eff8ff);background-image:-webkit-gradient(linear,left bottom,left top,from(#def1ff),to(#eff8ff));background-image:-webkit-linear-gradient(bottom,#def1ff,#eff8ff);background-image:linear-gradient(bottom,#def1ff,#eff8ff)}#screen-meta-links a.show-settings{color:#606060}#screen-meta-links a.show-settings:hover{color:#000}#screen-meta-links a.show-settings{background:transparent url(../images/arrows-vs.png) no-repeat right 4px}#screen-meta-links a.show-settings.screen-meta-active{background:transparent url(../images/arrows-vs.png) no-repeat right -31px}#replyerror{border-color:#ddd;background-color:#f9f9f9}.vim-current,.vim-current th,.vim-current td{background-color:#e4f2fd!important}#plugin-information .fyi ul{background-color:#eaf3fa}#plugin-information .fyi h2.mainheader{background-color:#cee1ef}#plugin-information pre,#plugin-information code{background-color:#ededff}#plugin-information pre{border:1px solid #ccc}.inline-edit-row fieldset input[type="text"],.inline-edit-row fieldset textarea,#bulk-titles{border-color:#ddd}.inline-editor div.title{background-color:#eaf3fa}.inline-editor ul.cat-checklist{background-color:#fff;border-color:#ddd}.inline-editor .categories .catshow,.inline-editor .categories .cathide{color:#21759b}.inline-editor .quick-edit-save{background-color:#f1f1f1}fieldset.inline-edit-col-right .inline-edit-col{border-color:#dfdfdf}.attention{color:#d54e21}.meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows-vs.png) no-repeat 6px 7px}.tablenav .tablenav-pages{color:#555}.tablenav .tablenav-pages a{border-color:#d1e5ee;background:#eee url('../images/menu-bits-vs.gif?ver=20101102') repeat-x scroll left -379px}.tablenav .tablenav-pages a:hover,.tablenav .tablenav-pages a:focus{color:#d54e21}.tablenav .tablenav-pages a.disabled,.tablenav .tablenav-pages a.disabled:hover,.tablenav .tablenav-pages a.disabled:focus{color:#aaa}.tablenav .tablenav-pages .current{background:#dfdfdf;border-color:#d3d3d3}#availablethemes,#availablethemes td{border-color:#ddd}#current-theme img{border-color:#999}#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{color:#999}#TB_window #TB_title a.tb-theme-preview-link:hover,#TB_window #TB_title a.tb-theme-preview-link:focus{color:#ccc}.misc-pub-section{border-top-color:#fff;border-bottom-color:#eee}#minor-publishing{border-bottom-color:#ddd}#post-body .misc-pub-section{border-left-color:#eee}.post-com-count span{background-color:#bbb}.form-table .color-palette td{border-color:#fff}.sortable-placeholder{border-color:#bbb;background-color:#f5f5f5}#post-body ul.category-tabs li.tabs a,#post-body ul.add-menu-item-tabs li.tabs a,body.press-this ul.category-tabs li.tabs a{color:#333}.view-switch #view-switch-list{background:transparent url(../images/list.png) no-repeat 0 0}.view-switch .current #view-switch-list{background:transparent url(../images/list.png) no-repeat -40px 0}.view-switch #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -20px 0}.view-switch .current #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -60px 0}#header-logo{background:transparent url(../images/wp-logo-vs.png?ver=20101102) no-repeat scroll center center}.popular-tags,.feature-filter{background-color:#fff;border-color:#dfdfdf}div.widgets-sortables,#widgets-left .inactive{background-color:#f7fcfe;border-color:#d0dfe9}#available-widgets .widget-holder{background-color:#f7fcfe;border-color:#d0dfe9}#available-widgets .widget-description{color:#555}.sidebar-name{color:#464646;background-color:#f7fcfe;background-image:-ms-linear-gradient(top,#ecf8fe,#f7fcfe);background-image:-moz-linear-gradient(top,#ecf8fe,#f7fcfe);background-image:-o-linear-gradient(top,#ecf8fe,#f7fcfe);background-image:-webkit-gradient(linear,left top,left bottom,from(#ecf8fe),to(#f7fcfe));background-image:-webkit-linear-gradient(top,#ecf8fe,#f7fcfe);background-image:linear-gradient(top,#ecf8fe,#f7fcfe);text-shadow:#fff 0 1px 0;border-color:#d0dfe9;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.sidebar-name:hover,#removing-widget{color:#d54e21}#removing-widget span{color:black}.sidebar-name-arrow{background:transparent url(../images/arrows-vs.png) no-repeat 5px 9px}.sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px}.in-widget-title{color:#606060}.deleting .widget-title *{color:#aaa}.imgedit-menu div{border-color:#d5d5d5;background-color:#f1f1f1}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;filter:alpha(opacity=50);opacity:.5}#dashboard_recent_comments div.undo{border-top-color:#dfdfdf}.comment-ays,.comment-ays th{border-color:#ddd}.comment-ays th{background-color:#f1f1f1}#menu-management .menu-edit{border-color:#d0dfe9}#post-body{background:#fff;border-top-color:#fff;border-bottom-color:#d0dfe9}#nav-menu-header{border-bottom-color:#d0dfe9}#nav-menu-footer{border-top-color:#fff}#menu-management .nav-tabs-arrow a{color:#c1c1c1}#menu-management .nav-tabs-arrow a:hover{color:#d54e21}#menu-management .nav-tabs-arrow a:active{color:#464646}#menu-management .nav-tab-active{border-color:#dfdfdf}#menu-management .nav-tab{background:#f7fcfe;border-color:#d0dfe9}.js .input-with-default-title{color:#aaa}#cancel-save{color:#f00}#cancel-save:hover{background-color:#f00;color:#fff}.list-container{border-color:#dfdfdf}.menu-item-handle{border-color:#d0dfe9}.menu li.deleting .menu-item-handle{background-color:#f66;text-shadow:#ccc}.item-type{color:#999}.item-controls .menu-item-delete:hover{color:#f00}.nav-menus-php .item-edit{background:transparent url(../images/arrows-vs.png) no-repeat 8px 10px;border-bottom-color:#eff8ff}.item-edit:hover{background:transparent url(../images/arrows-dark-vs.png) no-repeat 8px 10px}.menu-item-settings{border-color:#d0dfe9}.link-to-original{color:#777;border-color:#d0dfe9}#cancel-save:hover{color:#fff!important}#update-menu-item{color:#fff!important}#update-menu-item:hover,#update-menu-item:active,#update-menu-item:focus{color:#eaf2fa!important;border-color:#13455b!important}.submitbox .submitcancel{color:#21759b;border-bottom-color:#21759b}.submitbox .submitcancel:hover{background:#21759b;color:#fff}#menu-management .nav-tab-active,.menu-item-handle,.menu-item-settings{-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}#menu-management .nav-tab-active{background:#eff8ff;border-bottom-color:#eff8ff}#upload-form label{color:#777}.fullscreen-overlay{background:#fff}.wp-fullscreen-focus #wp-fullscreen-title,.wp-fullscreen-focus #wp-fullscreen-container{border-color:#bed1dd}#fullscreen-topbar{border-bottom-color:#d1e5ee}.about-wrap h1{color:#333;text-shadow:1px 1px 1px white}.about-text{color:#777}.wp-badge{color:#fff;text-shadow:0 -1px 0 rgba(22,57,81,0.3)}.about-wrap h2 .nav-tab{color:#21759b}.about-wrap h2 .nav-tab:hover{color:#d54e21}.about-wrap h2 .nav-tab-active,.about-wrap h2 .nav-tab-active:hover{color:#333}.about-wrap h2 .nav-tab-active{text-shadow:1px 1px 1px white;color:#464646}.about-wrap h3{color:#333;text-shadow:1px 1px 1px white}.about-wrap .feature-section h4{color:#464646}.about-wrap .feature-section img{background:#fff;border:1px #ccc solid;-moz-box-shadow:0 1px 3px rgba(0,0,0,0.3);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.3);box-shadow:0 1px 3px rgba(0,0,0,0.3)}.about-wrap .point-releases{border-bottom:1px solid #dfdfdf}.about-wrap .point-releases h3{border-top:1px solid #dfdfdf}.about-wrap .point-releases h3:first-child{border:0}.about-wrap h4.wp-people-group{text-shadow:1px 1px 1px white}.about-wrap li.wp-person img.gravatar{-moz-box-shadow:0 0 4px rgba(0,0,0,0.4);-webkit-box-shadow:0 0 4px rgba(0,0,0,0.4);box-shadow:0 0 4px rgba(0,0,0,0.4)}.about-wrap li.wp-person .title{color:#464646;text-shadow:1px 1px 1px white}.freedoms-php .about-wrap ol li{color:#999}.freedoms-php .about-wrap ol p{color:#464646}.rtl .bar{border-right-color:none;border-left-color:#99d}.rtl .post-com-count{background-image:url(../images/bubble_bg-rtl.gif)}.rtl #screen-meta-links a.show-settings{background-position:left 3px}.rtl #screen-meta-links a.show-settings.screen-meta-active{background-position:left -33px}.rtl #adminmenushadow,.rtl #adminmenuback{background-image:url(../images/menu-shadow-rtl.png);background-position:top left}.rtl #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,.rtl #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/arrows-dark-vs.png) no-repeat 8px 6px}.rtl #adminmenu .wp-has-submenu:hover .wp-menu-toggle,.rtl #adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/arrows-vs.png) no-repeat 8px 6px}.rtl #adminmenu .wp-submenu .wp-submenu-head{border-right-color:none;border-left-color:#d1e5ee}.rtl #adminmenu .wp-submenu-wrap,.rtl.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl #collapse-button div{background-position:0 -108px}.rtl.folded #collapse-button div{background-position:0 -72px}@media only screen and (max-width:900px){.rtl #adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl #collapse-button div{background-position:0 -72px}}.rtl .meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows-vs.png) no-repeat 6px 7px}.rtl .tablenav .tablenav-pages a{border-color:#d1e5ee;background:#eee url('../images/menu-bits-rtl-vs.gif?ver=20100610') repeat-x scroll right -379px}.rtl #post-body .misc-pub-section{border-right-color:none;border-left-color:#d1e5ee}.rtl .sidebar-name-arrow{background:transparent url(../images/arrows-vs.png) no-repeat 5px 9px}.rtl .sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px}
\ No newline at end of file
index 3c71473c960e285f8cf8748a72e02ec9e955018b..b70e35df92c92cbaf9ddcf725fe0f6c8986159dd 100644 (file)
@@ -45,6 +45,27 @@ input[type="url"],
 select {
        border-color: #dfdfdf;
        background-color: #fff;
 select {
        border-color: #dfdfdf;
        background-color: #fff;
+       color: #333;
+}
+
+select {
+       color: #000;
+}
+
+textarea:focus,
+input[type="text"]:focus,
+input[type="password"]:focus,
+input[type="file"]:focus,
+input[type="button"]:focus,
+input[type="submit"]:focus,
+input[type="reset"]:focus,
+input[type="email"]:focus,
+input[type="number"]:focus,
+input[type="search"]:focus,
+input[type="tel"]:focus,
+input[type="url"]:focus,
+select:focus {
+       border-color: #d1e5ee;
 }
 
 kbd,
 }
 
 kbd,
@@ -75,7 +96,8 @@ a.page-numbers:hover {
 
 body,
 #wpbody,
 
 body,
 #wpbody,
-.form-table .pre {
+.form-table .pre,
+.ui-autocomplete li a {
        color: #333;
 }
 
        color: #333;
 }
 
@@ -136,6 +158,10 @@ div.dashboard-widget-submit {
        border-top-color: #ccc;
 }
 
        border-top-color: #ccc;
 }
 
+ul.category-tabs li {
+       border-color: transparent;
+}
+
 div.tabs-panel,
 .wp-tab-panel,
 ul.category-tabs li.tabs,
 div.tabs-panel,
 .wp-tab-panel,
 ul.category-tabs li.tabs,
@@ -287,8 +313,9 @@ div.error a {
        border-color: #c00 !important;
 }
 
        border-color: #c00 !important;
 }
 
-.submit {
-       border-color: #DFDFDF;
+.submit,
+#commentsdiv #add-new-comment {
+       border-color: #dfdfdf;
 }
 
 .highlight {
 }
 
 .highlight {
@@ -309,6 +336,15 @@ td.help {
        color: #9a9a9a;
 }
 
        color: #9a9a9a;
 }
 
+.ui-autocomplete {
+       background-color: #eff8ff;
+       border-color: #d1e5ee;
+}
+
+.ui-autocomplete li a.ui-state-hover {
+       background-color: #def1ff;
+}
+
 .post-com-count {
        background-image: url(../images/bubble_bg.gif);
        color: #fff;
 .post-com-count {
        background-image: url(../images/bubble_bg.gif);
        color: #fff;
@@ -1002,7 +1038,6 @@ table.widefat .spam a:hover,
        border-color: #5589AA !important;
 }
 
        border-color: #5589AA !important;
 }
 
-
 .wp-editor-wrap .wp_themeSkin table.mceSplitButton td {
        background-color: #cfdfe9; /* Fallback */
        background-image: -ms-linear-gradient(bottom, #cfdfe9, #fff); /* IE10 */
 .wp-editor-wrap .wp_themeSkin table.mceSplitButton td {
        background-color: #cfdfe9; /* Fallback */
        background-image: -ms-linear-gradient(bottom, #cfdfe9, #fff); /* IE10 */
@@ -1408,203 +1443,381 @@ table.widefat .spam a:hover,
        background-position: 0 -108px;
 }
 
        background-position: 0 -108px;
 }
 
+/* Auto-folding of the admin menu */
+@media only screen and (max-width: 900px) {
+       #adminmenu li.menu-top {
+               border-top-color: #ffffff;
+               border-bottom-color: #cae6ff;
+       }
+
+       #adminmenu li.wp-has-current-submenu,
+       #adminmenu li.current.menu-top {
+               background-color: #5589AA; /* Fallback */
+               background-image: -ms-linear-gradient(bottom, #5589AA, #619bbb); /* IE10 */
+               background-image: -moz-linear-gradient(bottom, #5589AA, #619bbb); /* Firefox */
+               background-image: -o-linear-gradient(bottom, #5589AA, #619bbb); /* Opera */
+               background-image: -webkit-gradient(linear, left bottom, left top, from(#5589AA), to(#619bbb)); /* old Webkit */
+               background-image: -webkit-linear-gradient(bottom, #5589AA, #619bbb); /* new Webkit */
+               background-image: linear-gradient(bottom, #5589AA, #619bbb); /* proposed W3C Markup */
+       }
+
+       #adminmenu li.menu-top li:hover a {
+               background-image: none;
+       }
+
+       #adminmenu li.wp-has-current-submenu,
+       #adminmenu li.current.menu-top {
+               border-top-color: #5A8FAD;
+               border-bottom-color: #5589AA;
+       }
+
+       #adminmenu .wp-has-current-submenu .wp-submenu-wrap {
+               -moz-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 );
+               -webkit-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 );
+               box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 );
+       }
+
+       #collapse-button div {
+               background-position: 0 -108px;
+       }
+}
+
 /* menu and screen icons */
 /* menu and screen icons */
+.icon16,
+.icon32,
+div.wp-menu-image {
+       background-color: transparent;
+       background-repeat: no-repeat;
+}
+
+.icon16.icon-dashboard,
+.menu-icon-dashboard div.wp-menu-image,
+.icon16.icon-post,
+.menu-icon-post div.wp-menu-image,
+.icon16.icon-media,
+.menu-icon-media div.wp-menu-image,
+.icon16.icon-links,
+.menu-icon-links div.wp-menu-image,
+.icon16.icon-page,
+.menu-icon-page div.wp-menu-image,
+.icon16.icon-comments,
+.menu-icon-comments div.wp-menu-image,
+.icon16.icon-appearance,
+.menu-icon-appearance div.wp-menu-image,
+.icon16.icon-plugins,
+.menu-icon-plugins div.wp-menu-image,
+.icon16.icon-users,
+.menu-icon-users div.wp-menu-image,
+.icon16.icon-tools,
+.menu-icon-tools div.wp-menu-image,
+.icon16.icon-settings,
+.menu-icon-settings div.wp-menu-image,
+.icon16.icon-site,
+.menu-icon-site div.wp-menu-image {
+       background-image: url('../images/menu-vs.png?ver=20120201');
+}
+
 .icon16.icon-dashboard,
 #adminmenu .menu-icon-dashboard div.wp-menu-image {
 .icon16.icon-dashboard,
 #adminmenu .menu-icon-dashboard div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -60px -33px;
+       background-position: -59px -33px;
 }
 
 #adminmenu .menu-icon-dashboard:hover div.wp-menu-image,
 #adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,
 #adminmenu .menu-icon-dashboard.current div.wp-menu-image {
 }
 
 #adminmenu .menu-icon-dashboard:hover div.wp-menu-image,
 #adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,
 #adminmenu .menu-icon-dashboard.current div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -60px -1px;
+       background-position: -59px -1px;
 }
 
 .icon16.icon-post,
 #adminmenu .menu-icon-post div.wp-menu-image {
 }
 
 .icon16.icon-post,
 #adminmenu .menu-icon-post div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -271px -33px;
+       background-position: -269px -33px;
 }
 
 #adminmenu .menu-icon-post:hover div.wp-menu-image,
 }
 
 #adminmenu .menu-icon-post:hover div.wp-menu-image,
-#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -271px -1px;
+#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-post.current div.wp-menu-image {
+       background-position: -269px -1px;
 }
 
 .icon16.icon-media,
 #adminmenu .menu-icon-media div.wp-menu-image {
 }
 
 .icon16.icon-media,
 #adminmenu .menu-icon-media div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -120px -33px;
+       background-position: -119px -33px;
 }
 
 #adminmenu .menu-icon-media:hover div.wp-menu-image,
 }
 
 #adminmenu .menu-icon-media:hover div.wp-menu-image,
-#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -120px -1px;
+#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-media.current div.wp-menu-image {
+       background-position: -119px -1px;
 }
 
 .icon16.icon-links,
 #adminmenu .menu-icon-links div.wp-menu-image {
 }
 
 .icon16.icon-links,
 #adminmenu .menu-icon-links div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -90px -33px;
+       background-position: -89px -33px;
 }
 
 #adminmenu .menu-icon-links:hover div.wp-menu-image,
 }
 
 #adminmenu .menu-icon-links:hover div.wp-menu-image,
-#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -90px -1px;
+#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-links.current div.wp-menu-image {
+       background-position: -89px -1px;
 }
 
 .icon16.icon-page,
 #adminmenu .menu-icon-page div.wp-menu-image {
 }
 
 .icon16.icon-page,
 #adminmenu .menu-icon-page div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -150px -33px;
+       background-position: -149px -33px;
 }
 
 #adminmenu .menu-icon-page:hover div.wp-menu-image,
 }
 
 #adminmenu .menu-icon-page:hover div.wp-menu-image,
-#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -150px -1px;
+#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-page.current div.wp-menu-image {
+       background-position: -149px -1px;
 }
 
 .icon16.icon-comments,
 #adminmenu .menu-icon-comments div.wp-menu-image {
 }
 
 .icon16.icon-comments,
 #adminmenu .menu-icon-comments div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -30px -33px;
+       background-position: -29px -33px;
 }
 
 #adminmenu .menu-icon-comments:hover div.wp-menu-image,
 #adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,
 #adminmenu .menu-icon-comments.current div.wp-menu-image {
 }
 
 #adminmenu .menu-icon-comments:hover div.wp-menu-image,
 #adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,
 #adminmenu .menu-icon-comments.current div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -30px -1px;
+       background-position: -29px -1px;
 }
 
 .icon16.icon-appearance,
 #adminmenu .menu-icon-appearance div.wp-menu-image {
 }
 
 .icon16.icon-appearance,
 #adminmenu .menu-icon-appearance div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll 0 -33px;
+       background-position: 1px -33px;
 }
 
 #adminmenu .menu-icon-appearance:hover div.wp-menu-image,
 }
 
 #adminmenu .menu-icon-appearance:hover div.wp-menu-image,
-#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll 0 -1px;
+#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-appearance.current div.wp-menu-image {
+       background-position: 1px -1px;
 }
 
 .icon16.icon-plugins,
 #adminmenu .menu-icon-plugins div.wp-menu-image {
 }
 
 .icon16.icon-plugins,
 #adminmenu .menu-icon-plugins div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -180px -33px;
+       background-position: -179px -33px;
 }
 
 #adminmenu .menu-icon-plugins:hover div.wp-menu-image,
 }
 
 #adminmenu .menu-icon-plugins:hover div.wp-menu-image,
-#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -180px -1px;
+#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-plugins.current div.wp-menu-image {
+       background-position: -179px -1px;
 }
 
 .icon16.icon-users,
 #adminmenu .menu-icon-users div.wp-menu-image {
 }
 
 .icon16.icon-users,
 #adminmenu .menu-icon-users div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -300px -33px;
+       background-position: -300px -33px;
 }
 
 #adminmenu .menu-icon-users:hover div.wp-menu-image,
 #adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,
 #adminmenu .menu-icon-users.current div.wp-menu-image {
 }
 
 #adminmenu .menu-icon-users:hover div.wp-menu-image,
 #adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,
 #adminmenu .menu-icon-users.current div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -300px -1px;
+       background-position: -300px -1px;
 }
 
 .icon16.icon-tools,
 #adminmenu .menu-icon-tools div.wp-menu-image {
 }
 
 .icon16.icon-tools,
 #adminmenu .menu-icon-tools div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -210px -33px;
+       background-position: -209px -33px;
 }
 
 #adminmenu .menu-icon-tools:hover div.wp-menu-image,
 #adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,
 #adminmenu .menu-icon-tools.current div.wp-menu-image {
 }
 
 #adminmenu .menu-icon-tools:hover div.wp-menu-image,
 #adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,
 #adminmenu .menu-icon-tools.current div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -210px -1px;
+       background-position: -209px -1px;
 }
 
 .icon16.icon-settings,
 }
 
 .icon16.icon-settings,
-#icon-options-general,
 #adminmenu .menu-icon-settings div.wp-menu-image {
 #adminmenu .menu-icon-settings div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -240px -33px;
+       background-position: -239px -33px;
 }
 
 #adminmenu .menu-icon-settings:hover div.wp-menu-image,
 }
 
 #adminmenu .menu-icon-settings:hover div.wp-menu-image,
-#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -240px -1px;
+#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-settings.current div.wp-menu-image {
+       background-position: -239px -1px;
 }
 
 .icon16.icon-site,
 #adminmenu .menu-icon-site div.wp-menu-image {
 }
 
 .icon16.icon-site,
 #adminmenu .menu-icon-site div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -360px -33px;
+       background-position: -359px -33px;
 }
 
 #adminmenu .menu-icon-site:hover div.wp-menu-image,
 }
 
 #adminmenu .menu-icon-site:hover div.wp-menu-image,
-#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image {
-       background: transparent url('../images/menu-vs.png?ver=20111128') no-repeat scroll -360px -1px;
+#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-site.current div.wp-menu-image {
+       background-position: -359px -1px;
 }
 /* end menu and screen icons */
 
 /* Screen Icons */
 }
 /* end menu and screen icons */
 
 /* Screen Icons */
+.icon32.icon-post,
+#icon-edit,
+#icon-post,
+.icon32.icon-dashboard,
+#icon-index,
+.icon32.icon-media,
+#icon-upload,
+.icon32.icon-links,
+#icon-link-manager,
+#icon-link,
+#icon-link-category,
+.icon32.icon-page,
+#icon-edit-pages,
+#icon-page,
+.icon32.icon-comments,
+#icon-edit-comments,
+.icon32.icon-appearance,
+#icon-themes,
+.icon32.icon-plugins,
+#icon-plugins,
+.icon32.icon-users,
+#icon-users,
+#icon-profile,
+#icon-user-edit,
+.icon32.icon-tools,
+#icon-tools,
+#icon-admin,
+.icon32.icon-settings,
+#icon-options-general,
+.icon32.icon-site,
+#icon-ms-admin {
+       background-image: url(../images/icons32-vs.png?ver=20111206);
+}
+
 .icon32.icon-post,
 #icon-edit,
 #icon-post {
 .icon32.icon-post,
 #icon-edit,
 #icon-post {
-       background: transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -552px -5px;
+       background-position: -552px -5px;
 }
 
 .icon32.icon-dashboard,
 #icon-index {
 }
 
 .icon32.icon-dashboard,
 #icon-index {
-       background: transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -137px -5px;
+       background-position: -137px -5px;
 }
 
 .icon32.icon-media,
 #icon-upload {
 }
 
 .icon32.icon-media,
 #icon-upload {
-       background: transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -251px -5px;
+       background-position: -251px -5px;
 }
 
 .icon32.icon-links,
 #icon-link-manager,
 #icon-link,
 #icon-link-category {
 }
 
 .icon32.icon-links,
 #icon-link-manager,
 #icon-link,
 #icon-link-category {
-       background: transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -190px -5px;
+       background-position: -190px -5px;
 }
 
 .icon32.icon-page,
 #icon-edit-pages,
 #icon-page {
 }
 
 .icon32.icon-page,
 #icon-edit-pages,
 #icon-page {
-       background: transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -312px -5px;
+       background-position: -312px -5px;
 }
 
 .icon32.icon-comments,
 #icon-edit-comments {
 }
 
 .icon32.icon-comments,
 #icon-edit-comments {
-       background: transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -72px -5px;
+       background-position: -72px -5px;
 }
 
 .icon32.icon-appearance,
 #icon-themes {
 }
 
 .icon32.icon-appearance,
 #icon-themes {
-       background: transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -11px -5px;
+       background-position: -11px -5px;
 }
 
 .icon32.icon-plugins,
 #icon-plugins {
 }
 
 .icon32.icon-plugins,
 #icon-plugins {
-       background: transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -370px -5px;
+       background-position: -370px -5px;
 }
 
 .icon32.icon-users,
 #icon-users,
 #icon-profile,
 #icon-user-edit {
 }
 
 .icon32.icon-users,
 #icon-users,
 #icon-profile,
 #icon-user-edit {
-       background: transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -600px -5px;
+       background-position: -600px -5px;
 }
 
 .icon32.icon-tools,
 #icon-tools,
 #icon-admin {
 }
 
 .icon32.icon-tools,
 #icon-tools,
 #icon-admin {
-       background: transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -432px -5px;
+       background-position: -432px -5px;
 }
 
 .icon32.icon-settings,
 #icon-options-general {
 }
 
 .icon32.icon-settings,
 #icon-options-general {
-       background: transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -492px -5px;
+       background-position: -492px -5px;
 }
 
 .icon32.icon-site,
 #icon-ms-admin {
 }
 
 .icon32.icon-site,
 #icon-ms-admin {
-       background: transparent url(../images/icons32-vs.png?ver=20111206) no-repeat -659px -5px;
+       background-position: -659px -5px;
+}
+
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5) {
+       .icon32.icon-post,
+       #icon-edit,
+       #icon-post,
+       .icon32.icon-dashboard,
+       #icon-index,
+       .icon32.icon-media,
+       #icon-upload,
+       .icon32.icon-links,
+       #icon-link-manager,
+       #icon-link,
+       #icon-link-category,
+       .icon32.icon-page,
+       #icon-edit-pages,
+       #icon-page,
+       .icon32.icon-comments,
+       #icon-edit-comments,
+       .icon32.icon-appearance,
+       #icon-themes,
+       .icon32.icon-plugins,
+       #icon-plugins,
+       .icon32.icon-users,
+       #icon-users,
+       #icon-profile,
+       #icon-user-edit,
+       .icon32.icon-tools,
+       #icon-tools,
+       #icon-admin,
+       .icon32.icon-settings,
+       #icon-options-general,
+       .icon32.icon-site,
+       #icon-ms-admin {
+               background-image: url(../images/icons32-vs-2x.png?ver=20120412);
+               background-size: 708px 45px;
+       }
+
+       .icon16.icon-dashboard,
+       .menu-icon-dashboard div.wp-menu-image,
+       .icon16.icon-post,
+       .menu-icon-post div.wp-menu-image,
+       .icon16.icon-media,
+       .menu-icon-media div.wp-menu-image,
+       .icon16.icon-links,
+       .menu-icon-links div.wp-menu-image,
+       .icon16.icon-page,
+       .menu-icon-page div.wp-menu-image,
+       .icon16.icon-comments,
+       .menu-icon-comments div.wp-menu-image,
+       .icon16.icon-appearance,
+       .menu-icon-appearance div.wp-menu-image,
+       .icon16.icon-plugins,
+       .menu-icon-plugins div.wp-menu-image,
+       .icon16.icon-users,
+       .menu-icon-users div.wp-menu-image,
+       .icon16.icon-tools,
+       .menu-icon-tools div.wp-menu-image,
+       .icon16.icon-settings,
+       .menu-icon-settings div.wp-menu-image,
+       .icon16.icon-site,
+       .menu-icon-site div.wp-menu-image {
+               background-image: url('../images/menu-2x.png?ver=20120412');
+               background-size: 390px 64px;
+       }
 }
 /* end screen icons */
 
 }
 /* end screen icons */
 
-
 /* Diff */
 table.diff .diff-deletedline {
        background-color: #fdd;
 /* Diff */
 table.diff .diff-deletedline {
        background-color: #fdd;
@@ -1674,12 +1887,12 @@ table.diff .diff-addedline ins {
        border-right: 1px solid #D1E5EE;
        border-left: 1px solid #D1E5EE;
        border-bottom: 1px solid #D1E5EE;
        border-right: 1px solid #D1E5EE;
        border-left: 1px solid #D1E5EE;
        border-bottom: 1px solid #D1E5EE;
-       background-image: -ms-linear-gradient(bottom, #eff8ff, #fff); /* IE10 */
-       background-image: -moz-linear-gradient(bottom, #eff8ff, #fff); /* Firefox */
-       background-image: -o-linear-gradient(bottom, #eff8ff, #fff); /* Opera */
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#eff8ff), to(#fff)); /* old Webkit */
-       background-image: -webkit-linear-gradient(bottom, #eff8ff, #fff); /* new Webkit */
-       background-image: linear-gradient(bottom, #eff8ff, #fff); /* proposed W3C Markup */
+       background-image: -ms-linear-gradient(bottom, #eff8ff, #eff8ff); /* IE10 */
+       background-image: -moz-linear-gradient(bottom, #def1ff, #eff8ff); /* Firefox */
+       background-image: -o-linear-gradient(bottom, #def1ff, #eff8ff); /* Opera */
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#def1ff), to(#eff8ff)); /* old Webkit */
+       background-image: -webkit-linear-gradient(bottom, #def1ff, #eff8ff); /* new Webkit */
+       background-image: linear-gradient(bottom, #def1ff, #eff8ff); /* proposed W3C Markup */
 }
 
 #screen-meta-links a.show-settings {
 }
 
 #screen-meta-links a.show-settings {
@@ -1691,11 +1904,11 @@ table.diff .diff-addedline ins {
 }
 
 #screen-meta-links a.show-settings {
 }
 
 #screen-meta-links a.show-settings {
-       background: transparent url(../images/arrows.png) no-repeat right 3px;
+       background: transparent url(../images/arrows-vs.png) no-repeat right 4px;
 }
 
 #screen-meta-links a.show-settings.screen-meta-active  {
 }
 
 #screen-meta-links a.show-settings.screen-meta-active  {
-       background: transparent url(../images/arrows.png) no-repeat right -33px;
+       background: transparent url(../images/arrows-vs.png) no-repeat right -31px;
 }
 
 /* end screen options and help tabs */
 }
 
 /* end screen options and help tabs */
@@ -1713,20 +1926,6 @@ table.diff .diff-addedline ins {
 }
 
 /* Install Plugins */
 }
 
 /* Install Plugins */
-.star-average,
-.star.star-rating {
-       background-color: #fc0;
-}
-
-div.star.select:hover {
-       background-color: #d00;
-}
-
-div.star img {
-       border-left: 1px solid #fff;
-       border-right: 1px solid #fff;
-}
-
 #plugin-information .fyi ul {
        background-color: #eaf3fa;
 }
 #plugin-information .fyi ul {
        background-color: #eaf3fa;
 }
@@ -1835,7 +2034,7 @@ fieldset.inline-edit-col-right .inline-edit-col {
 }
 
 #post-body .misc-pub-section {
 }
 
 #post-body .misc-pub-section {
-       border-right-color: #eee;
+       border-left-color: #eee;
 }
 
 .post-com-count span {
 }
 
 .post-com-count span {
@@ -1883,14 +2082,6 @@ body.press-this ul.category-tabs li.tabs a {
        border-color: #DFDFDF;
 }
 
        border-color: #DFDFDF;
 }
 
-#theme-information .action-button {
-       border-top-color: #DFDFDF;
-}
-
-.theme-listing br.line {
-       border-bottom-color: #ccc;
-}
-
 div.widgets-sortables,
 #widgets-left .inactive {
        background-color: #f7fcfe;
 div.widgets-sortables,
 #widgets-left .inactive {
        background-color: #f7fcfe;
@@ -2108,7 +2299,6 @@ div.widgets-sortables,
        border-bottom-color: #eff8ff;
 }
 
        border-bottom-color: #eff8ff;
 }
 
-/* custom header & background pages */
 #upload-form label {
        color: #777;
 }
 #upload-form label {
        color: #777;
 }
@@ -2170,11 +2360,11 @@ div.widgets-sortables,
 
 .about-wrap .feature-section img {
        background: #fff;
 
 .about-wrap .feature-section img {
        background: #fff;
-       border-color: #dfdfdf;
+       border: 1px #ccc solid;
 
 
-       -moz-box-shadow: 0 0 6px rgba( 0, 0, 0, 0.3 );
-       -webkit-box-shadow: 0 0 6px rgba( 0, 0, 0, 0.3 );
-       box-shadow: 0 0 6px rgba( 0, 0, 0, 0.3 );
+       -moz-box-shadow:    0 1px 3px rgba( 0, 0, 0, 0.3 );
+       -webkit-box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.3 );
+       box-shadow:         0 1px 3px rgba( 0, 0, 0, 0.3 );
 }
 
 .about-wrap .point-releases {
 }
 
 .about-wrap .point-releases {
@@ -2272,6 +2462,19 @@ div.widgets-sortables,
        background-position: 0 -72px;
 }
 
        background-position: 0 -72px;
 }
 
+/* Auto-folding of the admin menu for RTL */
+@media only screen and (max-width: 900px) {
+       .rtl #adminmenu .wp-has-current-submenu .wp-submenu-wrap{
+               -moz-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
+               -webkit-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
+               box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
+       }
+
+       .rtl #collapse-button div {
+               background-position: 0 -72px;
+       }
+}
+
 /* edit image */
 .rtl .meta-box-sortables .postbox:hover .handlediv {
        background: transparent url(../images/arrows-vs.png) no-repeat 6px 7px;
 /* edit image */
 .rtl .meta-box-sortables .postbox:hover .handlediv {
        background: transparent url(../images/arrows-vs.png) no-repeat 6px 7px;
index 58c75d26a42d534b7a3f7fc0d01e2f3d2918f2ca..f7f57927307a9505280398e2c0e9e78b034b36a6 100644 (file)
@@ -1 +1 @@
-html,.wp-dialog{background-color:#fff;}textarea,input[type="text"],input[type="password"],input[type="file"],input[type="button"],input[type="submit"],input[type="reset"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="url"],select{border-color:#dfdfdf;background-color:#fff;}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="file"]:focus,input[type="button"]:focus,input[type="submit"]:focus,input[type="reset"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="url"]:focus,select:focus{border-color:#bbb;}kbd,code{background:#eaeaea;}input[readonly]{background-color:#eee;}.find-box-search{border-color:#dfdfdf;background-color:#f1f1f1;}.find-box{background-color:#f1f1f1;}.find-box-inside{background-color:#fff;}a.page-numbers:hover{border-color:#999;}body,#wpbody,.form-table .pre{color:#333;}body>#upload-menu{border-bottom-color:#fff;}#postcustomstuff table,#your-profile fieldset,#rightnow,div.dashboard-widget,#dashboard-widgets p.dashboard-widget-links{border-color:#ccc;}#poststuff .inside label.spam,#poststuff .inside label.deleted{color:red;}#poststuff .inside label.waiting{color:orange;}#poststuff .inside label.approved{color:green;}#postcustomstuff table{border-color:#dfdfdf;background-color:#F9F9F9;}#postcustomstuff thead th{background-color:#F1F1F1;}.widefat{border-color:#dfdfdf;background-color:#f9f9f9;}textarea.widefat{background-color:#fff;}div.dashboard-widget-error{background-color:#c43;}div.dashboard-widget-notice{background-color:#cfe1ef;}div.dashboard-widget-submit{border-top-color:#ccc;}div.tabs-panel,.wp-tab-panel,ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-color:#dfdfdf;background-color:#fff;}ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{background-color:#fff;}input.disabled,textarea.disabled{background-color:#ccc;}#plugin-information .action-button a,#plugin-information .action-button a:hover,#plugin-information .action-button a:visited{color:#fff;}.widget .widget-top,.postbox h3,.stuffbox h3,.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.find-box-head,.sidebar-name,#nav-menu-header,#nav-menu-footer,.menu-item-handle,#fullscreen-topbar{background-color:#f1f1f1;background-image:-ms-linear-gradient(top,#f9f9f9,#ececec);background-image:-moz-linear-gradient(top,#f9f9f9,#ececec);background-image:-o-linear-gradient(top,#f9f9f9,#ececec);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#ececec));background-image:-webkit-linear-gradient(top,#f9f9f9,#ececec);background-image:linear-gradient(top,#f9f9f9,#ececec);}.widget .widget-top,.postbox h3,.stuffbox h3{border-bottom-color:#dfdfdf;text-shadow:#fff 0 1px 0;-moz-box-shadow:0 1px 0 #fff;-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff;}.form-table th,.form-wrap label{color:#222;text-shadow:#fff 0 1px 0;}.description,.form-wrap p{color:#666;}strong .post-com-count span{background-color:#21759b;}.sorthelper{background-color:#ccf3fa;}.ac_match,.subsubsub a.current{color:#000;}.wrap h2{color:#464646;}.wrap .add-new-h2{background:#f1f1f1;}.subtitle{color:#777;}.ac_over{background-color:#f0f0b8;}.ac_results{background-color:#fff;border-color:#808080;}.ac_results li{color:#101010;}.alternate,.alt{background-color:#fcfcfc;}.available-theme a.screenshot{background-color:#f1f1f1;border-color:#ddd;}.bar{background-color:#e8e8e8;border-right-color:#99d;}#media-upload,#media-upload .media-item .slidetoggle{background:#fff;}#media-upload .slidetoggle{border-top-color:#dfdfdf;}div.error,.login #login_error{background-color:#ffebe8;border-color:#c00;}div.error a{color:#c00;}.form-invalid{background-color:#ffebe8!important;}.form-invalid input,.form-invalid select{border-color:#c00!important;}.submit{border-color:#DFDFDF;}.highlight{background-color:#e4f2fd;color:#000;}.howto,.nonessential,#edit-slug-box,.form-input-tip,.subsubsub{color:#666;}.media-upload-form label.form-help,td.help{color:#9a9a9a;}.post-com-count{background-image:url(../images/bubble_bg.gif);color:#fff;}.post-com-count span{background-color:#bbb;color:#fff;}.post-com-count:hover span{background-color:#d54e21;}.quicktags,.search{background-color:#ccc;color:#000;}.side-info h5{border-bottom-color:#dadada;}.side-info ul{color:#666;}.button,.button-secondary,.submit input,input[type=button],input[type=submit]{border-color:#bbb;color:#464646;}.button:hover,.button-secondary:hover,.submit input:hover,input[type=button]:hover,input[type=submit]:hover{color:#000;border-color:#666;}.button,.submit input,.button-secondary{background:#f2f2f2 url(../images/white-grad.png) repeat-x scroll left top;text-shadow:rgba(255,255,255,1) 0 1px 0;}.button:active,.submit input:active,.button-secondary:active{background:#eee url(../images/white-grad-active.png) repeat-x scroll left top;}input.button-primary,button.button-primary,a.button-primary{border-color:#298cba;font-weight:bold;color:#fff;background:#21759B url(../images/button-grad.png) repeat-x scroll left top;text-shadow:rgba(0,0,0,0.3) 0 -1px 0;}input.button-primary:active,button.button-primary:active,a.button-primary:active{background:#21759b url(../images/button-grad-active.png) repeat-x scroll left top;color:#eaf2fa;}input.button-primary:hover,button.button-primary:hover,a.button-primary:hover,a.button-primary:focus,a.button-primary:active{border-color:#13455b;color:#eaf2fa;}.button-disabled,.button[disabled],.button:disabled,.button-secondary[disabled],.button-secondary:disabled,a.button.disabled{color:#aaa!important;border-color:#ddd!important;}.button-primary-disabled,.button-primary[disabled],.button-primary:disabled{color:#9FD0D5!important;background:#298CBA!important;}a:hover,a:active,a:focus{color:#d54e21;}#adminmenu a:hover,#adminmenu li.menu-top>a:focus,#adminmenu ul.wp-submenu a:hover,#the-comment-list .comment a:hover,#rightnow a:hover,#media-upload a.del-link:hover,div.dashboard-widget-submit input:hover,.subsubsub a:hover,.subsubsub a.current:hover,.ui-tabs-nav a:hover,.plugins .inactive a:hover,#all-plugins-table .plugins .inactive a:hover,#search-plugins-table .plugins .inactive a:hover{color:#d54e21;}#the-comment-list .comment-item,#dashboard-widgets #dashboard_quick_press form p.submit{border-color:#dfdfdf;}#side-sortables .category-tabs .tabs a,#side-sortables .add-menu-item-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#333;}#rightnow .rbutton{background-color:#ebebeb;color:#264761;}.submitbox .submit{background-color:#464646;color:#ccc;}.plugins a.delete:hover,#all-plugins-table .plugins a.delete:hover,#search-plugins-table .plugins a.delete:hover,.submitbox .submitdelete{color:#f00;border-bottom-color:#f00;}.submitbox .submitdelete:hover,#media-items a.delete:hover{color:#fff;background-color:#f00;border-bottom-color:#f00;}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:#f00;border-bottom-color:#f00;}.tablenav .dots{border-color:transparent;}.tablenav .next,.tablenav .prev{border-color:transparent;color:#21759b;}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#d54e21;}div.updated,.login .message{background-color:#ffffe0;border-color:#e6db55;}.update-message{color:#000;}a.page-numbers{border-bottom-color:#B8D3E2;}.commentlist li{border-bottom-color:#ccc;}.widefat td,.widefat th{border-top-color:#fff;border-bottom-color:#dfdfdf;}.widefat th{text-shadow:rgba(255,255,255,0.8) 0 1px 0;}.widefat td{color:#555;}.widefat p,.widefat ol,.widefat ul{color:#333;}.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.find-box-head{color:#333;}th.sortable a:hover,th.sortable a:active,th.sortable a:focus{color:#333;}h3.dashboard-widget-title small a{color:#d7d7d7;}h3.dashboard-widget-title small a:hover{color:#fff;}a,#adminmenu a,#the-comment-list p.comment-author strong a,#media-upload a.del-link,#media-items a.delete,.plugins a.delete,.ui-tabs-nav a{color:#21759b;}#adminmenu .awaiting-mod,#adminmenu .update-plugins,#sidemenu a .update-plugins,#rightnow .reallynow{background-color:#464646;color:#fff;-moz-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0;}#plugin-information .action-button{background-color:#d54e21;color:#fff;}#adminmenu li.current a .awaiting-mod,#adminmenu li a.wp-has-current-submenu .update-plugins{background-color:#464646;color:#fff;-moz-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0;}div#media-upload-header,div#plugin-information-header{background-color:#f9f9f9;border-bottom-color:#dfdfdf;}#currenttheme img{border-color:#666;}#dashboard_secondary div.dashboard-widget-content ul li a{background-color:#f9f9f9;}input.readonly,textarea.readonly{background-color:#ddd;}#editable-post-name{background-color:#fffbcc;}#edit-slug-box strong,.tablenav .displaying-num,#submitted-on,.submitted-on{color:#777;}.login #nav a,.login #backtoblog a{color:#21759b!important;}.login #nav a:hover,.login #backtoblog a:hover{color:#d54e21!important;}#footer{color:#777;border-color:#dfdfdf;}.imgedit-group,#media-items .media-item,.media-item .describe{border-color:#dfdfdf;}.checkbox,.side-info,.plugins tr,#your-profile #rich_editing{background-color:#fcfcfc;}.plugins .inactive,.plugins .inactive th,.plugins .inactive td,tr.inactive+tr.plugin-update-tr .plugin-update{background-color:#f4f4f4;}.plugin-update-tr .update-message{background-color:#fffbe4;border-color:#dfdfdf;}.plugins .active,.plugins .active th,.plugins .active td{color:#000;}.plugins .inactive a{color:#579;}#the-comment-list tr.undo,#the-comment-list div.undo{background-color:#f4f4f4;}#the-comment-list .unapproved{background-color:#ffffe0;}#the-comment-list .approve a{color:#006505;}#the-comment-list .unapprove a{color:#d98500;}table.widefat span.delete a,table.widefat span.trash a,table.widefat span.spam a,#dashboard_recent_comments .delete a,#dashboard_recent_comments .trash a,#dashboard_recent_comments .spam a{color:#bc0b0b;}.welcome-panel{border-color:#dfdfdf;}.welcome-panel p{color:#777;}.welcome-panel-column p{color:#464646;}.welcome-panel h3{text-shadow:1px 1px 1px white;}.widget,#widget-list .widget-top,.postbox,#titlediv,#poststuff .postarea,.stuffbox{border-color:#dfdfdf;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;-webkit-border-radius:3px;border-radius:3px;}.widget,#widget-list .widget-top,.postbox,.menu-item-settings{background-color:#f5f5f5;background-image:-ms-linear-gradient(top,#f9f9f9,#f5f5f5);background-image:-moz-linear-gradient(top,#f9f9f9,#f5f5f5);background-image:-o-linear-gradient(top,#f9f9f9,#f5f5f5);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#f9f9f9,#f5f5f5);background-image:linear-gradient(top,#f9f9f9,#f5f5f5);}.postbox h3{color:#464646;}.widget .widget-top{color:#222;}.sidebar-name:hover h3,.postbox h3:hover{color:#000;}.curtime #timestamp{background-image:url(../images/date-button.gif);}#quicktags #ed_link{color:#00f;}#rightnow .youhave{background-color:#f0f6fb;}#rightnow a{color:#448abd;}.tagchecklist span a,#bulk-titles div a{background:url(../images/xit.gif) no-repeat;}.tagchecklist span a:hover,#bulk-titles div a:hover{background:url(../images/xit.gif) no-repeat -10px 0;}#update-nag,.update-nag{background-color:#FFFBCC;border-color:#E6DB55;color:#555;}#screen-meta{background-color:#f1f1f1;border-color:#ccc;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.05);box-shadow:0 1px 3px rgba(0,0,0,0.05);}#contextual-help-back{background:#fff;}.contextual-help-tabs a:hover{color:#333;}#contextual-help-back,.contextual-help-tabs .active{border-color:#ccc;}.contextual-help-tabs .active,.contextual-help-tabs .active a,.contextual-help-tabs .active a:hover{background:#fff;color:#000;}#screen-options-link-wrap,#contextual-help-link-wrap{background-color:#e3e3e3;border-right:1px solid transparent;border-left:1px solid transparent;border-bottom:1px solid transparent;background-image:-ms-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:-moz-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:-o-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:-webkit-gradient(linear,left bottom,left top,from(#dfdfdf),to(#f1f1f1));background-image:-webkit-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:linear-gradient(bottom,#dfdfdf,#f1f1f1);}#screen-meta-links a.show-settings{color:#777;}#screen-meta-links a.show-settings:hover{color:#000;}#screen-meta-links a.show-settings{background:transparent url(../images/arrows.png) no-repeat right 3px;}#screen-meta-links a.show-settings.screen-meta-active{background:transparent url(../images/arrows.png) no-repeat right -33px;}.login #backtoblog a{color:#464646;}#wphead{border-bottom:#dfdfdf 1px solid;}#wphead h1 a{color:#464646;}#footer a:link,#footer a:visited{text-decoration:none;}#footer a:hover{color:#000;text-decoration:underline;}.file-error,abbr.required,.widget-control-remove:hover,table.widefat .delete a:hover,table.widefat .trash a:hover,table.widefat .spam a:hover,#dashboard_recent_comments .delete a:hover,#dashboard_recent_comments .trash a:hover #dashboard_recent_comments .spam a:hover{color:#f00;}#pass-strength-result{background-color:#eee;border-color:#ddd!important;}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important;}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important;}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important;}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important;}#titlediv #title{border-color:#ccc;}#post-status-info{border-color:#dfdfdf #ccc #ccc;background-color:#eaeaea;}.editwidget .widget-inside{border-color:#dfdfdf;}#titlediv #title{background-color:#fff;}#tTips p#tTips_inside{background-color:#ddd;color:#333;}#timestampdiv input,#namediv input,#poststuff .inside .the-tagcloud{border-color:#ddd;}#adminmenuback,#adminmenuwrap{background-color:#ececec;border-color:#ccc;}#adminmenushadow,#adminmenuback{background-image:url(../images/menu-shadow.png);background-position:top right;background-repeat:repeat-y;}#adminmenu li.wp-menu-separator{background:#dfdfdf;border-color:#cfcfcf;}#adminmenu div.separator{border-color:#e1e1e1;}#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/arrows-dark.png) no-repeat -1px 6px;}#adminmenu .wp-has-submenu:hover .wp-menu-toggle,#adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/arrows.png) no-repeat -2px 6px;}#adminmenu a.menu-top,.folded #adminmenu li.menu-top,#adminmenu .wp-submenu .wp-submenu-head{border-top-color:#f9f9f9;border-bottom-color:#dfdfdf;}#adminmenu li.wp-menu-open{border-color:#dfdfdf;}#adminmenu li.menu-top:hover>a,#adminmenu li.menu-top.focused>a,#adminmenu li.menu-top>a:focus{background-color:#e4e4e4;text-shadow:0 1px 0 rgba(255,255,255,0.4);}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top,#adminmenu .wp-menu-arrow,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background-color:#777;background-image:-ms-linear-gradient(bottom,#6d6d6d,#808080);background-image:-moz-linear-gradient(bottom,#6d6d6d,#808080);background-image:-o-linear-gradient(bottom,#6d6d6d,#808080);background-image:-webkit-gradient(linear,left bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(bottom,#6d6d6d,#808080);background-image:linear-gradient(bottom,#6d6d6d,#808080);}#adminmenu .wp-menu-arrow div{background-color:#777;background-image:-ms-linear-gradient(right bottom,#6d6d6d,#808080);background-image:-moz-linear-gradient(right bottom,#6d6d6d,#808080);background-image:-o-linear-gradient(right bottom,#6d6d6d,#808080);background-image:-webkit-gradient(linear,right bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(right bottom,#6d6d6d,#808080);background-image:linear-gradient(right bottom,#6d6d6d,#808080);}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{border-top-color:#f9f9f9;border-bottom-color:#dfdfdf;background:#E4E4E4;}#adminmenu li.wp-not-current-submenu .wp-menu-arrow div{background:#E4E4E4;border-color:#ccc;}.folded #adminmenu li.menu-top li:hover a{background-image:none;}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{text-shadow:0 -1px 0 #333;color:#fff;border-top-color:#808080;border-bottom-color:#6d6d6d;}.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{border-top-color:#808080;border-bottom-color:#6d6d6d;}#adminmenu .wp-submenu a:hover,#adminmenu .wp-submenu a:focus{background-color:#EAF2FA;color:#333;}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover{color:#333;}#adminmenu .wp-submenu ul{background-color:#fff;}#adminmenu .wp-submenu-wrap,#adminmenu .wp-submenu ul{border-color:#dfdfdf;}#adminmenu .wp-submenu-wrap,.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:2px 2px 5px rgba(0,0,0,0.4);box-shadow:2px 2px 5px rgba(0,0,0,0.4);}#adminmenu .wp-submenu .wp-submenu-head{border-right-color:#dfdfdf;background-color:#ececec;}#adminmenu div.wp-submenu{background-color:transparent;}#collapse-menu{color:#aaa;}#collapse-menu:hover{color:#999;}#collapse-button{border-color:#ccc;background-color:#f4f4f4;background-image:-ms-linear-gradient(bottom,#dfdfdf,#fff);background-image:-moz-linear-gradient(bottom,#dfdfdf,#fff);background-image:-o-linear-gradient(bottom,#dfdfdf,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#dfdfdf),to(#fff));background-image:-webkit-linear-gradient(bottom,#dfdfdf,#fff);background-image:linear-gradient(bottom,#dfdfdf,#fff);}#collapse-menu:hover #collapse-button{border-color:#aaa;}#collapse-button div{background:transparent url(../images/arrows.png) no-repeat 0 -72px;}.folded #collapse-button div{background-position:0 -108px;}.icon16.icon-dashboard,#adminmenu .menu-icon-dashboard div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll -60px -33px;}#adminmenu .menu-icon-dashboard:hover div.wp-menu-image,#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-dashboard.current div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll -60px -1px;}.icon16.icon-post,#adminmenu .menu-icon-post div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll -271px -33px;}#adminmenu .menu-icon-post:hover div.wp-menu-image,#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll -271px -1px;}.icon16.icon-media,#adminmenu .menu-icon-media div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll -120px -33px;}#adminmenu .menu-icon-media:hover div.wp-menu-image,#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll -120px -1px;}.icon16.icon-links,#adminmenu .menu-icon-links div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll -90px -33px;}#adminmenu .menu-icon-links:hover div.wp-menu-image,#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll -90px -1px;}.icon16.icon-page,#adminmenu .menu-icon-page div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll -150px -33px;}#adminmenu .menu-icon-page:hover div.wp-menu-image,#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll -150px -1px;}.icon16.icon-comments,#adminmenu .menu-icon-comments div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll -30px -33px;}#adminmenu .menu-icon-comments:hover div.wp-menu-image,#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-comments.current div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll -30px -1px;}.icon16.icon-appearance,#adminmenu .menu-icon-appearance div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll 0 -33px;}#adminmenu .menu-icon-appearance:hover div.wp-menu-image,#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll 0 -1px;}.icon16.icon-plugins,#adminmenu .menu-icon-plugins div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll -180px -33px;}#adminmenu .menu-icon-plugins:hover div.wp-menu-image,#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll -180px -1px;}.icon16.icon-users,#adminmenu .menu-icon-users div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll -300px -33px;}#adminmenu .menu-icon-users:hover div.wp-menu-image,#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-users.current div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll -300px -1px;}.icon16.icon-tools,#adminmenu .menu-icon-tools div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll -210px -33px;}#adminmenu .menu-icon-tools:hover div.wp-menu-image,#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-tools.current div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll -210px -1px;}.icon16.icon-settings,#adminmenu .menu-icon-settings div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll -240px -33px;}#adminmenu .menu-icon-settings:hover div.wp-menu-image,#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll -240px -1px;}.icon16.icon-site,#adminmenu .menu-icon-site div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll -360px -33px;}#adminmenu .menu-icon-site:hover div.wp-menu-image,#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20111128') no-repeat scroll -360px -1px;}.icon32.icon-post,#icon-edit,#icon-post{background:transparent url(../images/icons32.png?ver=20111206) no-repeat -552px -5px;}.icon32.icon-dashboard,#icon-index{background:transparent url(../images/icons32.png?ver=20111206) no-repeat -137px -5px;}.icon32.icon-media,#icon-upload{background:transparent url(../images/icons32.png?ver=20111206) no-repeat -251px -5px;}.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category{background:transparent url(../images/icons32.png?ver=20111206) no-repeat -190px -5px;}.icon32.icon-page,#icon-edit-pages,#icon-page{background:transparent url(../images/icons32.png?ver=20111206) no-repeat -312px -5px;}.icon32.icon-comments,#icon-edit-comments{background:transparent url(../images/icons32.png?ver=20111206) no-repeat -72px -5px;}.icon32.icon-appearance,#icon-themes{background:transparent url(../images/icons32.png?ver=20111206) no-repeat -11px -5px;}.icon32.icon-plugins,#icon-plugins{background:transparent url(../images/icons32.png?ver=20111206) no-repeat -370px -5px;}.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit{background:transparent url(../images/icons32.png?ver=20111206) no-repeat -600px -5px;}.icon32.icon-tools,#icon-tools,#icon-admin{background:transparent url(../images/icons32.png?ver=20111206) no-repeat -432px -5px;}.icon32.icon-settings,#icon-options-general{background:transparent url(../images/icons32.png?ver=20111206) no-repeat -492px -5px;}.icon32.icon-site,#icon-ms-admin{background:transparent url(../images/icons32.png?ver=20111206) no-repeat -659px -5px;}table.diff .diff-deletedline{background-color:#fdd;}table.diff .diff-deletedline del{background-color:#f99;}table.diff .diff-addedline{background-color:#dfd;}table.diff .diff-addedline ins{background-color:#9f9;}#att-info{background-color:#E4F2FD;}#sidemenu a{background-color:#f9f9f9;border-color:#f9f9f9;border-bottom-color:#dfdfdf;}#sidemenu a.current{background-color:#fff;border-color:#dfdfdf #dfdfdf #fff;color:#D54E21;}#replyerror{border-color:#ddd;background-color:#f9f9f9;}.vim-current,.vim-current th,.vim-current td{background-color:#E4F2FD!important;}.star-average,.star.star-rating{background-color:#fc0;}div.star.select:hover{background-color:#d00;}div.star img{border-left:1px solid #fff;border-right:1px solid #fff;}.widefat div.star img{border-left:1px solid #f9f9f9;border-right:1px solid #f9f9f9;}#plugin-information .fyi ul{background-color:#eaf3fa;}#plugin-information .fyi h2.mainheader{background-color:#cee1ef;}#plugin-information pre,#plugin-information code{background-color:#ededff;}#plugin-information pre{border:1px solid #ccc;}.inline-edit-row fieldset input[type="text"],.inline-edit-row fieldset textarea,#bulk-titles{border-color:#ddd;}.inline-editor div.title{background-color:#EAF3FA;}.inline-editor ul.cat-checklist{background-color:#fff;border-color:#ddd;}.inline-editor .categories .catshow,.inline-editor .categories .cathide{color:#21759b;}.inline-editor .quick-edit-save{background-color:#f1f1f1;}fieldset.inline-edit-col-right .inline-edit-col{border-color:#dfdfdf;}.attention{color:#D54E21;}.meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px;}.tablenav .tablenav-pages{color:#555;}.tablenav .tablenav-pages a{border-color:#e3e3e3;background:#eee url('../images/menu-bits.gif?ver=20100610') repeat-x scroll left -379px;}.tablenav .tablenav-pages a:hover,.tablenav .tablenav-pages a:focus{color:#d54e21;}.tablenav .tablenav-pages a.disabled,.tablenav .tablenav-pages a.disabled:hover,.tablenav .tablenav-pages a.disabled:focus{color:#aaa;}.tablenav .tablenav-pages .current{background:#dfdfdf;border-color:#d3d3d3;}#availablethemes,#availablethemes td{border-color:#ddd;}#current-theme img{border-color:#999;}#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{color:#999;}#TB_window #TB_title a.tb-theme-preview-link:hover,#TB_window #TB_title a.tb-theme-preview-link:focus{color:#ccc;}.misc-pub-section{border-top-color:#fff;border-bottom-color:#dfdfdf;}#minor-publishing{border-bottom-color:#dfdfdf;}#post-body .misc-pub-section{border-right-color:#eee;}.post-com-count span{background-color:#bbb;}.form-table .color-palette td{border-color:#fff;}.sortable-placeholder{border-color:#bbb;background-color:#f5f5f5;}#post-body ul.category-tabs li.tabs a,#post-body ul.add-menu-item-tabs li.tabs a,body.press-this ul.category-tabs li.tabs a{color:#333;}.view-switch #view-switch-list{background:transparent url(../images/list.png) no-repeat 0 0;}.view-switch .current #view-switch-list{background:transparent url(../images/list.png) no-repeat -40px 0;}.view-switch #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -20px 0;}.view-switch .current #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -60px 0;}#header-logo{background:transparent url(../images/wp-logo.png?ver=20110504) no-repeat scroll center center;}.popular-tags,.feature-filter{background-color:#fff;border-color:#DFDFDF;}#theme-information .action-button{border-top-color:#DFDFDF;}.theme-listing br.line{border-bottom-color:#ccc;}div.widgets-sortables,#widgets-left .inactive{background-color:#fcfcfc;border-color:#dfdfdf;}#available-widgets .widget-holder{background-color:#fcfcfc;border-color:#dfdfdf;}#available-widgets .widget-description{color:#555;}.sidebar-name{color:#464646;text-shadow:#fff 0 1px 0;border-color:#dfdfdf;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;}.sidebar-name:hover,#removing-widget{color:#d54e21;}#removing-widget span{color:black;}.sidebar-name-arrow{background:transparent url(../images/arrows.png) no-repeat 5px 9px;}.sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark.png) no-repeat 5px 9px;}.in-widget-title{color:#606060;}.deleting .widget-title *{color:#aaa;}.imgedit-menu div{border-color:#d5d5d5;background-color:#f1f1f1;}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea;}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;filter:alpha(opacity=50);opacity:.5;}#dashboard_recent_comments div.undo{border-top-color:#dfdfdf;}.comment-ays,.comment-ays th{border-color:#ddd;}.comment-ays th{background-color:#f1f1f1;}#menu-management .menu-edit{border-color:#dfdfdf;}#post-body{background:#fff;border-top-color:#fff;border-bottom-color:#dfdfdf;}#nav-menu-header{border-bottom-color:#dfdfdf;}#nav-menu-footer{border-top-color:#fff;}#menu-management .nav-tabs-arrow a{color:#C1C1C1;}#menu-management .nav-tabs-arrow a:hover{color:#D54E21;}#menu-management .nav-tabs-arrow a:active{color:#464646;}#menu-management .nav-tab-active{border-color:#dfdfdf;}#menu-management .nav-tab{background:#fbfbfb;border-color:#dfdfdf;}.js .input-with-default-title{color:#aaa;}#cancel-save{color:#f00;}#cancel-save:hover{background-color:#F00;color:#fff;}.list-container{border-color:#DFDFDF;}.menu-item-handle{border-color:#dfdfdf;}.menu li.deleting .menu-item-handle{background-color:#f66;text-shadow:#ccc;}.item-type{color:#999;}.item-controls .menu-item-delete:hover{color:#f00;}.nav-menus-php .item-edit{background:transparent url(../images/arrows.png) no-repeat 8px 10px;border-bottom-color:#eee;}.item-edit:hover{background:transparent url(../images/arrows-dark.png) no-repeat 8px 10px;}.menu-item-settings{border-color:#dfdfdf;}.link-to-original{color:#777;border-color:#dfdfdf;}#cancel-save:hover{color:#fff!important;}#update-menu-item{color:#fff!important;}#update-menu-item:hover,#update-menu-item:active,#update-menu-item:focus{color:#eaf2fa!important;border-color:#13455b!important;}.submitbox .submitcancel{color:#21759B;border-bottom-color:#21759B;}.submitbox .submitcancel:hover{background:#21759B;color:#fff;}#menu-management .nav-tab-active,.menu-item-handle,.menu-item-settings{-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;}#menu-management .nav-tab-active{background:#f9f9f9;border-bottom-color:#f9f9f9;}#upload-form label{color:#777;}.fullscreen-overlay{background:#fff;}.wp-fullscreen-focus #wp-fullscreen-title,.wp-fullscreen-focus #wp-fullscreen-container{border-color:#ccc;}#fullscreen-topbar{border-bottom-color:#DFDFDF;}.about-wrap h1{color:#333;text-shadow:1px 1px 1px white;}.about-text{color:#777;}.wp-badge{color:#fff;text-shadow:0 -1px 0 rgba(22,57,81,0.3);}.about-wrap h2 .nav-tab{color:#21759B;}.about-wrap h2 .nav-tab:hover{color:#d54e21;}.about-wrap h2 .nav-tab-active,.about-wrap h2 .nav-tab-active:hover{color:#333;}.about-wrap h2 .nav-tab-active{text-shadow:1px 1px 1px white;color:#464646;}.about-wrap h3{color:#333;text-shadow:1px 1px 1px white;}.about-wrap .feature-section h4{color:#464646;}.about-wrap .feature-section img{background:#fff;border-color:#dfdfdf;-moz-box-shadow:0 0 6px rgba(0,0,0,0.3);-webkit-box-shadow:0 0 6px rgba(0,0,0,0.3);box-shadow:0 0 6px rgba(0,0,0,0.3);}.about-wrap h4.wp-people-group{text-shadow:1px 1px 1px white;}.about-wrap .point-releases{border-bottom:1px solid #dfdfdf;}.about-wrap .point-releases h3{border-top:1px solid #dfdfdf;}.about-wrap .point-releases h3:first-child{border:0;}.about-wrap li.wp-person img.gravatar{-moz-box-shadow:0 0 4px rgba(0,0,0,0.4);-webkit-box-shadow:0 0 4px rgba(0,0,0,0.4);box-shadow:0 0 4px rgba(0,0,0,0.4);}.about-wrap li.wp-person .title{color:#464646;text-shadow:1px 1px 1px white;}.freedoms-php .about-wrap ol li{color:#999;}.freedoms-php .about-wrap ol p{color:#464646;}.rtl .bar{border-right-color:none;border-left-color:#99d;}.rtl .post-com-count{background-image:url(../images/bubble_bg-rtl.gif);}.rtl #screen-meta-links a.show-settings{background-position:left 3px;}.rtl #screen-meta-links a.show-settings.screen-meta-active{background-position:left -33px;}.rtl #adminmenushadow,.rtl #adminmenuback{background-image:url(../images/menu-shadow-rtl.png);background-position:top left;}.rtl #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,.rtl #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/arrows-dark.png) no-repeat 8px 6px;}.rtl #adminmenu .wp-has-submenu:hover .wp-menu-toggle,.rtl #adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/arrows.png) no-repeat 8px 6px;}.rtl #adminmenu .wp-submenu .wp-submenu-head{border-right-color:none;border-left-color:#dfdfdf;}.rtl #adminmenu .wp-submenu-wrap,.rtl.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4);}.rtl #collapse-button div{background-position:0 -108px;}.rtl.folded #collapse-button div{background-position:0 -72px;}.rtl .meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px;}.rtl .tablenav .tablenav-pages a{border-color:#e3e3e3;background:#eee url('../images/menu-bits-rtl.gif?ver=20100610') repeat-x scroll right -379px;}.rtl #post-body .misc-pub-section{border-right-color:none;border-left-color:#eee;}.rtl .sidebar-name-arrow{background:transparent url(../images/arrows.png) no-repeat 5px 9px;}.rtl .sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark.png) no-repeat 5px 9px;}
\ No newline at end of file
+html,.wp-dialog{background-color:#fff}textarea,input[type="text"],input[type="password"],input[type="file"],input[type="button"],input[type="submit"],input[type="reset"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="url"],select{border-color:#dfdfdf;background-color:#fff;color:#333}select{color:#000}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="file"]:focus,input[type="button"]:focus,input[type="submit"]:focus,input[type="reset"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="url"]:focus,select:focus{border-color:#bbb}kbd,code{background:#eaeaea}input[readonly]{background-color:#eee}.find-box-search{border-color:#dfdfdf;background-color:#f1f1f1}.find-box{background-color:#f1f1f1}.find-box-inside{background-color:#fff}a.page-numbers:hover{border-color:#999}body,#wpbody,.form-table .pre,.ui-autocomplete li a{color:#333}body>#upload-menu{border-bottom-color:#fff}#postcustomstuff table,#your-profile fieldset,#rightnow,div.dashboard-widget,#dashboard-widgets p.dashboard-widget-links{border-color:#ccc}#poststuff .inside label.spam,#poststuff .inside label.deleted{color:red}#poststuff .inside label.waiting{color:orange}#poststuff .inside label.approved{color:green}#postcustomstuff table{border-color:#dfdfdf;background-color:#f9f9f9}#postcustomstuff thead th{background-color:#f1f1f1}.widefat{border-color:#dfdfdf;background-color:#f9f9f9}textarea.widefat{background-color:#fff}div.dashboard-widget-error{background-color:#c43}div.dashboard-widget-notice{background-color:#cfe1ef}div.dashboard-widget-submit{border-top-color:#ccc}ul.category-tabs li{border-color:transparent}div.tabs-panel,.wp-tab-panel,ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-color:#dfdfdf;background-color:#fff}ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{background-color:#fff}input.disabled,textarea.disabled{background-color:#ccc}#plugin-information .action-button a,#plugin-information .action-button a:hover,#plugin-information .action-button a:visited{color:#fff}.widget .widget-top,.postbox h3,.stuffbox h3,.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.find-box-head,.sidebar-name,#nav-menu-header,#nav-menu-footer,.menu-item-handle{background-color:#f1f1f1;background-image:-ms-linear-gradient(top,#f9f9f9,#ececec);background-image:-moz-linear-gradient(top,#f9f9f9,#ececec);background-image:-o-linear-gradient(top,#f9f9f9,#ececec);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#ececec));background-image:-webkit-linear-gradient(top,#f9f9f9,#ececec);background-image:linear-gradient(top,#f9f9f9,#ececec)}.widget .widget-top,.postbox h3,.stuffbox h3{border-bottom-color:#dfdfdf;text-shadow:#fff 0 1px 0;-moz-box-shadow:0 1px 0 #fff;-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff}.form-table th,.form-wrap label{color:#222;text-shadow:#fff 0 1px 0}.description,.form-wrap p{color:#666}strong .post-com-count span{background-color:#21759b}.sorthelper{background-color:#ccf3fa}.ac_match,.subsubsub a.current{color:#000}.wrap h2{color:#464646}.wrap .add-new-h2{background:#f1f1f1}.subtitle{color:#777}.ac_over{background-color:#f0f0b8}.ac_results{background-color:#fff;border-color:#808080}.ac_results li{color:#101010}.alternate,.alt{background-color:#fcfcfc}.available-theme a.screenshot{background-color:#f1f1f1;border-color:#ddd}.bar{background-color:#e8e8e8;border-right-color:#99d}#media-upload,#media-upload .media-item .slidetoggle{background:#fff}#media-upload .slidetoggle{border-top-color:#dfdfdf}div.error,.login #login_error{background-color:#ffebe8;border-color:#c00}div.error a{color:#c00}.form-invalid{background-color:#ffebe8!important}.form-invalid input,.form-invalid select{border-color:#c00!important}.submit,#commentsdiv #add-new-comment{border-color:#dfdfdf}.highlight{background-color:#e4f2fd;color:#000}.howto,.nonessential,#edit-slug-box,.form-input-tip,.subsubsub{color:#666}.media-upload-form label.form-help,td.help{color:#9a9a9a}.ui-autocomplete{background-color:#efefef;border-color:#bbb}.ui-autocomplete li a.ui-state-hover{background-color:#ddd}.post-com-count{background-image:url(../images/bubble_bg.gif);color:#fff}.post-com-count span{background-color:#bbb;color:#fff}.post-com-count:hover span{background-color:#d54e21}.quicktags,.search{background-color:#ccc;color:#000}.side-info h5{border-bottom-color:#dadada}.side-info ul{color:#666}.button,.button-secondary,.submit input,input[type=button],input[type=submit]{border-color:#bbb;color:#464646}.button:hover,.button-secondary:hover,.submit input:hover,input[type=button]:hover,input[type=submit]:hover{color:#000;border-color:#666}.button,.submit input,.button-secondary{background:#f2f2f2 url(../images/white-grad.png) repeat-x scroll left top;text-shadow:rgba(255,255,255,1) 0 1px 0}.button:active,.submit input:active,.button-secondary:active{background:#eee url(../images/white-grad-active.png) repeat-x scroll left top}input.button-primary,button.button-primary,a.button-primary{border-color:#298cba;font-weight:bold;color:#fff;background:#21759b url(../images/button-grad.png) repeat-x scroll left top;text-shadow:rgba(0,0,0,0.3) 0 -1px 0}input.button-primary:active,button.button-primary:active,a.button-primary:active{background:#21759b url(../images/button-grad-active.png) repeat-x scroll left top;color:#eaf2fa}input.button-primary:hover,button.button-primary:hover,a.button-primary:hover,a.button-primary:focus,a.button-primary:active{border-color:#13455b;color:#eaf2fa}.button-disabled,.button[disabled],.button:disabled,.button-secondary[disabled],.button-secondary:disabled,a.button.disabled{color:#aaa!important;border-color:#ddd!important}.button-primary-disabled,.button-primary[disabled],.button-primary:disabled{color:#9fd0d5!important;background:#298cba!important}a:hover,a:active,a:focus{color:#d54e21}#adminmenu a:hover,#adminmenu li.menu-top>a:focus,#adminmenu ul.wp-submenu a:hover,#the-comment-list .comment a:hover,#rightnow a:hover,#media-upload a.del-link:hover,div.dashboard-widget-submit input:hover,.subsubsub a:hover,.subsubsub a.current:hover,.ui-tabs-nav a:hover,.plugins .inactive a:hover,#all-plugins-table .plugins .inactive a:hover,#search-plugins-table .plugins .inactive a:hover{color:#d54e21}#the-comment-list .comment-item,#dashboard-widgets #dashboard_quick_press form p.submit{border-color:#dfdfdf}#side-sortables .category-tabs .tabs a,#side-sortables .add-menu-item-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#333}#rightnow .rbutton{background-color:#ebebeb;color:#264761}.submitbox .submit{background-color:#464646;color:#ccc}.plugins a.delete:hover,#all-plugins-table .plugins a.delete:hover,#search-plugins-table .plugins a.delete:hover,.submitbox .submitdelete{color:#f00;border-bottom-color:#f00}.submitbox .submitdelete:hover,#media-items a.delete:hover{color:#fff;background-color:#f00;border-bottom-color:#f00}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:#f00;border-bottom-color:#f00}.tablenav .dots{border-color:transparent}.tablenav .next,.tablenav .prev{border-color:transparent;color:#21759b}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#d54e21}div.updated,.login .message{background-color:#ffffe0;border-color:#e6db55}.update-message{color:#000}a.page-numbers{border-bottom-color:#b8d3e2}.commentlist li{border-bottom-color:#ccc}.widefat td,.widefat th{border-top-color:#fff;border-bottom-color:#dfdfdf}.widefat th{text-shadow:rgba(255,255,255,0.8) 0 1px 0}.widefat td{color:#555}.widefat p,.widefat ol,.widefat ul{color:#333}.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.find-box-head{color:#333}th.sortable a:hover,th.sortable a:active,th.sortable a:focus{color:#333}h3.dashboard-widget-title small a{color:#d7d7d7}h3.dashboard-widget-title small a:hover{color:#fff}a,#adminmenu a,#the-comment-list p.comment-author strong a,#media-upload a.del-link,#media-items a.delete,.plugins a.delete,.ui-tabs-nav a{color:#21759b}#adminmenu .awaiting-mod,#adminmenu .update-plugins,#sidemenu a .update-plugins,#rightnow .reallynow{background-color:#464646;color:#fff;-moz-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}#plugin-information .action-button{background-color:#d54e21;color:#fff}#adminmenu li.current a .awaiting-mod,#adminmenu li a.wp-has-current-submenu .update-plugins{background-color:#464646;color:#fff;-moz-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}div#media-upload-header,div#plugin-information-header{background-color:#f9f9f9;border-bottom-color:#dfdfdf}#currenttheme img{border-color:#666}#dashboard_secondary div.dashboard-widget-content ul li a{background-color:#f9f9f9}input.readonly,textarea.readonly{background-color:#ddd}#editable-post-name{background-color:#fffbcc}#edit-slug-box strong,.tablenav .displaying-num,#submitted-on,.submitted-on{color:#777}.login #nav a,.login #backtoblog a{color:#21759b!important}.login #nav a:hover,.login #backtoblog a:hover{color:#d54e21!important}#footer{color:#777;border-color:#dfdfdf}.imgedit-group,#media-items .media-item,.media-item .describe{border-color:#dfdfdf}.checkbox,.side-info,.plugins tr,#your-profile #rich_editing{background-color:#fcfcfc}.plugins .inactive,.plugins .inactive th,.plugins .inactive td,tr.inactive+tr.plugin-update-tr .plugin-update{background-color:#f4f4f4}.plugin-update-tr .update-message{background-color:#fffbe4;border-color:#dfdfdf}.plugins .active,.plugins .active th,.plugins .active td{color:#000}.plugins .inactive a{color:#579}#the-comment-list tr.undo,#the-comment-list div.undo{background-color:#f4f4f4}#the-comment-list .unapproved{background-color:#ffffe0}#the-comment-list .approve a{color:#006505}#the-comment-list .unapprove a{color:#d98500}table.widefat span.delete a,table.widefat span.trash a,table.widefat span.spam a,#dashboard_recent_comments .delete a,#dashboard_recent_comments .trash a,#dashboard_recent_comments .spam a{color:#bc0b0b}.welcome-panel{border-color:#dfdfdf}.welcome-panel p{color:#777}.welcome-panel-column p{color:#464646}.welcome-panel h3{text-shadow:1px 1px 1px white}.widget,#widget-list .widget-top,.postbox,#titlediv,#poststuff .postarea,.stuffbox{border-color:#dfdfdf;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;-webkit-border-radius:3px;border-radius:3px}.widget,#widget-list .widget-top,.postbox,.menu-item-settings{background-color:#f5f5f5;background-image:-ms-linear-gradient(top,#f9f9f9,#f5f5f5);background-image:-moz-linear-gradient(top,#f9f9f9,#f5f5f5);background-image:-o-linear-gradient(top,#f9f9f9,#f5f5f5);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#f9f9f9,#f5f5f5);background-image:linear-gradient(top,#f9f9f9,#f5f5f5)}.postbox h3{color:#464646}.widget .widget-top{color:#222}.sidebar-name:hover h3,.postbox h3:hover{color:#000}.curtime #timestamp{background-image:url(../images/date-button.gif)}#quicktags #ed_link{color:#00f}#rightnow .youhave{background-color:#f0f6fb}#rightnow a{color:#448abd}.tagchecklist span a,#bulk-titles div a{background:url(../images/xit.gif) no-repeat}.tagchecklist span a:hover,#bulk-titles div a:hover{background:url(../images/xit.gif) no-repeat -10px 0}#update-nag,.update-nag{background-color:#fffbcc;border-color:#e6db55;color:#555}#screen-meta{background-color:#f1f1f1;border-color:#ccc;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.05);box-shadow:0 1px 3px rgba(0,0,0,0.05)}#contextual-help-back{background:#fff}.contextual-help-tabs a:hover{color:#333}#contextual-help-back,.contextual-help-tabs .active{border-color:#ccc}.contextual-help-tabs .active,.contextual-help-tabs .active a,.contextual-help-tabs .active a:hover{background:#fff;color:#333}#screen-options-link-wrap,#contextual-help-link-wrap{background-color:#e3e3e3;border-right:1px solid #ccc;border-left:1px solid #ccc;border-bottom:1px solid #ccc;background-image:-ms-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:-moz-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:-o-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:-webkit-gradient(linear,left bottom,left top,from(#dfdfdf),to(#f1f1f1));background-image:-webkit-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:linear-gradient(bottom,#dfdfdf,#f1f1f1)}#screen-meta-links a.show-settings{color:#777}#screen-meta-links a.show-settings:hover{color:#333}#screen-meta-links a.show-settings{background:transparent url(../images/arrows.png) no-repeat right 4px}#screen-meta-links a.show-settings.screen-meta-active{background:transparent url(../images/arrows.png) no-repeat right -31px}.login #backtoblog a{color:#464646}#wphead{border-bottom:#dfdfdf 1px solid}#wphead h1 a{color:#464646}#footer a:link,#footer a:visited{text-decoration:none}#footer a:hover{text-decoration:underline}.file-error,abbr.required,.widget-control-remove:hover,table.widefat .delete a:hover,table.widefat .trash a:hover,table.widefat .spam a:hover,#dashboard_recent_comments .delete a:hover,#dashboard_recent_comments .trash a:hover #dashboard_recent_comments .spam a:hover{color:#f00}#pass-strength-result{background-color:#eee;border-color:#ddd!important}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important}#titlediv #title{border-color:#ccc}#post-status-info{border-color:#dfdfdf #ccc #ccc;background-color:#eaeaea}.editwidget .widget-inside{border-color:#dfdfdf}#titlediv #title{background-color:#fff}#tTips p#tTips_inside{background-color:#ddd;color:#333}#timestampdiv input,#namediv input,#poststuff .inside .the-tagcloud{border-color:#ddd}#adminmenuback,#adminmenuwrap{background-color:#ececec;border-color:#ccc}#adminmenushadow,#adminmenuback{background-image:url(../images/menu-shadow.png);background-position:top right;background-repeat:repeat-y}#adminmenu li.wp-menu-separator{background:#dfdfdf;border-color:#cfcfcf}#adminmenu div.separator{border-color:#e1e1e1}#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/arrows-dark.png) no-repeat -1px 6px}#adminmenu .wp-has-submenu:hover .wp-menu-toggle,#adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/arrows.png) no-repeat -2px 6px}#adminmenu a.menu-top,.folded #adminmenu li.menu-top,#adminmenu .wp-submenu .wp-submenu-head{border-top-color:#f9f9f9;border-bottom-color:#dfdfdf}#adminmenu li.wp-menu-open{border-color:#dfdfdf}#adminmenu li.menu-top:hover>a,#adminmenu li.menu-top.focused>a,#adminmenu li.menu-top>a:focus{background-color:#e4e4e4;text-shadow:0 1px 0 rgba(255,255,255,0.4)}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top,#adminmenu .wp-menu-arrow,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background-color:#777;background-image:-ms-linear-gradient(bottom,#6d6d6d,#808080);background-image:-moz-linear-gradient(bottom,#6d6d6d,#808080);background-image:-o-linear-gradient(bottom,#6d6d6d,#808080);background-image:-webkit-gradient(linear,left bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(bottom,#6d6d6d,#808080);background-image:linear-gradient(bottom,#6d6d6d,#808080)}#adminmenu .wp-menu-arrow div{background-color:#777;background-image:-ms-linear-gradient(right bottom,#6d6d6d,#808080);background-image:-moz-linear-gradient(right bottom,#6d6d6d,#808080);background-image:-o-linear-gradient(right bottom,#6d6d6d,#808080);background-image:-webkit-gradient(linear,right bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(right bottom,#6d6d6d,#808080);background-image:linear-gradient(right bottom,#6d6d6d,#808080)}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{border-top-color:#f9f9f9;border-bottom-color:#dfdfdf;background:#e4e4e4}#adminmenu li.wp-not-current-submenu .wp-menu-arrow div{background:#e4e4e4;border-color:#ccc}.folded #adminmenu li.menu-top li:hover a{background-image:none}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{text-shadow:0 -1px 0 #333;color:#fff;border-top-color:#808080;border-bottom-color:#6d6d6d}.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{border-top-color:#808080;border-bottom-color:#6d6d6d}#adminmenu .wp-submenu a:hover,#adminmenu .wp-submenu a:focus{background-color:#eaf2fa;color:#333}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover{color:#333}#adminmenu .wp-submenu ul{background-color:#fff}#adminmenu .wp-submenu-wrap,#adminmenu .wp-submenu ul{border-color:#dfdfdf}#adminmenu .wp-submenu-wrap,.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:2px 2px 5px rgba(0,0,0,0.4);box-shadow:2px 2px 5px rgba(0,0,0,0.4)}#adminmenu .wp-submenu .wp-submenu-head{border-right-color:#dfdfdf;background-color:#ececec}#adminmenu div.wp-submenu{background-color:transparent}#collapse-menu{color:#aaa}#collapse-menu:hover{color:#999}#collapse-button{border-color:#ccc;background-color:#f4f4f4;background-image:-ms-linear-gradient(bottom,#dfdfdf,#fff);background-image:-moz-linear-gradient(bottom,#dfdfdf,#fff);background-image:-o-linear-gradient(bottom,#dfdfdf,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#dfdfdf),to(#fff));background-image:-webkit-linear-gradient(bottom,#dfdfdf,#fff);background-image:linear-gradient(bottom,#dfdfdf,#fff)}#collapse-menu:hover #collapse-button{border-color:#aaa}#collapse-button div{background:transparent url(../images/arrows.png) no-repeat 0 -72px}.folded #collapse-button div{background-position:0 -108px}@media only screen and (max-width:900px){#adminmenu li.menu-top{border-top-color:#f9f9f9;border-bottom-color:#dfdfdf}#adminmenu li.wp-has-current-submenu,#adminmenu li.current.menu-top{background-color:#777;background-image:-ms-linear-gradient(bottom,#6d6d6d,#808080);background-image:-moz-linear-gradient(bottom,#6d6d6d,#808080);background-image:-o-linear-gradient(bottom,#6d6d6d,#808080);background-image:-webkit-gradient(linear,left bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(bottom,#6d6d6d,#808080);background-image:linear-gradient(bottom,#6d6d6d,#808080)}#adminmenu li.menu-top li:hover a{background-image:none}#adminmenu li.wp-has-current-submenu,#adminmenu li.current.menu-top{border-top-color:#808080;border-bottom-color:#6d6d6d}#adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:2px 2px 5px rgba(0,0,0,0.4);box-shadow:2px 2px 5px rgba(0,0,0,0.4)}#collapse-button div{background-position:0 -108px}}.icon16,.icon32,div.wp-menu-image{background-color:transparent;background-repeat:no-repeat}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image{background-image:url('../images/menu.png?ver=20120201')}.icon16.icon-dashboard,#adminmenu .menu-icon-dashboard div.wp-menu-image{background-position:-59px -33px}#adminmenu .menu-icon-dashboard:hover div.wp-menu-image,#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-dashboard.current div.wp-menu-image{background-position:-59px -1px}.icon16.icon-post,#adminmenu .menu-icon-post div.wp-menu-image{background-position:-269px -33px}#adminmenu .menu-icon-post:hover div.wp-menu-image,#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-post.current div.wp-menu-image{background-position:-269px -1px}.icon16.icon-media,#adminmenu .menu-icon-media div.wp-menu-image{background-position:-119px -33px}#adminmenu .menu-icon-media:hover div.wp-menu-image,#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-media.current div.wp-menu-image{background-position:-119px -1px}.icon16.icon-links,#adminmenu .menu-icon-links div.wp-menu-image{background-position:-89px -33px}#adminmenu .menu-icon-links:hover div.wp-menu-image,#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-links.current div.wp-menu-image{background-position:-89px -1px}.icon16.icon-page,#adminmenu .menu-icon-page div.wp-menu-image{background-position:-149px -33px}#adminmenu .menu-icon-page:hover div.wp-menu-image,#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-page.current div.wp-menu-image{background-position:-149px -1px}.icon16.icon-comments,#adminmenu .menu-icon-comments div.wp-menu-image{background-position:-29px -33px}#adminmenu .menu-icon-comments:hover div.wp-menu-image,#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-comments.current div.wp-menu-image{background-position:-29px -1px}.icon16.icon-appearance,#adminmenu .menu-icon-appearance div.wp-menu-image{background-position:1px -33px}#adminmenu .menu-icon-appearance:hover div.wp-menu-image,#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-appearance.current div.wp-menu-image{background-position:1px -1px}.icon16.icon-plugins,#adminmenu .menu-icon-plugins div.wp-menu-image{background-position:-179px -33px}#adminmenu .menu-icon-plugins:hover div.wp-menu-image,#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-plugins.current div.wp-menu-image{background-position:-179px -1px}.icon16.icon-users,#adminmenu .menu-icon-users div.wp-menu-image{background-position:-300px -33px}#adminmenu .menu-icon-users:hover div.wp-menu-image,#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-users.current div.wp-menu-image{background-position:-300px -1px}.icon16.icon-tools,#adminmenu .menu-icon-tools div.wp-menu-image{background-position:-209px -33px}#adminmenu .menu-icon-tools:hover div.wp-menu-image,#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-tools.current div.wp-menu-image{background-position:-209px -1px}.icon16.icon-settings,#adminmenu .menu-icon-settings div.wp-menu-image{background-position:-239px -33px}#adminmenu .menu-icon-settings:hover div.wp-menu-image,#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-settings.current div.wp-menu-image{background-position:-239px -1px}.icon16.icon-site,#adminmenu .menu-icon-site div.wp-menu-image{background-position:-359px -33px}#adminmenu .menu-icon-site:hover div.wp-menu-image,#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-site.current div.wp-menu-image{background-position:-359px -1px}.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin{background-image:url(../images/icons32.png?ver=20111206)}.icon32.icon-post,#icon-edit,#icon-post{background-position:-552px -5px}.icon32.icon-dashboard,#icon-index{background-position:-137px -5px}.icon32.icon-media,#icon-upload{background-position:-251px -5px}.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category{background-position:-190px -5px}.icon32.icon-page,#icon-edit-pages,#icon-page{background-position:-312px -5px}.icon32.icon-comments,#icon-edit-comments{background-position:-72px -5px}.icon32.icon-appearance,#icon-themes{background-position:-11px -5px}.icon32.icon-plugins,#icon-plugins{background-position:-370px -5px}.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit{background-position:-600px -5px}.icon32.icon-tools,#icon-tools,#icon-admin{background-position:-432px -5px}.icon32.icon-settings,#icon-options-general{background-position:-492px -5px}.icon32.icon-site,#icon-ms-admin{background-position:-659px -5px}@media only screen and (-webkit-min-device-pixel-ratio:1.5){.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin{background-image:url(../images/icons32-2x.png?ver=20120412);background-size:708px 45px}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image{background-image:url('../images/menu-2x.png?ver=20120412');background-size:390px 64px}}table.diff .diff-deletedline{background-color:#fdd}table.diff .diff-deletedline del{background-color:#f99}table.diff .diff-addedline{background-color:#dfd}table.diff .diff-addedline ins{background-color:#9f9}#att-info{background-color:#e4f2fd}#sidemenu a{background-color:#f9f9f9;border-color:#f9f9f9;border-bottom-color:#dfdfdf}#sidemenu a.current{background-color:#fff;border-color:#dfdfdf #dfdfdf #fff;color:#d54e21}#replyerror{border-color:#ddd;background-color:#f9f9f9}.vim-current,.vim-current th,.vim-current td{background-color:#e4f2fd!important}#plugin-information .fyi ul{background-color:#eaf3fa}#plugin-information .fyi h2.mainheader{background-color:#cee1ef}#plugin-information pre,#plugin-information code{background-color:#ededff}#plugin-information pre{border:1px solid #ccc}.inline-edit-row fieldset input[type="text"],.inline-edit-row fieldset textarea,#bulk-titles{border-color:#ddd}.inline-editor div.title{background-color:#eaf3fa}.inline-editor ul.cat-checklist{background-color:#fff;border-color:#ddd}.inline-editor .categories .catshow,.inline-editor .categories .cathide{color:#21759b}.inline-editor .quick-edit-save{background-color:#f1f1f1}fieldset.inline-edit-col-right .inline-edit-col{border-color:#dfdfdf}.attention{color:#d54e21}.meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px}.tablenav .tablenav-pages{color:#555}.tablenav .tablenav-pages a{border-color:#e3e3e3;background:#eee url('../images/menu-bits.gif?ver=20100610') repeat-x scroll left -379px}.tablenav .tablenav-pages a:hover,.tablenav .tablenav-pages a:focus{color:#d54e21}.tablenav .tablenav-pages a.disabled,.tablenav .tablenav-pages a.disabled:hover,.tablenav .tablenav-pages a.disabled:focus{color:#aaa}.tablenav .tablenav-pages .current{background:#dfdfdf;border-color:#d3d3d3}#availablethemes,#availablethemes td{border-color:#ddd}#current-theme img{border-color:#999}#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{color:#999}#TB_window #TB_title a.tb-theme-preview-link:hover,#TB_window #TB_title a.tb-theme-preview-link:focus{color:#ccc}.misc-pub-section{border-top-color:#fff;border-bottom-color:#dfdfdf}#minor-publishing{border-bottom-color:#dfdfdf}#post-body .misc-pub-section{border-left-color:#eee}.post-com-count span{background-color:#bbb}.form-table .color-palette td{border-color:#fff}.sortable-placeholder{border-color:#bbb;background-color:#f5f5f5}#post-body ul.category-tabs li.tabs a,#post-body ul.add-menu-item-tabs li.tabs a,body.press-this ul.category-tabs li.tabs a{color:#333}.view-switch #view-switch-list{background:transparent url(../images/list.png) no-repeat 0 0}.view-switch .current #view-switch-list{background:transparent url(../images/list.png) no-repeat -40px 0}.view-switch #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -20px 0}.view-switch .current #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -60px 0}#header-logo{background:transparent url(../images/wp-logo.png?ver=20110504) no-repeat scroll center center}.popular-tags,.feature-filter{background-color:#fff;border-color:#dfdfdf}div.widgets-sortables,#widgets-left .inactive,#available-widgets .widget-holder{background-color:#fcfcfc;border-color:#dfdfdf}#available-widgets .widget-description{color:#555}.sidebar-name{color:#464646;text-shadow:#fff 0 1px 0;border-color:#dfdfdf;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.sidebar-name:hover,#removing-widget{color:#d54e21}#removing-widget span{color:black}.sidebar-name-arrow{background:transparent url(../images/arrows.png) no-repeat 5px 9px}.sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark.png) no-repeat 5px 9px}.in-widget-title{color:#606060}.deleting .widget-title *{color:#aaa}.imgedit-menu div{border-color:#d5d5d5;background-color:#f1f1f1}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;filter:alpha(opacity=50);opacity:.5}#dashboard_recent_comments div.undo{border-top-color:#dfdfdf}.comment-ays,.comment-ays th{border-color:#ddd}.comment-ays th{background-color:#f1f1f1}#menu-management .menu-edit{border-color:#dfdfdf}#post-body{background:#fff;border-top-color:#fff;border-bottom-color:#dfdfdf}#nav-menu-header{border-bottom-color:#dfdfdf}#nav-menu-footer{border-top-color:#fff}#menu-management .nav-tabs-arrow a{color:#c1c1c1}#menu-management .nav-tabs-arrow a:hover{color:#d54e21}#menu-management .nav-tabs-arrow a:active{color:#464646}#menu-management .nav-tab-active{border-color:#dfdfdf}#menu-management .nav-tab{background:#fbfbfb;border-color:#dfdfdf}.js .input-with-default-title{color:#aaa}#cancel-save{color:#f00}#cancel-save:hover{background-color:#f00;color:#fff}.list-container,.menu-item-handle{border-color:#dfdfdf}.menu li.deleting .menu-item-handle{background-color:#f66;text-shadow:#ccc}.item-type{color:#999}.item-controls .menu-item-delete:hover{color:#f00}.nav-menus-php .item-edit{background:transparent url(../images/arrows.png) no-repeat 8px 10px;border-bottom-color:#eee}.item-edit:hover{background:transparent url(../images/arrows-dark.png) no-repeat 8px 10px}.menu-item-settings{border-color:#dfdfdf}.link-to-original{color:#777;border-color:#dfdfdf}#cancel-save:hover{color:#fff!important}#update-menu-item{color:#fff!important}#update-menu-item:hover,#update-menu-item:active,#update-menu-item:focus{color:#eaf2fa!important;border-color:#13455b!important}.submitbox .submitcancel{color:#21759b;border-bottom-color:#21759b}.submitbox .submitcancel:hover{background:#21759b;color:#fff}#menu-management .nav-tab-active,.menu-item-handle,.menu-item-settings{-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}#menu-management .nav-tab-active{background:#f9f9f9;border-bottom-color:#f9f9f9}#upload-form label{color:#777}.about-wrap h1{color:#333;text-shadow:1px 1px 1px white}.about-text{color:#777}.wp-badge{color:#fff;text-shadow:0 -1px 0 rgba(22,57,81,0.3)}.about-wrap h2 .nav-tab{color:#21759b}.about-wrap h2 .nav-tab:hover{color:#d54e21}.about-wrap h2 .nav-tab-active,.about-wrap h2 .nav-tab-active:hover{color:#333}.about-wrap h2 .nav-tab-active{text-shadow:1px 1px 1px white;color:#464646}.about-wrap h3{color:#333;text-shadow:1px 1px 1px white}.about-wrap .feature-section h4{color:#464646}.about-wrap .feature-section img{background:#fff;border:1px #ccc solid;-moz-box-shadow:0 1px 3px rgba(0,0,0,0.3);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.3);box-shadow:0 1px 3px rgba(0,0,0,0.3)}.about-wrap h4.wp-people-group{text-shadow:1px 1px 1px white}.about-wrap .point-releases{border-bottom:1px solid #dfdfdf}.about-wrap .point-releases h3{border-top:1px solid #dfdfdf}.about-wrap .point-releases h3:first-child{border:0}.about-wrap li.wp-person img.gravatar{-moz-box-shadow:0 0 4px rgba(0,0,0,0.4);-webkit-box-shadow:0 0 4px rgba(0,0,0,0.4);box-shadow:0 0 4px rgba(0,0,0,0.4)}.about-wrap li.wp-person .title{color:#464646;text-shadow:1px 1px 1px white}.freedoms-php .about-wrap ol li{color:#999}.freedoms-php .about-wrap ol p{color:#464646}.rtl .bar{border-right-color:none;border-left-color:#99d}.rtl .post-com-count{background-image:url(../images/bubble_bg-rtl.gif)}.rtl #screen-meta-links a.show-settings{background-position:left 3px}.rtl #screen-meta-links a.show-settings.screen-meta-active{background-position:left -33px}.rtl #adminmenushadow,.rtl #adminmenuback{background-image:url(../images/menu-shadow-rtl.png);background-position:top left}.rtl #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,.rtl #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/arrows-dark.png) no-repeat 8px 6px}.rtl #adminmenu .wp-has-submenu:hover .wp-menu-toggle,.rtl #adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/arrows.png) no-repeat 8px 6px}.rtl #adminmenu .wp-submenu .wp-submenu-head{border-right-color:none;border-left-color:#dfdfdf}.rtl #adminmenu .wp-submenu-wrap,.rtl.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl #collapse-button div{background-position:0 -108px}.rtl.folded #collapse-button div{background-position:0 -72px}@media only screen and (max-width:900px){.rtl #adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl #collapse-button div{background-position:0 -72px}}.rtl .meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px}.rtl .tablenav .tablenav-pages a{border-color:#e3e3e3;background:#eee url('../images/menu-bits-rtl.gif?ver=20100610') repeat-x scroll right -379px}.rtl #post-body .misc-pub-section{border-right-color:none;border-left-color:#eee}.rtl .sidebar-name-arrow{background:transparent url(../images/arrows.png) no-repeat 5px 9px}.rtl .sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark.png) no-repeat 5px 9px}
\ No newline at end of file
index 4543e55b8bef3e4f7be591801854c60f7213c12d..8049099e6c6aa14b04b7caf37f18a780c1d4bff1 100644 (file)
@@ -40,6 +40,11 @@ input[type="url"],
 select {
        border-color: #dfdfdf;
        background-color: #fff;
 select {
        border-color: #dfdfdf;
        background-color: #fff;
+       color: #333;
+}
+
+select {
+       color: #000;
 }
 
 textarea:focus,
 }
 
 textarea:focus,
@@ -86,7 +91,8 @@ a.page-numbers:hover {
 
 body,
 #wpbody,
 
 body,
 #wpbody,
-.form-table .pre {
+.form-table .pre,
+.ui-autocomplete li a {
        color: #333;
 }
 
        color: #333;
 }
 
@@ -144,6 +150,10 @@ div.dashboard-widget-submit {
        border-top-color: #ccc;
 }
 
        border-top-color: #ccc;
 }
 
+ul.category-tabs li {
+       border-color: transparent;
+}
+
 div.tabs-panel,
 .wp-tab-panel,
 ul.category-tabs li.tabs,
 div.tabs-panel,
 .wp-tab-panel,
 ul.category-tabs li.tabs,
@@ -182,8 +192,7 @@ h3.dashboard-widget-title small,
 .sidebar-name,
 #nav-menu-header,
 #nav-menu-footer,
 .sidebar-name,
 #nav-menu-header,
 #nav-menu-footer,
-.menu-item-handle,
-#fullscreen-topbar {
+.menu-item-handle {
        background-color: #f1f1f1; /* Fallback */
        background-image: -ms-linear-gradient(top, #f9f9f9, #ececec); /* IE10 */
        background-image: -moz-linear-gradient(top, #f9f9f9, #ececec); /* Firefox */
        background-color: #f1f1f1; /* Fallback */
        background-image: -ms-linear-gradient(top, #f9f9f9, #ececec); /* IE10 */
        background-image: -moz-linear-gradient(top, #f9f9f9, #ececec); /* Firefox */
@@ -295,8 +304,9 @@ div.error a {
        border-color: #c00 !important;
 }
 
        border-color: #c00 !important;
 }
 
-.submit {
-       border-color: #DFDFDF;
+.submit,
+#commentsdiv #add-new-comment {
+       border-color: #dfdfdf;
 }
 
 .highlight {
 }
 
 .highlight {
@@ -317,6 +327,15 @@ td.help {
        color: #9a9a9a;
 }
 
        color: #9a9a9a;
 }
 
+.ui-autocomplete {
+       background-color: #efefef;
+       border-color: #bbb;
+}
+
+.ui-autocomplete li a.ui-state-hover {
+       background-color: #ddd;
+}
+
 .post-com-count {
        background-image: url(../images/bubble_bg.gif);
        color: #fff;
 .post-com-count {
        background-image: url(../images/bubble_bg.gif);
        color: #fff;
@@ -804,16 +823,16 @@ table.widefat span.spam a,
 .contextual-help-tabs .active a,
 .contextual-help-tabs .active a:hover {
        background: #fff;
 .contextual-help-tabs .active a,
 .contextual-help-tabs .active a:hover {
        background: #fff;
-       color: #000;
+       color: #333;
 }
 
 /* screen options and help tabs */
 #screen-options-link-wrap,
 #contextual-help-link-wrap {
        background-color: #e3e3e3; /* Fallback */
 }
 
 /* screen options and help tabs */
 #screen-options-link-wrap,
 #contextual-help-link-wrap {
        background-color: #e3e3e3; /* Fallback */
-       border-right: 1px solid transparent;
-       border-left: 1px solid transparent;
-       border-bottom: 1px solid transparent;
+       border-right: 1px solid #ccc;
+       border-left: 1px solid #ccc;
+       border-bottom: 1px solid #ccc;
        background-image: -ms-linear-gradient(bottom, #dfdfdf, #f1f1f1); /* IE10 */
        background-image: -moz-linear-gradient(bottom, #dfdfdf, #f1f1f1); /* Firefox */
        background-image: -o-linear-gradient(bottom, #dfdfdf, #f1f1f1); /* Opera */
        background-image: -ms-linear-gradient(bottom, #dfdfdf, #f1f1f1); /* IE10 */
        background-image: -moz-linear-gradient(bottom, #dfdfdf, #f1f1f1); /* Firefox */
        background-image: -o-linear-gradient(bottom, #dfdfdf, #f1f1f1); /* Opera */
@@ -827,15 +846,15 @@ table.widefat span.spam a,
 }
 
 #screen-meta-links a.show-settings:hover {
 }
 
 #screen-meta-links a.show-settings:hover {
-       color: #000;
+       color: #333;
 }
 
 #screen-meta-links a.show-settings {
 }
 
 #screen-meta-links a.show-settings {
-       background: transparent url(../images/arrows.png) no-repeat right 3px;
+       background: transparent url(../images/arrows.png) no-repeat right 4px;
 }
 
 #screen-meta-links a.show-settings.screen-meta-active {
 }
 
 #screen-meta-links a.show-settings.screen-meta-active {
-       background: transparent url(../images/arrows.png) no-repeat right -33px;
+       background: transparent url(../images/arrows.png) no-repeat right -31px;
 }
 
 /* end screen options and help tabs */
 }
 
 /* end screen options and help tabs */
@@ -858,7 +877,6 @@ table.widefat span.spam a,
 }
 
 #footer a:hover {
 }
 
 #footer a:hover {
-       color: #000;
        text-decoration: underline;
 }
 
        text-decoration: underline;
 }
 
@@ -1089,212 +1107,394 @@ table.widefat .spam a:hover,
        background-image: -webkit-linear-gradient(bottom, #dfdfdf, #fff); /* new Webkit */
        background-image: linear-gradient(bottom, #dfdfdf, #fff); /* proposed W3C Markup */
 }
        background-image: -webkit-linear-gradient(bottom, #dfdfdf, #fff); /* new Webkit */
        background-image: linear-gradient(bottom, #dfdfdf, #fff); /* proposed W3C Markup */
 }
+
 #collapse-menu:hover #collapse-button {
        border-color: #aaa;
 }
 #collapse-menu:hover #collapse-button {
        border-color: #aaa;
 }
+
 #collapse-button div {
        background: transparent url(../images/arrows.png) no-repeat 0 -72px;
 }
 #collapse-button div {
        background: transparent url(../images/arrows.png) no-repeat 0 -72px;
 }
+
 .folded #collapse-button div {
        background-position: 0 -108px;
 }
 
 .folded #collapse-button div {
        background-position: 0 -108px;
 }
 
+/* Auto-folding of the admin menu */
+@media only screen and (max-width: 900px) {
+       #adminmenu li.menu-top {
+               border-top-color: #f9f9f9;
+               border-bottom-color: #dfdfdf;
+       }
+
+       #adminmenu li.wp-has-current-submenu,
+       #adminmenu li.current.menu-top {
+               background-color: #777; /* Fallback */
+               background-image: -ms-linear-gradient(bottom, #6d6d6d, #808080); /* IE10 */
+               background-image: -moz-linear-gradient(bottom, #6d6d6d, #808080); /* Firefox */
+               background-image: -o-linear-gradient(bottom, #6d6d6d, #808080); /* Opera */
+               background-image: -webkit-gradient(linear, left bottom, left top, from(#6d6d6d), to(#808080)); /* old Webkit */
+               background-image: -webkit-linear-gradient(bottom, #6d6d6d, #808080); /* new Webkit */
+               background-image: linear-gradient(bottom, #6d6d6d, #808080); /* proposed W3C Markup */
+       }
+
+       #adminmenu li.menu-top li:hover a {
+               background-image: none;
+       }
+
+       #adminmenu li.wp-has-current-submenu,
+       #adminmenu li.current.menu-top {
+               border-top-color: #808080;
+               border-bottom-color: #6d6d6d;
+       }
+
+       #adminmenu .wp-has-current-submenu .wp-submenu-wrap {
+               -moz-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 );
+               -webkit-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 );
+               box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 );
+       }
+
+       #collapse-button div {
+               background-position: 0 -108px;
+       }
+}
+
 /* menu and screen icons */
 /* menu and screen icons */
+.icon16,
+.icon32,
+div.wp-menu-image {
+       background-color: transparent;
+       background-repeat: no-repeat;
+}
+
+.icon16.icon-dashboard,
+.menu-icon-dashboard div.wp-menu-image,
+.icon16.icon-post,
+.menu-icon-post div.wp-menu-image,
+.icon16.icon-media,
+.menu-icon-media div.wp-menu-image,
+.icon16.icon-links,
+.menu-icon-links div.wp-menu-image,
+.icon16.icon-page,
+.menu-icon-page div.wp-menu-image,
+.icon16.icon-comments,
+.menu-icon-comments div.wp-menu-image,
+.icon16.icon-appearance,
+.menu-icon-appearance div.wp-menu-image,
+.icon16.icon-plugins,
+.menu-icon-plugins div.wp-menu-image,
+.icon16.icon-users,
+.menu-icon-users div.wp-menu-image,
+.icon16.icon-tools,
+.menu-icon-tools div.wp-menu-image,
+.icon16.icon-settings,
+.menu-icon-settings div.wp-menu-image,
+.icon16.icon-site,
+.menu-icon-site div.wp-menu-image {
+       background-image: url('../images/menu.png?ver=20120201');
+}
+
 .icon16.icon-dashboard,
 #adminmenu .menu-icon-dashboard div.wp-menu-image {
 .icon16.icon-dashboard,
 #adminmenu .menu-icon-dashboard div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll -60px -33px;
+       background-position: -59px -33px;
 }
 
 #adminmenu .menu-icon-dashboard:hover div.wp-menu-image,
 #adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,
 #adminmenu .menu-icon-dashboard.current div.wp-menu-image {
 }
 
 #adminmenu .menu-icon-dashboard:hover div.wp-menu-image,
 #adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,
 #adminmenu .menu-icon-dashboard.current div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll -60px -1px;
+       background-position: -59px -1px;
 }
 
 .icon16.icon-post,
 #adminmenu .menu-icon-post div.wp-menu-image {
 }
 
 .icon16.icon-post,
 #adminmenu .menu-icon-post div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll -271px -33px;
+       background-position: -269px -33px;
 }
 
 #adminmenu .menu-icon-post:hover div.wp-menu-image,
 }
 
 #adminmenu .menu-icon-post:hover div.wp-menu-image,
-#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll -271px -1px;
+#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-post.current div.wp-menu-image {
+       background-position: -269px -1px;
 }
 
 .icon16.icon-media,
 #adminmenu .menu-icon-media div.wp-menu-image {
 }
 
 .icon16.icon-media,
 #adminmenu .menu-icon-media div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll -120px -33px;
+       background-position: -119px -33px;
 }
 
 #adminmenu .menu-icon-media:hover div.wp-menu-image,
 }
 
 #adminmenu .menu-icon-media:hover div.wp-menu-image,
-#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll -120px -1px;
+#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-media.current div.wp-menu-image {
+       background-position: -119px -1px;
 }
 
 .icon16.icon-links,
 #adminmenu .menu-icon-links div.wp-menu-image {
 }
 
 .icon16.icon-links,
 #adminmenu .menu-icon-links div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll -90px -33px;
+       background-position: -89px -33px;
 }
 
 #adminmenu .menu-icon-links:hover div.wp-menu-image,
 }
 
 #adminmenu .menu-icon-links:hover div.wp-menu-image,
-#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll -90px -1px;
+#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-links.current div.wp-menu-image {
+       background-position: -89px -1px;
 }
 
 .icon16.icon-page,
 #adminmenu .menu-icon-page div.wp-menu-image {
 }
 
 .icon16.icon-page,
 #adminmenu .menu-icon-page div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll -150px -33px;
+       background-position: -149px -33px;
 }
 
 #adminmenu .menu-icon-page:hover div.wp-menu-image,
 }
 
 #adminmenu .menu-icon-page:hover div.wp-menu-image,
-#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll -150px -1px;
+#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-page.current div.wp-menu-image {
+       background-position: -149px -1px;
 }
 
 .icon16.icon-comments,
 #adminmenu .menu-icon-comments div.wp-menu-image {
 }
 
 .icon16.icon-comments,
 #adminmenu .menu-icon-comments div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll -30px -33px;
+       background-position: -29px -33px;
 }
 
 #adminmenu .menu-icon-comments:hover div.wp-menu-image,
 #adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,
 #adminmenu .menu-icon-comments.current div.wp-menu-image {
 }
 
 #adminmenu .menu-icon-comments:hover div.wp-menu-image,
 #adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,
 #adminmenu .menu-icon-comments.current div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll -30px -1px;
+       background-position: -29px -1px;
 }
 
 .icon16.icon-appearance,
 #adminmenu .menu-icon-appearance div.wp-menu-image {
 }
 
 .icon16.icon-appearance,
 #adminmenu .menu-icon-appearance div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll 0 -33px;
+       background-position: 1px -33px;
 }
 
 #adminmenu .menu-icon-appearance:hover div.wp-menu-image,
 }
 
 #adminmenu .menu-icon-appearance:hover div.wp-menu-image,
-#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll 0 -1px;
+#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-appearance.current div.wp-menu-image {
+       background-position: 1px -1px;
 }
 
 .icon16.icon-plugins,
 #adminmenu .menu-icon-plugins div.wp-menu-image {
 }
 
 .icon16.icon-plugins,
 #adminmenu .menu-icon-plugins div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll -180px -33px;
+       background-position: -179px -33px;
 }
 
 #adminmenu .menu-icon-plugins:hover div.wp-menu-image,
 }
 
 #adminmenu .menu-icon-plugins:hover div.wp-menu-image,
-#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll -180px -1px;
+#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-plugins.current div.wp-menu-image {
+       background-position: -179px -1px;
 }
 
 .icon16.icon-users,
 #adminmenu .menu-icon-users div.wp-menu-image {
 }
 
 .icon16.icon-users,
 #adminmenu .menu-icon-users div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll -300px -33px;
+       background-position: -300px -33px;
 }
 
 #adminmenu .menu-icon-users:hover div.wp-menu-image,
 #adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,
 #adminmenu .menu-icon-users.current div.wp-menu-image {
 }
 
 #adminmenu .menu-icon-users:hover div.wp-menu-image,
 #adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,
 #adminmenu .menu-icon-users.current div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll -300px -1px;
+       background-position: -300px -1px;
 }
 
 .icon16.icon-tools,
 #adminmenu .menu-icon-tools div.wp-menu-image {
 }
 
 .icon16.icon-tools,
 #adminmenu .menu-icon-tools div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll -210px -33px;
+       background-position: -209px -33px;
 }
 
 #adminmenu .menu-icon-tools:hover div.wp-menu-image,
 #adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,
 #adminmenu .menu-icon-tools.current div.wp-menu-image {
 }
 
 #adminmenu .menu-icon-tools:hover div.wp-menu-image,
 #adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,
 #adminmenu .menu-icon-tools.current div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll -210px -1px;
+       background-position: -209px -1px;
 }
 
 .icon16.icon-settings,
 #adminmenu .menu-icon-settings div.wp-menu-image {
 }
 
 .icon16.icon-settings,
 #adminmenu .menu-icon-settings div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll -240px -33px;
+       background-position: -239px -33px;
 }
 
 #adminmenu .menu-icon-settings:hover div.wp-menu-image,
 }
 
 #adminmenu .menu-icon-settings:hover div.wp-menu-image,
-#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll -240px -1px;
+#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-settings.current div.wp-menu-image {
+       background-position: -239px -1px;
 }
 
 .icon16.icon-site,
 #adminmenu .menu-icon-site div.wp-menu-image {
 }
 
 .icon16.icon-site,
 #adminmenu .menu-icon-site div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll -360px -33px;
+       background-position: -359px -33px;
 }
 
 #adminmenu .menu-icon-site:hover div.wp-menu-image,
 }
 
 #adminmenu .menu-icon-site:hover div.wp-menu-image,
-#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image {
-       background: transparent url('../images/menu.png?ver=20111128') no-repeat scroll -360px -1px;
+#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image,
+#adminmenu .menu-icon-site.current div.wp-menu-image {
+       background-position: -359px -1px;
 }
 /* end menu and screen icons */
 
 /* Screen Icons */
 }
 /* end menu and screen icons */
 
 /* Screen Icons */
+.icon32.icon-post,
+#icon-edit,
+#icon-post,
+.icon32.icon-dashboard,
+#icon-index,
+.icon32.icon-media,
+#icon-upload,
+.icon32.icon-links,
+#icon-link-manager,
+#icon-link,
+#icon-link-category,
+.icon32.icon-page,
+#icon-edit-pages,
+#icon-page,
+.icon32.icon-comments,
+#icon-edit-comments,
+.icon32.icon-appearance,
+#icon-themes,
+.icon32.icon-plugins,
+#icon-plugins,
+.icon32.icon-users,
+#icon-users,
+#icon-profile,
+#icon-user-edit,
+.icon32.icon-tools,
+#icon-tools,
+#icon-admin,
+.icon32.icon-settings,
+#icon-options-general,
+.icon32.icon-site,
+#icon-ms-admin {
+       background-image: url(../images/icons32.png?ver=20111206);
+}
+
 .icon32.icon-post,
 #icon-edit,
 #icon-post {
 .icon32.icon-post,
 #icon-edit,
 #icon-post {
-       background: transparent url(../images/icons32.png?ver=20111206) no-repeat -552px -5px;
+       background-position: -552px -5px;
 }
 
 .icon32.icon-dashboard,
 #icon-index {
 }
 
 .icon32.icon-dashboard,
 #icon-index {
-       background: transparent url(../images/icons32.png?ver=20111206) no-repeat -137px -5px;
+       background-position: -137px -5px;
 }
 
 .icon32.icon-media,
 #icon-upload {
 }
 
 .icon32.icon-media,
 #icon-upload {
-       background: transparent url(../images/icons32.png?ver=20111206) no-repeat -251px -5px;
+       background-position: -251px -5px;
 }
 
 .icon32.icon-links,
 #icon-link-manager,
 #icon-link,
 #icon-link-category {
 }
 
 .icon32.icon-links,
 #icon-link-manager,
 #icon-link,
 #icon-link-category {
-       background: transparent url(../images/icons32.png?ver=20111206) no-repeat -190px -5px;
+       background-position: -190px -5px;
 }
 
 .icon32.icon-page,
 #icon-edit-pages,
 #icon-page {
 }
 
 .icon32.icon-page,
 #icon-edit-pages,
 #icon-page {
-       background: transparent url(../images/icons32.png?ver=20111206) no-repeat -312px -5px;
+       background-position: -312px -5px;
 }
 
 .icon32.icon-comments,
 #icon-edit-comments {
 }
 
 .icon32.icon-comments,
 #icon-edit-comments {
-       background: transparent url(../images/icons32.png?ver=20111206) no-repeat -72px -5px;
+       background-position: -72px -5px;
 }
 
 .icon32.icon-appearance,
 #icon-themes {
 }
 
 .icon32.icon-appearance,
 #icon-themes {
-       background: transparent url(../images/icons32.png?ver=20111206) no-repeat -11px -5px;
+       background-position: -11px -5px;
 }
 
 .icon32.icon-plugins,
 #icon-plugins {
 }
 
 .icon32.icon-plugins,
 #icon-plugins {
-       background: transparent url(../images/icons32.png?ver=20111206) no-repeat -370px -5px;
+       background-position: -370px -5px;
 }
 
 .icon32.icon-users,
 #icon-users,
 #icon-profile,
 #icon-user-edit {
 }
 
 .icon32.icon-users,
 #icon-users,
 #icon-profile,
 #icon-user-edit {
-       background: transparent url(../images/icons32.png?ver=20111206) no-repeat -600px -5px;
+       background-position: -600px -5px;
 }
 
 .icon32.icon-tools,
 #icon-tools,
 #icon-admin {
 }
 
 .icon32.icon-tools,
 #icon-tools,
 #icon-admin {
-       background: transparent url(../images/icons32.png?ver=20111206) no-repeat -432px -5px;
+       background-position: -432px -5px;
 }
 
 .icon32.icon-settings,
 #icon-options-general {
 }
 
 .icon32.icon-settings,
 #icon-options-general {
-       background: transparent url(../images/icons32.png?ver=20111206) no-repeat -492px -5px;
+       background-position: -492px -5px;
 }
 
 .icon32.icon-site,
 #icon-ms-admin {
 }
 
 .icon32.icon-site,
 #icon-ms-admin {
-       background: transparent url(../images/icons32.png?ver=20111206) no-repeat -659px -5px;
+       background-position: -659px -5px;
+}
+
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5) {
+       .icon32.icon-post,
+       #icon-edit,
+       #icon-post,
+       .icon32.icon-dashboard,
+       #icon-index,
+       .icon32.icon-media,
+       #icon-upload,
+       .icon32.icon-links,
+       #icon-link-manager,
+       #icon-link,
+       #icon-link-category,
+       .icon32.icon-page,
+       #icon-edit-pages,
+       #icon-page,
+       .icon32.icon-comments,
+       #icon-edit-comments,
+       .icon32.icon-appearance,
+       #icon-themes,
+       .icon32.icon-plugins,
+       #icon-plugins,
+       .icon32.icon-users,
+       #icon-users,
+       #icon-profile,
+       #icon-user-edit,
+       .icon32.icon-tools,
+       #icon-tools,
+       #icon-admin,
+       .icon32.icon-settings,
+       #icon-options-general,
+       .icon32.icon-site,
+       #icon-ms-admin {
+               background-image: url(../images/icons32-2x.png?ver=20120412);
+               background-size: 708px 45px;
+       }
+
+       .icon16.icon-dashboard,
+       .menu-icon-dashboard div.wp-menu-image,
+       .icon16.icon-post,
+       .menu-icon-post div.wp-menu-image,
+       .icon16.icon-media,
+       .menu-icon-media div.wp-menu-image,
+       .icon16.icon-links,
+       .menu-icon-links div.wp-menu-image,
+       .icon16.icon-page,
+       .menu-icon-page div.wp-menu-image,
+       .icon16.icon-comments,
+       .menu-icon-comments div.wp-menu-image,
+       .icon16.icon-appearance,
+       .menu-icon-appearance div.wp-menu-image,
+       .icon16.icon-plugins,
+       .menu-icon-plugins div.wp-menu-image,
+       .icon16.icon-users,
+       .menu-icon-users div.wp-menu-image,
+       .icon16.icon-tools,
+       .menu-icon-tools div.wp-menu-image,
+       .icon16.icon-settings,
+       .menu-icon-settings div.wp-menu-image,
+       .icon16.icon-site,
+       .menu-icon-site div.wp-menu-image {
+               background-image: url('../images/menu-2x.png?ver=20120412');
+               background-size: 390px 64px;
+       }
 }
 /* end screen icons */
 
 }
 /* end screen icons */
 
-
 /* Diff */
 table.diff .diff-deletedline {
        background-color: #fdd;
 /* Diff */
 table.diff .diff-deletedline {
        background-color: #fdd;
@@ -1342,25 +1542,6 @@ table.diff .diff-addedline ins {
 }
 
 /* Install Plugins */
 }
 
 /* Install Plugins */
-.star-average,
-.star.star-rating {
-       background-color: #fc0;
-}
-
-div.star.select:hover {
-       background-color: #d00;
-}
-
-div.star img {
-       border-left: 1px solid #fff;
-       border-right: 1px solid #fff;
-}
-
-.widefat div.star img {
-       border-left: 1px solid #f9f9f9;
-       border-right: 1px solid #f9f9f9;
-}
-
 #plugin-information .fyi ul {
        background-color: #eaf3fa;
 }
 #plugin-information .fyi ul {
        background-color: #eaf3fa;
 }
@@ -1469,7 +1650,7 @@ fieldset.inline-edit-col-right .inline-edit-col {
 }
 
 #post-body .misc-pub-section {
 }
 
 #post-body .misc-pub-section {
-       border-right-color: #eee;
+       border-left-color: #eee;
 }
 
 .post-com-count span {
 }
 
 .post-com-count span {
@@ -1517,20 +1698,8 @@ body.press-this ul.category-tabs li.tabs a {
        border-color: #DFDFDF;
 }
 
        border-color: #DFDFDF;
 }
 
-#theme-information .action-button {
-       border-top-color: #DFDFDF;
-}
-
-.theme-listing br.line {
-       border-bottom-color: #ccc;
-}
-
 div.widgets-sortables,
 div.widgets-sortables,
-#widgets-left .inactive {
-       background-color: #fcfcfc;
-       border-color: #dfdfdf;
-}
-
+#widgets-left .inactive,
 #available-widgets .widget-holder {
        background-color: #fcfcfc;
        border-color: #dfdfdf;
 #available-widgets .widget-holder {
        background-color: #fcfcfc;
        border-color: #dfdfdf;
@@ -1657,10 +1826,7 @@ div.widgets-sortables,
        color: #fff;
 }
 
        color: #fff;
 }
 
-.list-container {
-       border-color: #DFDFDF;
-}
-
+.list-container,
 .menu-item-handle {
        border-color: #dfdfdf;
 }
 .menu-item-handle {
        border-color: #dfdfdf;
 }
@@ -1735,25 +1901,9 @@ div.widgets-sortables,
        border-bottom-color: #f9f9f9;
 }
 
        border-bottom-color: #f9f9f9;
 }
 
-/* custom header & background pages */
 #upload-form label {
        color: #777;
 }
 #upload-form label {
        color: #777;
 }
-/* custom header & background pages */
-
-/* full screen */
-.fullscreen-overlay {
-       background: #fff;
-}
-
-.wp-fullscreen-focus #wp-fullscreen-title,
-.wp-fullscreen-focus #wp-fullscreen-container {
-       border-color: #ccc;
-}
-
-#fullscreen-topbar {
-       border-bottom-color: #DFDFDF;
-}
 
 /* Begin About Pages */
 
 
 /* Begin About Pages */
 
@@ -1797,11 +1947,11 @@ div.widgets-sortables,
 
 .about-wrap .feature-section img {
        background: #fff;
 
 .about-wrap .feature-section img {
        background: #fff;
-       border-color: #dfdfdf;
+       border: 1px #ccc solid;
 
 
-       -moz-box-shadow: 0 0 6px rgba( 0, 0, 0, 0.3 );
-       -webkit-box-shadow: 0 0 6px rgba( 0, 0, 0, 0.3 );
-       box-shadow: 0 0 6px rgba( 0, 0, 0, 0.3 );
+       -moz-box-shadow:    0 1px 3px rgba( 0, 0, 0, 0.3 );
+       -webkit-box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.3 );
+       box-shadow:         0 1px 3px rgba( 0, 0, 0, 0.3 );
 }
 
 .about-wrap h4.wp-people-group {
 }
 
 .about-wrap h4.wp-people-group {
@@ -1899,6 +2049,19 @@ div.widgets-sortables,
        background-position: 0 -72px;
 }
 
        background-position: 0 -72px;
 }
 
+/* Auto-folding of the admin menu for RTL */
+@media only screen and (max-width: 900px) {
+       .rtl #adminmenu .wp-has-current-submenu .wp-submenu-wrap{
+               -moz-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
+               -webkit-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
+               box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 );
+       }
+
+       .rtl #collapse-button div {
+               background-position: 0 -72px;
+       }
+}
+
 /* Edit Image */
 .rtl .meta-box-sortables .postbox:hover .handlediv {
        background: transparent url(../images/arrows.png) no-repeat 6px 7px;
 /* Edit Image */
 .rtl .meta-box-sortables .postbox:hover .handlediv {
        background: transparent url(../images/arrows.png) no-repeat 6px 7px;
diff --git a/wp-admin/css/customize-controls-rtl.css b/wp-admin/css/customize-controls-rtl.css
new file mode 100644 (file)
index 0000000..1b1830f
--- /dev/null
@@ -0,0 +1 @@
+.control-section .customize-section-title{font-family:Tahoma,Arial,sans-serif}.customize-section-title:after{right:auto;left:20px}#customize-header-actions .button-primary{float:left}#customize-header-actions img{float:left;margin-right:0;margin-left:4px}.customize-control{float:right}.customize-control-radio input,.customize-control-checkbox input{margin-right:0;margin-left:5px}.customize-section .dropdown{float:right}.customize-section .dropdown-content{float:right;margin-right:0;margin-left:16px;-webkit-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.customize-control .dropdown-arrow{right:auto;left:0;border-color:#ccc;border-style:solid;border-width:1px 0 1px 1px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.customize-control .dropdown-arrow:after{right:auto;left:4px}.customize-control-color .dropdown{margin-right:0;margin-left:5px}.customize-section input[type="text"].color-picker-hex,.customize-control-color .farbtastic-placeholder{float:right}.customize-section .customize-control-image .actions{text-align:left}.customize-control-image .library,.customize-control-image .actions,.customize-section .customize-control-image .library ul,.customize-section .customize-control-image .library li,.customize-section .customize-control-image .library-content{float:right}
\ No newline at end of file
diff --git a/wp-admin/css/customize-controls-rtl.dev.css b/wp-admin/css/customize-controls-rtl.dev.css
new file mode 100644 (file)
index 0000000..1852fd9
--- /dev/null
@@ -0,0 +1,86 @@
+.control-section .customize-section-title {
+       font-family: Tahoma, Arial, sans-serif;
+}
+.customize-section-title:after {
+       right: auto;
+       left: 20px;
+}
+
+#customize-header-actions .button-primary {
+       float: left;
+}
+
+#customize-header-actions img {
+       float: left;
+       margin-right: 0;
+       margin-left: 4px;
+}
+
+.customize-control {
+       float: right;
+}
+
+.customize-control-radio input,
+.customize-control-checkbox input {
+       margin-right: 0;
+       margin-left: 5px;
+}
+
+/*
+ * Dropdowns
+ */
+.customize-section .dropdown {
+       float: right;
+}
+
+.customize-section .dropdown-content {
+       float: right;
+       margin-right: 0px;
+       margin-left: 16px;
+       -webkit-border-radius: 0 3px 3px 0;
+       border-radius: 0 3px 3px 0;
+}
+
+.customize-control .dropdown-arrow {
+       right: auto;
+       left: 0;
+
+       border-color: #ccc;
+       border-style: solid;
+       border-width: 1px 0 1px 1px;
+       -webkit-border-radius: 3px 0 0 3px;
+       border-radius: 3px 0 0 3px;
+}
+
+.customize-control .dropdown-arrow:after {
+       right: auto;
+       left: 4px;
+}
+
+/*
+ * Color Picker
+ */
+.customize-control-color .dropdown {
+       margin-right: 0;
+       margin-left: 5px;
+}
+
+.customize-section input[type="text"].color-picker-hex,
+.customize-control-color .farbtastic-placeholder {
+       float: right;
+}
+
+/*
+ * Image Picker
+ */
+.customize-section .customize-control-image .actions {
+       text-align: left;
+}
+
+.customize-control-image .library,
+.customize-control-image .actions,
+.customize-section .customize-control-image .library ul,
+.customize-section .customize-control-image .library li,
+.customize-section .customize-control-image .library-content {
+       float: right;
+}
diff --git a/wp-admin/css/customize-controls.css b/wp-admin/css/customize-controls.css
new file mode 100644 (file)
index 0000000..9447cc3
--- /dev/null
@@ -0,0 +1 @@
+body{overflow:hidden}#customize-controls a{text-decoration:none}.customize-section{border-top:1px solid #fff;border-bottom:1px solid #dfdfdf;margin:0}.control-section.customize-section:hover,.control-section.customize-section.open{border-top-color:#808080}.control-section.customize-section:hover{border-bottom-color:#6d6d6d}.customize-section.open:hover{border-bottom-color:#dfdfdf}.customize-section:last-child{box-shadow:0 1px 0 0 #fff}.customize-section-title{margin:0;padding:15px 20px;position:relative;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.cannot-expand .customize-section-title{cursor:auto}.customize-section-content{display:none;padding:10px 20px 15px;overflow:hidden}.control-section .customize-section-title{padding:10px 20px;font-size:15px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-weight:normal;text-shadow:0 1px 0 #fff;background-color:#f5f5f5;background-image:-webkit-linear-gradient(top,#f5f5f5,#eee);background-image:-moz-linear-gradient(top,#f5f5f5,#eee);background-image:-ms-linear-gradient(top,#f5f5f5,#eee);background-image:-o-linear-gradient(top,#f5f5f5,#eee);background-image:linear-gradient(top,#f5f5f5,#eee)}.control-section:hover .customize-section-title,.control-section .customize-section-title:hover,.control-section.open .customize-section-title{color:#fff;text-shadow:0 -1px 0 #333;background-color:#808080;background-image:-webkit-linear-gradient(top,#808080,#6d6d6d);background-image:-moz-linear-gradient(top,#808080,#6d6d6d);background-image:-ms-linear-gradient(top,#808080,#6d6d6d);background-image:-o-linear-gradient(top,#808080,#6d6d6d);background-image:linear-gradient(top,#808080,#6d6d6d)}.control-section.open .customize-section-title{border-bottom:1px solid #6d6d6d}.customize-section.open .customize-section-content{display:block;background:#fdfdfd}.customize-section-title:after{content:'';width:0;height:0;border-color:#ccc transparent;border-style:solid;border-width:6px 6px 0;position:absolute;top:25px;right:20px;z-index:1}.cannot-expand .customize-section-title:after{display:none}.customize-section-title:hover:after{border-color:#aaa transparent}.control-section .customize-section-title:hover:after{border-color:#eee transparent}.control-section .customize-section-title:after{top:15px}#customize-info .customize-section-content{background:transparent}#customize-info .preview-notice{font-size:13px;line-height:24px;color:#999}#customize-info .theme-name{font-size:20px;font-weight:200;line-height:24px;color:#333;display:block;text-shadow:0 1px 0 #fff}#customize-info .theme-screenshot{width:258px;border:1px solid #ccc}#customize-info .theme-description{margin-top:1em;color:#777;line-height:20px}#customize-controls .submit{text-align:center}#customize-theme-controls>ul,#customize-theme-controls .customize-section-content{margin:0}#customize-header-actions .button-primary{float:right;margin-top:11px}#customize-header-actions img{display:none;float:right;margin-top:13px;margin-right:4px}.saving #customize-header-actions img{display:block}.customize-control{width:100%;float:left;clear:both;margin-bottom:8px}.customize-control-title{display:block;line-height:24px;font-weight:bold}.customize-control select,.customize-control input[type="text"],.customize-control input[type="radio"],.customize-control input[type="checkbox"],.customize-control-color .color-picker,.customize-control-checkbox label,.customize-control-upload div{line-height:28px}.customize-control input[type="text"]{width:98%;line-height:18px;margin:0}.customize-control select{min-width:50%;max-width:100%;height:28px;line-height:28px}.customize-control-checkbox input{margin-right:5px}.customize-control-radio{padding:5px 0 10px}.customize-control-radio .customize-control-title{margin-bottom:0;line-height:22px}.customize-control-radio label{line-height:20px}.customize-control-radio input{margin-right:5px}#customize-preview iframe{width:100%;height:100%}.customize-section .dropdown{float:left;display:block;position:relative;cursor:pointer;-webkit-border-radius:3px;border-radius:3px}.customize-section .dropdown-content{overflow:hidden;float:left;min-width:30px;height:16px;line-height:16px;margin-right:16px;padding:4px 5px;background-color:#eee;border:1px solid #ccc;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.customize-control .dropdown-arrow{position:absolute;top:0;bottom:0;right:0;width:15px;border-color:#ccc;border-style:solid;border-width:1px 1px 1px 0;-webkit-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.customize-control .dropdown-arrow:after{content:'';width:0;height:0;border-color:#ccc transparent;border-style:solid;border-width:4px 4px 0 4px;position:absolute;top:50%;margin-top:-1px;right:4px;z-index:1}.customize-section .dropdown:hover .dropdown-content,.customize-control .dropdown:hover .dropdown-arrow{border-color:#aaa}.customize-section .dropdown:hover .dropdown-arrow:after{border-color:#aaa transparent}.customize-control .dropdown-status{display:none;max-width:112px;color:#777}.customize-control-color .color-picker-hex,.customize-control-color .farbtastic-placeholder{display:none}.customize-control-color.open .color-picker-hex,.customize-control-color.open .farbtastic-placeholder{display:block}.customize-control-color .dropdown{margin-right:5px;margin-bottom:5px}.customize-control-color .dropdown .dropdown-content{background-color:#fff;border:1px solid rgba(0,0,0,0.15)}.customize-control-color .dropdown:hover .dropdown-content{border-color:rgba(0,0,0,0.25)}.customize-section input[type="text"].color-picker-hex{float:left;width:85px;font-family:monospace;text-align:center}.customize-section input[type="text"].color-picker-hex:focus::-webkit-input-placeholder{color:transparent}.customize-section input[type="text"].color-picker-hex:-moz-placeholder{color:#999}.customize-control-color .farbtastic-placeholder{width:100%;margin:5px 0 10px;float:left}.customize-control-color .farbtastic{margin:0 auto}.customize-control-image .library,.customize-control-image .actions{display:none;float:left;width:100%}.customize-control-image.open .library,.customize-control-image.open .actions{display:block}.customize-section .customize-control-image .dropdown-content{height:auto;min-height:24px;min-width:40px;padding:0}.customize-section .customize-control-image .dropdown-status{padding:4px 5px}.customize-section .customize-control-image .preview-thumbnail img{display:block;width:100%;max-width:122px;max-height:98px;margin:0 auto}.customize-section .customize-control-image .actions{text-align:right}.customize-section .customize-control-image .library ul{border-bottom:1px solid #dfdfdf;float:left;width:100%;margin:10px 0 0}.customize-section .customize-control-image .library li{color:#999;float:left;padding:3px 5px;margin:0;border-style:solid;border-color:transparent;border-width:1px 1px 0 1px}.customize-section .customize-control-image .library li.library-selected{margin-bottom:-1px;padding-bottom:4px;color:#777;background:#fdfdfd;border-color:#dfdfdf;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.customize-section .customize-control-image .library-content{display:none;width:100%;float:left;padding:10px 0}.customize-section .customize-control-image .library-content.library-selected{display:block}.customize-section .customize-control-image .library .thumbnail{display:block;width:100%}.customize-section .customize-control-image .library .thumbnail:hover img{border-color:#21759b}.customize-section .customize-control-image .library .thumbnail img{display:block;max-width:90%;max-height:80px;margin:5px auto;padding:4px;background:#fff;border:1px solid #dfdfdf}.customize-section .customize-control-upload .upload-fallback,.customize-section .customize-control-image .upload-fallback{display:none}.customize-section .customize-control-upload .upload-dropzone,.customize-section .customize-control-image .upload-dropzone{display:none;padding:15px 10px;border:3px dashed #dfdfdf;margin:5px auto;text-align:center;color:#777;position:relative;cursor:default}.customize-section .customize-control-upload .upload-dropzone.supports-drag-drop,.customize-section .customize-control-image .upload-dropzone.supports-drag-drop{display:block;-webkit-transition:border-color .1s;-moz-transition:border-color .1s;-ms-transition:border-color .1s;-o-transition:border-color .1s;transition:border-color .1s}.customize-section .customize-control-upload .library ul li,.customize-section .customize-control-image .library ul li{cursor:pointer}.customize-section .customize-control-upload .upload-dropzone.supports-drag-drop.drag-over,.customize-section .customize-control-image .upload-dropzone.supports-drag-drop.drag-over{border-color:#83b4d8}.ios .wp-full-overlay{position:relative}.ios #customize-preview{position:relative}.ios #customize-controls .wp-full-overlay-sidebar-content{-webkit-overflow-scrolling:touch}body.cheatin{min-width:0;background:#f9f9f9;padding:50px}body.cheatin p{max-width:700px;margin:0 auto;padding:2em;font-size:14px;background:#fff;border:1px solid #dfdfdf;-webkit-border-radius:3px;border-radius:3px}
\ No newline at end of file
diff --git a/wp-admin/css/customize-controls.dev.css b/wp-admin/css/customize-controls.dev.css
new file mode 100644 (file)
index 0000000..908caa2
--- /dev/null
@@ -0,0 +1,537 @@
+body {
+       overflow: hidden;
+}
+
+#customize-controls a {
+       text-decoration: none;
+}
+
+.customize-section {
+       border-top: 1px solid #fff;
+       border-bottom: 1px solid #dfdfdf;
+       margin: 0;
+}
+
+.control-section.customize-section:hover,
+.control-section.customize-section.open {
+       border-top-color: #808080;
+}
+
+.control-section.customize-section:hover {
+       border-bottom-color: #6d6d6d;
+}
+
+.customize-section.open:hover {
+       border-bottom-color: #dfdfdf;
+}
+
+.customize-section:last-child {
+       box-shadow: 0 1px 0 0px #fff;
+}
+
+.customize-section-title {
+       margin: 0;
+       padding: 15px 20px;
+       position: relative;
+
+       cursor: pointer;
+
+       -webkit-user-select: none;
+       -moz-user-select: none;
+       user-select: none;
+}
+
+.cannot-expand .customize-section-title {
+       cursor: auto;
+}
+
+.customize-section-content {
+       display: none;
+       padding: 10px 20px 15px;
+       overflow: hidden;
+}
+
+.control-section .customize-section-title {
+       padding: 10px 20px;
+       font-size: 15px;
+       font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
+       font-weight: normal;
+       text-shadow: 0 1px 0 #fff;
+
+       background-color: #f5f5f5;
+       background-image: -webkit-linear-gradient( top, #f5f5f5, #eee );
+       background-image:    -moz-linear-gradient( top, #f5f5f5, #eee );
+       background-image:     -ms-linear-gradient( top, #f5f5f5, #eee );
+       background-image:      -o-linear-gradient( top, #f5f5f5, #eee );
+       background-image:         linear-gradient( top, #f5f5f5, #eee );
+}
+
+.control-section:hover .customize-section-title,
+.control-section .customize-section-title:hover,
+.control-section.open .customize-section-title {
+       color: #fff;
+       text-shadow: 0 -1px 0 #333;
+       background-color: #808080;
+       background-image: -webkit-linear-gradient( top, #808080, #6d6d6d );
+       background-image:    -moz-linear-gradient( top, #808080, #6d6d6d );
+       background-image:     -ms-linear-gradient( top, #808080, #6d6d6d );
+       background-image:      -o-linear-gradient( top, #808080, #6d6d6d );
+       background-image:         linear-gradient( top, #808080, #6d6d6d );
+}
+
+.control-section.open .customize-section-title {
+       border-bottom: 1px solid #6d6d6d;
+}
+
+.customize-section.open .customize-section-content {
+       display: block;
+       background: #fdfdfd;
+}
+
+.customize-section-title:after {
+       content: '';
+       width: 0;
+       height: 0;
+       border-color: #ccc transparent;
+       border-style: solid;
+       border-width: 6px 6px 0;
+       position: absolute;
+       top: 25px;
+       right: 20px;
+       z-index: 1;
+}
+
+.cannot-expand .customize-section-title:after {
+       display: none;
+}
+
+.customize-section-title:hover:after {
+       border-color: #aaa transparent;
+}
+
+.control-section .customize-section-title:hover:after {
+       border-color: #eee transparent;
+}
+
+.control-section .customize-section-title:after {
+       top: 15px;
+}
+
+#customize-info .customize-section-content {
+       background: transparent;
+}
+
+#customize-info .preview-notice {
+       font-size: 13px;
+       line-height: 24px;
+       color: #999;
+}
+
+#customize-info .theme-name {
+       font-size: 20px;
+       font-weight: 200;
+       line-height: 24px;
+       color: #333;
+       display: block;
+       text-shadow: 0 1px 0 #fff;
+}
+
+#customize-info .theme-screenshot {
+       width: 258px;
+       border: 1px solid #ccc;
+}
+
+#customize-info .theme-description {
+       margin-top: 1em;
+       color: #777;
+       line-height: 20px;
+}
+
+#customize-controls .submit {
+       text-align: center;
+}
+
+#customize-theme-controls > ul,
+#customize-theme-controls .customize-section-content {
+       margin: 0;
+}
+
+#customize-header-actions .button-primary {
+       float: right;
+       margin-top: 11px;
+}
+
+#customize-header-actions img {
+       display: none;
+       float: right;
+       margin-top: 13px;
+       margin-right: 4px;
+}
+
+.saving #customize-header-actions img {
+       display: block;
+}
+
+.customize-control {
+       width: 100%;
+       float: left;
+       clear: both;
+       margin-bottom: 8px;
+}
+
+.customize-control-title {
+       display: block;
+       line-height: 24px;
+       font-weight: bold;
+}
+
+.customize-control select,
+.customize-control input[type="text"],
+.customize-control input[type="radio"],
+.customize-control input[type="checkbox"],
+.customize-control-color .color-picker,
+.customize-control-checkbox label,
+.customize-control-upload div {
+       line-height: 28px;
+}
+
+.customize-control input[type="text"] {
+       width: 98%;
+       line-height: 18px;
+       margin: 0;
+}
+
+.customize-control select {
+       min-width: 50%;
+       max-width: 100%;
+       height: 28px;
+       line-height: 28px;
+}
+
+.customize-control-checkbox input {
+       margin-right: 5px;
+}
+
+.customize-control-radio {
+       padding: 5px 0 10px;
+}
+
+.customize-control-radio .customize-control-title {
+       margin-bottom: 0;
+       line-height: 22px;
+}
+
+.customize-control-radio label {
+       line-height: 20px;
+}
+
+.customize-control-radio input {
+       margin-right: 5px;
+}
+
+#customize-preview iframe {
+       width: 100%;
+       height: 100%;
+}
+
+/*
+ * Style for custom settings
+ */
+
+/*
+ * Dropdowns
+ */
+.customize-section .dropdown {
+       float: left;
+       display: block;
+       position: relative;
+       cursor: pointer;
+
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+}
+
+.customize-section .dropdown-content {
+       overflow: hidden;
+       float: left;
+       min-width: 30px;
+       height: 16px;
+       line-height: 16px;
+       margin-right: 16px;
+       padding: 4px 5px;
+       background-color: #eee;
+       border: 1px solid #ccc;
+       -webkit-border-radius: 3px 0 0 3px;
+       border-radius: 3px 0 0 3px;
+
+       -webkit-user-select: none;
+       -moz-user-select: none;
+       user-select: none;
+}
+
+.customize-control .dropdown-arrow {
+       position: absolute;
+       top: 0;
+       bottom: 0;
+       right: 0;
+       width: 15px;
+
+       border-color: #ccc;
+       border-style: solid;
+       border-width: 1px 1px 1px 0;
+       -webkit-border-radius: 0 3px 3px 0;
+       border-radius: 0 3px 3px 0;
+}
+
+.customize-control .dropdown-arrow:after {
+       content: '';
+       width: 0;
+       height: 0;
+       border-color: #ccc transparent;
+       border-style: solid;
+       border-width: 4px 4px 0 4px;
+       position: absolute;
+       top: 50%;
+       margin-top: -1px;
+       right: 4px;
+       z-index: 1;
+}
+
+.customize-section .dropdown:hover .dropdown-content,
+.customize-control .dropdown:hover .dropdown-arrow {
+       border-color: #aaa;
+}
+
+.customize-section .dropdown:hover .dropdown-arrow:after {
+       border-color: #aaa transparent;
+}
+
+.customize-control .dropdown-status {
+       display: none;
+       max-width: 112px;
+       color: #777;
+}
+
+/*
+ * Color Picker
+ */
+.customize-control-color .color-picker-hex,
+.customize-control-color .farbtastic-placeholder {
+       display: none;
+}
+
+.customize-control-color.open .color-picker-hex,
+.customize-control-color.open .farbtastic-placeholder {
+       display: block;
+}
+
+.customize-control-color .dropdown {
+       margin-right: 5px;
+       margin-bottom: 5px;
+}
+
+.customize-control-color .dropdown .dropdown-content {
+       background-color: #fff;
+       border: 1px solid rgba( 0, 0, 0, 0.15 );
+}
+
+.customize-control-color .dropdown:hover .dropdown-content {
+       border-color: rgba( 0, 0, 0, 0.25 );
+}
+
+.customize-section input[type="text"].color-picker-hex {
+       float: left;
+       width: 85px;
+       font-family: monospace;
+       text-align: center;
+}
+
+/* The centered cursor overlaps the placeholder in webkit. Hide it when selected. */
+.customize-section input[type="text"].color-picker-hex:focus::-webkit-input-placeholder {
+       color: transparent;
+}
+.customize-section input[type="text"].color-picker-hex:-moz-placeholder {
+       color: #999;
+}
+
+.customize-control-color .farbtastic-placeholder {
+       width: 100%;
+       margin: 5px 0 10px;
+       float: left;
+}
+
+.customize-control-color .farbtastic {
+       margin: 0 auto;
+}
+
+/*
+ * Image Picker
+ */
+.customize-control-image .library,
+.customize-control-image .actions {
+       display: none;
+       float: left;
+       width: 100%;
+}
+
+.customize-control-image.open .library,
+.customize-control-image.open .actions {
+       display: block;
+}
+
+.customize-section .customize-control-image .dropdown-content {
+       height: auto;
+       min-height: 24px;
+       min-width: 40px;
+       padding: 0;
+}
+
+.customize-section .customize-control-image .dropdown-status {
+       padding: 4px 5px;
+}
+
+.customize-section .customize-control-image .preview-thumbnail img {
+       display: block;
+       width: 100%;
+       max-width: 122px;
+       max-height: 98px;
+       margin: 0 auto;
+}
+
+.customize-section .customize-control-image .actions {
+       text-align: right;
+}
+
+.customize-section .customize-control-image .library ul {
+       border-bottom: 1px solid #dfdfdf;
+       float: left;
+       width: 100%;
+       margin: 10px 0 0;
+}
+
+.customize-section .customize-control-image .library li {
+       color: #999;
+       float: left;
+       padding: 3px 5px;
+       margin: 0;
+       border-style: solid;
+       border-color: transparent;
+       border-width: 1px 1px 0 1px;
+}
+
+.customize-section .customize-control-image .library li.library-selected {
+       margin-bottom: -1px;
+       padding-bottom: 4px;
+
+       color: #777;
+       background: #fdfdfd;
+       border-color: #dfdfdf;
+       -webkit-border-radius: 3px 3px 0 0;
+       border-radius: 3px 3px 0 0 ;
+}
+
+.customize-section .customize-control-image .library-content {
+       display: none;
+       width: 100%;
+       float: left;
+       padding: 10px 0;
+}
+
+.customize-section .customize-control-image .library-content.library-selected {
+       display: block;
+}
+
+.customize-section .customize-control-image .library .thumbnail {
+       display: block;
+       width: 100%;
+}
+
+.customize-section .customize-control-image .library .thumbnail:hover img {
+       border-color: #21759b;
+}
+
+.customize-section .customize-control-image .library .thumbnail img {
+       display: block;
+       max-width: 90%;
+       max-height: 80px;
+
+       margin: 5px auto;
+       padding: 4px;
+       background: #fff;
+       border: 1px solid #dfdfdf;
+}
+
+.customize-section .customize-control-upload .upload-fallback,
+.customize-section .customize-control-image .upload-fallback {
+       display: none;
+}
+
+.customize-section .customize-control-upload .upload-dropzone,
+.customize-section .customize-control-image .upload-dropzone {
+       display: none;
+       padding: 15px 10px;
+       border: 3px dashed #dfdfdf;
+       margin: 5px auto;
+       text-align: center;
+       color: #777;
+       position: relative;
+       cursor: default;
+}
+
+.customize-section .customize-control-upload .upload-dropzone.supports-drag-drop,
+.customize-section .customize-control-image .upload-dropzone.supports-drag-drop {
+       display: block;
+       -webkit-transition: border-color 0.1s;
+       -moz-transition:    border-color 0.1s;
+       -ms-transition:     border-color 0.1s;
+       -o-transition:      border-color 0.1s;
+       transition:         border-color 0.1s;
+}
+
+.customize-section .customize-control-upload .library ul li,
+.customize-section .customize-control-image .library ul li {
+       cursor: pointer;
+}
+
+.customize-section .customize-control-upload .upload-dropzone.supports-drag-drop.drag-over,
+.customize-section .customize-control-image .upload-dropzone.supports-drag-drop.drag-over {
+       border-color: #83b4d8;
+}
+
+/**
+ * iOS can't scroll iframes,
+ * instead it expands the iframe size to match the size of the content
+ */
+.ios .wp-full-overlay {
+       position: relative;
+}
+
+.ios #customize-preview {
+       position: relative;
+}
+
+.ios #customize-controls .wp-full-overlay-sidebar-content {
+       -webkit-overflow-scrolling: touch;
+}
+
+/**
+ * Handle cheaters.
+ */
+body.cheatin {
+       min-width: 0;
+       background: #f9f9f9;
+       padding: 50px;
+}
+
+body.cheatin p {
+       max-width: 700px;
+       margin: 0 auto;
+       padding: 2em;
+       font-size: 14px;
+
+       background: #fff;
+       border: 1px solid #dfdfdf;
+
+       -webkit-border-radius: 3px;
+       border-radius:         3px;
+}
\ No newline at end of file
index 1022b71a1fe39713b4564b9961574bfaf84898f7..ef1129c0deab0f4731b2a88981c60b5e27778d7a 100644 (file)
@@ -40,7 +40,6 @@
   background: url(../images/marker.png) no-repeat;
 }
 
   background: url(../images/marker.png) no-repeat;
 }
 
-
 /* farbtastic-rtl */
 .rtl .farbtastic .color,
 .rtl .farbtastic .overlay {
 /* farbtastic-rtl */
 .rtl .farbtastic .color,
 .rtl .farbtastic .overlay {
@@ -51,5 +50,3 @@
 .rtl .farbtastic .marker {
        margin: -8px -8px 0 0;
 }
 .rtl .farbtastic .marker {
        margin: -8px -8px 0 0;
 }
-
-
index 274306d2234046d3ea932077c20b67232ea80f50..47dd4e5bd88e8238aec83f18f863ac6e231ece24 100644 (file)
@@ -1 +1 @@
-body{direction:rtl;width:99.5%;}.rtl #adminmenuback{left:auto;right:0;background-image:none;}.rtl #adminmenuback,.rtl #adminmenuwrap{border-width:0 0 0 1px;}#plupload-upload-ui{zoom:1;}.post-com-count-wrapper a.post-com-count{float:none;}#adminmenu .wp-submenu ul{width:99%;}#adminmenu .wp-submenu .wp-submenu .wp-submenu-wrap,#adminmenu .wp-menu-open .wp-submenu .wp-submenu-wrap{border:1px solid #dfdfdf;}.folded #adminmenu .wp-submenu{right:30px;top:-4px;}#adminmenu .wp-submenu .wp-submenu-head{padding:6px 10px 6px 4px;}#adminmenu .wp-menu-arrow{display:none!important;}#wpcontent #adminmenu .wp-submenu li.wp-submenu-head{padding:3px 10px 4px 4px;}div.quicktags-toolbar input{min-width:0;}.inline-edit-row fieldset label span.title{float:right;}.inline-edit-row fieldset label span.input-text-wrap{margin-right:0;}p.search-box{float:left;}#bh{margin:7px 10px 0 0;float:left;}.postbox div.inside,.wp-editor-wrap .wp-editor-container .wp-editor-area,#nav-menu-theme-locations .howto select{width:97.5%;}div#dashboard-widgets{padding-right:0;padding-left:1px;}#dashboard_quick_press h4{text-align:right;}.tagchecklist span a{margin:4px -9px 0 0;}.widefat th input{margin:0 5px 0 0;}#TB_window{width:670px;position:absolute;top:50%;left:50%;margin-right:335px!important;}#dashboard_plugins{direction:ltr;}#dashboard_plugins h3.hndle{direction:rtl;}#dashboard_incoming_links ul li,#dashboard_secondary ul li,#dashboard_primary ul li,p.row-actions{width:100%;}#post-status-info{height:25px;}p.submit{height:22px;}.inner-sidebar{position:static;}form#widgets-filter{position:static;}.menu-item-depth-0{margin-left:0;}.menu-item-depth-1{margin-left:-30px;}.menu-item-depth-2{margin-left:-60px;}.menu-item-depth-3{margin-left:-90px;}.menu-item-depth-4{margin-left:-120px;}.menu-item-depth-5{margin-left:-150px;}.menu-item-depth-6{margin-left:-180px;}.menu-item-depth-7{margin-left:-210px;}.menu-item-depth-8{margin-left:-240px;}.menu-item-depth-9{margin-left:-270px;}.menu-item-depth-10{margin-left:-300px;}.menu-item-depth-11{margin-left:-330px;}#menu-management,.nav-menus-php .menu-edit,#nav-menu-header .submitbox{zoom:1;}.nav-menus-php label{max-width:90%!important;}p.button-controls,.nav-menus-php .tabs-panel{max-width:90%;}.nav-menus-php .major-publishing-actions .publishing-action{float:none;}#wpbody #nav-menu-header label{float:none;}#nav-menu-header{margin-top:-10px;}#nav-menu-footer{margin-bottom:-20px;}#update-nav-menu .publishing-action{max-width:200px;}#nav-menus-frame #update-nav-menu .delete-action{margin-top:-25px;float:left;}#menu-to-edit li{margin-top:-10px;margin-bottom:-10px;}.sortable-placeholder{margin-top:0!important;margin-left:0!important;margin-bottom:13px!important;padding:0!important;}.auto-add-pages{clear:both;float:none;}#nav-menus-frame .open-label span{float:none;display:inline-block;}#nav-menus-frame .delete-action{float:none;}
\ No newline at end of file
+body{direction:rtl;width:99.5%}.rtl #adminmenuback{left:auto;right:0;background-image:none}.rtl #adminmenuback,.rtl #adminmenuwrap{border-width:0 0 0 1px}#plupload-upload-ui{zoom:1}.post-com-count-wrapper a.post-com-count{float:none}#adminmenu .wp-submenu ul{width:99%}#adminmenu .wp-submenu .wp-submenu .wp-submenu-wrap,#adminmenu .wp-menu-open .wp-submenu .wp-submenu-wrap{border:1px solid #dfdfdf}.folded #adminmenu .wp-submenu{right:30px;top:-4px}#adminmenu .wp-submenu .wp-submenu-head{padding:6px 10px 6px 4px}#adminmenu .wp-menu-arrow{display:none!important}#wpcontent #adminmenu .wp-submenu li.wp-submenu-head{padding:3px 10px 4px 4px}div.quicktags-toolbar input{min-width:0}.inline-edit-row fieldset label span.title{float:right}.inline-edit-row fieldset label span.input-text-wrap{margin-right:0}p.search-box{float:left}#bh{margin:7px 10px 0 0;float:left}.postbox div.inside,.wp-editor-wrap .wp-editor-container .wp-editor-area,#nav-menu-theme-locations .howto select{width:97.5%}div#dashboard-widgets{padding-right:0;padding-left:1px}#dashboard_quick_press h4{text-align:right}.tagchecklist span a{margin:4px -9px 0 0}.widefat th input{margin:0 5px 0 0}#TB_window{width:670px;position:absolute;top:50%;left:50%;margin-right:335px!important}#dashboard_plugins{direction:ltr}#dashboard_plugins h3.hndle{direction:rtl}#dashboard_incoming_links ul li,#dashboard_secondary ul li,#dashboard_primary ul li,p.row-actions{width:100%}#post-status-info{height:25px}p.submit{height:22px}form#widgets-filter{position:static}.menu-item-depth-0{margin-left:0}.menu-item-depth-1{margin-left:-30px}.menu-item-depth-2{margin-left:-60px}.menu-item-depth-3{margin-left:-90px}.menu-item-depth-4{margin-left:-120px}.menu-item-depth-5{margin-left:-150px}.menu-item-depth-6{margin-left:-180px}.menu-item-depth-7{margin-left:-210px}.menu-item-depth-8{margin-left:-240px}.menu-item-depth-9{margin-left:-270px}.menu-item-depth-10{margin-left:-300px}.menu-item-depth-11{margin-left:-330px}#menu-management,.nav-menus-php .menu-edit,#nav-menu-header .submitbox{zoom:1}.nav-menus-php label{max-width:90%!important}p.button-controls,.nav-menus-php .tabs-panel{max-width:90%}.nav-menus-php .major-publishing-actions .publishing-action{float:none}#wpbody #nav-menu-header label{float:none}#nav-menu-header{margin-top:-10px}#nav-menu-footer{margin-bottom:-20px}#update-nav-menu .publishing-action{max-width:200px}#nav-menus-frame #update-nav-menu .delete-action{margin-top:-25px;float:left}#menu-to-edit li{margin-top:-10px;margin-bottom:-10px}.sortable-placeholder{margin-top:0!important;margin-left:0!important;margin-bottom:13px!important;padding:0!important}.auto-add-pages{clear:both;float:none}#nav-menus-frame .open-label span{float:none;display:inline-block}#nav-menus-frame .delete-action{float:none}
\ No newline at end of file
index 78417d7de1ac162cce2c541a8ae0018e4f411389..16357de52242423234ed418d4e53a394c23640ee 100644 (file)
@@ -126,10 +126,6 @@ p.submit { /* quick edit and reply in edit-comments.php */
        height:22px;
 }
 
        height:22px;
 }
 
-.inner-sidebar { /* fix edit single comment */
-       position: static;
-}
-
 form#widgets-filter { /* fix widget page */
        position: static;
 }
 form#widgets-filter { /* fix widget page */
        position: static;
 }
@@ -241,4 +237,3 @@ p.button-controls,
 #nav-menus-frame .delete-action {
        float: none;
 }
 #nav-menus-frame .delete-action {
        float: none;
 }
-
index d8c9a5e017ea8a77b0d756eef64709196e50b996..ec4709cd42c89058de1c6ca0effe6a87cee4fd0f 100644 (file)
@@ -1 +1 @@
-.welcome-panel .wp-badge{position:absolute;}.welcome-panel .welcome-panel-column{margin:0 -25px 0 4%;}#wp-fullscreen-title{width:97%;}#wp_mce_fullscreen_ifr{background-color:#f9f9f9;}#wp-fullscreen-tagline{color:#888;font-size:14px;}#adminmenushadow{display:none;}#adminmenuback{left:0;background-image:none;}#adminmenuwrap{position:static;}#adminmenu{position:relative;}#adminmenu li.wp-menu-separator,#adminmenu li.wp-menu-separator-last{font-size:1px;line-height:1;}#adminmenu a.menu-top{border-bottom:0 none;border-top:1px solid #ddd;}#adminmenu .separator{font-size:1px;line-height:1px;}#adminmenu .wp-submenu ul{margin:0;}.folded #adminmenu .wp-submenu ul{margin-left:5px;}#adminmenu li.menu-top{margin-bottom:-2px;}#adminmenu li.wp-not-current-submenu:hover .wp-menu-arrow{display:none;}#wpcontent #adminmenu .wp-submenu li.wp-submenu-head{padding:3px 4px 4px 10px;zoom:100%;}.js.folded #adminmenu .menu-top{height:30px;}.js.folded #adminmenu .wp-submenu{margin:-1px 0 0 0;}.js.folded #adminmenu li.menu-top{display:block;zoom:100%;}ul#adminmenu{z-index:99;}#adminmenu li.menu-top a.menu-top{min-width:auto;width:auto;}#wpcontent #adminmenu li.wp-has-current-submenu a.wp-has-submenu{font-style:normal;}#wpcontent #adminmenu .wp-submenu li{padding:0;}#collapse-menu{line-height:23px;}#wpadminbar .ab-comments-icon{padding-top:7px;}table.fixed th,table.fixed td{border-top:1px solid #ddd;}#wpbody-content input.button,#wpbody-content input.button-primary,#wpbody-content input.button-secondary,#wpbody-content input.button-highlighted{overflow:visible;}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:none;}#dashboard-widgets h3 a{height:14px;line-height:14px;}#dashboard_browser_nag{color:#fff;}#dashboard_browser_nag .browser-icon{position:relative;}.tablenav-pages .current-page{vertical-align:middle;}#wpbody-content .postbox{border:1px solid #dfdfdf;}#wpbody-content .postbox h3{margin-bottom:-1px;}.major-publishing-actions,.wp-submenu,.wp-submenu li,.wp-menu-toggle,#template,#template div,#editcat,#addcat{zoom:100%;}.wp-menu-arrow{height:28px;}.submitbox{margin-top:10px;}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:39%;}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:19%;}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:49%;}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:29%;}.inline-edit-row p.submit{zoom:100%;}.inline-edit-row fieldset label span.title{display:block;float:left;width:5em;}.inline-edit-row fieldset label span.input-text-wrap{margin-left:0;zoom:100%;}#wpbody-content .inline-edit-row fieldset label span.input-text-wrap input{line-height:130%;}#wpbody-content .inline-edit-row .input-text-wrap input{width:95%;}#wpbody-content .inline-edit-row .input-text-wrap input.inline-edit-password-input{width:8em;}#titlediv #title{width:98%;}a.button{line-height:1.4em;margin:1px;padding:2px 6px;}#screen-options-wrap{overflow:hidden;}#the-comment-list .comment-item,#post-status-info,#wpwrap,#wrap,#postdivrich,#postdiv,#poststuff,.metabox-holder,#titlediv,#post-body,#editorcontainer,.tablenav,.widget-liquid-left,.widget-liquid-right,#widgets-left,.widgets-sortables,#dragHelper,.widget .widget-top,.widget,.widget-control-actions,.tagchecklist,#col-container,#col-left,#col-right,.fileedit-sub{display:block;zoom:100%;}p.search-box{position:static;float:right;margin:-3px 0 4px;}#editorcontainer #content{overflow:auto;margin:auto;width:98%;}form#template div{width:100%;}#ed_toolbar input,#ed_reply_toolbar input{overflow:visible;padding:0 4px;}#poststuff h2{font-size:1.6em;}#bh{margin:7px 10px 0 0;float:right;}div#dashboard-widgets{padding-right:1px;}.tagchecklist span,.tagchecklist span a{display:inline-block;display:block;}.tagchecklist span a{margin:4px 0 0 -9px;}.tablenav .button-secondary,.nav .button-secondary{padding-top:2px;padding-bottom:2px;}.tablenav select{font-size:13px;display:inline-block;vertical-align:top;margin-top:2px;}.tablenav .actions select{width:155px;}table.ie-fixed{table-layout:fixed;}.widefat tr,.widefat th{margin-bottom:0;border-spacing:0;}.widefat th input{margin:0 0 0 5px;}.widefat .check-column{padding:6px 0 2px;}.widefat tbody th.check-column{padding:4px 0 22px;}.widefat{empty-cells:show;border-collapse:collapse;}.tablenav a.button-secondary{display:inline-block;padding:2px 5px;}.inactive-sidebar .widgets-sortables{padding-bottom:8px;}#available-widgets .widget-holder{padding-bottom:65px;}#widgets-left .inactive{padding-bottom:10px;}.widget-liquid-right .widget,.inactive-sidebar .widget{position:relative;}#wpcontent .button-primary-disabled{color:#9FD0D5;background:#298CBA;}#wpcontent #ajax-loading,#wpcontent .ajax-loading{vertical-align:baseline;}#the-comment-list .unapproved tr,#the-comment-list .unapproved td{background-color:#ffffe0;}.imgedit-submit{width:300px;}#nav-menus-frame,#wpbody,.menu li{zoom:100%;}#update-nav-menu #post-body{overflow:hidden;}.menu li{min-width:100%;}.menu li.sortable-placeholder{min-width:400px;}.about-wrap img.element-screenshot{padding:2px;}.about-wrap .feature-section img,.about-wrap .feature-section .image-mask{border-width:1px;border-style:solid;}.about-wrap .feature-section.three-col img{margin-left:0;}* html .row-actions{visibility:visible;}* html div.widget-liquid-left,* html div.widget-liquid-right{display:block;position:relative;}* html #editorcontainer{padding:0;}* html #poststuff h2{margin-left:0;}* html .stuffbox,* html .stuffbox input,* html .stuffbox textarea{border:1px solid #DFDFDF;}* html .feature-filter .feature-group li{width:145px;}* html .widget-top .widget-title-action a{background:url("../images/menu-bits.gif?ver=20100610") no-repeat scroll 0 -110px;}* html div.widget-liquid-left{width:99%;}* html .widgets-sortables{height:50px;}* html a#content_resize{right:-2px;}* html .widget-title h4{width:205px;}* html #removing-widget .in-widget-title{display:none;}* html .media-item .pinkynail{height:32px;width:40px;}* html .describe .field input.text,* html .describe .field textarea{width:440px;}* html input{border:1px solid #dfdfdf;}* html .meta-box-sortables .postbox .handlediv{background:transparent url(../images/menu-bits-vs.gif) no-repeat scroll left -111px;}* html .edit-box{display:inline;}* html .inner-sidebar #side-sortables,* html .postbox-container .meta-box-sortables{height:300px;}* html #wpbody-content #screen-options-link-wrap{display:inline-block;width:150px;text-align:center;}* html #wpbody-content #contextual-help-link-wrap{display:inline-block;width:100px;text-align:center;}* html #adminmenu{margin-left:-80px;}* html .folded #adminmenu{margin-left:-22px;}* html #wpcontent #adminmenu li.menu-top{display:inline;padding:0;margin:0;}* html #footer{margin:0;}* html #wpcontent #adminmenu .wp-menu-open .wp-menu-toggle{background:none;}* html #wpcontent #adminmenu .wp-has-submenu .wp-menu-toggle{background:url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -109px;}* html #wpcontent #adminmenu li.wp-has-current-submenu .wp-menu-toggle{background:url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -206px;}* html #adminmenu div.wp-menu-image{height:29px;}
\ No newline at end of file
+.wp-editor-wrap .wp-editor-container textarea.wp-editor-area{width:97%}#post-body.columns-2 #postbox-container-1{padding-left:19px}.welcome-panel .wp-badge{position:absolute}.welcome-panel .welcome-panel-column{margin:0 -25px 0 4%}#wp-fullscreen-title{width:97%}#wp_mce_fullscreen_ifr{background-color:#f9f9f9}#wp-fullscreen-tagline{color:#888;font-size:14px}#adminmenushadow{display:none}#adminmenuback{left:0;background-image:none}#adminmenuwrap{position:static}#adminmenu{position:relative}#adminmenu li.wp-menu-separator,#adminmenu li.wp-menu-separator-last{font-size:1px;line-height:1}#adminmenu a.menu-top{border-bottom:0 none;border-top:1px solid #ddd}#adminmenu .separator{font-size:1px;line-height:1px}#adminmenu .wp-submenu ul{margin:0}.folded #adminmenu .wp-submenu ul{margin-left:5px}#adminmenu li.menu-top{margin-bottom:-2px}#adminmenu li.wp-not-current-submenu:hover .wp-menu-arrow{display:none}#wpcontent #adminmenu .wp-submenu li.wp-submenu-head{padding:3px 4px 4px 10px;zoom:100%}.js.folded #adminmenu .menu-top{height:30px}.js.folded #adminmenu .wp-submenu{margin:-1px 0 0 0}.js.folded #adminmenu li.menu-top{display:block;zoom:100%}ul#adminmenu{z-index:99}#adminmenu li.menu-top a.menu-top{min-width:auto;width:auto}#wpcontent #adminmenu li.wp-has-current-submenu a.wp-has-submenu{font-style:normal}#wpcontent #adminmenu .wp-submenu li{padding:0}#collapse-menu{line-height:23px}#wpadminbar .ab-comments-icon{padding-top:7px}table.fixed th,table.fixed td{border-top:1px solid #ddd}#wpbody-content input.button,#wpbody-content input.button-primary,#wpbody-content input.button-secondary,#wpbody-content input.button-highlighted{overflow:visible}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:none}#dashboard-widgets h3 a{height:14px;line-height:14px}#dashboard_browser_nag{color:#fff}#dashboard_browser_nag .browser-icon{position:relative}.tablenav-pages .current-page{vertical-align:middle}#wpbody-content .postbox{border:1px solid #dfdfdf}#wpbody-content .postbox h3{margin-bottom:-1px}.major-publishing-actions,.wp-submenu,.wp-submenu li,.wp-menu-toggle,#template,#template div,#editcat,#addcat{zoom:100%}.wp-menu-arrow{height:28px}.submitbox{margin-top:10px}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:39%}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:19%}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:49%}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:29%}.inline-edit-row p.submit{zoom:100%}.inline-edit-row fieldset label span.title{display:block;float:left;width:5em}.inline-edit-row fieldset label span.input-text-wrap{margin-left:0;zoom:100%}#wpbody-content .inline-edit-row fieldset label span.input-text-wrap input{line-height:130%}#wpbody-content .inline-edit-row .input-text-wrap input{width:95%}#wpbody-content .inline-edit-row .input-text-wrap input.inline-edit-password-input{width:8em}#titlediv #title{width:98%}a.button{line-height:1.4em;margin:1px;padding:2px 6px}#screen-options-wrap{overflow:hidden}#the-comment-list .comment-item,#post-status-info,#wpwrap,#wrap,#postdivrich,#postdiv,#poststuff,.metabox-holder,#titlediv,#post-body,#editorcontainer,.tablenav,.widget-liquid-left,.widget-liquid-right,#widgets-left,.widgets-sortables,#dragHelper,.widget .widget-top,.widget,.widget-control-actions,.tagchecklist,#col-container,#col-left,#col-right,.fileedit-sub{display:block;zoom:100%}p.search-box{position:static;float:right;margin:-3px 0 4px}#editorcontainer #content{overflow:auto;margin:auto;width:98%}form#template div{width:100%}.wp-editor-container .quicktags-toolbar input{overflow:visible;padding:0 4px}#poststuff h2{font-size:1.6em}#bh{margin:7px 10px 0 0;float:right}div#dashboard-widgets{padding-right:1px}.tagchecklist span,.tagchecklist span a{display:inline-block;display:block}.tagchecklist span a{margin:4px 0 0 -9px}.tablenav .button-secondary,.nav .button-secondary{padding-top:2px;padding-bottom:2px}.tablenav select{font-size:13px;display:inline-block;vertical-align:top;margin-top:2px}.tablenav .actions select{width:155px}table.ie-fixed{table-layout:fixed}.widefat tr,.widefat th{margin-bottom:0;border-spacing:0}.widefat th input{margin:0 0 0 5px}.widefat .check-column{padding:6px 0 2px}.widefat tbody th.check-column{padding:4px 0 22px}.widefat{empty-cells:show;border-collapse:collapse}.tablenav a.button-secondary{display:inline-block;padding:2px 5px}.inactive-sidebar .widgets-sortables{padding-bottom:8px}#available-widgets .widget-holder{padding-bottom:65px}#widgets-left .inactive{padding-bottom:10px}.widget-liquid-right .widget,.inactive-sidebar .widget{position:relative}#wpcontent .button-primary-disabled{color:#9fd0d5;background:#298cba}#wpcontent #ajax-loading,#wpcontent .ajax-loading{vertical-align:baseline}#the-comment-list .unapproved tr,#the-comment-list .unapproved td{background-color:#ffffe0}.imgedit-submit{width:300px}#nav-menus-frame,#wpbody,.menu li{zoom:100%}#update-nav-menu #post-body{overflow:hidden}.menu li{min-width:100%}.menu li.sortable-placeholder{min-width:400px}.about-wrap img.element-screenshot{padding:2px}.about-wrap .feature-section img,.about-wrap .feature-section .image-mask{border-width:1px;border-style:solid}.about-wrap .feature-section.three-col img{margin-left:0}.available-theme{display:inline}.available-theme ul{margin:0}.about-wrap .three-col-images img{margin:0 .6% 10px}.about-wrap .three-col-images .last-feature,.about-wrap .three-col-images .first-feature{float:none}* html .row-actions{visibility:visible}* html div.widget-liquid-left,* html div.widget-liquid-right{display:block;position:relative}* html #editorcontainer{padding:0}* html #poststuff h2{margin-left:0}* html .stuffbox,* html .stuffbox input,* html .stuffbox textarea{border:1px solid #dfdfdf}* html .feature-filter .feature-group li{width:145px}* html .widget-top .widget-title-action a{background:url("../images/menu-bits.gif?ver=20100610") no-repeat scroll 0 -110px}* html div.widget-liquid-left{width:99%}* html .widgets-sortables{height:50px}* html a#content_resize{right:-2px}* html .widget-title h4{width:205px}* html #removing-widget .in-widget-title{display:none}* html .media-item .pinkynail{height:32px;width:40px}* html .describe .field input.text,* html .describe .field textarea{width:440px}* html input{border:1px solid #dfdfdf}* html .meta-box-sortables .postbox .handlediv{background:transparent url(../images/menu-bits-vs.gif) no-repeat scroll left -111px}* html .edit-box{display:inline}* html .postbox-container .meta-box-sortables{height:300px}* html #wpbody-content #screen-options-link-wrap{display:inline-block;width:150px;text-align:center}* html #wpbody-content #contextual-help-link-wrap{display:inline-block;width:100px;text-align:center}* html #adminmenu{margin-left:-80px}* html .folded #adminmenu{margin-left:-22px}* html #wpcontent #adminmenu li.menu-top{display:inline;padding:0;margin:0}* html #footer{margin:0}* html #wpcontent #adminmenu .wp-menu-open .wp-menu-toggle{background:0}* html #wpcontent #adminmenu .wp-has-submenu .wp-menu-toggle{background:url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -109px}* html #wpcontent #adminmenu li.wp-has-current-submenu .wp-menu-toggle{background:url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -206px}* html #adminmenu div.wp-menu-image{height:29px}
\ No newline at end of file
index fa9f12ba903e797bf588a81c3bd9f868cada0b3d..b14f5586c4a129cc34fb458623ec0dfe0af327a7 100644 (file)
@@ -1,4 +1,13 @@
-/* Fixes for IE bugs */
+/* Fixes for IE 7 bugs */
+
+.wp-editor-wrap .wp-editor-container textarea.wp-editor-area {
+       width: 97%;
+}
+
+#post-body.columns-2 #postbox-container-1 {
+       padding-left: 19px;
+}
+
 .welcome-panel .wp-badge {
        position: absolute;
 }
 .welcome-panel .wp-badge {
        position: absolute;
 }
@@ -277,8 +286,7 @@ form#template div {
        width: 100%;
 }
 
        width: 100%;
 }
 
-#ed_toolbar input,
-#ed_reply_toolbar input {
+.wp-editor-container .quicktags-toolbar input {
        overflow: visible;
        padding: 0 4px;
 }
        overflow: visible;
        padding: 0 4px;
 }
@@ -371,8 +379,6 @@ table.ie-fixed {
        position: relative;
 }
 
        position: relative;
 }
 
-
-
 #wpcontent .button-primary-disabled {
        color: #9FD0D5;
        background: #298CBA;
 #wpcontent .button-primary-disabled {
        color: #9FD0D5;
        background: #298CBA;
@@ -424,6 +430,22 @@ table.ie-fixed {
        margin-left: 0;
 }
 
        margin-left: 0;
 }
 
+.available-theme {
+       display: inline;
+}
+
+.available-theme ul {
+       margin: 0;
+}
+
+.about-wrap .three-col-images img {
+       margin: 0 0.6% 10px;
+}
+
+.about-wrap .three-col-images .last-feature,
+.about-wrap .three-col-images .first-feature {
+       float: none;
+}
 
 /* IE6 leftovers */
 * html .row-actions {
 
 /* IE6 leftovers */
 * html .row-actions {
@@ -500,7 +522,6 @@ table.ie-fixed {
        display: inline;
 }
 
        display: inline;
 }
 
-* html .inner-sidebar #side-sortables,
 * html .postbox-container .meta-box-sortables {
        height: 300px;
 }
 * html .postbox-container .meta-box-sortables {
        height: 300px;
 }
@@ -550,4 +571,3 @@ table.ie-fixed {
 * html #adminmenu div.wp-menu-image {
        height: 29px;
 }
 * html #adminmenu div.wp-menu-image {
        height: 29px;
 }
-
index 868b9810b313c8f2b04ea3d342df4628aee5e0ce..184969b07c028619f052771e6d6b4ddd9b884fd6 100644 (file)
@@ -1 +1 @@
-html{background:#f9f9f9;}body{background:#fff;color:#333;font-family:sans-serif;margin:2em auto;padding:1em 2em;-webkit-border-radius:3px;border-radius:3px;border:1px solid #dfdfdf;max-width:700px;}a{color:#21759B;text-decoration:none;}a:hover{color:#D54E21;}h1{border-bottom:1px solid #dadada;clear:both;color:#666;font:24px Georgia,"Times New Roman",Times,serif;margin:30px 0 0 0;padding:0;padding-bottom:7px;}h2{font-size:16px;}p,li,dd,dt{padding-bottom:2px;font-size:14px;line-height:1.5;}code,.code{font-size:14px;}ul,ol,dl{padding:5px 5px 5px 22px;}a img{border:0;}abbr{border:0;font-variant:normal;}#logo{margin:6px 0 14px 0;border-bottom:none;text-align:center;}.step{margin:20px 0 15px;}.step,th{text-align:left;padding:0;}.submit input,.button,.button-secondary{font-family:sans-serif;text-decoration:none;font-size:14px!important;line-height:16px;padding:6px 12px;cursor:pointer;border:1px solid #bbb;color:#464646;-webkit-border-radius:15px;border-radius:15px;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;}.button:hover,.button-secondary:hover,.submit input:hover{color:#000;border-color:#666;}.button,.submit input,.button-secondary{background:#f2f2f2 url(../images/white-grad.png) repeat-x scroll left top;}.button:active,.submit input:active,.button-secondary:active{background:#eee url(../images/white-grad-active.png) repeat-x scroll left top;}textarea{border:1px solid #dfdfdf;-webkit-border-radius:3px;border-radius:3px;font-family:sans-serif;width:695px;}.form-table{border-collapse:collapse;margin-top:1em;width:100%;}.form-table td{margin-bottom:9px;padding:10px 20px 10px 0;border-bottom:8px solid #fff;font-size:14px;vertical-align:top;}.form-table th{font-size:14px;text-align:left;padding:16px 20px 10px 0;border-bottom:8px solid #fff;width:140px;vertical-align:top;}.form-table code{line-height:18px;font-size:14px;}.form-table p{margin:4px 0 0 0;font-size:11px;}.form-table input{line-height:20px;font-size:15px;padding:2px;border:1px #DFDFDF solid;-webkit-border-radius:3px;border-radius:3px;font-family:sans-serif;}.form-table input[type=text],.form-table input[type=password]{width:206px;}.form-table th p{font-weight:normal;}.form-table.install-success td{vertical-align:middle;padding:16px 20px 10px 0;}.form-table.install-success td p{margin:0;font-size:14px;}.form-table.install-success td code{margin:0;font-size:18px;}#error-page{margin-top:50px;}#error-page p{font-size:14px;line-height:18px;margin:25px 0 20px;}#error-page code,.code{font-family:Consolas,Monaco,monospace;}#pass-strength-result{background-color:#eee;border-color:#ddd!important;border-style:solid;border-width:1px;margin:5px 5px 5px 0;padding:5px;text-align:center;width:200px;display:none;}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important;}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important;}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important;}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important;}.message{border:1px solid #e6db55;padding:.3em .6em;margin:5px 0 15px;background-color:#ffffe0;}body.rtl{font-family:Tahoma,arial;}.rtl h1{font-family:arial;margin:5px -4px 0 0;}.rtl ul,.rtl ol{padding:5px 22px 5px 5px;}.rtl .step,.rtl th,.rtl .form-table th{text-align:right;}.rtl .submit input,.rtl .button,.rtl .button-secondary{margin-right:0;}.rtl #user_login,.rtl #admin_email,.rtl #pass1,.rtl #pass2{direction:ltr;}
\ No newline at end of file
+html{background:#f9f9f9}body{background:#fff;color:#333;font-family:sans-serif;margin:2em auto;padding:1em 2em;-webkit-border-radius:3px;border-radius:3px;border:1px solid #dfdfdf;max-width:700px}a{color:#21759b;text-decoration:none}a:hover{color:#d54e21}h1{border-bottom:1px solid #dadada;clear:both;color:#666;font:24px Georgia,"Times New Roman",Times,serif;margin:30px 0 0 0;padding:0;padding-bottom:7px}h2{font-size:16px}p,li,dd,dt{padding-bottom:2px;font-size:14px;line-height:1.5}code,.code{font-size:14px}ul,ol,dl{padding:5px 5px 5px 22px}a img{border:0}abbr{border:0;font-variant:normal}#logo{margin:6px 0 14px 0;border-bottom:0;text-align:center}.step{margin:20px 0 15px}.step,th{text-align:left;padding:0}.submit input,.button,.button-secondary{font-family:sans-serif;text-decoration:none;font-size:14px!important;line-height:16px;padding:6px 12px;cursor:pointer;border:1px solid #bbb;color:#464646;-webkit-border-radius:15px;border-radius:15px;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}.button:hover,.button-secondary:hover,.submit input:hover{color:#000;border-color:#666}.button,.submit input,.button-secondary{background:#f2f2f2 url(../images/white-grad.png) repeat-x scroll left top}.button:active,.submit input:active,.button-secondary:active{background:#eee url(../images/white-grad-active.png) repeat-x scroll left top}textarea{border:1px solid #dfdfdf;-webkit-border-radius:3px;border-radius:3px;font-family:sans-serif;width:695px}.form-table{border-collapse:collapse;margin-top:1em;width:100%}.form-table td{margin-bottom:9px;padding:10px 20px 10px 0;border-bottom:8px solid #fff;font-size:14px;vertical-align:top}.form-table th{font-size:14px;text-align:left;padding:16px 20px 10px 0;border-bottom:8px solid #fff;width:140px;vertical-align:top}.form-table code{line-height:18px;font-size:14px}.form-table p{margin:4px 0 0 0;font-size:11px}.form-table input{line-height:20px;font-size:15px;padding:2px;border:1px #dfdfdf solid;-webkit-border-radius:3px;border-radius:3px;font-family:sans-serif}.form-table input[type=text],.form-table input[type=password]{width:206px}.form-table th p{font-weight:normal}.form-table.install-success td{vertical-align:middle;padding:16px 20px 10px 0}.form-table.install-success td p{margin:0;font-size:14px}.form-table.install-success td code{margin:0;font-size:18px}#error-page{margin-top:50px}#error-page p{font-size:14px;line-height:18px;margin:25px 0 20px}#error-page code,.code{font-family:Consolas,Monaco,monospace}#pass-strength-result{background-color:#eee;border-color:#ddd!important;border-style:solid;border-width:1px;margin:5px 5px 5px 0;padding:5px;text-align:center;width:200px;display:none}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important}.message{border:1px solid #e6db55;padding:.3em .6em;margin:5px 0 15px;background-color:#ffffe0}body.rtl{font-family:Tahoma,arial}.rtl h1{font-family:arial;margin:5px -4px 0 0}.rtl ul,.rtl ol{padding:5px 22px 5px 5px}.rtl .step,.rtl th,.rtl .form-table th{text-align:right}.rtl .submit input,.rtl .button,.rtl .button-secondary{margin-right:0}.rtl #dbname,.rtl #uname,.rtl #pwd,.rtl #dbhost,.rtl #prefix,.rtl #user_login,.rtl #admin_email,.rtl #pass1,.rtl #pass2{direction:ltr}
\ No newline at end of file
index 04ff488b06bd5d4adcb0b5ad3a46edc267a72c94..d77260a832cf13aea908df266ac3528402117803 100644 (file)
@@ -228,7 +228,6 @@ textarea {
        background-color: #ffffe0;
 }
 
        background-color: #ffffe0;
 }
 
-
 /* install-rtl */
 body.rtl {
        font-family: Tahoma, arial;
 /* install-rtl */
 body.rtl {
        font-family: Tahoma, arial;
@@ -240,7 +239,7 @@ body.rtl {
 }
 
 .rtl ul,
 }
 
 .rtl ul,
-.rtl  ol {
+.rtl ol {
        padding: 5px 22px 5px 5px;
 }
 
        padding: 5px 22px 5px 5px;
 }
 
@@ -256,10 +255,14 @@ body.rtl {
        margin-right: 0;
 }
 
        margin-right: 0;
 }
 
+.rtl #dbname,
+.rtl #uname,
+.rtl #pwd,
+.rtl #dbhost,
+.rtl #prefix,
 .rtl #user_login,
 .rtl #admin_email,
 .rtl #pass1,
 .rtl #pass2 {
        direction: ltr;
 }
 .rtl #user_login,
 .rtl #admin_email,
 .rtl #pass1,
 .rtl #pass2 {
        direction: ltr;
 }
-
index d5f7ef555a225b1005945c9fb1746b6a7f626d65..5f51b606b5fb8eb4cc512e88897ec6e877535a76 100644 (file)
@@ -1 +1 @@
-body#media-upload ul#sidemenu{left:auto;right:0;}#search-filter{text-align:left;}.align .field label{padding:0 23px 0 0;margin:0 3px 0 1em;}.image-align-none-label,.image-align-left-label,.image-align-center-label,.image-align-right-label{background-position:center right;}tr.image-size label{margin:0 5px 0 0;}.file-error{margin:0 50px 5px 0;}.progress{left:auto;right:0;}.describe td{padding:0 0 0 5px;}#media-upload .describe th.label{text-align:right;}.menu_order{float:left;}.media-upload-form label.form-help,td.help,#media-upload p.help,#media-upload label.help{font-family:Tahoma,Arial;}#gallery-settings #basic th.label{padding:5px 0 5px 5px;}#gallery-settings .title,h3.media-title{font-family:Tahoma,Arial;}#gallery-settings .describe th.label{text-align:right;}#gallery-settings label,#gallery-settings legend{margin-right:0;margin-left:15px;}#gallery-settings .align .field label{margin:0 3px 0 1em;}#sort-buttons{margin:3px 0 -8px 25px;text-align:left;}#sort-buttons #asc,#sort-buttons #showall{padding-left:0;padding-right:5px;}#sort-buttons span{margin-right:0;margin-left:25px;}
\ No newline at end of file
+body#media-upload ul#sidemenu{left:auto;right:0}#search-filter{text-align:left}.align .field label{padding:0 23px 0 0;margin:0 3px 0 1em}.image-align-none-label,.image-align-left-label,.image-align-center-label,.image-align-right-label{background-position:center right}tr.image-size label{margin:0 5px 0 0}.file-error{margin:0 50px 5px 0}.progress{left:auto;right:0}.describe td{padding:0 0 0 5px}#media-upload .describe th.label{text-align:right}.menu_order{float:left}.media-upload-form label.form-help,td.help,#media-upload p.help,#media-upload label.help{font-family:Tahoma,Arial}#gallery-settings #basic th.label{padding:5px 0 5px 5px}#gallery-settings .title,h3.media-title{font-family:Tahoma,Arial}#gallery-settings .describe th.label{text-align:right}#gallery-settings label,#gallery-settings legend{margin-right:0;margin-left:15px}#gallery-settings .align .field label{margin:0 3px 0 1em}#sort-buttons{margin:3px 0 -8px 25px;text-align:left}#sort-buttons #asc,#sort-buttons #showall{padding-left:0;padding-right:5px}#sort-buttons span{margin-right:0;margin-left:25px}
\ No newline at end of file
index 88b5f031893627f14d572053bb40b657cc7bf954..272ce3b254d6abc2f7dbd5faee2c63c0dd40c7fb 100644 (file)
@@ -1 +1 @@
-div#media-upload-header{margin:0;padding:5px 5px 0;font-weight:bold;position:relative;border-bottom-width:1px;border-bottom-style:solid;}body#media-upload ul#sidemenu{font-weight:normal;margin:0 5px;left:0;bottom:-1px;float:none;overflow:hidden;}form{margin:1em;}#search-filter{text-align:right;}th{position:relative;}.media-upload-form label.form-help,td.help{font-family:sans-serif;font-style:italic;font-weight:normal;}.media-upload-form p.help{margin:0;padding:0;}.media-upload-form fieldset{width:100%;border:none;text-align:justify;margin:0 0 1em 0;padding:0;}.image-align-none-label{background:url(../images/align-none.png) no-repeat center left;}.image-align-left-label{background:url(../images/align-left.png) no-repeat center left;}.image-align-center-label{background:url(../images/align-center.png) no-repeat center left;}.image-align-right-label{background:url(../images/align-right.png) no-repeat center left;}tr.image-size td{width:460px;}tr.image-size div.image-size-item{margin:0 0 5px;}#library-form .progress,#gallery-form .progress,.insert-gallery,.describe.startopen,.describe.startclosed{display:none;}.media-item .thumbnail{max-width:128px;max-height:128px;}thead.media-item-info tr{background-color:transparent;}.form-table thead.media-item-info{border:8px solid #fff;}abbr.required{text-decoration:none;border:none;}.describe label{display:inline;}.describe td.error{padding:2px 8px;}.describe td.A1{width:132px;}.describe input[type="text"],.describe textarea{width:460px;border-width:1px;border-style:solid;}#media-upload p.ml-submit{padding:1em 0;}#media-upload p.help,#media-upload label.help{font-family:sans-serif;font-style:italic;font-weight:normal;}#media-upload .ui-sortable .media-item{cursor:move;}#media-upload tr.image-size{margin-bottom:1em;height:3em;}#media-upload #filter{width:623px;}#media-upload #filter .subsubsub{margin:8px 0;}#filter .tablenav select{border-style:solid;border-width:1px;padding:2px;vertical-align:top;width:auto;}#media-upload .del-attachment{display:none;margin:5px 0;}.menu_order{float:right;font-size:11px;margin:10px 10px 0;}.menu_order_input{border:1px solid #ddd;font-size:10px;padding:1px;width:23px;}.ui-sortable-helper{background-color:#fff;border:1px solid #aaa;opacity:.6;filter:alpha(opacity=60);}#media-upload th.order-head{width:20%;text-align:center;}#media-upload th.actions-head{width:25%;text-align:center;}#media-upload a.wp-post-thumbnail{margin:0 20px;}#media-items a.delete{display:block;float:right;}#media-upload .widefat{width:626px;border-style:solid solid none;}.sorthelper{height:37px;width:623px;display:block;}#gallery-settings th.label{width:160px;}#gallery-settings #basic th.label{padding:5px 5px 5px 0;}#gallery-settings .title{clear:both;padding:0 0 3px;font-size:1.6em;border-bottom:1px solid #DADADA;}h3.media-title{font-size:1.6em;}h4.media-sub-title{border-bottom:1px solid #DADADA;font-size:1.3em;margin:12px;padding:0 0 3px;}#gallery-settings .title,h3.media-title,h4.media-sub-title{font-family:Georgia,"Times New Roman",Times,serif;font-weight:normal;color:#5A5A5A;}#gallery-settings .describe td{vertical-align:middle;height:3em;}#gallery-settings .describe th.label{padding-top:.5em;text-align:left;}#gallery-settings .describe{padding:5px;width:615px;clear:both;cursor:default;}#gallery-settings .describe select{width:15em;}#gallery-settings .describe select option,#gallery-settings .describe td{padding:0;}#gallery-settings label,#gallery-settings legend{font-size:13px;color:#464646;margin-right:15px;}#gallery-settings .align .field label{margin:0 1em 0 3px;}#gallery-settings p.ml-submit{border-top:1px solid #dfdfdf;}#gallery-settings select#columns{width:6em;}#sort-buttons{font-size:.8em;margin:3px 25px -8px 0;text-align:right;max-width:625px;}#sort-buttons a{text-decoration:none;}#sort-buttons #asc,#sort-buttons #showall{padding-left:5px;}#sort-buttons span{margin-right:25px;}p.media-types{margin:1em;}tr.not-image{display:none;}table.not-image tr.not-image{display:table-row;}table.not-image tr.image-only{display:none;}
\ No newline at end of file
+div#media-upload-header{margin:0;padding:5px 5px 0;font-weight:bold;position:relative;border-bottom-width:1px;border-bottom-style:solid}body#media-upload ul#sidemenu{font-weight:normal;margin:0 5px;left:0;bottom:-1px;float:none;overflow:hidden}form{margin:1em}#search-filter{text-align:right}th{position:relative}.media-upload-form label.form-help,td.help{font-family:sans-serif;font-style:italic;font-weight:normal}.media-upload-form p.help{margin:0;padding:0}.media-upload-form fieldset{width:100%;border:0;text-align:justify;margin:0 0 1em 0;padding:0}.image-align-none-label{background:url(../images/align-none.png) no-repeat center left}.image-align-left-label{background:url(../images/align-left.png) no-repeat center left}.image-align-center-label{background:url(../images/align-center.png) no-repeat center left}.image-align-right-label{background:url(../images/align-right.png) no-repeat center left}tr.image-size td{width:460px}tr.image-size div.image-size-item{margin:0 0 5px}#library-form .progress,#gallery-form .progress,.insert-gallery,.describe.startopen,.describe.startclosed{display:none}.media-item .thumbnail{max-width:128px;max-height:128px}thead.media-item-info tr{background-color:transparent}.form-table thead.media-item-info{border:8px solid #fff}abbr.required{text-decoration:none;border:0}.describe label{display:inline}.describe td.error{padding:2px 8px}.describe td.A1{width:132px}.describe input[type="text"],.describe textarea{width:460px;border-width:1px;border-style:solid}#media-upload p.ml-submit{padding:1em 0}#media-upload p.help,#media-upload label.help{font-family:sans-serif;font-style:italic;font-weight:normal}#media-upload .ui-sortable .media-item{cursor:move}#media-upload tr.image-size{margin-bottom:1em;height:3em}#media-upload #filter{width:623px}#media-upload #filter .subsubsub{margin:8px 0}#filter .tablenav select{border-style:solid;border-width:1px;padding:2px;vertical-align:top;width:auto}#media-upload .del-attachment{display:none;margin:5px 0}.menu_order{float:right;font-size:11px;margin:10px 10px 0}.menu_order_input{border:1px solid #ddd;font-size:10px;padding:1px;width:23px}.ui-sortable-helper{background-color:#fff;border:1px solid #aaa;opacity:.6;filter:alpha(opacity=60)}#media-upload th.order-head{width:20%;text-align:center}#media-upload th.actions-head{width:25%;text-align:center}#media-upload a.wp-post-thumbnail{margin:0 20px}#media-items a.delete{display:block;float:right}#media-upload .widefat{width:626px;border-style:solid solid none}.sorthelper{height:37px;width:623px;display:block}#gallery-settings th.label{width:160px}#gallery-settings #basic th.label{padding:5px 5px 5px 0}#gallery-settings .title{clear:both;padding:0 0 3px;font-size:1.6em;border-bottom:1px solid #dadada}h3.media-title{font-size:1.6em}h4.media-sub-title{border-bottom:1px solid #dadada;font-size:1.3em;margin:12px;padding:0 0 3px}#gallery-settings .title,h3.media-title,h4.media-sub-title{font-family:Georgia,"Times New Roman",Times,serif;font-weight:normal;color:#5a5a5a}#gallery-settings .describe td{vertical-align:middle;height:3em}#gallery-settings .describe th.label{padding-top:.5em;text-align:left}#gallery-settings .describe{padding:5px;width:615px;clear:both;cursor:default}#gallery-settings .describe select{width:15em}#gallery-settings .describe select option,#gallery-settings .describe td{padding:0}#gallery-settings label,#gallery-settings legend{font-size:13px;color:#464646;margin-right:15px}#gallery-settings .align .field label{margin:0 1em 0 3px}#gallery-settings p.ml-submit{border-top:1px solid #dfdfdf}#gallery-settings select#columns{width:6em}#sort-buttons{font-size:.8em;margin:3px 25px -8px 0;text-align:right;max-width:625px}#sort-buttons a{text-decoration:none}#sort-buttons #asc,#sort-buttons #showall{padding-left:5px}#sort-buttons span{margin-right:25px}p.media-types{margin:1em}tr.not-image{display:none}table.not-image tr.not-image{display:table-row}table.not-image tr.image-only{display:none}
\ No newline at end of file
index 38361bb4c02e628f387aa1546d4662061800de98..24b163eba9af2b9ffe65b81999f695da05b4fb96 100644 (file)
@@ -51,7 +51,6 @@ th {
 
 /* specific to the image upload form */
 
 
 /* specific to the image upload form */
 
-
 .image-align-none-label {
        background: url(../images/align-none.png) no-repeat center left;
 }
 .image-align-none-label {
        background: url(../images/align-none.png) no-repeat center left;
 }
index c00bcec3746c1b431709f524fd8dab6c4120a9b3..7cae6f167b95e40906d1cb6121560f68cba25db0 100644 (file)
@@ -1 +1 @@
-ol{margin-left:0;margin-right:2em;}.code,code{font-family:Tahoma,Arial,sans-serif;}.quicktags,.search{font:12px Tahoma,Arial,sans-serif;}.icon32{float:right;margin-right:0;margin-left:8px;}.icon16{float:right;margin-right:-8px;margin-left:0;}.howto{font-style:normal;font-family:Tahoma,Arial,sans-serif;}p.install-help{font-style:normal;}#doaction,#doaction2,#post-query-submit{margin-right:0;margin-left:8px;}#timezone_string option{margin-left:0;margin-right:1em;}#pass-strength-result{float:right;margin:13px 1px 5px 5px;}p.search-box{float:left;}#delete-action{float:right;}#publishing-action{float:left;}#post-body .misc-pub-section{border-right:0;border-left-width:1px;border-left-style:solid;float:right;}#post-body .misc-pub-section-last{border-left:0;}#minor-publishing-actions{padding:10px 8px 2px 10px;text-align:left;}#save-post{float:right;}#minor-publishing .ajax-loading{padding:3px 4px 0 0;float:right;}.preview{float:left;}#sticky-span{margin-left:0;margin-right:18px;}.side-info ul{padding-left:0;padding-right:18px;}td.action-links,th.action-links{text-align:left;}.describe .del-link{padding-left:0;padding-right:5px;}form.upgrade .hint{font-style:normal;}#ajax-response.alignleft{margin-left:0;margin-right:2em;}#quicktags{background-position:right top;}#ed_reply_toolbar input{margin:1px 1px 1px 2px;}#wp-fullscreen-body{right:0;left:auto;}#wp-fullscreen-tagline{float:left;}#fullscreen-topbar{left:auto;right:0;}#wp-fullscreen-mode-bar,#wp-fullscreen-button-bar,#wp-fullscreen-close,#wp-fullscreen-count{float:right;}#wp-fullscreen-save{float:left;}#wp-fullscreen-save{padding:2px 5px 0 2px;}#wp-fullscreen-buttons>div{float:right;}#wp-fullscreen-mode-bar{padding:1px 0 0 14px;}#wp-fullscreen-modes a{float:right;border-width:1px 0 1px 1px;}#wp-fullscreen-modes a:first-child{-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;border-width:1px;border-top-left-radius:0;border-top-right-radius:3px;border-bottom-right-left:0;border-bottom-right-radius:3px;}#wp-fullscreen-modes a:last-child{-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px;}#wp-fullscreen-save img,#wp-fullscreen-save span{padding-right:0;padding-left:4px;}#wphead{height:32px;margin-left:15px;margin-right:2px;}#header-logo{float:right;}#wphead h1{float:right;}#screen-meta-links{margin-right:0;margin-left:24px;}#screen-meta{margin-right:5px;margin-left:15px;}#screen-options-link-wrap,#contextual-help-link-wrap{float:left;margin-left:0;margin-right:6px;}#screen-meta-links a.show-settings{padding-right:6px;padding-left:16px;}.toggle-arrow{background-position:top right;}.toggle-arrow-active{background-position:bottom right;}.metabox-prefs label{padding-right:0;padding-left:15px;}.metabox-prefs label input{margin-right:2px;margin-left:5px;}#contextual-help-wrap{margin-left:0;margin-right:-4px;}#contextual-help-back{left:170px;right:150px;}#contextual-help-wrap.no-sidebar #contextual-help-back{left:0;right:150px;border-right-width:1px;border-left-width:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:2px;border-bottom-left-radius:2px;}.contextual-help-tabs{float:right;}.contextual-help-tabs a{padding-left:5px;padding-right:12px;}.contextual-help-tabs .active{margin-right:0;margin-left:-1px;}.contextual-help-tabs .active,.contextual-help-tabs-wrap{border-left:0;border-right-width:1px;}.help-tab-content{margin-right:0;margin-left:22px;}.help-tab-content li{margin-left:0;margin-right:18px;}.contextual-help-sidebar{float:left;padding-right:12px;padding-left:8px;}#adminmenuback,#adminmenuwrap{border-width:0 0 0 1px;}#adminmenushadow{right:auto;left:0;}#adminmenu li .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{left:auto;right:146px;}.folded #adminmenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{left:auto;right:26px;}#adminmenu .wp-submenu.sub-open,#adminmenu li.focused.wp-not-current-submenu .wp-submenu,.folded #adminmenu li.focused.wp-has-current-submenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.no-js #adminmenu .wp-has-submenu:hover .wp-submenu,.no-js.folded #adminmenu .wp-has-current-submenu:hover .wp-submenu{padding:0 0 8px 8px;}#adminmenu div.wp-menu-image{float:right;}#adminmenu li li{margin-left:0;margin-right:8px;}#adminmenu .wp-submenu a,#adminmenu li li a,.folded #adminmenu .wp-not-current-submenu li a{padding-left:0;padding-right:12px;}#adminmenu .wp-not-current-submenu li a{padding-left:0;padding-right:18px;}.folded #adminmenu li li{margin-left:inherit;margin-right:0;}.folded #adminmenu li li a{padding-left:inherit;padding-right:0;}.wp-menu-arrow{right:0;-moz-transform:translate(-139px);-webkit-transform:translate(-139px);-o-transform:translate(-139px);-ms-transform:translate(-139px);transform:translate(-139px);}.ie8 .wp-menu-arrow{right:-20px;}#adminmenu .wp-menu-arrow div{left:-8px;width:16px;}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{-moz-transform:translate(-138px);-webkit-transform:translate(-138px);-o-transform:translate(-138px);-ms-transform:translate(-138px);transform:translate(-138px);}.folded .wp-menu-arrow{-moz-transform:translate(-27px);-webkit-transform:translate(-27px);-o-transform:translate(-27px);-ms-transform:translate(-27px);transform:translate(-27px);}#adminmenu .wp-not-current-submenu .wp-menu-arrow div{border-style:solid solid none none;border-width:1px 1px 0 0;}#adminmenu .wp-menu-image img{float:right;padding:5px 2px 0 0;}#adminmenu .wp-submenu .wp-submenu-head{padding:6px 10px 5px 4px;}#adminmenu li .wp-submenu-wrap{border-width:1px 0 1px 1px;border-style:solid none solid solid;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px;}.folded #adminmenu .wp-submenu ul{border-width:0 1px 0 0;}.folded #adminmenu .wp-submenu a{padding-left:0;padding-right:10px;}.folded #adminmenu a.wp-has-submenu{margin-left:0;margin-right:40px;}#adminmenu .wp-menu-toggle{clear:left;float:left;padding:1px 0 0 2px;}#adminmenu .awaiting-mod,#adminmenu span.update-plugins,#sidemenu li a span.update-plugins{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:7px;}#collapse-button{float:right;}.post-com-count-wrapper{font-family:Tahoma,Arial,sans-serif;}.column-response .post-com-count{float:right;margin-right:0;margin-left:5px;}.response-links{float:right;}.widefat th{font-family:Tahoma,Arial,sans-serif;}.widefat td p{margin:2px 0 .8em;}.postbox-container{float:right;}.postbox .handlediv{float:left;}#the-comment-list p.comment-author img{float:right;margin-right:0;margin-left:8px;}#dashboard_browser_nag p.browser-update-nag.has-browser-icon{padding-right:0;padding-left:125px;}.welcome-panel .welcome-panel-close{right:auto;left:10px;}.welcome-panel .welcome-panel-close:before{left:auto;right:-12px;}.welcome-panel .wp-badge{float:right;}.welcome-panel-content .about-description,.welcome-panel h3{margin-left:0;margin-right:190px;}.welcome-panel .welcome-panel-column{margin:0 -25px 0 5%;padding-left:0;padding-right:25px;float:right;}.welcome-panel .welcome-panel-column.welcome-panel-last{margin-right:auto;padding-right:0;margin-left:0;}.welcome-panel h4 .icon16{margin-left:0;margin-right:-32px;}.welcome-panel .welcome-panel-column-container{padding:0 25px 0 0;}.welcome-panel .welcome-panel-column ul{margin:1.6em 1.3em 1em 1em;}.welcome-panel .welcome-panel-column li{padding-left:0;padding-right:2px;}.fixed .column-comments{text-align:right;}.fixed .column-comments .vers{padding-left:0;padding-right:3px;}.fixed .column-comments a{float:right;}.sorting-indicator{margin-left:0;margin-right:7px;}th.sortable a span,th.sorted a span{float:right;}.tablenav-pages a{margin-right:0;margin-left:1px;}.tablenav-pages .next-page{margin-left:0;margin-right:2px;}.tablenav a.button-secondary{margin:3px 0 0 8px;}.tablenav .tablenav-pages{float:left;}.tablenav .displaying-num{margin-right:0;margin-left:10px;font-family:Tahoma,Arial,sans-serif;font-style:bold;}.tablenav .actions{padding:2px 0 0 8px;}.tablenav .delete{margin-right:0;margin-left:20px;}.view-switch{float:left;}.filter{float:right;margin:-5px 10px 0 0;}.filter .subsubsub{margin-left:0;margin-right:-10px;}#posts-filter fieldset{float:right;margin:0 0 1em 1.5ex;}#posts-filter fieldset legend{padding:0 1px .2em 0;}#wpbody-content .inline-edit-row fieldset{float:right;}#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col{border-width:0 1px 0 0;}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:left;}.inline-edit-row fieldset label span.title{float:right;}.inline-edit-row fieldset label span.input-text-wrap{margin-left:0;margin-right:5em;}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{padding-right:0;padding-left:.5em;}#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child{margin-right:0;margin-left:.5em;}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{font-family:Tahoma,Arial,sans-serif;font-style:normal;}.inline-edit-row fieldset .inline-edit-date{float:right;}.inline-edit-row fieldset ul.cat-checklist label,.inline-edit-row .catshow,.inline-edit-row .cathide,.inline-edit-row #bulk-titles div{font-family:Tahoma,Arial,sans-serif;}.quick-edit-row-post fieldset label.inline-edit-status{float:right;}#bulk-titles div a{float:right;margin:3px -2px 0 3px;overflow:hidden;text-indent:-9999px;}#titlediv #title-prompt-text,#wp-fullscreen-title-prompt-text{right:0;}#sample-permalink{direction:ltr;}#sample-permalink #editable-post-name{unicode-bidi:embed;}#wp-fullscreen-title-prompt-text{left:auto;right:0;}.postarea h3 label{float:right;}.submitbox .submit{text-align:right;}.inside-submitbox #post_status{margin:2px -2px 2px 0;}.submitbox .submit input{margin-right:0;margin-left:4px;}#normal-sortables .postbox .submit{float:left;}#post-body ul.category-tabs,#post-body ul.add-menu-item-tabs{float:right;text-align:left;margin:0 5px 0 -120px;}#post-body ul.category-tabs li.tabs,#post-body ul.add-menu-item-tabs li.tabs{-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;border-top-left-radius:0;border-top-right-radius:3px;border-bottom-left-radius:0;border-bottom-right-radius:3px;}#post-body .categorydiv div.tabs-panel,.taxonomy div.tabs-panel,#post-body #linkcategorydiv div.tabs-panel{margin:0 125px 0 5px;}#side-sortables .comments-box thead th,#normal-sortables .comments-box thead th{font-style:normal;}#commentsdiv img.waiting{padding-left:0;padding-right:5px;}#post-body .category-tabs li.tabs,#post-body .add-menu-item-tabs li.tabs{border-width:1px 1px 1px 0;margin-right:0;margin-left:-1px;}#posts-filter fieldset{float:right;margin:0 0 1em 1.5ex;}#posts-filter fieldset legend{padding:0 1px .2em 0;}#post-body .tagsdiv #newtag{margin-right:0;margin-left:5px;}.autosave-info{padding:2px 2px 2px 15px;text-align:left;}#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:transparent url(../images/resize-rtl.gif) no-repeat scroll left bottom;cursor:sw-resize;}.curtime #timestamp{background-position:right top;padding-left:0;padding-right:18px;}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{margin:8px 8px 8px 0;}table.diff td,table.diff th{font-family:Consolas,Monaco,monospace;}.category-adder{margin-left:0;margin-right:120px;}#post-body ul.category-tabs,#post-body ul.add-menu-item-tabs{float:right;text-align:left;margin:0 5px 0 -120px;}#post-body ul.category-tabs li.tabs,#post-body ul.add-menu-item-tabs li.tabs{-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;border-top-left-radius:0;border-top-right-radius:3px;border-bottom-left-radius:0;border-bottom-right-radius:3px;}#front-page-warning,#front-static-pages ul,ul.export-filters,.inline-editor ul.cat-checklist ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul,#linkcategorydiv ul.categorychecklist ul{margin-left:0;margin-right:18px;}#post-body .category-tabs li.tabs,#post-body .add-menu-item-tabs li.tabs{border-style:solid solid solid none;border-width:1px 1px 1px 0;margin-right:0;margin-left:-1px;}p.help,p.description,span.description,.form-wrap p{font-style:normal;font-family:Tahoma,Arial,sans-serif;}.taghint{margin:15px 12px -24px 0;}#poststuff .tagsdiv .howto{margin:0 8px 6px 0;}.ac_results li{text-align:right;}#wpbody-content .describe th{text-align:right;}.describe .media-item-info .A1B1{padding:0 10px 0 0;}.media-upload-form td label{margin-left:6px;margin-right:2px;}.media-upload-form .align .field label{padding:0 23px 0 0;margin:0 3px 0 1em;}.media-upload-form tr.image-size label{margin:0 5px 0 0;}#wpbody-content .describe p.help{padding:0 5px 0 0;}.media-item .error-div a.dismiss,.describe-toggle-on,.describe-toggle-off{float:left;margin-right:0;margin-left:15px;}.media-item .error-div a.dismiss{padding:0 15px 0 0;}.media-item .error-div{padding-left:0;padding-right:10px;}.media-item .pinkynail{float:right;}.media-item .describe td{padding:0 0 8px 8px;}.media-item .progress{float:left;margin:6px 0 0 10px;}#find-posts-response .found-radio{padding:5px 8px 0 0;}.find-box-search label{padding-right:0;padding-left:6px;}.find-box #resize-se{right:auto;left:1px;}form.upgrade .hint{font-style:normal;}.imgedit-menu div{float:right;}.imgedit-help{font-style:normal;}.imgedit-submit-btn{margin-left:0;margin-right:20px;}.form-table th{text-align:right;}.form-table input.tog{margin-right:0;margin-left:2px;float:right;}.form-table table.color-palette{float:right;}#replysubmit img.waiting,.inline-edit-save img.waiting{float:left;}#replysubmit .button{margin-right:0;margin-left:5px;}#edithead .inside{float:right;padding:3px 5px 2px 0;}.comment-ays th{border-right-style:none;border-left-style:solid;border-right-width:0;border-left-width:1px;}.spam-undo-inside .avatar,.trash-undo-inside .avatar{margin-left:8px;}#comment-status-radio input{margin:2px 0 5px 3px;}td.available-theme{text-align:right;}#current-theme img{float:right;margin-right:0;margin-left:1em;}#broken-themes{text-align:right;}.appearance_page_custom-header .available-headers .default-header{float:right;margin:0 0 20px 20px;}.appearance_page_custom-header .random-header{margin:0 0 20px 20px;}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-right:0;margin-left:10px;}.nav-tab{margin:0 0 -1px 6px;}h2 .nav-tab{font-family:Tahoma,Arial,sans-serif;}.plugins .desc ul,.plugins .desc ol{margin:0 2em 0 0;}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-right:0;padding-left:12px;}#profile-page .form-table #rich_editing{margin-right:0;margin-left:5px;}#your-profile legend{font-family:Tahoma,Arial,sans-serif;}.pressthis a span{background-position:-20px 5px;padding:8px 32px 8px 0;}.pressthis a:after{right:auto;left:10px;background:transparent;transform:skew(-20deg) rotate(-6deg);-webkit-transform:skew(-20deg) rotate(-6deg);-moz-transform:skew(-20deg) rotate(-6deg);}.pressthis a:hover:after{transform:skew(-20deg) rotate(-9deg);-webkit-transform:skew(-20deg) rotate(-9deg);-moz-transform:skew(-20deg) rotate(-9deg);}#utc-time,#local-time{padding-left:0;padding-right:25px;font-style:normal;font-family:Tahoma,Arial,sans-serif;}#footer{margin-left:20px;}#wpcontent,#footer{margin-right:165px;}.wrap.about-wrap{margin-left:40px;margin-right:20px;}.about-wrap h1,.about-text{margin-right:0;margin-left:200px;}.about-wrap h2.nav-tab-wrapper{padding-left:0;padding-right:6px;}.about-wrap .wp-badge{right:auto;left:0;}.about-wrap h2 .nav-tab{margin-right:0;margin-left:3px;}.about-wrap .changelog li{margin-left:0;margin-right:3em;}.about-wrap .feature-section .left-feature,.about-wrap .feature-section img,.about-wrap .feature-section .right-feature{float:right;}.about-wrap .feature-section .left-feature{margin-right:0;margin-left:0;}.about-wrap .feature-section .right-feature{margin-left:0;margin-right:0;}.about-wrap .feature-section.text-features{float:right;}.about-wrap .feature-section.screenshot-features{float:left;}.about-wrap .feature-section.screenshot-features .angled-right{margin-left:0;margin-right:2.5em;}.about-wrap .feature-section.screenshot-features .angled-right p{margin-left:0;margin-right:290px;}.about-wrap .feature-section .angled-right img,.about-wrap .feature-section .angled-left img{margin-right:0;margin-left:30px;}.about-wrap .feature-section.three-col div{margin-right:0;margin-left:4.999999999%;float:right;}.about-wrap .feature-section.three-col h4{text-align:right;}.about-wrap .feature-section.three-col img{margin-right:5px;margin-left:0;}.about-wrap .feature-section.three-col .last-feature{margin-left:0;}.about-wrap .feature-section .feature-images img{margin-right:auto;margin-left:5px;}.about-wrap .feature-section.images-stagger-left .angled-left{margin-left:auto;margin-right:5px;}.about-wrap .feature-section .angled-right{float:left;}.about-wrap .feature-section.images-stagger-right .feature-images{right:auto;left:0;}.about-wrap .feature-section.images-stagger-left .feature-images{left:auto;right:0;}.about-wrap .feature-section.images-stagger-right .left-feature{margin-right:0;margin-left:350px;}.about-wrap .feature-section.images-stagger-left .right-feature{margin-left:0;margin-right:350px;}.about-wrap li.wp-person,.about-wrap li.wp-person img.gravatar{float:right;margin-right:0;margin-left:10px;}#template div{margin-right:0;margin-left:190px;}.column-author img,.column-username img{float:right;margin-right:0;margin-left:10px;}.tagchecklist{margin-left:0;margin-right:14px;}.tagchecklist strong{margin-left:0;margin-right:-8px;}.tagchecklist span{margin-right:0;margin-left:25px;float:right;}.tagchecklist span a{margin:6px -9px 0 0;float:right;}#poststuff h2{clear:right;}#poststuff h3,.metabox-holder h3{font-family:Tahoma,Arial,sans-serif;}.tool-box .title{font-family:Tahoma,Arial,sans-serif;}#sidemenu{margin:-30px 315px 0 15px;float:left;padding-left:0;padding-right:10px;}#sidemenu a{float:right;}table .vers,table .column-visible,table .column-rating{text-align:right;}.screen-meta-toggle{right:auto;left:15px;}* html #template div{margin-left:0;}.list-ajax-loading{float:left;margin-right:0;margin-left:9px;}#editorcontainer .wp_themeSkin .mceStatusbar{padding-left:0;padding-right:5px;}#editorcontainer .wp_themeSkin .mceStatusbar div{float:right;}#editorcontainer .wp_themeSkin .mceStatusbar a.mceResize{float:left;}#wpcontent{margin-left:0;margin-right:165px;}.folded #wpcontent{margin-left:0;margin-right:52px;}.folded.wp-admin #footer{margin-left:15px;margin-right:52px;}#wpbody-content{float:right;}#adminmenuwrap{float:right;}#adminmenu{clear:right;}.inner-sidebar{float:left;clear:left;}.has-right-sidebar #post-body{float:right;clear:right;margin-right:0;margin-left:-340px;}.has-right-sidebar #post-body-content{margin-right:0;margin-left:300px;}#col-right{float:left;clear:left;}.alignleft{float:right;}.alignright{float:left;}.textleft{text-align:right;}.textright{text-align:left;}.screen-reader-text,.screen-reader-text span{left:auto;right:-1000em;}body,td,textarea,input,select{font-family:Tahoma,Arial,sans-serif;}ul.ul-disc,ul.ul-square,ol.ol-decimal{margin-left:0;margin-right:1.8em;}.subsubsub{float:right;}.widefat thead th:first-of-type{-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;border-top-left-radius:0;border-top-right-radius:3px;}.widefat thead th:last-of-type{-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px;}.widefat tfoot th:first-of-type{-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:0;border-bottom-right-radius:3px;}.widefat tfoot th:last-of-type{-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px;}.widefat th{text-align:right;}.widefat th input{margin:0 8px 0 0;}.wrap{margin-right:0;margin-left:15px;}.wrap h2,.subtitle{font-family:Tahoma,Arial,sans-serif;}.wrap h2{padding-right:0;padding-left:15px;}.subtitle{padding-left:0;padding-right:25px;}.wrap .add-new-h2{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:4px;}.wrap h2.long-header{padding-left:0;}#dashboard-widgets-wrap .has-sidebar{margin-right:0;margin-left:-51%;}#dashboard-widgets-wrap .has-sidebar .has-sidebar-content{margin-right:0;margin-left:51%;}.view-all{right:auto;left:0;}#dashboard_right_now p.sub,#dashboard-widgets h4,a.rsswidget,#dashboard_plugins h4,#dashboard_plugins h5,#dashboard_recent_comments .comment-meta .approve{font-family:Tahoma,Arial;}#dashboard_right_now p.sub{left:auto;right:15px;}#dashboard_right_now td.b{padding-right:0;padding-left:6px;text-align:left;font-family:Tahoma,Arial;}#dashboard_right_now .t{padding-right:0;padding-left:12px;}#dashboard_right_now .table_content{float:right;}#dashboard_right_now .table_discussion{float:left;}#dashboard_right_now .versions a{font-family:Tahoma,Arial;}#dashboard_right_now a.button{float:left;clear:left;}#dashboard_plugins .inside span{padding-left:0;padding-right:5px;}#dashboard-widgets h3 .postbox-title-action{right:auto;left:30px;}#the-comment-list .pingback{padding-left:0!important;padding-right:9px!important;}#the-comment-list .comment-item{padding:1em 70px 1em 10px;}#the-comment-list .comment-item .avatar{float:right;margin-left:0;margin-right:-60px;}.rss-widget cite{text-align:left;}.rss-widget span.rss-date{font-family:Tahoma,Arial;margin-left:0;margin-right:3px;}#dashboard_quick_press h4{float:right;text-align:left;}#dashboard_quick_press .wp-media-buttons{margin:0 5em .5em 0;}#dashboard_quick_press h4 label{margin-right:0;margin-left:10px;}#dashboard_quick_press .input-text-wrap,#dashboard_quick_press .textarea-wrap{margin:0 5em 1em 0;}#dashboard_quick_press #media-buttons{margin:0 5em .5em 0;padding:0;}#dashboard-widgets #dashboard_quick_press form p.submit{margin-left:0;margin-right:4.6em;}#dashboard-widgets #dashboard_quick_press form p.submit input{float:right;}#dashboard-widgets #dashboard_quick_press form p.submit #save-post{margin:0 10px 0 1em;}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:left;}#dashboard-widgets #dashboard_quick_press form p.submit img.waiting{margin:4px 0 0 6px;}#dashboard_recent_drafts h4 abbr{font-family:Tahoma,Arial;margin-left:0;margin-right:3px;}body.login{font-family:Tahoma,arial;}.login form{margin-right:8px;margin-left:0;}.login form .forgetmenot{float:right;}.login form .submit{float:left;}#login form .submit input{font-family:Tahoma,arial;}.login #nav,.login #backtoblog{margin:0 16px 0 0;}#login_error,.login .message{margin:0 8px 16px 0;}.login #user_pass,.login #user_login,.login #user_email{margin-left:6px;margin-right:0;direction:ltr;}.login h1 a{text-decoration:none;}.login .button-primary{float:left;}#nav-menus-frame{margin-right:300px;margin-left:0;}#wpbody-content #menu-settings-column{margin-right:-300px;margin-left:0;float:right;}#menu-management-liquid{float:right;}#menu-management{margin-left:20px;margin-right:0;}.post-body-plain{padding:10px 0 0 10px;}#menu-management .nav-tabs-arrow-left{right:0;left:auto;}#menu-management .nav-tabs-arrow-right{left:0;right:auto;text-align:left;font-family:Tahoma,Arial,sans-serif;}#menu-management .nav-tabs{padding-right:20px;padding-left:10px;}.js #menu-management .nav-tabs{float:right;margin-right:0;margin-left:-400px;}#select-nav-menu-container{text-align:left;}#wpbody .open-label{float:right;}#wpbody .open-label span{padding-left:10px;padding-right:0;}.js .input-with-default-title{font-style:normal;font-weight:bold;}.postbox .howto input{float:left;}#nav-menu-theme-locations .button-controls{text-align:left;}.meta-sep,.submitcancel{float:right;}#cancel-save{margin-left:0;margin-right:20px;}.list-controls{float:right;}.add-to-menu{float:left;}#add-custom-link label span{float:right;padding-left:5px;padding-right:0;}.howto span{float:right;}.list li .menu-item-title input{margin-left:3px;margin-right:0;}.menu-item-handle{padding-right:10px;padding-left:0;}.menu-item-edit-active .menu-item-handle{-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0;}.menu-item-handle .item-title{margin-left:13em;margin-right:0;}.menu-item-depth-0{margin-right:0;margin-left:0;}.menu-item-depth-1{margin-right:30px;margin-left:0;}.menu-item-depth-2{margin-right:60px;margin-left:0;}.menu-item-depth-3{margin-right:90px;margin-left:0;}.menu-item-depth-4{margin-right:120px;margin-left:0;}.menu-item-depth-5{margin-right:150px;margin-left:0;}.menu-item-depth-6{margin-right:180px;margin-left:0;}.menu-item-depth-7{margin-right:210px;margin-left:0;}.menu-item-depth-8{margin-right:240px;margin-left:0;}.menu-item-depth-9{margin-right:270px;margin-left:0;}.menu-item-depth-10{margin-right:300px;margin-left:0;}.menu-item-depth-11{margin-right:330px;margin-left:0;}.menu-item-depth-0 .menu-item-transport{margin-right:0;margin-left:0;}.menu-item-depth-1 .menu-item-transport{margin-right:-30px;margin-left:0;}.menu-item-depth-2 .menu-item-transport{margin-right:-60px;margin-left:0;}.menu-item-depth-3 .menu-item-transport{margin-right:-90px;margin-left:0;}.menu-item-depth-4 .menu-item-transport{margin-right:-120px;margin-left:0;}.menu-item-depth-5 .menu-item-transport{margin-right:-150px;margin-left:0;}.menu-item-depth-6 .menu-item-transport{margin-right:-180px;margin-left:0;}.menu-item-depth-7 .menu-item-transport{margin-right:-210px;margin-left:0;}.menu-item-depth-8 .menu-item-transport{margin-right:-240px;margin-left:0;}.menu-item-depth-9 .menu-item-transport{margin-right:-270px;margin-left:0;}.menu-item-depth-10 .menu-item-transport{margin-right:-300px;margin-left:0;}.menu-item-depth-11 .menu-item-transport{margin-right:-330px;margin-left:0;}.item-type{padding-left:10px;padding-right:0;}.item-controls{left:20px;right:auto;}.item-controls .item-order{padding-left:10px;padding-right:0;}.item-edit{left:-20px;right:auto;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:0;}.menu-item-settings{padding:10px 10px 10px 0;border-width:0 1px 1px 1px;}.link-to-original{font-style:normal;font-weight:bold;}.link-to-original a{padding-right:4px;padding-left:0;}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-left:10px;margin-right:0;float:right;}.major-publishing-actions .publishing-action{text-align:left;float:left;}.major-publishing-actions .delete-action{text-align:right;float:right;padding-left:15px;padding-right:0;}.menu-name-label{margin-left:15px;margin-right:0;}.auto-add-pages{float:right;}div.star{left:auto;right:0;letter-spacing:0;}.star img,div.star a,div.star a:hover,div.star a:visited{right:auto;left:0;}#plugin-information ul#sidemenu{left:auto;right:0;}#plugin-information h2{margin-right:0;margin-left:200px;}#plugin-information .fyi{margin-left:5px;margin-right:20px;}#plugin-information .fyi h2{margin-left:0;}#plugin-information .fyi ul{padding:10px 7px 10px 5px;}#plugin-information #section-screenshots li p{padding-left:0;padding-right:20px;}#plugin-information .updated,#plugin-information pre{margin-right:0;margin-left:215px;}#plugin-information .updated,#plugin-information .error{clear:none;direction:rtl;}#section-description{direction:ltr;}.posting{margin-left:212px;margin-right:0;position:relative;}#side-info-column{float:left;right:auto;left:0;}h3.tb{margin-left:0;margin-right:5px;}#publish{float:left;}.postbox .handlediv{float:left;}.actions li{float:right;margin-right:0;margin-left:10px;}#extra-fields .actions{margin:-23px 0 0 -7px;}#img_container a{float:right;}#category-add input,#category-add select{font-family:Tahoma,Arial;}.inline-editor ul.cat-checklist ul,.categorydiv ul.categorychecklist ul,#linkcategorydiv ul.categorychecklist ul{margin-left:0;margin-right:18px;}.category-tabs li{padding-left:0;padding-right:8px;}#tagsdiv #newtag{margin-right:0;margin-left:5px;}#tagadd{margin-left:0;margin-right:3px;}#tagchecklist span{margin-left:.5em;margin-right:10px;float:right;}#tagchecklist span a{margin:6px -9px 0 0;float:right;}.submit input,.button,.button-primary,.button-secondary,.button-highlighted,#postcustomstuff .submit input{font-family:Tahoma,Arial,sans-serif;}.ac_results li{text-align:right;}#TB_ajaxContent #options{right:auto;left:25px;}#post_status{margin-left:0;margin-right:10px;}#templateside{float:left;}#template textarea{direction:ltr;}div.star{left:auto;right:0;}.star img,div.star a,div.star a:hover,div.star a:visited{right:auto;left:0;}.theme-listing .theme-item h3{font-style:normal;}#theme-information .theme-preview-img{float:right;margin:5px 15px 10px 25px;}#theme-information .action-button #cancel{float:right;}#theme-information .action-button #install{float:left;}.feature-filter .feature-group{float:right;}.feature-filter .feature-name{float:right;text-align:left;}.feature-filter .feature-group li{float:right;padding-right:0;padding-left:25px;}div.widget-liquid-left{float:right;clear:right;margin-right:0;margin-left:-325px;}div#widgets-left{margin-right:5px;margin-left:325px;}div.widget-liquid-right{float:left;clear:left;}.inactive-sidebar .widget{float:right;}div.sidebar-name h3{font-family:Tahoma,Arial,sans-serif;}#widget-list .widget{float:right;}.inactive-sidebar .widget-placeholder{float:right;}.widget-top .widget-title-action{float:left;}.widget-control-edit{padding:0 0 0 8px;}.sidebar-name-arrow{float:left;}.press-this-sidebar{float:left;}
\ No newline at end of file
+ol{margin-left:0;margin-right:2em}.code,code{font-family:monospace;direction:ltr}.quicktags,.search{font:12px Tahoma,Arial,sans-serif}.icon32{float:right;margin-right:0;margin-left:8px}.icon16{float:right;margin-right:-8px;margin-left:0}.howto{font-style:normal;font-family:Tahoma,Arial,sans-serif}p.install-help{font-style:normal}#doaction,#doaction2,#post-query-submit{margin-right:0;margin-left:8px}#timezone_string option{margin-left:0;margin-right:1em}#pass-strength-result{float:right;margin:13px 1px 5px 5px}p.search-box{float:left}input[type=password]{direction:ltr}input[type="text"].ui-autocomplete-loading{background:transparent url('../images/loading.gif') no-repeat left center}ul#add-to-blog-users{margin:0 14px 0 0}.ui-autocomplete li{text-align:right}#delete-action{float:right}#publishing-action{float:left}#post-body .misc-pub-section{border-right:0;border-left-width:1px;border-left-style:solid}#post-body .misc-pub-section-last{border-left:0}#minor-publishing-actions{padding:10px 8px 2px 10px;text-align:left}#save-post{float:right}#minor-publishing .ajax-loading{padding:3px 4px 0 0;float:right}.preview{float:left}#sticky-span{margin-left:0;margin-right:18px}.side-info ul{padding-left:0;padding-right:18px}td.action-links,th.action-links{text-align:left}.describe .del-link{padding-left:0;padding-right:5px}form.upgrade .hint{font-style:normal}#ajax-response.alignleft{margin-left:0;margin-right:2em}#quicktags{background-position:right top}#ed_reply_toolbar input{margin:1px 1px 1px 2px}#wphead{height:32px;margin-left:15px;margin-right:2px}#header-logo{float:right}#wphead h1{float:right}#screen-meta-links{margin-right:0;margin-left:24px}#screen-meta{margin-right:5px;margin-left:15px}#screen-options-link-wrap,#contextual-help-link-wrap{float:left;margin-left:0;margin-right:6px}#screen-meta-links a.show-settings{padding-right:6px;padding-left:16px}.toggle-arrow{background-position:top right}.toggle-arrow-active{background-position:bottom right}.metabox-prefs label{padding-right:0;padding-left:15px}.metabox-prefs label input{margin-right:2px;margin-left:5px}#contextual-help-wrap{margin-left:0;margin-right:-4px}#contextual-help-back{left:170px;right:150px}#contextual-help-wrap.no-sidebar #contextual-help-back{left:0;right:150px;border-right-width:1px;border-left-width:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:2px;border-bottom-left-radius:2px}.contextual-help-tabs{float:right}.contextual-help-tabs a{padding-left:5px;padding-right:12px}.contextual-help-tabs .active{margin-right:0;margin-left:-1px}.contextual-help-tabs .active,.contextual-help-tabs-wrap{border-left:0;border-right-width:1px}.help-tab-content{margin-right:0;margin-left:22px}.help-tab-content li{margin-left:0;margin-right:18px}.contextual-help-sidebar{float:left;padding-right:12px;padding-left:8px}#adminmenuback,#adminmenuwrap{border-width:0 0 0 1px}#adminmenushadow{right:auto;left:0}#adminmenu li .wp-submenu{left:auto;right:146px}.folded #adminmenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{left:auto;right:26px}#adminmenu .wp-submenu.sub-open,#adminmenu li.focused.wp-not-current-submenu .wp-submenu,.folded #adminmenu li.focused.wp-has-current-submenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.no-js #adminmenu .wp-has-submenu:hover .wp-submenu,.no-js.folded #adminmenu .wp-has-current-submenu:hover .wp-submenu{padding:0 0 8px 8px}#adminmenu div.wp-menu-image{float:right}#adminmenu li li{margin-left:0;margin-right:8px}#adminmenu .wp-submenu a,#adminmenu li li a,.folded #adminmenu .wp-not-current-submenu li a{padding-left:0;padding-right:12px}#adminmenu .wp-not-current-submenu li a{padding-left:0;padding-right:18px}.folded #adminmenu li li{margin-left:inherit;margin-right:0}.folded #adminmenu li li a{padding-left:inherit;padding-right:0}.wp-menu-arrow{right:0;-moz-transform:translate(-139px);-webkit-transform:translate(-139px);-o-transform:translate(-139px);-ms-transform:translate(-139px);transform:translate(-139px)}.ie8 .wp-menu-arrow{right:-20px}#adminmenu .wp-menu-arrow div{left:-8px;width:16px}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{-moz-transform:translate(-138px);-webkit-transform:translate(-138px);-o-transform:translate(-138px);-ms-transform:translate(-138px);transform:translate(-138px)}.folded .wp-menu-arrow{-moz-transform:translate(-27px);-webkit-transform:translate(-27px);-o-transform:translate(-27px);-ms-transform:translate(-27px);transform:translate(-27px)}#adminmenu .wp-not-current-submenu .wp-menu-arrow div{border-style:solid solid none none;border-width:1px 1px 0 0}#adminmenu .wp-menu-image img{float:right;padding:5px 2px 0 0}#adminmenu .wp-submenu .wp-submenu-head{padding:6px 10px 5px 4px}#adminmenu li .wp-submenu-wrap{border-width:1px 0 1px 1px;border-style:solid none solid solid;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px}.folded #adminmenu .wp-submenu ul{border-width:0 1px 0 0}.folded #adminmenu .wp-submenu a{padding-left:0;padding-right:10px}.folded #adminmenu a.wp-has-submenu{margin-left:0;margin-right:40px}#adminmenu .wp-menu-toggle{clear:left;float:left;padding:1px 0 0 2px}#adminmenu .awaiting-mod,#adminmenu span.update-plugins,#sidemenu li a span.update-plugins{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:7px}#collapse-button{float:right}@media only screen and (max-width:900px){#adminmenu li .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu{left:auto;right:26px}#adminmenu li.focused.wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu.sub-open{padding:0 0 8px 8px}.folded #adminmenu .wp-not-current-submenu li a{padding-left:0;padding-right:12px}#adminmenu li li,#adminmenu li li a{padding-left:inherit;padding-right:0}.wp-menu-arrow{-moz-transform:translate(-27px);-webkit-transform:translate(-27px);-o-transform:translate(-27px);-ms-transform:translate(-27px);transform:translate(-27px)}#adminmenu .wp-submenu ul{border-width:0 1px 0 0}#adminmenu .wp-submenu a{padding-left:0;padding-right:10px}#adminmenu a.wp-has-submenu{margin-left:0;margin-right:40px}body #wpcontent{margin-left:0;margin-right:52px}body .wp-admin #footer{margin-left:15px;margin-right:52px}}.post-com-count-wrapper{font-family:Tahoma,Arial,sans-serif}.column-response .post-com-count{float:right;margin-right:0;margin-left:5px}.response-links{float:right}.widefat th{font-family:Tahoma,Arial,sans-serif}.widefat td p{margin:2px 0 .8em}.postbox-container{float:right}.postbox .handlediv{float:left}#the-comment-list p.comment-author img{float:right;margin-right:0;margin-left:8px}#dashboard_browser_nag p.browser-update-nag.has-browser-icon{padding-right:0;padding-left:125px}.welcome-panel .welcome-panel-close{right:auto;left:10px}.welcome-panel .welcome-panel-close:before{left:auto;right:-12px}.welcome-panel .wp-badge{float:right}.welcome-panel-content .about-description,.welcome-panel h3{margin-left:0;margin-right:190px}.welcome-panel .welcome-panel-column{margin:0 -25px 0 5%;padding-left:0;padding-right:25px;float:right}.welcome-panel .welcome-panel-column.welcome-panel-last{margin-right:auto;padding-right:0;margin-left:0}.welcome-panel h4 .icon16{margin-left:0;margin-right:-32px}.welcome-panel .welcome-panel-column-container{padding:0 25px 0 0}.welcome-panel .welcome-panel-column ul{margin:1.6em 1.3em 1em 1em}.welcome-panel .welcome-panel-column li{padding-left:0;padding-right:2px}.fixed .column-comments{text-align:right}.fixed .column-comments .vers{padding-left:0;padding-right:3px}.fixed .column-comments a{float:right}.sorting-indicator{margin-left:0;margin-right:7px}th.sortable a span,th.sorted a span{float:right}.tablenav-pages a{margin-right:0;margin-left:1px}.tablenav-pages .next-page{margin-left:0;margin-right:2px}.tablenav a.button-secondary{margin:3px 0 0 8px}.tablenav .tablenav-pages{float:left}.tablenav .displaying-num{margin-right:0;margin-left:10px;font-family:Tahoma,Arial,sans-serif;font-style:normal}.tablenav .actions{padding:2px 0 0 8px}.tablenav .delete{margin-right:0;margin-left:20px}.view-switch{float:left}.filter{float:right;margin:-5px 10px 0 0}.filter .subsubsub{margin-left:0;margin-right:-10px}#posts-filter fieldset{float:right;margin:0 0 1em 1.5ex}#posts-filter fieldset legend{padding:0 1px .2em 0}#wpbody-content .inline-edit-row fieldset{float:right}#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col{border-width:0 1px 0 0}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:left}.inline-edit-row fieldset label span.title{float:right}.inline-edit-row fieldset label span.input-text-wrap{margin-left:0;margin-right:5em}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{padding-right:0;padding-left:.5em}#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child{margin-right:0;margin-left:.5em}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{font-family:Tahoma,Arial,sans-serif;font-style:normal}.inline-edit-row fieldset .inline-edit-date{float:right}.inline-edit-row fieldset ul.cat-checklist label,.inline-edit-row .catshow,.inline-edit-row .cathide,.inline-edit-row #bulk-titles div{font-family:Tahoma,Arial,sans-serif}.quick-edit-row-post fieldset label.inline-edit-status{float:right}#bulk-titles div a{float:right;margin:3px -2px 0 3px;overflow:hidden;text-indent:-9999px}#post-body-content{float:right}#poststuff #post-body.columns-2{margin-left:300px;margin-right:0}#post-body.columns-2 #postbox-container-1{float:left;margin-left:-300px;margin-right:0}@media only screen and (max-width:850px){#wpbody-content #post-body.columns-2 #postbox-container-1{margin-left:0}}#titlediv #title-prompt-text,#wp-fullscreen-title-prompt-text{right:0}#sample-permalink{direction:ltr}#sample-permalink #editable-post-name{unicode-bidi:embed}#wp-fullscreen-title-prompt-text{left:auto;right:0}.postarea h3 label{float:right}.submitbox .submit{text-align:right}.inside-submitbox #post_status{margin:2px -2px 2px 0}.submitbox .submit input{margin-right:0;margin-left:4px}#normal-sortables .postbox .submit{float:left}.taxonomy div.tabs-panel{margin:0 125px 0 5px}#side-sortables .comments-box thead th,#normal-sortables .comments-box thead th{font-style:normal}#commentsdiv img.waiting{padding-left:0;padding-right:5px}#post-body .add-menu-item-tabs li.tabs{border-width:1px 1px 1px 0;margin-right:0;margin-left:-1px}#post-body .tagsdiv #newtag{margin-right:0;margin-left:5px}.autosave-info{padding:2px 2px 2px 15px;text-align:left}#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:transparent url(../images/resize-rtl.gif) no-repeat scroll left bottom;cursor:sw-resize}.curtime #timestamp{background-position:right top;padding-left:0;padding-right:18px}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{margin:8px 8px 8px 0}table.diff td,table.diff th{font-family:Consolas,Monaco,monospace}.category-adder{margin-left:0;margin-right:120px}#post-body ul.add-menu-item-tabs{float:right;text-align:left;margin:0 5px 0 -120px}#post-body ul.add-menu-item-tabs li.tabs{-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;border-top-left-radius:0;border-top-right-radius:3px;border-bottom-left-radius:0;border-bottom-right-radius:3px}#front-page-warning,#front-static-pages ul,ul.export-filters,.inline-editor ul.cat-checklist ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul{margin-left:0;margin-right:18px}#post-body .add-menu-item-tabs li.tabs{border-style:solid solid solid none;border-width:1px 1px 1px 0;margin-right:0;margin-left:-1px}p.help,p.description,span.description,.form-wrap p{font-style:normal;font-family:Tahoma,Arial,sans-serif}.taghint{margin:15px 12px -24px 0}#poststuff .tagsdiv .howto{margin:0 8px 6px 0}.ac_results li{text-align:right}.links-table th{text-align:right}#wpbody-content .describe th{text-align:right}.describe .media-item-info .A1B1{padding:0 10px 0 0}.media-upload-form td label{margin-left:6px;margin-right:2px}.media-upload-form .align .field label{padding:0 23px 0 0;margin:0 3px 0 1em}.media-upload-form tr.image-size label{margin:0 5px 0 0}#wpbody-content .describe p.help{padding:0 5px 0 0}.media-item .error-div a.dismiss,.describe-toggle-on,.describe-toggle-off{float:left;margin-right:0;margin-left:15px}.media-item .error-div a.dismiss{padding:0 15px 0 0}.media-item .error-div{padding-left:0;padding-right:10px}.media-item .pinkynail{float:right}.media-item .describe td{padding:0 0 8px 8px}.media-item .progress{float:left;margin:6px 0 0 10px}#find-posts-response .found-radio{padding:5px 8px 0 0}.find-box-search label{padding-right:0;padding-left:6px}.find-box #resize-se{right:auto;left:1px}form.upgrade .hint{font-style:normal}.imgedit-menu div{float:right}.imgedit-help{font-style:normal}.imgedit-submit-btn{margin-left:0;margin-right:20px}.form-table th{text-align:right}.form-table input.tog{margin-right:0;margin-left:2px;float:right}.form-table table.color-palette{float:right}#replysubmit img.waiting,.inline-edit-save img.waiting{float:left}#replysubmit .button{margin-right:0;margin-left:5px}#edithead .inside{float:right;padding:3px 5px 2px 0}.comment-ays th{border-right-style:none;border-left-style:solid;border-right-width:0;border-left-width:1px}.spam-undo-inside .avatar,.trash-undo-inside .avatar{margin-left:8px}#comment-status-radio input{margin:2px 0 5px 3px}h3.available-themes{float:right}.available-theme{margin-right:0;margin-left:10px;padding:20px 0 20px 20px}#current-theme .theme-info li,.theme-options li,.available-theme .action-links li{float:right;padding-right:0;padding-left:10px;margin-right:0;margin-left:10px;border-right:0;border-left:1px solid #dfdfdf}.available-theme .action-links li{padding-left:8px;margin-left:8px}#current-theme .theme-info li:last-child,.theme-options li:last-child,.available-theme .action-links li:last-child{padding-left:0;margin-right:0;border-left:0}.available-theme .action-links .delete-theme{float:left;margin-left:0;margin-right:8px}.available-theme .action-links p{float:right}#current-theme.has-screenshot{padding-left:0;padding-right:330px}#current-theme h4 span{margin-left:0;margin-right:20px}#current-theme img{float:right;width:300px;margin-left:0;margin-right:-330px}.theme-options .load-customize{margin-right:0;margin-left:30px;float:right}.theme-options span{float:right;margin-right:0;margin-left:10px}.theme-options ul{float:right}@media only screen and (max-width:1200px){#current-theme.has-screenshot{padding-right:270px}#current-theme img{margin-right:-270px;width:240px}}#broken-themes{text-align:right}.appearance_page_custom-header .available-headers .default-header{float:right;margin:0 0 20px 20px}.appearance_page_custom-header .random-header{margin:0 0 20px 20px}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-right:0;margin-left:10px}.nav-tab{margin:0 0 -1px 6px}h2 .nav-tab{font-family:Tahoma,Arial,sans-serif}.plugins .desc ul,.plugins .desc ol{margin:0 2em 0 0}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-right:0;padding-left:12px}#profile-page .form-table #rich_editing{margin-right:0;margin-left:5px}#profile-page #pass1,#profile-page #pass2,#profile-page #user_login{direction:ltr}#your-profile legend{font-family:Tahoma,Arial,sans-serif}.pressthis a span{background-position:right 5px;padding:8px 27px 8px 11px}.pressthis a:after{right:auto;left:10px;background:transparent;transform:skew(-20deg) rotate(-6deg);-webkit-transform:skew(-20deg) rotate(-6deg);-moz-transform:skew(-20deg) rotate(-6deg)}.pressthis a:hover:after{transform:skew(-20deg) rotate(-9deg);-webkit-transform:skew(-20deg) rotate(-9deg);-moz-transform:skew(-20deg) rotate(-9deg)}#utc-time,#local-time{padding-left:0;padding-right:25px;font-style:normal;font-family:Tahoma,Arial,sans-serif}#footer{margin-left:20px}#wpcontent,#footer{margin-right:165px}.wrap.about-wrap{margin-left:40px;margin-right:20px}.about-wrap h1,.about-text{margin-right:0;margin-left:200px}.about-wrap h2.nav-tab-wrapper{padding-left:0;padding-right:6px}.about-wrap .wp-badge{right:auto;left:0}.about-wrap h2 .nav-tab{margin-right:0;margin-left:3px}.about-wrap .changelog li{margin-left:0;margin-right:3em}.about-wrap .three-col-images .last-feature{float:left}.about-wrap .three-col-images .first-feature{float:right}.about-wrap .feature-section.three-col div{margin-right:0;margin-left:4.999999999%;float:right}.about-wrap .feature-section.three-col h4{text-align:right}.about-wrap .feature-section.three-col img{margin-right:5px;margin-left:0}.about-wrap .feature-section.three-col .last-feature{margin-left:0}.about-wrap .feature-section img{margin:0 0 10px .7%}.about-wrap .feature-section.images-stagger-right img{float:left;margin:0 12px 12px 5px}.about-wrap .feature-section.images-stagger-left img{float:right;margin:0 5px 12px 12px}.about-wrap li.wp-person,.about-wrap li.wp-person img.gravatar{float:right;margin-right:0;margin-left:10px}#template div{margin-right:0;margin-left:190px}.column-author img,.column-username img{float:right;margin-right:0;margin-left:10px}.tagchecklist{margin-left:0;margin-right:14px}.tagchecklist strong{margin-left:0;margin-right:-8px}.tagchecklist span{margin-right:0;margin-left:25px;float:right}.tagchecklist span a{margin:6px -9px 0 0;float:right}#poststuff h2{clear:right}#poststuff h3,.metabox-holder h3{font-family:Tahoma,Arial,sans-serif}.tool-box .title{font-family:Tahoma,Arial,sans-serif}#sidemenu{margin:-30px 315px 0 15px;float:left;padding-left:0;padding-right:10px}#sidemenu a{float:right}table .vers,table .column-visible,table .column-rating{text-align:right}.screen-meta-toggle{right:auto;left:15px}* html #template div{margin-left:0}.list-ajax-loading{float:left;margin-right:0;margin-left:9px}#editorcontainer .wp_themeSkin .mceStatusbar{padding-left:0;padding-right:5px}#editorcontainer .wp_themeSkin .mceStatusbar div{float:right}#editorcontainer .wp_themeSkin .mceStatusbar a.mceResize{float:left}.wp-full-overlay .wp-full-overlay-sidebar{margin:0;left:auto;right:0;border-right:0;border-left:1px solid rgba(0,0,0,0.2)}.wp-full-overlay-sidebar:after{right:auto;left:0;box-shadow:inset 5px 0 4px -4px rgba(0,0,0,0.1)}.wp-full-overlay.collapsed,.wp-full-overlay.expanded .wp-full-overlay-sidebar{margin-right:0!important}.wp-full-overlay.expanded{margin-right:300px;margin-left:0}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-right:-300px;margin-left:0}.wp-full-overlay .collapse-sidebar{right:0;left:auto;margin-right:15px}.wp-full-overlay.collapsed .collapse-sidebar{right:100%}.wp-full-overlay .collapse-sidebar-arrow{margin-right:2px;margin-left:0;background:transparent url('../../wp-admin/images/arrows.png') no-repeat 0 -108px}.wp-full-overlay.collapsed .collapse-sidebar-arrow{background-position:0 -72px}.wp-full-overlay .collapse-sidebar-label{right:100%;left:auto;margin-right:10px;margin-left:0}.install-theme-info .theme-install{float:left}#wpcontent{margin-left:0;margin-right:165px}.folded #wpcontent{margin-left:0;margin-right:52px}.folded.wp-admin #footer{margin-left:15px;margin-right:52px}#wpbody-content{float:right}#adminmenuwrap{float:right}#adminmenu{clear:right}.inner-sidebar{float:left;clear:left}.has-right-sidebar #post-body{float:right;clear:right;margin-right:0;margin-left:-340px}.has-right-sidebar #post-body-content{margin-right:0;margin-left:300px}#col-right{float:left;clear:left}.alignleft{float:right}.alignright{float:left}.textleft{text-align:right}.textright{text-align:left}.screen-reader-text,.screen-reader-text span{left:auto;right:-1000em}body,td,textarea,input,select{font-family:Tahoma,Arial,sans-serif}ul.ul-disc,ul.ul-square,ol.ol-decimal{margin-left:0;margin-right:1.8em}.subsubsub{float:right}.widefat thead th:first-of-type{-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;border-top-left-radius:0;border-top-right-radius:3px}.widefat thead th:last-of-type{-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px}.widefat tfoot th:first-of-type{-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:0;border-bottom-right-radius:3px}.widefat tfoot th:last-of-type{-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px}.widefat th{text-align:right}.widefat th input{margin:0 8px 0 0}.wrap{margin-right:0;margin-left:15px}.wrap h2,.subtitle{font-family:Tahoma,Arial,sans-serif}.wrap h2{padding-right:0;padding-left:15px}.subtitle{padding-left:0;padding-right:25px}.wrap .add-new-h2{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:4px}.wrap h2.long-header{padding-left:0}#dashboard-widgets-wrap .has-sidebar{margin-right:0;margin-left:-51%}#dashboard-widgets-wrap .has-sidebar .has-sidebar-content{margin-right:0;margin-left:51%}.view-all{right:auto;left:0}#dashboard_right_now p.sub,#dashboard-widgets h4,a.rsswidget,#dashboard_plugins h4,#dashboard_plugins h5,#dashboard_recent_comments .comment-meta .approve,#dashboard_right_now td.b,#dashboard_right_now .versions a{font-family:Tahoma,Arial,sans-serif}#dashboard_right_now p.sub{left:auto;right:15px}#dashboard_right_now td.b{padding-right:0;padding-left:6px;text-align:left}#dashboard_right_now .t{padding-right:0;padding-left:12px}#dashboard_right_now .table_content{float:right}#dashboard_right_now .table_discussion{float:left}#dashboard_right_now a.button{float:left;clear:left}#dashboard_plugins .inside span{padding-left:0;padding-right:5px}#dashboard-widgets h3 .postbox-title-action{right:auto;left:30px}#the-comment-list .pingback{padding-left:0!important;padding-right:9px!important}#the-comment-list .comment-item{padding:1em 70px 1em 10px}#the-comment-list .comment-item .avatar{float:right;margin-left:0;margin-right:-60px}.rss-widget cite{text-align:left}.rss-widget span.rss-date{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:3px}#dashboard_quick_press h4{float:right;text-align:left}#dashboard_quick_press .wp-media-buttons{margin:0 5em .5em 0}#dashboard_quick_press h4 label{margin-right:0;margin-left:10px}#dashboard_quick_press .input-text-wrap,#dashboard_quick_press .textarea-wrap{margin:0 5em 1em 0}#dashboard_quick_press #media-buttons{margin:0 5em .5em 0;padding:0}#dashboard-widgets #dashboard_quick_press form p.submit{margin-left:0;margin-right:4.6em}#dashboard-widgets #dashboard_quick_press form p.submit input{float:right}#dashboard-widgets #dashboard_quick_press form p.submit #save-post{margin:0 10px 0 1em}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:left}#dashboard-widgets #dashboard_quick_press form p.submit img.waiting{margin:4px 0 0 6px}#dashboard_recent_drafts h4 abbr{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:3px}body.login{font-family:Tahoma,Arial,sans-serif}.login form{margin-right:8px;margin-left:0}.login form .forgetmenot{float:right}.login form .submit{float:left}#login form .submit input{font-family:Tahoma,Arial,sans-serif}.login #nav,.login #backtoblog{margin:0 16px 0 0}#login_error,.login .message{margin:0 8px 16px 0}.login #user_pass,.login #user_login,.login #user_email{margin-left:6px;margin-right:0;direction:ltr}.login h1 a{text-decoration:none}.login .button-primary{float:left}#nav-menus-frame{margin-right:300px;margin-left:0}#wpbody-content #menu-settings-column{margin-right:-300px;margin-left:0;float:right}#menu-management-liquid{float:right}#menu-management{margin-left:20px;margin-right:0}.post-body-plain{padding:10px 0 0 10px}#menu-management .nav-tabs-arrow-left{right:0;left:auto}#menu-management .nav-tabs-arrow-right{left:0;right:auto;text-align:left;font-family:Tahoma,Arial,sans-serif}#menu-management .nav-tabs{padding-right:20px;padding-left:10px}.js #menu-management .nav-tabs{float:right;margin-right:0;margin-left:-400px}#select-nav-menu-container{text-align:left}#wpbody .open-label{float:right}#wpbody .open-label span{padding-left:10px;padding-right:0}.js .input-with-default-title{font-style:normal;font-weight:bold}.postbox .howto input{float:left}#nav-menu-theme-locations .button-controls{text-align:left}.meta-sep,.submitcancel{float:right}#cancel-save{margin-left:0;margin-right:20px}.list-controls{float:right}.add-to-menu{float:left}#add-custom-link label span{float:right;padding-left:5px;padding-right:0}.nav-menus-php .howto span{float:right}.list li .menu-item-title input{margin-left:3px;margin-right:0}.menu-item-handle{padding-right:10px;padding-left:0}.menu-item-edit-active .menu-item-handle{-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.menu-item-handle .item-title{margin-left:13em;margin-right:0}.menu-item-handle .item-edit{right:auto;left:-20px}.menu-item-depth-0{margin-right:0;margin-left:0}.menu-item-depth-1{margin-right:30px;margin-left:0}.menu-item-depth-2{margin-right:60px;margin-left:0}.menu-item-depth-3{margin-right:90px;margin-left:0}.menu-item-depth-4{margin-right:120px;margin-left:0}.menu-item-depth-5{margin-right:150px;margin-left:0}.menu-item-depth-6{margin-right:180px;margin-left:0}.menu-item-depth-7{margin-right:210px;margin-left:0}.menu-item-depth-8{margin-right:240px;margin-left:0}.menu-item-depth-9{margin-right:270px;margin-left:0}.menu-item-depth-10{margin-right:300px;margin-left:0}.menu-item-depth-11{margin-right:330px;margin-left:0}.menu-item-depth-0 .menu-item-transport{margin-right:0;margin-left:0}.menu-item-depth-1 .menu-item-transport{margin-right:-30px;margin-left:0}.menu-item-depth-2 .menu-item-transport{margin-right:-60px;margin-left:0}.menu-item-depth-3 .menu-item-transport{margin-right:-90px;margin-left:0}.menu-item-depth-4 .menu-item-transport{margin-right:-120px;margin-left:0}.menu-item-depth-5 .menu-item-transport{margin-right:-150px;margin-left:0}.menu-item-depth-6 .menu-item-transport{margin-right:-180px;margin-left:0}.menu-item-depth-7 .menu-item-transport{margin-right:-210px;margin-left:0}.menu-item-depth-8 .menu-item-transport{margin-right:-240px;margin-left:0}.menu-item-depth-9 .menu-item-transport{margin-right:-270px;margin-left:0}.menu-item-depth-10 .menu-item-transport{margin-right:-300px;margin-left:0}.menu-item-depth-11 .menu-item-transport{margin-right:-330px;margin-left:0}.item-type{padding-left:10px;padding-right:0}.item-controls{left:20px;right:auto}.item-controls .item-order{padding-left:10px;padding-right:0}.item-edit{left:-20px;right:auto;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:0}.menu-item-settings{padding:10px 10px 10px 0;border-width:0 1px 1px 1px}#custom-menu-item-url{direction:ltr}.link-to-original{font-style:normal;font-weight:bold}.link-to-original a{padding-right:4px;padding-left:0}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-left:10px;margin-right:0;float:right}.major-publishing-actions .publishing-action{text-align:left;float:left}.major-publishing-actions .delete-action{text-align:right;float:right;padding-left:15px;padding-right:0}.menu-name-label{margin-left:15px;margin-right:0}.auto-add-pages{float:right}div.star-holder{background:url('../images/stars-rtl.png?ver=20120506.png') repeat-x bottom right}div.star-holder .star-rating{background:url('../images/stars-rtl.png?ver=20120506.png') repeat-x top right;float:right}#plugin-information ul#sidemenu{left:auto;right:0}#plugin-information h2{margin-right:0;margin-left:200px}#plugin-information .fyi{margin-left:5px;margin-right:20px}#plugin-information .fyi h2{margin-left:0}#plugin-information .fyi ul{padding:10px 7px 10px 5px}#plugin-information #section-screenshots li p{padding-left:0;padding-right:20px}#plugin-information #section-screenshots ol,#plugin-information .updated,#plugin-information pre{margin-right:0;margin-left:215px}#plugin-information .updated,#plugin-information .error{clear:none;direction:rtl}#plugin-information #section-holder .section{direction:ltr}.posting{margin-left:212px;margin-right:0;position:relative}h3.tb{margin-left:0;margin-right:5px}#publish{float:left}.postbox .handlediv{float:left}.actions li{float:right;margin-right:0;margin-left:10px}#extra-fields .actions{margin:-23px 0 0 -7px}#img_container a{float:right}#category-add input,#category-add select{font-family:Tahoma,Arial,sans-serif}#tagsdiv #newtag{margin-right:0;margin-left:5px}#tagadd{margin-left:0;margin-right:3px}#tagchecklist span{margin-left:.5em;margin-right:10px;float:right}#tagchecklist span a{margin:6px -9px 0 0;float:right}.submit input,.button,.button-primary,.button-secondary,.button-highlighted,#postcustomstuff .submit input{font-family:Tahoma,Arial,sans-serif}.ac_results li{text-align:right}#TB_ajaxContent #options{right:auto;left:25px}#post_status{margin-left:0;margin-right:10px}#templateside{float:left}#template textarea,#docs-list{direction:ltr}.theme-details .theme-version{float:right}.theme-details .star-holder{float:left}.feature-filter .feature-group{float:right}.feature-filter .feature-name{float:right;text-align:left}.feature-filter .feature-group li{float:right;padding-right:0;padding-left:25px}div.widget-liquid-left{float:right;clear:right;margin-right:0;margin-left:-325px}div#widgets-left{margin-right:5px;margin-left:325px}div.widget-liquid-right{float:left;clear:left}.inactive-sidebar .widget{float:right}div.sidebar-name h3{font-family:Tahoma,Arial,sans-serif}#widget-list .widget{float:right}.inactive-sidebar .widget-placeholder{float:right}.widget-top .widget-title-action{float:left}.widget-control-edit{padding:0 0 0 8px}.sidebar-name-arrow{float:left}.press-this-sidebar{float:left}.press-this #header-logo,.press-this #wphead h1{float:right}.ltr{direction:ltr}body.locale-he-il,.locale-he-il .quicktags,.locale-he-il .search,.locale-he-il .howto,.locale-he-il #adminmenu .awaiting-mod,.locale-he-il #adminmenu span.update-plugins,.locale-he-il #sidemenu li a span.update-plugins,.locale-he-il .post-com-count-wrapper,.locale-he-il .widefat th,.locale-he-il .tablenav .displaying-num,.locale-he-il .inline-edit-row fieldset span.title,.locale-he-il .inline-edit-row fieldset span.checkbox-title,.locale-he-il .inline-edit-row fieldset ul.cat-checklist label,.locale-he-il .inline-edit-row .catshow,.locale-he-il .inline-edit-row .cathide,.locale-he-il .inline-edit-row #bulk-titles div,.locale-he-il p.help,.locale-he-il p.description,.locale-he-il span.description,.locale-he-il .form-wrap p,.locale-he-il h2 .nav-tab,.locale-he-il #your-profile legend,.locale-he-il #utc-time,.locale-he-il #local-time,.locale-he-il #poststuff h3,.locale-he-il .metabox-holder h3,.locale-he-il .tool-box .title,.locale-he-il td,.locale-he-il textarea,.locale-he-il input,.locale-he-il select,.locale-he-il .wrap h2,.locale-he-il .subtitle,.locale-he-il .wrap .add-new-h2,.locale-he-il #dashboard_right_now p.sub,.locale-he-il #dashboard-widgets h4,.locale-he-il a.rsswidget,.locale-he-il #dashboard_plugins h4,.locale-he-il #dashboard_plugins h5,.locale-he-il #dashboard_recent_comments .comment-meta .approve,.locale-he-il #dashboard_right_now td.b,.locale-he-il #dashboard_right_now .versions a,.locale-he-il .rss-widget span.rss-date,.locale-he-il #dashboard_recent_drafts h4 abbr,body.login.locale-he-il,.locale-he-il #login form .submit input,.locale-he-il #menu-management .nav-tabs-arrow-right,.locale-he-il #category-add input,.locale-he-il #category-add select,.locale-he-il .submit input,.locale-he-il .button,.locale-he-il .button-primary,.locale-he-il .button-secondary,.locale-he-il .button-highlighted,.locale-he-il #postcustomstuff .submit input,.locale-he-il div.sidebar-name h3{font-family:Arial,sans-serif}.locale-he-il em{font-style:normal;font-weight:bold}
\ No newline at end of file
index 3bf4c0fb5fc5f98618971eb1b5717e480af03539..84c6c35d1d95dc379a9e5064af24cce4231b0266 100644 (file)
@@ -41,13 +41,13 @@ TABLE OF CONTENTS:
 23.0 - Misc
 24.0 - Dead
 25.0 - TinyMCE tweaks
 23.0 - Misc
 24.0 - Dead
 25.0 - TinyMCE tweaks
+26.0 - Full Overlay w/ Sidebar
+27.0 - Customize Loader
 
 
 ------------------------------------------------------------------------------*/
 
 
 
 
 ------------------------------------------------------------------------------*/
 
 
-
-
 /*------------------------------------------------------------------------------
   1.0 - Text Styles
 ------------------------------------------------------------------------------*/
 /*------------------------------------------------------------------------------
   1.0 - Text Styles
 ------------------------------------------------------------------------------*/
@@ -58,10 +58,10 @@ ol {
 }
 
 .code, code {
 }
 
 .code, code {
-       font-family: Tahoma, Arial, sans-serif;
+       font-family: monospace;
+       direction: ltr;
 }
 
 }
 
-
 .quicktags, .search {
        font: 12px Tahoma, Arial, sans-serif;
 }
 .quicktags, .search {
        font: 12px Tahoma, Arial, sans-serif;
 }
@@ -113,6 +113,21 @@ p.search-box {
        float: left;
 }
 
        float: left;
 }
 
+input[type=password] {
+       direction: ltr;
+}
+
+input[type="text"].ui-autocomplete-loading {
+       background: transparent url('../images/loading.gif') no-repeat left center;
+}
+
+ul#add-to-blog-users {
+       margin: 0 14px 0 0;
+}
+
+.ui-autocomplete li {
+       text-align: right;
+}
 
 /*------------------------------------------------------------------------------
   3.0 - Actions
 
 /*------------------------------------------------------------------------------
   3.0 - Actions
@@ -130,7 +145,6 @@ p.search-box {
        border-right:0;
        border-left-width: 1px;
        border-left-style: solid;
        border-right:0;
        border-left-width: 1px;
        border-left-style: solid;
-       float: right;
 }
 
 #post-body .misc-pub-section-last {
 }
 
 #post-body .misc-pub-section-last {
@@ -202,98 +216,6 @@ form.upgrade .hint {
        margin: 1px 1px 1px 2px;
 }
 
        margin: 1px 1px 1px 2px;
 }
 
-/* Distraction Free Writing mode
- * =Overlay Styles
--------------------------------------------------------------- */
-
-/* No RTL for now, this space intentionally left blank */
-
-/* =Overlay Body
--------------------------------------------------------------- */
-#wp-fullscreen-body {
-       right: 0;
-       left:auto;
-}
-
-#wp-fullscreen-tagline {
-       float: left;
-}
-
-/* =Top bar
--------------------------------------------------------------- */
-#fullscreen-topbar {
-       left:auto;
-       right: 0;
-}
-
-#wp-fullscreen-mode-bar,
-#wp-fullscreen-button-bar,
-#wp-fullscreen-close,
-#wp-fullscreen-count {
-       float: right;
-}
-
-#wp-fullscreen-save {
-       float: left;
-}
-
-#wp-fullscreen-save {
-       padding: 2px 5px 0 2px;
-}
-
-#wp-fullscreen-buttons > div {
-       float: right;
-}
-
-#wp-fullscreen-mode-bar {
-       padding: 1px 0 0 14px;
-}
-
-#wp-fullscreen-modes a {
-       float: right;
-       border-width: 1px 0 1px 1px;
-}
-
-#wp-fullscreen-modes a:first-child {
-       -webkit-border-top-left-radius: 0;
-       -webkit-border-top-right-radius: 3px;
-       -webkit-border-bottom-left-radius: 0;
-       -webkit-border-bottom-right-radius: 3px;
-       border-width: 1px;
-       border-top-left-radius: 0;
-       border-top-right-radius: 3px;
-       border-bottom-right-left: 0;
-       border-bottom-right-radius: 3px;
-}
-
-#wp-fullscreen-modes a:last-child {
-       -webkit-border-top-right-radius: 0;
-       -webkit-border-top-left-radius: 3px;
-       -webkit-border-bottom-right-radius: 0;
-       -webkit-border-bottom-left-radius: 3px;
-       border-top-right-radius: 0;
-       border-top-left-radius: 3px;
-       border-bottom-right-radius: 0;
-       border-bottom-left-radius: 3px;
-}
-
-#wp-fullscreen-save img,
-#wp-fullscreen-save span {
-       padding-right: 0;
-       padding-left: 4px;
-}
-
-/* =Thickbox Adjustments
--------------------------------------------------------------- */
-/* No RTL for now, this space intentionally left blank */
-
-
-/* =TinyMCE Adjustments
--------------------------------------------------------------- */
-/* No RTL for now, this space intentionally left blank */
-
-
-
 /*------------------------------------------------------------------------------
   6.0 - Admin Header
 ------------------------------------------------------------------------------*/
 /*------------------------------------------------------------------------------
   6.0 - Admin Header
 ------------------------------------------------------------------------------*/
@@ -430,8 +352,7 @@ form.upgrade .hint {
        left: 0;
 }
 
        left: 0;
 }
 
-#adminmenu li .wp-submenu,
-.folded #adminmenu .wp-has-current-submenu .wp-submenu {
+#adminmenu li .wp-submenu {
        left: auto;
        right: 146px;
 }
        left: auto;
        right: 146px;
 }
@@ -576,6 +497,62 @@ form.upgrade .hint {
        float: right;
 }
 
        float: right;
 }
 
+/* Auto-folding of the admin menu */
+@media only screen and (max-width: 900px) {
+       #adminmenu li .wp-submenu,
+       #adminmenu .wp-has-current-submenu .wp-submenu {
+               left: auto;
+               right: 26px;
+       }
+
+       #adminmenu li.focused.wp-has-current-submenu .wp-submenu,
+       #adminmenu .wp-has-current-submenu .wp-submenu.sub-open {
+               padding: 0 0 8px 8px;
+       }
+
+       .folded #adminmenu .wp-not-current-submenu li a {
+               padding-left: 0;
+               padding-right: 12px;
+       }
+
+       #adminmenu li li,
+       #adminmenu li li a {
+               padding-left: inherit;
+               padding-right: 0
+       }
+
+       .wp-menu-arrow {
+               -moz-transform:    translate( -27px );
+               -webkit-transform: translate( -27px );
+               -o-transform:      translate( -27px );
+               -ms-transform:     translate( -27px );
+               transform:         translate( -27px );
+       }
+
+       #adminmenu .wp-submenu ul {
+               border-width: 0 1px 0 0;
+       }
+
+       #adminmenu .wp-submenu a {
+               padding-left: 0;
+               padding-right: 10px;
+       }
+
+       #adminmenu a.wp-has-submenu {
+               margin-left: 0;
+               margin-right: 40px;
+       }
+
+       body #wpcontent {
+               margin-left: 0;
+               margin-right: 52px;
+       }
+
+       body .wp-admin #footer {
+               margin-left: 15px;
+               margin-right: 52px;
+       }
+}
 
 /* List table styles */
 .post-com-count-wrapper {
 
 /* List table styles */
 .post-com-count-wrapper {
@@ -725,7 +702,7 @@ th.sorted a span {
        margin-right: 0;
        margin-left: 10px;
        font-family: Tahoma, Arial, sans-serif;
        margin-right: 0;
        margin-left: 10px;
        font-family: Tahoma, Arial, sans-serif;
-       font-style: bold;
+       font-style: normal;
 }
 
 .tablenav .actions {
 }
 
 .tablenav .actions {
@@ -829,6 +806,27 @@ th.sorted a span {
 /*------------------------------------------------------------------------------
   11.0 - Write/Edit Post Screen
 ------------------------------------------------------------------------------*/
 /*------------------------------------------------------------------------------
   11.0 - Write/Edit Post Screen
 ------------------------------------------------------------------------------*/
+/* structural/layout */
+#post-body-content {
+       float: right;
+}
+
+#poststuff #post-body.columns-2 {
+       margin-left: 300px;
+       margin-right: 0;
+}
+
+#post-body.columns-2 #postbox-container-1 {
+       float: left;
+       margin-left: -300px;
+       margin-right: 0;
+}
+
+@media only screen and (max-width: 850px) {
+       #wpbody-content #post-body.columns-2 #postbox-container-1 {
+               margin-left: 0;
+       }
+}
 
 #titlediv #title-prompt-text,
 #wp-fullscreen-title-prompt-text {
 
 #titlediv #title-prompt-text,
 #wp-fullscreen-title-prompt-text {
@@ -868,31 +866,7 @@ th.sorted a span {
        float: left;
 }
 
        float: left;
 }
 
-
-#post-body ul.category-tabs,
-#post-body ul.add-menu-item-tabs {
-       float: right;
-       text-align: left;
-       /* Negative margin for the sake of those without JS: all tabs display */
-       margin: 0 5px 0 -120px;
-}
-
-
-#post-body ul.category-tabs li.tabs,
-#post-body ul.add-menu-item-tabs li.tabs {
-       -webkit-border-top-left-radius: 0;
-       -webkit-border-top-right-radius: 3px;
-       -webkit-border-bottom-left-radius: 0;
-       -webkit-border-bottom-right-radius: 3px;
-       border-top-left-radius: 0;
-       border-top-right-radius: 3px;
-       border-bottom-left-radius: 0;
-       border-bottom-right-radius: 3px;
-}
-
-#post-body .categorydiv div.tabs-panel,
-.taxonomy div.tabs-panel,
-#post-body #linkcategorydiv div.tabs-panel {
+.taxonomy div.tabs-panel {
        margin: 0 125px 0 5px;
 }
 
        margin: 0 125px 0 5px;
 }
 
@@ -906,24 +880,12 @@ th.sorted a span {
        padding-right: 5px;
 }
 
        padding-right: 5px;
 }
 
-#post-body .category-tabs li.tabs,
 #post-body .add-menu-item-tabs li.tabs {
        border-width: 1px 1px 1px 0;
        margin-right: 0;
        margin-left: -1px;
 }
 
 #post-body .add-menu-item-tabs li.tabs {
        border-width: 1px 1px 1px 0;
        margin-right: 0;
        margin-left: -1px;
 }
 
-/* positioning etc. */
-
-#posts-filter fieldset {
-       float: right;
-       margin: 0 0 1em 1.5ex;
-}
-
-#posts-filter fieldset legend {
-       padding: 0 1px .2em 0;
-}
-
 /* Global classes */
 
 #post-body .tagsdiv #newtag {
 /* Global classes */
 
 #post-body .tagsdiv #newtag {
@@ -974,8 +936,6 @@ table.diff td, table.diff th {
        margin-right: 120px;
 }
 
        margin-right: 120px;
 }
 
-
-#post-body ul.category-tabs,
 #post-body ul.add-menu-item-tabs {
        float: right;
        text-align: left;
 #post-body ul.add-menu-item-tabs {
        float: right;
        text-align: left;
@@ -983,7 +943,6 @@ table.diff td, table.diff th {
        margin: 0 5px 0 -120px;
 }
 
        margin: 0 5px 0 -120px;
 }
 
-#post-body ul.category-tabs li.tabs,
 #post-body ul.add-menu-item-tabs li.tabs {
        -webkit-border-top-left-radius: 0;
        -webkit-border-top-right-radius: 3px;
 #post-body ul.add-menu-item-tabs li.tabs {
        -webkit-border-top-left-radius: 0;
        -webkit-border-top-right-radius: 3px;
@@ -1002,13 +961,11 @@ ul.export-filters,
 .categorydiv ul.categorychecklist ul,
 .customlinkdiv ul.categorychecklist ul,
 .posttypediv ul.categorychecklist ul,
 .categorydiv ul.categorychecklist ul,
 .customlinkdiv ul.categorychecklist ul,
 .posttypediv ul.categorychecklist ul,
-.taxonomydiv ul.categorychecklist ul,
-#linkcategorydiv ul.categorychecklist ul {
+.taxonomydiv ul.categorychecklist ul {
        margin-left: 0;
        margin-right: 18px;
 }
 
        margin-left: 0;
        margin-right: 18px;
 }
 
-#post-body .category-tabs li.tabs,
 #post-body .add-menu-item-tabs li.tabs {
        border-style: solid solid solid none;
        border-width: 1px 1px 1px 0;
 #post-body .add-menu-item-tabs li.tabs {
        border-style: solid solid solid none;
        border-width: 1px 1px 1px 0;
@@ -1040,6 +997,10 @@ span.description,
        text-align: right;
 }
 
        text-align: right;
 }
 
+.links-table th {
+       text-align: right;
+}
+
 /*------------------------------------------------------------------------------
   14.0 - Media Screen
 ------------------------------------------------------------------------------*/
 /*------------------------------------------------------------------------------
   14.0 - Media Screen
 ------------------------------------------------------------------------------*/
@@ -1109,7 +1070,6 @@ span.description,
        padding: 5px 8px 0 0;
 }
 
        padding: 5px 8px 0 0;
 }
 
-
 .find-box-search label {
        padding-right: 0;
        padding-left: 6px;
 .find-box-search label {
        padding-right: 0;
        padding-left: 6px;
@@ -1120,7 +1080,6 @@ span.description,
        left: 1px;
 }
 
        left: 1px;
 }
 
-
 form.upgrade .hint {
        font-style: normal;
 }
 form.upgrade .hint {
        font-style: normal;
 }
@@ -1195,20 +1154,98 @@ form.upgrade .hint {
        margin: 2px 0 5px 3px;
 }
 
        margin: 2px 0 5px 3px;
 }
 
-
-
 /*------------------------------------------------------------------------------
   16.0 - Themes
 ------------------------------------------------------------------------------*/
 
 /*------------------------------------------------------------------------------
   16.0 - Themes
 ------------------------------------------------------------------------------*/
 
-td.available-theme {
-       text-align: right;
+h3.available-themes {
+       float: right;
+}
+
+.available-theme {
+       margin-right: 0;
+       margin-left: 10px;
+       padding: 20px 0 20px 20px;
+}
+
+#current-theme .theme-info li,
+.theme-options li,
+.available-theme .action-links li {
+       float: right;
+       padding-right: 0;
+       padding-left: 10px;
+       margin-right: 0;
+       margin-left: 10px;
+       border-right: none;
+       border-left: 1px solid #dfdfdf;
+}
+
+.available-theme .action-links li {
+       padding-left: 8px;
+       margin-left: 8px;
+}
+
+#current-theme .theme-info li:last-child,
+.theme-options li:last-child,
+.available-theme .action-links li:last-child {
+       padding-left: 0;
+       margin-right: 0;
+       border-left: 0;
+}
+
+.available-theme .action-links .delete-theme {
+       float: left;
+       margin-left: 0;
+       margin-right: 8px;
+}
+
+.available-theme .action-links p {
+       float: right;
+}
+
+#current-theme.has-screenshot {
+       padding-left: 0;
+       padding-right: 330px;
+}
+
+#current-theme h4 span {
+       margin-left: 0;
+       margin-right: 20px;
 }
 
 #current-theme img {
 }
 
 #current-theme img {
+       float: right;
+       width: 300px;
+       margin-left: 0;
+       margin-right: -330px;
+}
+
+.theme-options .load-customize {
+       margin-right: 0;
+       margin-left: 30px;
+       float: right;
+}
+
+.theme-options span {
        float: right;
        margin-right: 0;
        float: right;
        margin-right: 0;
-       margin-left: 1em;
+       margin-left: 10px;
+}
+
+.theme-options ul {
+       float: right;
+}
+
+/* Allow for three-up on 1024px wide screens, e.g. tablets */
+@media only screen and (max-width: 1200px) {
+       #current-theme.has-screenshot {
+               padding-right: 270px;
+       }
+
+       #current-theme img {
+               margin-right: -270px;
+               width: 240px;
+       }
 }
 
 #broken-themes {
 }
 
 #broken-themes {
@@ -1278,6 +1315,12 @@ h2 .nav-tab {
        margin-left: 5px
 }
 
        margin-left: 5px
 }
 
+#profile-page #pass1,
+#profile-page #pass2,
+#profile-page #user_login {
+       direction: ltr;
+}
+
 #your-profile legend {
        font-family: Tahoma, Arial, sans-serif;
 }
 #your-profile legend {
        font-family: Tahoma, Arial, sans-serif;
 }
@@ -1287,8 +1330,8 @@ h2 .nav-tab {
 ------------------------------------------------------------------------------*/
 
 .pressthis a span {
 ------------------------------------------------------------------------------*/
 
 .pressthis a span {
-       background-position: -20px 5px ;
-       padding: 8px 32px 8px 0;
+       background-position: right 5px;
+       padding: 8px 27px 8px 11px;
 }
 
 .pressthis a:after {
 }
 
 .pressthis a:after {
@@ -1366,41 +1409,12 @@ h2 .nav-tab {
        margin-right: 3em;
 }
 
        margin-right: 3em;
 }
 
-.about-wrap .feature-section .left-feature,
-.about-wrap .feature-section img,
-.about-wrap .feature-section .right-feature {
-       float: right;
-}
-
-.about-wrap .feature-section .left-feature {
-       margin-right: 0;
-       margin-left: 0;
-}
-
-.about-wrap .feature-section .right-feature {
-       margin-left: 0;
-       margin-right: 0;
-}
-
-.about-wrap .feature-section.text-features {
-       float: right;
-}
-.about-wrap .feature-section.screenshot-features {
+.about-wrap .three-col-images .last-feature {
        float: left;
 }
        float: left;
 }
-.about-wrap .feature-section.screenshot-features .angled-right {
-       margin-left: 0;
-       margin-right: 2.5em;
-}
-.about-wrap .feature-section.screenshot-features .angled-right p {
-       margin-left: 0;
-       margin-right: 290px;
-}
 
 
-.about-wrap .feature-section .angled-right img,
-.about-wrap .feature-section .angled-left img {
-       margin-right: 0;
-       margin-left: 30px;
+.about-wrap .three-col-images .first-feature {
+       float: right;
 }
 
 .about-wrap .feature-section.three-col div {
 }
 
 .about-wrap .feature-section.three-col div {
@@ -1408,43 +1422,32 @@ h2 .nav-tab {
        margin-left: 4.999999999%;
        float: right;
 }
        margin-left: 4.999999999%;
        float: right;
 }
+
 .about-wrap .feature-section.three-col h4 {
        text-align: right;
 }
 .about-wrap .feature-section.three-col h4 {
        text-align: right;
 }
+
 .about-wrap .feature-section.three-col img {
        margin-right: 5px;
        margin-left: 0;
 }
 .about-wrap .feature-section.three-col img {
        margin-right: 5px;
        margin-left: 0;
 }
+
 .about-wrap .feature-section.three-col .last-feature {
        margin-left: 0;
 }
 
 .about-wrap .feature-section.three-col .last-feature {
        margin-left: 0;
 }
 
-.about-wrap .feature-section .feature-images img {
-       margin-right: auto;
-       margin-left: 5px;
+.about-wrap .feature-section img {
+       margin: 0 0 10px 0.7%;
 }
 }
-.about-wrap .feature-section.images-stagger-left .angled-left {
-       margin-left: auto;
-       margin-right: 5px;
-}
-.about-wrap .feature-section .angled-right {
+
+.about-wrap .feature-section.images-stagger-right img {
        float: left;
        float: left;
+       margin: 0 12px 12px 5px;
 }
 }
-.about-wrap .feature-section.images-stagger-right .feature-images {
-       right: auto;
-       left: 0;
-}
-.about-wrap .feature-section.images-stagger-left .feature-images {
-       left: auto;
-       right: 0;
-}
-.about-wrap .feature-section.images-stagger-right .left-feature {
-       margin-right: 0;
-       margin-left: 350px;
-}
-.about-wrap .feature-section.images-stagger-left .right-feature {
-       margin-left: 0;
-       margin-right: 350px;
+
+.about-wrap .feature-section.images-stagger-left img {
+       float: right;
+       margin: 0 5px 12px 12px;
 }
 
 .about-wrap li.wp-person,
 }
 
 .about-wrap li.wp-person,
@@ -1566,6 +1569,72 @@ table .column-rating {
        float: left;
 }
 
        float: left;
 }
 
+/*------------------------------------------------------------------------------
+  26.0 - Full Overlay w/ Sidebar
+------------------------------------------------------------------------------*/
+.wp-full-overlay .wp-full-overlay-sidebar {
+       margin: 0;
+       left: auto;
+       right: 0;
+       border-right: 0;
+       border-left: 1px solid rgba( 0, 0, 0, 0.2 );
+}
+
+.wp-full-overlay-sidebar:after {
+       right: auto;
+       left: 0;
+       box-shadow: inset 5px 0 4px -4px rgba(0, 0, 0, 0.1);
+}
+
+.wp-full-overlay.collapsed,
+.wp-full-overlay.expanded .wp-full-overlay-sidebar {
+       margin-right: 0 !important;
+}
+
+.wp-full-overlay.expanded {
+       margin-right: 300px;
+       margin-left: 0;
+}
+
+.wp-full-overlay.collapsed .wp-full-overlay-sidebar {
+       margin-right: -300px;
+       margin-left: 0;
+}
+
+/* Collapse Button */
+.wp-full-overlay .collapse-sidebar {
+       right: 0;
+       left: auto;
+       margin-right: 15px;
+}
+
+.wp-full-overlay.collapsed .collapse-sidebar {
+       right: 100%;
+}
+
+.wp-full-overlay .collapse-sidebar-arrow {
+       margin-right: 2px;
+       margin-left: 0;
+       background: transparent url('../../wp-admin/images/arrows.png') no-repeat 0 -108px;
+}
+
+.wp-full-overlay.collapsed .collapse-sidebar-arrow {
+       background-position: 0 -72px;
+}
+
+.wp-full-overlay .collapse-sidebar-label {
+       right: 100%;
+       left: auto;
+       margin-right: 10px;
+       margin-left: 0;
+}
+
+/*------------------------------------------------------------------------------
+  27.0 - Customize Loader
+------------------------------------------------------------------------------*/
+.install-theme-info .theme-install {
+       float: left;
+}
 
 /* MERGED */
 
 
 /* MERGED */
 
@@ -1708,11 +1777,11 @@ ol.ol-decimal {
        margin-left: 15px;
 }
 
        margin-left: 15px;
 }
 
-
 .wrap h2,
 .subtitle {
        font-family: Tahoma, Arial, sans-serif;
 }
 .wrap h2,
 .subtitle {
        font-family: Tahoma, Arial, sans-serif;
 }
+
 .wrap h2 {
        padding-right: 0;
        padding-left: 15px;
 .wrap h2 {
        padding-right: 0;
        padding-left: 15px;
@@ -1733,7 +1802,6 @@ ol.ol-decimal {
        padding-left: 0;
 }
 
        padding-left: 0;
 }
 
-
 /* dashboard */
 #dashboard-widgets-wrap .has-sidebar {
        margin-right: 0;
 /* dashboard */
 #dashboard-widgets-wrap .has-sidebar {
        margin-right: 0;
@@ -1755,8 +1823,10 @@ ol.ol-decimal {
 a.rsswidget,
 #dashboard_plugins h4,
 #dashboard_plugins h5,
 a.rsswidget,
 #dashboard_plugins h4,
 #dashboard_plugins h5,
-#dashboard_recent_comments .comment-meta .approve {
-       font-family: Tahoma, Arial;
+#dashboard_recent_comments .comment-meta .approve,
+#dashboard_right_now td.b,
+#dashboard_right_now .versions a {
+       font-family: Tahoma, Arial, sans-serif;
 }
 
 #dashboard_right_now p.sub  {
 }
 
 #dashboard_right_now p.sub  {
@@ -1768,7 +1838,6 @@ a.rsswidget,
        padding-right: 0;
        padding-left: 6px;
        text-align: left;
        padding-right: 0;
        padding-left: 6px;
        text-align: left;
-       font-family: Tahoma, Arial;
 }
 
 #dashboard_right_now .t {
 }
 
 #dashboard_right_now .t {
@@ -1784,10 +1853,6 @@ a.rsswidget,
        float:left;
 }
 
        float:left;
 }
 
-#dashboard_right_now .versions a {
-       font-family: Tahoma, Arial;
-}
-
 #dashboard_right_now a.button {
        float: left;
        clear: left;
 #dashboard_right_now a.button {
        float: left;
        clear: left;
@@ -1825,7 +1890,7 @@ a.rsswidget,
 }
 
 .rss-widget span.rss-date {
 }
 
 .rss-widget span.rss-date {
-       font-family: Tahoma, Arial;
+       font-family: Tahoma, Arial, sans-serif;
        margin-left: 0;
        margin-right: 3px;
 }
        margin-left: 0;
        margin-right: 3px;
 }
@@ -1878,14 +1943,14 @@ a.rsswidget,
 
 /* Recent Drafts */
 #dashboard_recent_drafts h4 abbr {
 
 /* Recent Drafts */
 #dashboard_recent_drafts h4 abbr {
-       font-family: Tahoma, Arial;
+       font-family: Tahoma, Arial, sans-serif;
        margin-left:0;
        margin-right: 3px;
 }
 
 /* login */
 body.login {
        margin-left:0;
        margin-right: 3px;
 }
 
 /* login */
 body.login {
-       font-family: Tahoma, arial;
+       font-family: Tahoma, Arial, sans-serif;
 }
 
 .login form {
 }
 
 .login form {
@@ -1902,7 +1967,7 @@ body.login {
 }
 
 #login form .submit input {
 }
 
 #login form .submit input {
-       font-family: Tahoma, arial;
+       font-family: Tahoma, Arial, sans-serif;
 }
 
 .login #nav,
 }
 
 .login #nav,
@@ -1920,7 +1985,7 @@ body.login {
 .login #user_email {
        margin-left: 6px;
        margin-right: 0;
 .login #user_email {
        margin-left: 6px;
        margin-right: 0;
-       direction:ltr;
+       direction: ltr;
 }
 
 .login h1 a {
 }
 
 .login h1 a {
@@ -1931,7 +1996,6 @@ body.login {
        float: left;
 }
 
        float: left;
 }
 
-
 /* nav-menu */
 #nav-menus-frame {
        margin-right: 300px;
 /* nav-menu */
 #nav-menus-frame {
        margin-right: 300px;
@@ -2030,10 +2094,20 @@ body.login {
 }
 
 /* Custom Links */
 }
 
 /* Custom Links */
-#add-custom-link label span { float: right; padding-left: 5px; padding-right:0;}
-.howto span { float: right; }
+#add-custom-link label span {
+       float: right;
+       padding-left: 5px;
+       padding-right: 0;
+}
 
 
-.list li .menu-item-title input { margin-left: 3px; margin-right: 0 }
+.nav-menus-php .howto span {
+       float: right;
+}
+
+.list li .menu-item-title input {
+       margin-left: 3px;
+       margin-right: 0;
+}
 
 /* Nav Menu */
 .menu-item-handle {
 
 /* Nav Menu */
 .menu-item-handle {
@@ -2050,7 +2124,10 @@ body.login {
        margin-left:13em;
        margin-right:0;
 }
        margin-left:13em;
        margin-right:0;
 }
-
+.menu-item-handle .item-edit {
+       right: auto;
+       left: -20px;
+}
 
 /* WARNING: The factor of 30px is hardcoded into the nav-menus javascript. */
 .menu-item-depth-0 { margin-right: 0px; margin-left:0;}
 
 /* WARNING: The factor of 30px is hardcoded into the nav-menus javascript. */
 .menu-item-depth-0 { margin-right: 0px; margin-left:0;}
@@ -2110,14 +2187,19 @@ body.login {
        border-width: 0 1px 1px 1px;
 }
 
        border-width: 0 1px 1px 1px;
 }
 
+#custom-menu-item-url {
+       direction: ltr;
+}
+
 .link-to-original {
        font-style: normal;
        font-weight: bold;
 }
 .link-to-original {
        font-style: normal;
        font-weight: bold;
 }
-       .link-to-original a {
-               padding-right: 4px;
-               padding-left:0;
-       }
+
+.link-to-original a {
+       padding-right: 4px;
+       padding-left:0;
+}
 
 .menu-item-settings .description-thin,
 .menu-item-settings .description-wide {
 
 .menu-item-settings .description-thin,
 .menu-item-settings .description-wide {
@@ -2148,17 +2230,13 @@ body.login {
        float: right;
 }
 
        float: right;
 }
 
-
-/* plugin-install */
-div.star {
-       left: auto;
-       right: 0;
-       letter-spacing: 0;
+/* Star ratings */
+div.star-holder {
+       background: url('../images/stars-rtl.png?ver=20120506.png') repeat-x bottom right;
 }
 }
-
-.star img, div.star a, div.star a:hover, div.star a:visited {
-       right: auto;
-       left: 0;
+div.star-holder .star-rating {
+       background: url('../images/stars-rtl.png?ver=20120506.png') repeat-x top right;
+       float: right;
 }
 
 #plugin-information ul#sidemenu {
 }
 
 #plugin-information ul#sidemenu {
@@ -2189,6 +2267,7 @@ div.star {
        padding-right: 20px;
 }
 
        padding-right: 20px;
 }
 
+#plugin-information #section-screenshots ol,
 #plugin-information .updated,
 #plugin-information pre {
        margin-right: 0;
 #plugin-information .updated,
 #plugin-information pre {
        margin-right: 0;
@@ -2201,7 +2280,7 @@ div.star {
        direction: rtl;
 }
 
        direction: rtl;
 }
 
-#section-description {
+#plugin-information #section-holder .section {
        direction: ltr;
 }
 
        direction: ltr;
 }
 
@@ -2212,12 +2291,6 @@ div.star {
        position: relative;
 }
 
        position: relative;
 }
 
-#side-info-column {
-       float: left;
-       right: auto;
-       left: 0;
-}
-
 h3.tb {
        margin-left: 0;
        margin-right: 5px;
 h3.tb {
        margin-left: 0;
        margin-right: 5px;
@@ -2248,20 +2321,7 @@ h3.tb {
 
 #category-add input,
 #category-add select {
 
 #category-add input,
 #category-add select {
-       font-family: Tahoma, Arial;
-}
-
-.inline-editor ul.cat-checklist ul,
-.categorydiv ul.categorychecklist ul,
-#linkcategorydiv ul.categorychecklist ul {
-       margin-left: 0;
-       margin-right: 18px;
-}
-
-/* Categories */
-.category-tabs li {
-       padding-left: 0;
-       padding-right: 8px;
+       font-family: Tahoma, Arial, sans-serif;
 }
 
 /* Tags */
 }
 
 /* Tags */
@@ -2308,43 +2368,22 @@ h3.tb {
        margin-right: 10px;
 }
 
        margin-right: 10px;
 }
 
-/* theme-editor */
+/* theme-editor, plugin-editor */
 #templateside {
        float: left;
 }
 
 #templateside {
        float: left;
 }
 
-#template textarea {
+#template textarea,
+#docs-list {
        direction: ltr;
 }
 
 /* theme-install */
        direction: ltr;
 }
 
 /* theme-install */
-div.star {
-       left:auto;
-       right: 0;
-}
-
-.star img,
-div.star a,
-div.star a:hover,
-div.star a:visited {
-       right: auto;
-       left: 0;
-}
-
-.theme-listing .theme-item h3 {
-       font-style: normal;
-}
-
-#theme-information .theme-preview-img {
+.theme-details .theme-version {
        float: right;
        float: right;
-       margin: 5px 15px 10px 25px;
 }
 
 }
 
-#theme-information .action-button #cancel {
-       float: right;
-}
-
-#theme-information .action-button #install {
+.theme-details .star-holder {
        float: left;
 }
 
        float: left;
 }
 
@@ -2415,4 +2454,79 @@ div.sidebar-name h3 {
        float: left;
 }
 
        float: left;
 }
 
+.press-this #header-logo,
+.press-this #wphead h1 {
+       float: right;
+}
+
+/* RTL */
+.ltr {
+       direction: ltr;
+}
 
 
+/* =Localized CSS
+-------------------------------------------------------------- */
+
+/* he_IL: Remove Tahoma from the font stack. Arial is best for Hebrew. */
+body.locale-he-il,
+.locale-he-il .quicktags, .locale-he-il .search,
+.locale-he-il .howto,
+.locale-he-il #adminmenu .awaiting-mod,
+.locale-he-il #adminmenu span.update-plugins,
+.locale-he-il #sidemenu li a span.update-plugins,
+.locale-he-il .post-com-count-wrapper,
+.locale-he-il .widefat th,
+.locale-he-il .tablenav .displaying-num,
+.locale-he-il .inline-edit-row fieldset span.title,
+.locale-he-il .inline-edit-row fieldset span.checkbox-title,
+.locale-he-il .inline-edit-row fieldset ul.cat-checklist label,
+.locale-he-il .inline-edit-row .catshow,
+.locale-he-il .inline-edit-row .cathide,
+.locale-he-il .inline-edit-row #bulk-titles div,
+.locale-he-il p.help,
+.locale-he-il p.description,
+.locale-he-il span.description,
+.locale-he-il .form-wrap p,
+.locale-he-il h2 .nav-tab,
+.locale-he-il #your-profile legend,
+.locale-he-il #utc-time, .locale-he-il #local-time,
+.locale-he-il #poststuff h3,
+.locale-he-il .metabox-holder h3,
+.locale-he-il .tool-box .title,
+.locale-he-il td,
+.locale-he-il textarea,
+.locale-he-il input,
+.locale-he-il select,
+.locale-he-il .wrap h2,
+.locale-he-il .subtitle,
+.locale-he-il .wrap .add-new-h2,
+.locale-he-il #dashboard_right_now p.sub,
+.locale-he-il #dashboard-widgets h4,
+.locale-he-il a.rsswidget,
+.locale-he-il #dashboard_plugins h4,
+.locale-he-il #dashboard_plugins h5,
+.locale-he-il #dashboard_recent_comments .comment-meta .approve,
+.locale-he-il #dashboard_right_now td.b,
+.locale-he-il #dashboard_right_now .versions a,
+.locale-he-il .rss-widget span.rss-date,
+.locale-he-il #dashboard_recent_drafts h4 abbr,
+body.login.locale-he-il,
+.locale-he-il #login form .submit input,
+.locale-he-il #menu-management .nav-tabs-arrow-right,
+.locale-he-il #category-add input,
+.locale-he-il #category-add select,
+.locale-he-il .submit input,
+.locale-he-il .button,
+.locale-he-il .button-primary,
+.locale-he-il .button-secondary,
+.locale-he-il .button-highlighted,
+.locale-he-il #postcustomstuff .submit input,
+.locale-he-il div.sidebar-name h3 {
+       font-family: Arial, sans-serif;
+}
+
+/* he_IL: Have <em> be bold rather than italic. */
+.locale-he-il em {
+       font-style: normal;
+       font-weight: bold;
+}
index 006b1971c93d8ffe9bc4279791ca67d46f867398..3c41a559c7eaea866c27945621bcf27325b21fe8 100644 (file)
@@ -1 +1 @@
-#wpwrap{height:auto;min-height:100%;width:100%;position:relative;}#wpcontent{height:100%;}#wpcontent,#footer{margin-left:165px;}.folded #wpcontent,.folded #footer{margin-left:52px;}#wpbody-content{padding-bottom:65px;float:left;width:100%;}#adminmenuback,#adminmenuwrap,#adminmenu,#adminmenu .wp-submenu,#adminmenu .wp-submenu-wrap,.folded #adminmenu .wp-has-current-submenu .wp-submenu{width:145px;}#adminmenuback{position:absolute;top:0;bottom:0;z-index:-1;}#adminmenu{clear:left;margin:0;padding:0;list-style:none;}.folded #adminmenuback,.folded #adminmenuwrap,.folded #adminmenu,.folded #adminmenu li.menu-top{width:32px;}.inner-sidebar{float:right;clear:right;display:none;width:281px;position:relative;}.columns-2 .inner-sidebar{margin-right:auto;width:286px;display:block;}.inner-sidebar #side-sortables,.columns-2 .inner-sidebar #side-sortables{min-height:300px;width:280px;padding:0;}.has-right-sidebar .inner-sidebar{display:block;}.has-right-sidebar #post-body{float:left;clear:left;width:100%;margin-right:-2000px;}.has-right-sidebar #post-body-content{margin-right:300px;}#post-body-content #side-sortables.empty-container{border:0 none;height:0;}#col-container,#col-left,#col-right{overflow:hidden;padding:0;margin:0;}#col-left{width:35%;}#col-right{float:right;clear:right;width:65%;}.col-wrap{padding:0 7px;}.alignleft{float:left;}.alignright{float:right;}.textleft{text-align:left;}.textright{text-align:right;}.clear{clear:both;}.screen-reader-text,.screen-reader-text span{position:absolute;left:-1000em;height:1px;width:1px;overflow:hidden;}.hidden,.js .closed .inside,.js .hide-if-js,.no-js .hide-if-no-js{display:none;}input[type="text"],input[type="password"],textarea{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;}input[type="checkbox"],input[type="radio"]{vertical-align:text-bottom;}html,body{height:100%;margin:0;padding:0;}body{font-family:sans-serif;font-size:12px;line-height:1.4em;min-width:600px;}body.iframe{min-width:0;}body.login{background:#fbfbfb;min-width:0;}iframe,img{border:0;}td,textarea,input,select{font-family:inherit;font-size:inherit;font-weight:inherit;}td,textarea{line-height:inherit;}input,select{line-height:15px;}a,input,select{outline:0;}blockquote,q{quotes:none;}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none;}p{margin:1em 0;}blockquote{margin:1em;}label{cursor:pointer;}li,dd{margin-bottom:6px;}textarea,input,select{margin:1px;padding:3px;}h1,h2,h3,h4,h5,h6{display:block;font-weight:bold;}h1{font-size:2em;margin:.67em 0;}h2{font-size:1.5em;margin:.83em 0;}h3{font-size:1.17em;margin:1em 0;}h4{font-size:1em;margin:1.33em 0;}h5{font-size:.83em;margin:1.67em 0;}h6{font-size:.67em;margin:2.33em 0;}ul,ol{padding:0;}ul{list-style:none;}ol{list-style-type:decimal;margin-left:2em;}ul.ul-disc{list-style:disc outside;}ul.ul-square{list-style:square outside;}ol.ol-decimal{list-style:decimal outside;}ul.ul-disc,ul.ul-square,ol.ol-decimal{margin-left:1.8em;}ul.ul-disc>li,ul.ul-square>li,ol.ol-decimal>li{margin:0 0 .5em;}.code,code{font-family:Consolas,Monaco,monospace;}kbd,code{padding:1px 3px;margin:0 1px;font-size:11px;}.subsubsub{list-style:none;margin:8px 0 5px;padding:0;white-space:nowrap;font-size:12px;float:left;}.subsubsub a{line-height:2;padding:.2em;text-decoration:none;}.subsubsub a .count,.subsubsub a.current .count{color:#999;font-weight:normal;}.subsubsub a.current{font-weight:bold;background:none;border:none;}.subsubsub li{display:inline;margin:0;padding:0;}.widefat,div.updated,div.error,.wrap .add-new-h2,textarea,input[type="text"],input[type="password"],input[type="file"],input[type="button"],input[type="submit"],input[type="reset"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="url"],select,.tablenav .tablenav-pages a,.tablenav-pages span.current,#titlediv #title,.postbox,#postcustomstuff table,#postcustomstuff input,#postcustomstuff textarea,.imgedit-menu div,.plugin-update-tr .update-message,#poststuff .inside .the-tagcloud,.login form,#login_error,.login .message,#menu-management .menu-edit,.nav-menus-php .list-container,.menu-item-handle,.link-to-original,.nav-menus-php .major-publishing-actions .form-invalid,.press-this #message,#TB_window,.tbtitle,.highlight,.feature-filter,#widget-list .widget-top,.editwidget .widget-inside{-webkit-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid;}.widefat{border-spacing:0;width:100%;clear:both;margin:0;}.widefat *{word-wrap:break-word;}.widefat a{text-decoration:none;}.widefat thead th:first-of-type{-webkit-border-top-left-radius:3px;border-top-left-radius:3px;}.widefat thead th:last-of-type{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;}.widefat tfoot th:first-of-type{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}.widefat tfoot th:last-of-type{-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;}.widefat td,.widefat th{border-width:1px 0;border-style:solid;}.widefat tfoot th{border-bottom:none;}.widefat .no-items td{border-bottom-width:0;}.widefat td{font-size:12px;padding:4px 7px 2px;vertical-align:top;}.widefat td p,.widefat td ol,.widefat td ul{font-size:12px;}.widefat th{padding:7px 7px 8px;text-align:left;line-height:1.3em;font-size:14px;}.widefat th input{margin:0 0 0 8px;padding:0;vertical-align:text-top;}.widefat .check-column{width:2.2em;padding:11px 0 0;vertical-align:top;}.widefat tbody th.check-column{padding:9px 0 22px;}.widefat .num,.column-comments,.column-links,.column-posts{text-align:center;}.widefat th#comments{vertical-align:middle;}.wrap{margin:4px 15px 0 0;}div.updated,div.error{padding:0 .6em;margin:5px 15px 2px;}div.updated p,div.error p{margin:.5em 0;padding:2px;}.wrap div.updated,.wrap div.error,.media-upload-form div.error{margin:5px 0 15px;}.wrap h2,.subtitle{font-weight:normal;margin:0;text-shadow:#fff 0 1px 0;}.wrap h2{font-size:23px;padding:9px 15px 4px 0;line-height:29px;}.subtitle{font-size:14px;padding-left:25px;}.wrap .add-new-h2{font-family:sans-serif;margin-left:4px;padding:3px 8px;position:relative;top:-3px;text-decoration:none;font-size:12px;border:0 none;}.wrap h2.long-header{padding-right:0;}.fade-1000,.fade-600,.fade-400,.fade-300{opacity:0;-moz-transition-property:opacity;-webkit-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity;}.fade-1000{-moz-transition-duration:1s;-webkit-transition-duration:1s;-o-transition-duration:1s;transition-duration:1s;}.fade-600{-moz-transition-duration:.6s;-webkit-transition-duration:.6s;-o-transition-duration:.6s;transition-duration:.6s;}.fade-400{-moz-transition-duration:.4s;-webkit-transition-duration:.4s;-o-transition-duration:.4s;transition-duration:.4s;}.fade-300{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;}.fade-trigger{opacity:1;}div.sidebar-name h3,#menu-management .nav-tab,#dashboard_plugins h5,a.rsswidget,#dashboard_right_now td.b,#dashboard-widgets h4,.tool-box .title,#poststuff h3,.metabox-holder h3,.pressthis a,#your-profile legend,.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title,.tablenav .displaying-num,.widefat th,.quicktags,.search{font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;}h2 .nav-tab,.wrap h2,.subtitle,.login form .input{font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif;}.quicktags,.search{font-size:12px;}.icon32{float:left;height:34px;margin:7px 8px 0 0;width:36px;}.icon16{height:18px;width:18px;padding:6px 6px;margin:-6px 0 0 -8px;float:left;}.key-labels label{line-height:24px;}.pre{white-space:pre-wrap;white-space:-moz-pre-wrap!important;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;}.howto{font-style:italic;display:block;font-family:sans-serif;}p.install-help{margin:8px 0;font-style:italic;}.no-break{white-space:nowrap;}.wp-admin select{padding:2px;height:2em;}.wp-admin select[multiple]{height:auto;}select option{padding:2px;}.submit{padding:1.5em 0;margin:5px 0;-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px;}form p.submit a.cancel:hover{text-decoration:none;}.submit input,.button,input.button,.button-primary,input.button-primary,.button-secondary,input.button-secondary,.button-highlighted,input.button-highlighted,#postcustomstuff .submit input{text-decoration:none;font-size:12px!important;line-height:13px;padding:3px 8px;cursor:pointer;border-width:1px;border-style:solid;-webkit-border-radius:11px;border-radius:11px;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;}#minor-publishing-actions input,#major-publishing-actions input,#minor-publishing-actions .preview{min-width:80px;text-align:center;}textarea.all-options,input.all-options{width:250px;}input.large-text,textarea.large-text{width:99%;}input.regular-text,#adduser .form-field input{width:25em;}input.small-text{width:50px;}#doaction,#doaction2,#post-query-submit{margin-right:8px;}.tablenav select[name="action"],.tablenav select[name="action2"]{width:130px;}.tablenav select[name="m"]{width:155px;}.tablenav select#cat{width:170px;}#wpcontent option{padding:2px;}#timezone_string option{margin-left:1em;}label,#your-profile label+a{vertical-align:middle;}#misc-publishing-actions label{vertical-align:baseline;}#pass-strength-result{border-style:solid;border-width:1px;float:left;margin:13px 5px 5px 1px;padding:3px 5px;text-align:center;width:200px;display:none;}.indicator-hint{padding-top:8px;}p.search-box{float:right;margin:0;}#major-publishing-actions{padding:10px 10px 8px;clear:both;border-top:none;}#delete-action{line-height:25px;vertical-align:middle;text-align:left;float:left;}#publishing-action{text-align:right;float:right;line-height:23px;}#post-body #minor-publishing{padding-bottom:10px;}#post-body #misc-publishing-actions{padding:0;}#post-body .misc-pub-section{border-right-width:1px;border-right-style:solid;border-top:0;border-bottom:0;min-height:30px;float:left;max-width:32%;}#post-body .misc-pub-section-last{border-right:0;}#misc-publishing-actions{padding:6px 0 0;}.misc-pub-section{padding:6px 10px 8px;border-width:1px 0;border-style:solid;}.misc-pub-section:first-child{border-top-width:0;}.misc-pub-section-last{border-bottom-width:0;}#minor-publishing-actions{padding:10px 10px 2px 8px;text-align:right;}#minor-publishing{border-bottom-width:1px;border-bottom-style:solid;-webkit-box-shadow:0 1px 0 #fff;-moz-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff;}#save-post{float:left;}#minor-publishing .ajax-loading{padding:3px 0 0 4px;float:left;}.preview{float:right;}#sticky-span{margin-left:18px;}.side-info{margin:0;padding:4px;font-size:11px;}.side-info h5{padding-bottom:7px;font-size:14px;margin:12px 2px 5px;border-bottom-width:1px;border-bottom-style:solid;}.side-info ul{margin:0;padding-left:18px;list-style:square;}a.button,a.button-primary,a.button-secondary{line-height:15px;padding:3px 10px;white-space:nowrap;-webkit-border-radius:10px;}.approve,.unapproved .unapprove{display:none;}.unapproved .approve,.spam .approve,.trash .approve{display:inline;}td.action-links,th.action-links{text-align:right;}.describe .del-link{padding-left:5px;}#update-nag,.update-nag{line-height:19px;padding:5px 0;font-size:12px;text-align:center;margin:-1px 15px 0 5px;border-width:1px;border-style:solid;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;}.plugins .plugin-update{padding:0;}.plugin-update .update-message{margin:0 10px 8px 31px;font-weight:bold;}ul#dismissed-updates{display:none;}form.upgrade{margin-top:8px;}form.upgrade .hint{font-style:italic;font-size:85%;margin:-0.5em 0 2em 0;}.ajax-feedback{visibility:hidden;vertical-align:bottom;}#ajax-response.alignleft{margin-left:2em;}.fullscreen-overlay{z-index:149999;display:none;position:fixed;top:0;bottom:0;left:0;right:0;filter:inherit;}.fullscreen-active .fullscreen-overlay,.fullscreen-active #wp-fullscreen-body{display:block;}.fullscreen-fader{z-index:200000;}.fullscreen-active .fullscreen-fader{display:none;}#wp-fullscreen-body{width:100%;z-index:150005;display:none;position:absolute;top:0;left:0;}#wp-fullscreen-wrap{margin:0 auto 50px;position:relative;padding-top:60px;}#wp-fullscreen-title{font-size:1.7em;line-height:100%;outline:medium none;padding:6px 7px;width:100%;margin-bottom:30px;}#wp-fullscreen-container{padding:4px 10px 50px;}#wp-fullscreen-title,#wp-fullscreen-container{-webkit-border-radius:0;border-radius:0;border:1px dashed transparent;background:transparent;-moz-transition-property:border-color;-moz-transition-duration:.6s;-webkit-transition-property:border-color;-webkit-transition-duration:.6s;-o-transition-property:border-color;-o-transition-duration:.6s;transition-property:border-color;transition-duration:.6s;}#wp_mce_fullscreen{width:100%;min-height:300px;border:0;background:transparent;font-family:Consolas,Monaco,monospace;line-height:1.6em;padding:0;overflow-y:hidden;outline:none;resize:none;}#wp-fullscreen-tagline{color:#BBB;font-size:18px;float:right;padding-top:5px;}#fullscreen-topbar{position:fixed;top:0;left:0;z-index:150050;border-bottom-style:solid;border-bottom-width:1px;min-width:800px;width:100%;height:40px;}#wp-fullscreen-toolbar{padding:6px 10px 0;clear:both;max-width:1100px;min-width:820px;margin:0 auto;}#wp-fullscreen-mode-bar,#wp-fullscreen-button-bar,#wp-fullscreen-close,#wp-fullscreen-count{float:left;}#wp-fullscreen-save{float:right;padding:2px 2px 0 5px;}#wp-fullscreen-count,#wp-fullscreen-close{padding-top:5px;}#wp-fullscreen-central-toolbar{margin:auto;padding:0;}#wp-fullscreen-buttons>div{float:left;}#wp-fullscreen-mode-bar{padding:1px 14px 0 0;}#wp-fullscreen-modes a{display:block;font-size:11px;text-decoration:none;float:left;margin:1px 0 0 0;padding:2px 6px 2px;border-width:1px 1px 1px 0;border-style:solid;border-color:#bbb;color:#777;text-shadow:0 1px 0 #fff;background-color:#f4f4f4;background-image:-moz-linear-gradient(bottom,#e4e4e4,#f9f9f9);background-image:-webkit-gradient(linear,left bottom,left top,from(#e4e4e4),to(#f9f9f9));}#wp-fullscreen-modes a:hover,.wp-html-mode #wp-fullscreen-modes a:last-child,.wp-tmce-mode #wp-fullscreen-modes a:first-child{color:#333;border-color:#999;background-color:#eee;background-image:-moz-linear-gradient(bottom,#f9f9f9,#e0e0e0);background-image:-webkit-gradient(linear,left bottom,left top,from(#f9f9f9),to(#e0e0e0));}#wp-fullscreen-modes a:first-child{border-width:1px;-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px;}#wp-fullscreen-modes a:last-child{-webkit-border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;}#wp-fullscreen-buttons .active a{background:inherit;}#wp-fullscreen-buttons .hidden{display:none;}#wp-fullscreen-buttons .disabled{opacity:.5;}.wp-html-mode #wp-fullscreen-buttons div{display:none;}.wp-html-mode #wp-fullscreen-buttons div.wp-fullscreen-both{display:block;}#fullscreen-topbar.fullscreen-make-sticky{display:block!important;}#wp-fullscreen-save img{vertical-align:middle;}#wp-fullscreen-save img,#wp-fullscreen-save span{padding-right:4px;display:none;}#wp-fullscreen-buttons .mce_image .mce_image{background-image:url('../images/menu.png?ver=20111128');background-position:-124px -38px;}#wp-fullscreen-buttons .mce_image .mce_image:hover{background-position:-124px -6px;}.fullscreen-active #TB_overlay{z-index:150100;}.fullscreen-active #TB_window{z-index:150102;}#wp_mce_fullscreen_ifr{background:transparent;}#wp_mce_fullscreen_parent #wp_mce_fullscreen_tbl tr.mceFirst{display:none;}#wp-fullscreen-container .wp_themeSkin table td{vertical-align:top;}#adminmenu a,#sidemenu a,#taglist a,#catlist a{text-decoration:none;}#screen-options-wrap,#contextual-help-wrap{margin:0;padding:8px 20px 12px;position:relative;overflow:auto;}#screen-meta .screen-reader-text{visibility:hidden;}#screen-meta-links{margin:0 24px 0 0;}#screen-meta{display:none;position:relative;margin:0 15px 0 5px;border-width:0 1px 1px;border-style:none solid solid;}#screen-options-link-wrap,#contextual-help-link-wrap{float:right;height:22px;padding:0;margin:0 0 0 6px;font-family:sans-serif;}#screen-options-link-wrap,#contextual-help-link-wrap,#screen-meta{-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px;}#screen-meta-links a.show-settings{text-decoration:none;z-index:1;padding:0 16px 0 6px;height:22px;line-height:22px;font-size:12px;display:block;text-shadow:rgba(255,255,255,0.7) 0 1px 0;}#screen-meta-links a.show-settings:hover{text-decoration:none;}.toggle-arrow{background-repeat:no-repeat;background-position:top left;background-color:transparent;height:22px;line-height:22px;display:block;}.toggle-arrow-active{background-position:bottom left;}#screen-options-wrap h5,#contextual-help-wrap h5{margin:8px 0;font-size:13px;}.metabox-prefs label{display:inline-block;padding-right:15px;white-space:nowrap;line-height:30px;}.metabox-prefs label input{margin:0 5px 0 2px;}.metabox-prefs label a{display:none;}#contextual-help-wrap{padding:0;margin-left:-4px;}#contextual-help-columns{position:relative;}#contextual-help-back{position:absolute;top:0;bottom:0;left:150px;right:170px;border-width:0 1px;border-style:solid;}#contextual-help-wrap.no-sidebar #contextual-help-back{right:0;border-right-width:0;-webkit-border-bottom-right-radius:2px;border-bottom-right-radius:2px;}.contextual-help-tabs{float:left;width:150px;margin:0;}.contextual-help-tabs ul{margin:1em 0;}.contextual-help-tabs li{margin-bottom:0;list-style-type:none;border-style:solid;border-width:1px 0;border-color:transparent;}.contextual-help-tabs a{display:block;padding:5px 5px 5px 12px;line-height:18px;text-decoration:none;}.contextual-help-tabs .active{padding:0;margin:0 -1px 0 0;border-width:1px 0 1px 1px;border-style:solid;}.contextual-help-tabs-wrap{padding:0 20px;overflow:auto;}.help-tab-content{display:none;margin:0 22px 12px 0;line-height:1.6em;}.help-tab-content.active{display:block;}.help-tab-content li{list-style-type:disc;margin-left:18px;}.contextual-help-sidebar{width:150px;float:right;padding:0 8px 0 12px;overflow:auto;}#adminmenuback,#adminmenuwrap{border-width:0 1px 0 0;border-style:solid;}#adminmenuwrap{position:relative;float:left;}#adminmenushadow{position:absolute;top:0;right:0;bottom:0;width:6px;z-index:20;}#adminmenu *{-webkit-user-select:none;-moz-user-select:none;user-select:none;}#adminmenu .wp-submenu{list-style:none;padding:0;margin:0;overflow:hidden;}#adminmenu li .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{display:none;position:absolute;top:-1px;left:146px;z-index:999;overflow:hidden;}.js #adminmenu .wp-submenu.sub-open,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.no-js #adminmenu .wp-has-submenu:hover .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu li.focused .wp-submenu{display:block;}#adminmenu .wp-has-current-submenu .wp-submenu{position:relative;z-index:2;top:auto;left:auto;right:auto;bottom:auto;padding:0;}#adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;}.folded #adminmenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{top:-5px;left:26px;}#adminmenu .wp-submenu.sub-open,#adminmenu li.focused.wp-not-current-submenu .wp-submenu,.folded #adminmenu li.focused.wp-has-current-submenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.no-js #adminmenu .wp-has-submenu:hover .wp-submenu,.no-js.folded #adminmenu .wp-has-current-submenu:hover .wp-submenu{padding:0 8px 8px 0;}.no-js #adminmenu .wp-has-current-submenu:hover .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu{padding:0;}#adminmenu .wp-submenu a{font-size:12px;line-height:18px;}#adminmenu a.menu-top,#adminmenu .wp-submenu-head{font-size:13px;line-height:18px;}#adminmenu div.wp-submenu-head{display:none;}.folded #adminmenu div.wp-submenu-head{display:block;}.folded #adminmenu a.menu-top,body.no-js #adminmenu .wp-menu-toggle,.folded #adminmenu div.wp-menu-toggle{display:none;}#adminmenu div.wp-menu-image{float:left;width:28px;height:28px;}.folded #adminmenu div.wp-menu-image{width:32px;}#adminmenu li{margin:0;padding:0;cursor:pointer;}#adminmenu a{display:block;line-height:18px;padding:2px 5px;}#adminmenu li.menu-top{min-height:29px;position:relative;}#adminmenu a.menu-top{font-weight:bold;line-height:18px;min-width:10em;padding:5px 5px;border-width:1px 0 1px;border-style:solid;}#adminmenu li.wp-menu-open{border-width:0 0 1px;border-style:solid;}#adminmenu .wp-submenu ul{padding:4px 0;}#adminmenu .wp-submenu a{margin:0;}#adminmenu li li{margin-left:8px;}#adminmenu .wp-submenu a,#adminmenu li li a,.folded #adminmenu .wp-not-current-submenu li a{padding-left:12px;}#adminmenu .wp-not-current-submenu li a{padding-left:18px;}.folded #adminmenu li li{margin-left:0;}.folded #adminmenu li li a{padding-left:0;}.wp-menu-arrow{display:none;cursor:auto;z-index:25;position:absolute;right:100%;margin:0;height:30px;width:6px;-moz-transform:translate(146px);-webkit-transform:translate(146px);-o-transform:translate(146px);-ms-transform:translate(146px);transform:translate(146px);}#adminmenu li.wp-has-current-submenu .wp-menu-arrow,#adminmenu li.menu-top:hover .wp-menu-arrow,#adminmenu li.current .wp-menu-arrow,#adminmenu li.focused .wp-menu-arrow,#adminmenu li.menu-top.wp-has-submenu:hover .wp-menu-arrow div{display:block;}#adminmenu li.wp-not-current-submenu:hover .wp-menu-arrow div{display:none;}#adminmenu li.menu-top:hover .wp-menu-arrow,#adminmenu li.menu-top.focused .wp-menu-arrow{z-index:1001;}#adminmenu .wp-menu-arrow div{position:absolute;top:7px;left:-1px;width:14px;height:15px;-moz-transform:matrix(-0.6,1,0.6,1,0,0);-webkit-transform:matrix(-0.6,1,0.6,1,0,0);-o-transform:matrix(-0.6,1,0.6,1,0,0);-ms-transform:matrix(-0.6,1,0.6,1,0,0);transform:matrix(-0.6,1,0.6,1,0,0);}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{-moz-transform:translate(145px);-webkit-transform:translate(145px);-o-transform:translate(145px);-ms-transform:translate(145px);transform:translate(145px);height:28px;border-width:1px 0;border-style:solid;}.folded .wp-menu-arrow{-moz-transform:translate(33px);-webkit-transform:translate(33px);-o-transform:translate(33px);-ms-transform:translate(33px);transform:translate(33px);}#adminmenu .wp-not-current-submenu .wp-menu-arrow div{width:15px;top:6px;border-width:0 0 1px 1px;border-style:solid;}.wp-menu-arrow,.folded #adminmenu li.menu-top:hover .wp-menu-arrow{display:none;}.folded #adminmenu li.current:hover .wp-menu-arrow,.folded #adminmenu li.menu-top.wp-menu-open:hover .wp-menu-arrow{display:block;z-index:125;}#adminmenu .wp-submenu li{padding:0;margin:0;}.folded #adminmenu li.menu-top{border-width:1px 0;border-style:solid none;}#adminmenu .wp-menu-image img{float:left;padding:5px 0 0 2px;opacity:.6;filter:alpha(opacity=60);}#adminmenu li.menu-top:hover .wp-menu-image img,#adminmenu li.wp-has-current-submenu .wp-menu-image img{opacity:1;filter:alpha(opacity=100);}#adminmenu li.wp-menu-separator{height:3px;padding:0;margin:0;border-width:1px 0;border-style:solid;cursor:inherit;}#adminmenu div.separator{height:1px;padding:0;border-width:1px 0 0 0;border-style:solid;}#adminmenu .wp-submenu .wp-submenu-head{padding:6px 4px 5px 10px;cursor:default;border-width:1px 0;border-style:solid;}#adminmenu li .wp-submenu-wrap{border-width:1px 1px 1px 0;border-style:solid solid solid none;position:relative;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px;}#adminmenu li.wp-menu-open .wp-submenu-wrap{border:0 none;}.folded #adminmenu .wp-submenu .wp-submenu-wrap{margin-top:3px;}.folded #adminmenu .wp-has-current-submenu{margin-bottom:1px;}.folded #adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0;}.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{margin-top:4px;}.folded #adminmenu .wp-submenu ul{border-width:0 0 0 1px;border-style:solid;}.folded #adminmenu .wp-submenu a{padding-left:10px;}.folded #adminmenu a.wp-has-submenu{margin-left:40px;}#adminmenu .wp-menu-toggle{width:18px;clear:right;float:right;margin:1px 0 0;height:27px;padding:1px 2px 0 0;cursor:pointer;}#adminmenu .wp-menu-image a{height:24px;}#adminmenu .awaiting-mod,#adminmenu span.update-plugins,#sidemenu li a span.update-plugins{position:absolute;font-family:sans-serif;font-size:9px;line-height:17px;font-weight:bold;margin-top:1px;margin-left:7px;-webkit-border-radius:10px;border-radius:10px;}#adminmenu li .awaiting-mod span,#adminmenu li span.update-plugins span,#sidemenu li a span.update-plugins span{display:block;padding:0 6px;}#adminmenu li span.count-0,#sidemenu li a .count-0{display:none;}#collapse-menu{font-size:12px;line-height:34px;}.folded #collapse-menu span{display:none;}#collapse-button,#collapse-button div{width:15px;height:15px;}#collapse-button{float:left;margin:8px 6px;border-width:1px;border-style:solid;-webkit-border-radius:10px;border-radius:10px;}.post-com-count-wrapper{min-width:22px;font-family:sans-serif;}.post-com-count{height:1.3em;line-height:1.1em;display:block;text-decoration:none;padding:0 0 6px;cursor:pointer;background-position:center -80px;background-repeat:no-repeat;}.post-com-count span{font-size:11px;font-weight:bold;height:1.4em;line-height:1.4em;min-width:.7em;padding:0 6px;display:inline-block;-webkit-border-radius:5px;border-radius:5px;}strong .post-com-count{background-position:center -55px;}.post-com-count:hover{background-position:center -3px;}.column-response .post-com-count{float:left;margin-right:5px;text-align:center;}.response-links{float:left;}#the-comment-list .attachment-80x60{padding:4px 8px;}body.admin-bar #wpcontent,body.admin-bar #adminmenu{padding-top:28px;}.narrow{width:70%;margin-bottom:40px;}.narrow p{line-height:150%;}.widefat th,.widefat td{overflow:hidden;}.widefat th{font-weight:normal;}.widefat td p{margin:2px 0 .8em;}.widefat .column-comment p{margin:.6em 0;}.postbox-container{float:left;}.postbox-container .meta-box-sortables{min-height:350px;}.postbox-container .meta-box-sortables.empty-container,#side-sortables.empty-container{border:3px dashed #CCC;height:350px;}.postbox .hndle{cursor:move;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;}.postbox.closed .hndle{-webkit-border-radius:3px;border-radius:3px;}.hndle a{font-size:11px;font-weight:normal;}.postbox .handlediv{float:right;width:27px;height:30px;cursor:pointer;}.sortable-placeholder{border-width:1px;border-style:dashed;margin-bottom:20px;}.widget,.postbox,.stuffbox{margin-bottom:20px;padding:0;border-width:1px;border-style:solid;line-height:1;}.widget .widget-top,.postbox h3,.stuffbox h3{margin-top:1px;border-bottom-width:1px;border-bottom-style:solid;cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none;}.postbox .inside,.stuffbox .inside{padding:0 10px;line-height:1.4em;}.postbox .inside{margin:10px 0;position:relative;}.postbox.closed h3{border:none;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;}.postbox table.form-table{margin-bottom:0;}.temp-border{border:1px dotted #ccc;}.columns-prefs label{padding:0 5px;}#wpbody-content .metabox-holder{padding-top:10px;}#dashboard-widgets .meta-box-sortables{margin:0 8px;}#dashboard_recent_comments div.undo{border-top-style:solid;border-top-width:1px;margin:0 -10px;padding:3px 8px;font-size:11px;}#the-comment-list td.comment p.comment-author{margin-top:0;margin-left:0;}#the-comment-list p.comment-author img{float:left;margin-right:8px;}#the-comment-list p.comment-author strong a{border:none;}#the-comment-list td{vertical-align:top;}#the-comment-list td.comment{word-wrap:break-word;}.welcome-panel{margin:20px 8px;padding:30px 10px 20px;border-width:1px 0;border-style:solid;position:relative;line-height:1.6em;overflow:auto;}.welcome-panel h3{font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif;font-size:32px;font-weight:normal;line-height:1.2;margin:.1em 0 .8em;}.welcome-panel h4{font-size:14px;}.welcome-panel .welcome-panel-close{position:absolute;top:0;right:10px;padding:8px 3px;font-size:13px;text-decoration:none;}.welcome-panel .welcome-panel-close:before{background:url('../images/xit.gif') 0 17% no-repeat;content:' ';height:100%;width:10px;left:-12px;position:absolute;}.welcome-panel .welcome-panel-close:hover:before{background-position:100% 17%;}.welcome-panel .wp-badge{float:left;margin-bottom:20px;}.welcome-panel-content{max-width:1500px;}.welcome-panel-content .about-description,.welcome-panel h3{margin-left:190px;}.welcome-panel p.welcome-panel-dismiss{clear:both;padding:1em 0 0 0;}.welcome-panel .welcome-panel-column-container{clear:both;overflow:hidden;position:relative;padding-left:25px;}.welcome-panel .welcome-panel-column{margin:0 5% 0 -25px;padding-left:25px;width:30%;min-width:200px;float:left;}.welcome-panel .welcome-panel-column.welcome-panel-last{margin-right:0;}.welcome-panel h4 .icon16{margin-left:-32px;}.welcome-panel .welcome-panel-column ul{margin:1.6em 1em 1em 1.3em;}.welcome-panel .welcome-panel-column li{list-style-type:disc;padding-left:2px;}table.fixed{table-layout:fixed;}.fixed .column-rating,.fixed .column-visible{width:8%;}.fixed .column-date,.fixed .column-parent,.fixed .column-links{width:10%;}.fixed .column-response,.fixed .column-author,.fixed .column-categories,.fixed .column-tags,.fixed .column-rel,.fixed .column-role{width:15%;}.fixed .column-comments{width:4em;padding:8px 0;text-align:left;}.fixed .column-comments .vers{padding-left:3px;}.fixed .column-comments a{float:left;}.fixed .column-slug{width:25%;}.fixed .column-posts{width:10%;}.fixed .column-icon{width:80px;}#commentsdiv .fixed .column-author,#comments-form .fixed .column-author{width:20%;}#commentsdiv.postbox .inside{margin:0;padding:0;}#commentsdiv.postbox .inside .row-actions{line-height:18px;}#commentsdiv.postbox .inside td{padding:1em 10px;}#commentsdiv.postbox .inside .column-author{width:33%;}#commentsdiv.postbox .inside p{margin:6px 10px 8px;}#commentsdiv.postbox .column-comment p{margin:.6em 0;}#commentsdiv.postbox #replyrow td{padding:0;}.sorting-indicator{display:none;width:7px;height:4px;margin-top:8px;margin-left:7px;background-image:url(../images/sort.gif);background-repeat:no-repeat;}.fixed .column-comments .sorting-indicator{margin-top:3px;}.widefat th.sortable,.widefat th.sorted{padding:0;}th.sortable a,th.sorted a{display:block;overflow:hidden;padding:7px 7px 8px;}.fixed .column-comments.sortable a,.fixed .column-comments.sorted a{padding:8px 0;}th.sortable a span,th.sorted a span{float:left;cursor:pointer;}th.sorted.asc .sorting-indicator,th.desc:hover span.sorting-indicator{display:block;background-position:0 0;}th.sorted.desc .sorting-indicator,th.asc:hover span.sorting-indicator{display:block;background-position:-7px 0;}.tablenav-pages a{border-bottom-style:solid;border-bottom-width:2px;font-weight:bold;margin-right:1px;padding:0 2px;}.tablenav-pages .current-page{text-align:center;}.tablenav-pages .next-page{margin-left:2px;}.tablenav a.button-secondary{display:block;margin:3px 8px 0 0;}.tablenav{clear:both;height:30px;margin:6px 0 4px;vertical-align:middle;}.tablenav.themes{max-width:98%;}.tablenav .tablenav-pages{float:right;display:block;cursor:default;height:30px;line-height:30px;font-size:12px;}.tablenav .no-pages,.tablenav .one-page .pagination-links{display:none;}.tablenav .tablenav-pages a,.tablenav-pages span.current{text-decoration:none;padding:3px 6px;}.tablenav .tablenav-pages a.disabled:hover,.tablenav .tablenav-pages a.disabled:active{cursor:default;}.tablenav .displaying-num{margin-right:10px;font-size:12px;font-style:italic;}.tablenav .actions{padding:2px 8px 0 0;}.tablenav .delete{margin-right:20px;}.view-switch{float:right;margin:6px 8px 0;}.view-switch a{text-decoration:none;}.filter{float:left;margin:-5px 0 0 10px;}.filter .subsubsub{margin-left:-10px;margin-top:13px;}.screen-per-page{width:3em;}#posts-filter fieldset{float:left;margin:0 1.5ex 1em 0;padding:0;}#posts-filter fieldset legend{padding:0 0 .2em 1px;}span.post-state-format{font-weight:normal;}#wpbody-content .inline-edit-row fieldset{font-size:12px;float:left;margin:0;padding:0;width:100%;}tr.inline-edit-row td,#wpbody-content .inline-edit-row fieldset .inline-edit-col{padding:0 .5em;}#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col{border-width:0 0 0 1px;border-style:none none none solid;}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:40%;}#wpbody-content .quick-edit-row-post .inline-edit-col-right{width:39%;}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:20%;}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:50%;}#wpbody-content .quick-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .inline-edit-col-right{width:49%;}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:30%;}#wpbody-content .bulk-edit-row-page .inline-edit-col-right{width:69%;}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:right;width:69%;}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:27px;}.inline-edit-row fieldset .inline-edit-group{clear:both;}.inline-edit-row fieldset .inline-edit-group:after{content:".";display:block;height:0;clear:both;visibility:hidden;}.inline-edit-row p.submit{clear:both;padding:.5em;margin:.5em 0 0;}.inline-edit-row span.error{line-height:22px;margin:0 15px;padding:3px 5px;}.inline-edit-row h4{margin:.2em 0;padding:0;line-height:23px;}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{margin:0;padding:0;line-height:27px;}.inline-edit-row fieldset label,.inline-edit-row fieldset span.inline-edit-categories-label{display:block;margin:.2em 0;}.inline-edit-row fieldset label.inline-edit-tags{margin-top:0;}.inline-edit-row fieldset label.inline-edit-tags span.title{margin:.2em 0;}.inline-edit-row fieldset label span.title{display:block;float:left;width:5em;}.inline-edit-row fieldset label span.input-text-wrap{display:block;margin-left:5em;}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{width:auto;padding-right:.5em;}.inline-edit-row .input-text-wrap input[type=text]{width:100%;}.inline-edit-row fieldset label input[type=checkbox]{vertical-align:text-bottom;}.inline-edit-row fieldset label textarea{width:100%;height:4em;}#wpbody-content .bulk-edit-row fieldset .inline-edit-group label{max-width:50%;}#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child{margin-right:.5em;}.inline-edit-col-right .input-text-wrap input.inline-edit-menu-order-input{width:6em;}.inline-edit-row h4{text-transform:uppercase;}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{font-style:italic;line-height:1.8em;}.inline-edit-row fieldset input[type="text"],.inline-edit-row fieldset textarea{border-style:solid;border-width:1px;}.inline-edit-row fieldset .inline-edit-date{float:left;}.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=mn]{font-size:12px;width:2.1em;}.inline-edit-row fieldset input[name=aa]{font-size:12px;width:3.5em;}.inline-edit-row fieldset label input.inline-edit-password-input{width:8em;}.inline-edit-row .catshow,.inline-edit-row .cathide{cursor:pointer;}ul.cat-checklist{height:12em;border-style:solid;border-width:1px;overflow-y:scroll;padding:0 5px;margin:0;}#bulk-titles{display:block;height:12em;border-style:solid;border-width:1px;overflow-y:scroll;padding:0 5px;margin:0 0 5px;}.inline-edit-row fieldset ul.cat-checklist li,.inline-edit-row fieldset ul.cat-checklist input{margin:0;}.inline-edit-row fieldset ul.cat-checklist label,.inline-edit-row .catshow,.inline-edit-row .cathide,.inline-edit-row #bulk-titles div{font-family:sans-serif;font-style:normal;font-size:11px;}table .inline-edit-row fieldset ul.cat-hover{height:auto;max-height:30em;overflow-y:auto;position:absolute;}.inline-edit-row fieldset label input.inline-edit-menu-order-input{width:3em;}.inline-edit-row fieldset label input.inline-edit-slug-input{width:75%;}.quick-edit-row-post fieldset label.inline-edit-status{float:left;}#bulk-titles{line-height:140%;}#bulk-titles div{margin:.2em .3em;}#bulk-titles div a{cursor:pointer;display:block;float:left;height:10px;margin:3px 3px 0 -2px;overflow:hidden;position:relative;text-indent:-9999px;width:10px;}#titlediv{position:relative;margin-bottom:20px;}#titlediv label{cursor:text;}#titlediv div.inside{margin:0;}#poststuff #titlewrap{border:0;padding:0;}#titlediv #title{padding:3px 8px;font-size:1.7em;line-height:100%;width:100%;outline:none;}#titlediv #title-prompt-text,#wp-fullscreen-title-prompt-text{color:#bbb;position:absolute;font-size:1.7em;padding:8px 10px;}#wp-fullscreen-title-prompt-text{left:0;padding:11px;}#poststuff .inside-submitbox,#side-sortables .inside-submitbox{margin:0 3px;font-size:11px;}input#link_description,input#link_url{width:98%;}#pending{background:0 none;border:0 none;padding:0;font-size:11px;margin-top:-1px;}#edit-slug-box{height:1em;margin-top:8px;padding:0 10px;}#editable-post-name-full{display:none;}#editable-post-name input{width:16em;}.postarea h3 label{float:left;}#submitpost #ajax-loading,#submitpost .ajax-loading{vertical-align:middle;}#wpcontent .ajax-loading{visibility:hidden;}.submitbox .submit{text-align:left;padding:12px 10px 10px;font-size:11px;}.submitbox .submitdelete{text-decoration:none;padding:1px 2px;}.submitbox .submitdelete,.submitbox .submit a:hover{border-bottom-width:1px;border-bottom-style:solid;}.submitbox .submit input{margin-bottom:8px;margin-right:4px;padding:6px;}.inside-submitbox #post_status{margin:2px 0 2px -2px;}#post-status-select,#post-format{line-height:2.5em;margin-top:3px;}#post-body #normal-sortables{min-height:50px;}.postbox{position:relative;min-width:255px;}#trackback_url{width:99%;}#normal-sortables .postbox .submit{background:transparent none;border:0 none;float:right;padding:0 12px;margin:0;}.category-add input[type="text"],.category-add select{width:100%;max-width:260px;}#post-body ul.category-tabs,#post-body ul.add-menu-item-tabs{float:left;width:120px;text-align:right;margin:0 -120px 0 5px;padding:0;}#post-body ul.category-tabs li,#post-body ul.add-menu-item-tabs li{padding:8px;}#post-body ul.category-tabs li.tabs,#post-body ul.add-menu-item-tabs li.tabs{-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px;}.wp-tab-panel,.categorydiv div.tabs-panel,.customlinkdiv div.tabs-panel,.posttypediv div.tabs-panel,.taxonomydiv div.tabs-panel,#linkcategorydiv div.tabs-panel{height:200px;overflow:auto;padding:.5em .9em;border-style:solid;border-width:1px;}.nav-menus-php .customlinkdiv div.tabs-panel,.nav-menus-php .posttypediv div.tabs-panel,.nav-menus-php .taxonomydiv div.tabs-panel{height:auto;max-height:205px;}div.tabs-panel-active{display:block;}div.tabs-panel-inactive{display:none;}#post-body .categorydiv div.tabs-panel,.taxonomy div.tabs-panel,#post-body #linkcategorydiv div.tabs-panel{margin:0 5px 0 125px;}.press-this #side-sortables .category-tabs li,.has-right-sidebar #side-sortables .category-tabs li,#side-sortables .add-menu-item-tabs li,.wp-tab-bar li{display:inline;line-height:1.35em;}.no-js #side-sortables .category-tabs li.hide-if-no-js{display:none;}#side-sortables .category-tabs a,#side-sortables .add-menu-item-tabs a,.wp-tab-bar a{text-decoration:none;}#side-sortables .category-tabs{margin:8px 0 3px;}#category-adder h4{margin:10px 0;}#side-sortables .add-menu-item-tabs,.wp-tab-bar{margin-bottom:3px;}.categorydiv ul,.customlinkdiv ul,.posttypediv ul,.taxonomydiv ul,#linkcategorydiv ul{list-style:none;padding:0;margin:0;}#normal-sortables .postbox #replyrow .submit{float:none;margin:0;padding:3px 7px;}#side-sortables .submitbox .submit input,#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover{border:0 none;}#side-sortables .inside-submitbox .insidebox,.stuffbox .insidebox{margin:11px 0;}#side-sortables .comments-box,#normal-sortables .comments-box{border:0 none;}ul.category-tabs,ul.add-menu-item-tabs,ul.wp-tab-bar{margin-top:12px;}#side-sortables .comments-box thead th,#normal-sortables .comments-box thead th{background:transparent;padding:0 7px 4px;font-style:italic;}ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-style:solid solid none;border-width:1px 1px 0;}#commentsdiv img.waiting{padding-left:5px;}#post-body .category-tabs li.tabs,#post-body .add-menu-item-tabs li.tabs{border-style:solid none solid solid;border-width:1px 0 1px 1px;margin-right:-1px;}ul.category-tabs li,ul.add-menu-item-tabs li,ul.wp-tab-bar li{padding:3px 5px 5px;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;}form#tags-filter{position:relative;}.screen-per-page{width:3em;}#posts-filter fieldset{float:left;margin:0 1.5ex 1em 0;padding:0;}#posts-filter fieldset legend{padding:0 0 .2em 1px;}td.post-title strong,td.plugin-title strong{display:block;margin-bottom:.2em;}td.post-title p,td.plugin-title p{margin:6px 0;}.wp-hidden-children .wp-hidden-child,.ui-tabs-hide{display:none;}.commentlist .avatar{vertical-align:text-top;}#post-body .tagsdiv #newtag{margin-right:5px;width:16em;}#side-sortables input#post_password{width:94%;}#side-sortables .tagsdiv #newtag{width:68%;}#post-status-info{border-width:0 1px 1px;border-style:none solid solid;width:100%;-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px;}#post-status-info td{font-size:12px;}.autosave-info{padding:2px 15px;text-align:right;}#editorcontent #post-status-info{border:none;}#post-body .wp_themeSkin .mceStatusbar a.mceResize{display:block;background:transparent url(../images/resize.gif) no-repeat scroll right bottom;width:12px;cursor:se-resize;margin:0 2px;position:relative;top:-2px;}#post-body .postarea .wp_themeSkin .mceStatusbar a.mceResize{top:20px;}#wp-word-count{display:block;padding:2px 10px;}#timestampdiv select{height:20px;line-height:14px;padding:0;vertical-align:top;}#aa,#jj,#hh,#mn{padding:1px;font-size:12px;}#jj,#hh,#mn{width:2em;}#aa{width:3.4em;}.curtime #timestamp{background-repeat:no-repeat;background-position:left top;padding-left:18px;}#timestampdiv{padding-top:5px;line-height:23px;}#timestampdiv p{margin:8px 0 6px;}#timestampdiv input{border-width:1px;border-style:solid;}#postcustomstuff .updatemeta,#postcustomstuff .deletemeta{margin:auto;}#postcustomstuff thead th{padding:5px 8px 8px;}#postcustom #postcustomstuff .submit{border:0 none;float:none;padding:5px 8px;}#side-sortables #postcustom #postcustomstuff .submit{padding:0 5px;}#side-sortables #postcustom #postcustomstuff td.left input{margin:3px 3px 0;}#side-sortables #postcustom #postcustomstuff #the-list textarea{height:85px;margin:3px;}#postcustomstuff table{margin:0;width:100%;border-width:1px;border-style:solid;border-spacing:0;}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{width:95%;margin:8px 0 8px 8px;}#postcustomstuff th.left,#postcustomstuff td.left{width:38%;}#postcustomstuff #newmeta .submit{padding:0 8px;}#postcustomstuff .submit input,#postcustomstuff table #addmetasub{width:auto;}#postcustomstuff #newmetaleft{vertical-align:top;}#postcustomstuff #newmetaleft a{padding:0 10px;text-decoration:none;}table.diff{width:100%;}table.diff col.content{width:50%;}table.diff tr{background-color:transparent;}table.diff td,table.diff th{padding:.5em;font-family:Consolas,Monaco,monospace;border:none;}table.diff .diff-deletedline del,table.diff .diff-addedline ins{text-decoration:none;}.category-adder{margin-left:120px;padding:4px 0;}.category-adder h4{margin:0 0 8px;}#side-sortables .category-adder{margin:0;}#post-body ul.category-tabs,#post-body ul.add-menu-item-tabs{float:left;width:120px;text-align:right;margin:0 -120px 0 5px;padding:0;}#post-body ul.category-tabs li,#post-body ul.add-menu-item-tabs li{padding:8px;}#post-body ul.category-tabs li.tabs,#post-body ul.add-menu-item-tabs li.tabs{-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px;}.categorydiv div.tabs-panel,.customlinkdiv div.tabs-panel,.posttypediv div.tabs-panel,.taxonomydiv div.tabs-panel,#linkcategorydiv div.tabs-panel{height:200px;overflow:auto;padding:.5em .9em;border-style:solid;border-width:1px;}.nav-menus-php .customlinkdiv div.tabs-panel,.nav-menus-php .posttypediv div.tabs-panel,.nav-menus-php .taxonomydiv div.tabs-panel{height:auto;max-height:205px;}div.tabs-panel-active{display:block;}div.tabs-panel-inactive{display:none;}#post-body .categorydiv div.tabs-panel,.taxonomy div.tabs-panel,#post-body #linkcategorydiv div.tabs-panel{margin:0 5px 0 125px;}.categorydiv ul,.customlinkdiv ul,.posttypediv ul,.taxonomydiv ul,#linkcategorydiv ul{list-style:none;padding:0;margin:0;}#front-page-warning,#front-static-pages ul,ul.export-filters,.inline-editor ul.cat-checklist ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul,#linkcategorydiv ul.categorychecklist ul{margin-left:18px;}ul.categorychecklist li{margin:0;padding:0;line-height:19px;word-wrap:break-word;}.categorydiv .tabs-panel,.customlinkdiv .tabs-panel,.posttypediv .tabs-panel,.taxonomydiv .tabs-panel{border-width:3px;border-style:solid;}.form-wrap p,.form-wrap label{font-size:11px;}.form-wrap label{display:block;padding:2px;font-size:12px;}.form-field input,.form-field textarea{border-style:solid;border-width:1px;width:95%;}p.description,.form-wrap p{margin:2px 0 5px;}p.help,p.description,span.description,.form-wrap p{font-size:12px;font-style:italic;font-family:sans-serif;}.form-wrap .form-field{margin:0 0 10px;padding:8px;}.col-wrap h3{margin:12px 0;font-size:1.1em;}.col-wrap p.submit{margin-top:-10px;}#poststuff .taghint{color:#aaa;margin:15px 0 -24px 12px;}#poststuff .tagsdiv .howto{margin:0 0 6px 8px;}.ajaxtag .newtag{position:relative;}.tagsdiv .newtag{width:180px;}.tagsdiv .the-tags{display:block;height:60px;margin:0 auto;overflow:auto;width:260px;}#post-body-content .tagsdiv .the-tags{margin:0 5px;}p.popular-tags{-webkit-border-radius:8px;border-radius:8px;border-width:1px;border-style:solid;line-height:2em;max-width:1000px;padding:8px 12px 12px;text-align:justify;}p.popular-tags a{padding:0 3px;}.tagcloud{width:97%;margin:0 0 40px;text-align:justify;}.tagcloud h3{margin:2px 0 12px;}.ac_results{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;display:none;border-width:1px;border-style:solid;}.ac_results li{padding:2px 5px;white-space:nowrap;text-align:left;}.ac_over{cursor:pointer;}.ac_match{text-decoration:underline;}.media-item .describe{border-collapse:collapse;width:100%;border-top-style:solid;border-top-width:1px;clear:both;cursor:default;}.media-item.media-blank .describe{border:0;}.media-item .describe th{vertical-align:top;text-align:left;padding:5px 10px 10px;width:140px;}.media-item .describe .align th{padding-top:0;}.media-item .media-item-info tr{background-color:transparent;}.media-item .describe td{padding:0 8px 8px 0;vertical-align:top;}.media-item thead.media-item-info td{padding:4px 10px 0;}.media-item .media-item-info .A1B1{padding:0 0 0 10px;}.media-item td.savesend{padding-bottom:15px;}.media-item .thumbnail{max-height:128px;max-width:128px;}#wpbody-content #async-upload-wrap a{display:none;}.media-upload-form{margin-top:20px;}.media-upload-form td label{margin-right:6px;margin-left:2px;}.media-upload-form .align .field label{display:inline;padding:0 0 0 23px;margin:0 1em 0 3px;font-weight:bold;}.media-upload-form tr.image-size label{margin:0 0 0 5px;font-weight:bold;}.media-upload-form th.label label{font-weight:bold;margin:.5em;font-size:13px;}.media-upload-form th.label label span{padding:0 5px;}abbr.required{border:medium none;text-decoration:none;}.media-item .describe input[type="text"],.media-item .describe textarea{width:460px;}.media-item .describe p.help{margin:0;padding:0 0 0 5px;}.describe-toggle-on,.describe-toggle-off{display:block;line-height:36px;float:right;margin-right:15px;}.media-item .describe-toggle-off,.media-item.open .describe-toggle-on,.media-item.open img.pinkynail{display:none;}.media-item.open .describe-toggle-off{display:block;}#media-items .media-item{border-style:solid;border-width:1px;min-height:36px;position:relative;margin-top:-1px;width:100%;}#media-items{width:623px;}#media-items:empty{border:0 none;}.media-item .filename{line-height:36px;overflow:hidden;padding:0 10px;}.media-item .error-div{padding-left:10px;}.media-item .pinkynail{float:left;margin:2px 2px 0;max-width:40px;max-height:32px;}.media-item .startopen,.media-item .startclosed{display:none;}.media-item .original{position:relative;height:34px;}.media-item .progress{float:right;height:22px;margin:6px 10px 0 0;width:200px;line-height:2em;padding:0;overflow:hidden;margin-bottom:2px;border:1px solid #d1d1d1;background:#fff;background-image:linear-gradient(bottom,#fff 0,#f7f7f7 100%);background-image:-o-linear-gradient(bottom,#fff 0,#f7f7f7 100%);background-image:-moz-linear-gradient(bottom,#fff 0,#f7f7f7 100%);background-image:-webkit-linear-gradient(bottom,#fff 0,#f7f7f7 100%);background-image:-ms-linear-gradient(bottom,#fff 0,#f7f7f7 100%);-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,0.1);box-shadow:inset 0 0 3px rgba(0,0,0,0.1);}.media-item .bar{z-index:9;width:0;height:100%;margin-top:-24px;background-color:#83B4D8;background-image:linear-gradient(bottom,#72a7cf 0,#90c5ee 100%);background-image:-o-linear-gradient(bottom,#72a7cf 0,#90c5ee 100%);background-image:-moz-linear-gradient(bottom,#72a7cf 0,#90c5ee 100%);background-image:-webkit-linear-gradient(bottom,#72a7cf 0,#90c5ee 100%);background-image:-ms-linear-gradient(bottom,#72a7cf 0,#90c5ee 100%);-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.3);box-shadow:0 0 3px rgba(0,0,0,0.3);}.media-item .progress .percent{z-index:10;position:relative;width:200px;padding:0 8px;text-shadow:0 1px 0 rgba(255,255,255,0.4);color:rgba(0,0,0,0.6);}.upload-php .fixed .column-parent{width:25%;}.js .html-uploader #plupload-upload-ui{display:none;}.js .html-uploader #html-upload-ui{display:block;}.media-upload-form .media-item.error{margin:0;padding:0;}.media-upload-form .media-item.error p,.media-item .error-div{line-height:16px;font-size:12px;margin:10px;padding:0;}.media-item .error-div a.dismiss{float:right;padding-left:15px;}.find-box{width:500px;height:300px;overflow:hidden;padding:33px 5px 40px;position:absolute;z-index:1000;}.find-box-head{cursor:move;font-weight:bold;height:2em;line-height:2em;padding:1px 12px;position:absolute;top:5px;width:100%;}.find-box-inside{overflow:auto;width:100%;height:100%;}.find-box-search{padding:12px;border-width:1px;border-style:none none solid;}#find-posts-response{margin:8px 0;padding:0 1px;}#find-posts-response table{width:100%;}#find-posts-response .found-radio{padding:5px 0 0 8px;width:15px;}.find-box-buttons{width:480px;margin:8px;}.find-box-search label{padding-right:6px;}.find-box #resize-se{position:absolute;right:1px;bottom:1px;}ul#dismissed-updates{display:none;}form.upgrade{margin-top:8px;}form.upgrade .hint{font-style:italic;font-size:85%;margin:-0.5em 0 2em 0;}#poststuff .inside .the-tagcloud{margin:5px 0 10px;padding:8px;border-width:1px;border-style:solid;line-height:1.8em;word-spacing:3px;-webkit-border-radius:6px;border-radius:6px;}.drag-drop #drag-drop-area{border:4px dashed #DDD;height:200px;}.drag-drop .drag-drop-inside{margin:70px auto 0;width:250px;}.drag-drop-inside p{color:#aaa;font-size:14px;margin:5px 0;display:none;}.drag-drop .drag-drop-inside p{text-align:center;}.drag-drop-inside p.drag-drop-info{font-size:20px;}.drag-drop .drag-drop-inside p,.drag-drop-inside p.drag-drop-buttons{display:block;}.drag-drop.drag-over #drag-drop-area{border-color:#83b4d8;}#plupload-upload-ui{position:relative;}.describe .image-editor{vertical-align:top;}.imgedit-wrap{position:relative;}.imgedit-settings p{margin:8px 0;}.describe .imgedit-wrap table td{vertical-align:top;padding-top:0;}.imgedit-wrap p,.describe .imgedit-wrap table td{font-size:11px;line-height:18px;}.describe .imgedit-wrap table td.imgedit-settings{padding:0 5px;}td.imgedit-settings input{vertical-align:middle;}.imgedit-wait{position:absolute;top:0;background:#FFF url(../images/wpspin_light.gif) no-repeat scroll 22px 10px;opacity:.7;filter:alpha(opacity=70);width:100%;height:500px;display:none;}.media-disabled,.imgedit-settings .disabled{color:grey;}.imgedit-wait-spin{padding:0 4px 4px;vertical-align:bottom;visibility:hidden;}.imgedit-menu{margin:0 0 12px;min-width:300px;}.imgedit-menu div{float:left;width:32px;height:32px;}.imgedit-crop-wrap{position:relative;}.imgedit-crop{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -9px -31px;margin:0 8px 0 0;}.imgedit-crop.disabled:hover{background-position:-9px -31px;}.imgedit-crop:hover{background-position:-9px -1px;}.imgedit-rleft{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -46px -31px;margin:0 3px;}.imgedit-rleft.disabled:hover{background-position:-46px -31px;}.imgedit-rleft:hover{background-position:-46px -1px;}.imgedit-rright{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -77px -31px;margin:0 8px 0 3px;}.imgedit-rright.disabled:hover{background-position:-77px -31px;}.imgedit-rright:hover{background-position:-77px -1px;}.imgedit-flipv{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -115px -31px;margin:0 3px;}.imgedit-flipv.disabled:hover{background-position:-115px -31px;}.imgedit-flipv:hover{background-position:-115px -1px;}.imgedit-fliph{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -147px -31px;margin:0 8px 0 3px;}.imgedit-fliph.disabled:hover{background-position:-147px -31px;}.imgedit-fliph:hover{background-position:-147px -1px;}.imgedit-undo{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -184px -31px;margin:0 3px;}.imgedit-undo.disabled:hover{background-position:-184px -31px;}.imgedit-undo:hover{background-position:-184px -1px;}.imgedit-redo{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -215px -31px;margin:0 8px 0 3px;}.imgedit-redo.disabled:hover{background-position:-215px -31px;}.imgedit-redo:hover{background-position:-215px -1px;}.imgedit-applyto img{margin:0 8px 0 0;}.imgedit-group-top{margin:5px 0;}.imgedit-applyto .imgedit-label{padding:2px 0 0;display:block;}.imgedit-help{display:none;font-style:italic;margin-bottom:8px;}.imgedit-help ul li{font-size:11px;}a.imgedit-help-toggle{text-decoration:none;}#wpbody-content .imgedit-response div{width:600px;margin:8px;}.form-table td.imgedit-response{padding:0;}.imgedit-submit{margin:8px 0;}.imgedit-submit-btn{margin-left:20px;}.imgedit-wrap .nowrap{white-space:nowrap;}span.imgedit-scale-warn{color:red;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle;}.imgedit-group{border-width:1px;border-style:solid;-webkit-border-radius:8px;border-radius:8px;margin-bottom:8px;padding:2px 10px;}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;margin-bottom:-8px;clear:both;}.form-table td{margin-bottom:9px;padding:8px 10px;line-height:20px;font-size:12px;}.form-table th,.form-wrap label{font-weight:normal;text-shadow:#fff 0 1px 0;}.form-table th{vertical-align:top;text-align:left;padding:10px;width:200px;}.form-table th.th-full{width:auto;}.form-table div.color-option{display:block;clear:both;margin-top:12px;}.form-table input.tog{margin-top:2px;margin-right:2px;float:left;}.form-table td p{margin-top:4px;}.form-table table.color-palette{vertical-align:bottom;float:left;margin:-12px 3px 11px;}.form-table .color-palette td{border-width:1px 1px 0;border-style:solid solid none;height:10px;line-height:20px;width:10px;}.commentlist li{padding:1em 1em .2em;margin:0;border-bottom-width:1px;border-bottom-style:solid;}.commentlist li li{border-bottom:0;padding:0;}.commentlist p{padding:0;margin:0 0 .8em;}#replyrow input{border-width:1px;border-style:solid;}#replyrow td{padding:2px;}#replysubmit{margin:0;padding:0 7px 3px;text-align:center;}#replysubmit img.waiting,.inline-edit-save img.waiting{padding:4px 10px 0;vertical-align:top;float:right;}#replysubmit .button{margin-right:5px;}#replysubmit .error{color:red;line-height:21px;text-align:center;vertical-align:center;}#replyrow h5{margin:.2em 0 0;padding:0 5px;line-height:1.4em;font-size:1em;}#edithead .inside{float:left;padding:3px 0 2px 5px;margin:0;text-align:center;}#edithead .inside input{width:180px;}#edithead label{padding:2px 0;}#replycontainer{padding:5px;}#replycontent{height:120px;}.comment-ays{margin-bottom:0;border-style:solid;border-width:1px;}.comment-ays th{border-right-style:solid;border-right-width:1px;}.trash-undo-inside,.spam-undo-inside{margin:1px 8px 1px 0;line-height:16px;}.spam-undo-inside .avatar,.trash-undo-inside .avatar{height:20px;width:20px;margin-right:8px;vertical-align:middle;}.stuffbox .editcomment{clear:none;}#comment-status-radio p{margin:3px 0 5px;}#comment-status-radio input{margin:2px 3px 5px 0;vertical-align:middle;}#comment-status-radio label{padding:5px 0;}.commentlist .avatar{vertical-align:text-top;}.theme-install-php .tablenav{height:auto;}.available-theme{display:inline-block;margin-bottom:10px;margin-right:25px;overflow:hidden;padding:20px;vertical-align:top;width:240px;}.available-theme a.screenshot{width:240px;height:180px;display:block;border-width:1px;border-style:solid;margin-bottom:10px;overflow:hidden;}.available-theme img{width:240px;}.available-theme h3{margin:15px 0 5px;}#current-theme{margin:1em 0 1.5em;}#current-theme a{border-bottom:none;}#current-theme h3{font-size:17px;font-weight:normal;margin:0;}#current-theme .theme-description{margin-top:5px;}#current-theme img{float:left;border-width:1px;border-style:solid;margin-right:1em;margin-bottom:1.5em;width:150px;}.theme-options span{text-transform:uppercase;font-size:13px;}.theme-options a{font-size:15px;}#post-body ul.category-tabs li.tabs a,#post-body ul.add-menu-item-tabs li.tabs a,#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{font-weight:bold;text-decoration:none;}#TB_window #TB_title{background-color:#222;color:#cfcfcf;}#broken-themes{text-align:left;width:50%;border-spacing:3px;padding:3px;}.theme-install-php h4{margin:2.5em 0 8px;}.appearance_page_custom-header #headimg{border:1px solid #DFDFDF;min-height:100px;width:100%;}.appearance_page_custom-header #upload-form p label{font-size:12px;}.appearance_page_custom-header .available-headers .default-header{float:left;margin:0 20px 20px 0;}.appearance_page_custom-header .random-header{clear:both;margin:0 20px 20px 0;vertical-align:middle;}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-right:10px;}.appearance_page_custom-header .available-headers label img{vertical-align:middle;}div#custom-background-image{min-height:100px;border:1px solid #dfdfdf;}div#custom-background-image img{max-width:400px;max-height:300px;}.nav-tab{border-style:solid;border-color:#dfdfdf #dfdfdf #fff;border-width:1px 1px 0;color:#aaa;text-shadow:#fff 0 1px 0;font-size:12px;line-height:16px;display:inline-block;padding:4px 14px 6px;text-decoration:none;margin:0 6px -1px 0;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;}.nav-tab-active{border-width:1px;color:#464646;}.nav-tab:hover,.nav-tab-active{border-color:#ccc #ccc #fff;}h2.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom:1px solid #ccc;padding-bottom:0;}h2 .nav-tab{padding:4px 10px 6px;font-weight:200;font-size:20px;line-height:24px;}#dashboard_right_now .versions .b,#post-status-display,#post-visibility-display,#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover,.media-item .percent,.plugins .name,#pass-strength-result.strong,#pass-strength-result.short,.button-highlighted,input.button-highlighted,#quicktags #ed_strong,#ed_reply_toolbar #ed_reply_strong,.item-controls .item-order a,.feature-filter .feature-name{font-weight:bold;}.plugins p{margin:0 4px;padding:0;}.plugins .desc p{margin:0 0 8px;}.plugins td.desc{line-height:1.5em;}.plugins .desc ul,.plugins .desc ol{margin:0 0 0 2em;}.plugins .desc ul{list-style-type:disc;}.plugins .row-actions-visible{padding:0;}.plugins tbody th.check-column{padding:7px 0;}.plugins .inactive td,.plugins .inactive th,.plugins .active td,.plugins .active th{border-top-style:solid;border-top-width:1px;padding:5px 7px 0;}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-right:12px;white-space:nowrap;}.plugins .second,.plugins .row-actions-visible{padding:0 0 5px;}.plugins-php .widefat tfoot th,.plugins-php .widefat tfoot td{border-top-style:solid;border-top-width:1px;}.plugin-update-tr .update-message{margin:5px;padding:3px 5px;}.plugin-install-php h4{margin:2.5em 0 8px;}#profile-page .form-table textarea{width:500px;margin-bottom:6px;}#profile-page .form-table #rich_editing{margin-right:5px;}#your-profile legend{font-size:22px;}#your-profile #rich_editing{border:none;}#display_name{width:15em;}#createuser .form-field input{width:25em;}.pressthis{margin:20px 0;}.pressthis a{display:inline-block;width:113px;position:relative;cursor:move;color:#333;background:#dfdfdf;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0.07,#e6e6e6),color-stop(0.77,#d8d8d8));background-image:-moz-linear-gradient(center bottom,#e6e6e6 7%,#d8d8d8 77%);background-repeat:no-repeat;background-image-position:10px 8px;-webkit-border-radius:5px;border-radius:5px;border:1px #b4b4b4 solid;font-style:normal;line-height:16px;font-size:14px;text-decoration:none;text-shadow:#fff 0 1px 0;}.pressthis a:hover,.pressthis a:active{color:#333;}.pressthis a:hover:after{transform:skew(20deg) rotate(9deg);-webkit-transform:skew(20deg) rotate(9deg);-moz-transform:skew(20deg) rotate(9deg);box-shadow:0 10px 8px rgba(0,0,0,0.7);-webkit-box-shadow:0 10px 8px rgba(0,0,0,0.7);-moz-box-shadow:0 10px 8px rgba(0,0,0,0.7);}.pressthis a span{background:url(../images/press-this.png) no-repeat -45px 5px;padding:8px 0 8px 32px;display:inline-block;}.pressthis a:after{content:'';width:70%;height:55%;z-index:-1;position:absolute;right:10px;bottom:9px;background:transparent;transform:skew(20deg) rotate(6deg);-webkit-transform:skew(20deg) rotate(6deg);-moz-transform:skew(20deg) rotate(6deg);box-shadow:0 10px 8px rgba(0,0,0,0.6);-webkit-box-shadow:0 10px 8px rgba(0,0,0,0.6);-moz-box-shadow:0 10px 8px rgba(0,0,0,0.6);}#utc-time,#local-time{padding-left:25px;font-style:italic;font-family:sans-serif;}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle;}#footer{position:absolute;bottom:0;left:0;right:0;padding:10px 0;margin-right:20px;border-top-width:1px;border-top-style:solid;}#footer p{margin:0;line-height:20px;}#footer a{text-decoration:none;}#footer a:hover{text-decoration:underline;}.about-wrap{position:relative;margin:25px 40px 0 20px;min-width:770px;max-width:1050px;font-size:15px;}.about-wrap div.updated,.about-wrap div.error{display:none!important;}.about-wrap p{line-height:1.6em;}.about-wrap h1{margin:.2em 200px 0 0;line-height:1.2em;font-size:2.8em;font-weight:200;}.about-text,.about-description,.about-wrap li.wp-person a.web{font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif;font-weight:normal;line-height:1.6em;font-size:20px;}.about-description{margin-top:1.4em;}.about-text{margin:1em 200px 1.4em 0;min-height:60px;font-size:24px;}.about-wrap h3{font-size:24px;margin-bottom:1em;padding-top:20px;}.about-wrap .changelog{padding-bottom:10px;overflow:hidden;}.about-wrap .changelog li{list-style-type:disc;margin-left:3em;}.about-wrap .feature-section h4{margin-bottom:.6em;}.about-wrap .feature-section p{margin-top:.6em;}.about-wrap code{font-size:14px;}html.ie8 .about-wrap img.element-screenshot{padding:2px;}.about-wrap .point-releases{margin-top:5px;}.about-wrap .changelog.point-releases h3{padding-top:35px;}.about-wrap .changelog.point-releases h3:first-child{padding-top:7px;}.wp-badge{padding-top:142px;height:50px;width:173px;font-weight:bold;font-size:14px;text-align:center;margin:0 -5px;background:url('../images/wp-badge.png?ver=20111120') no-repeat;}.about-wrap .wp-badge{position:absolute;top:0;right:0;}.about-wrap h2.nav-tab-wrapper{padding-left:6px;}.about-wrap h2 .nav-tab{padding:4px 10px 6px;margin:0 3px -1px 0;font-size:18px;vertical-align:top;}.about-wrap h2 .nav-tab-active{font-weight:bold;padding-top:3px;}.about-wrap .feature-section .left-feature,.about-wrap .feature-section img,.about-wrap .feature-section .right-feature{float:left;}.about-wrap .feature-section{min-height:100px;overflow:hidden;clear:both;}.about-wrap .feature-section img{margin:5px auto;border:none;-webkit-border-radius:3px;border-radius:3px;}html.ie8 .about-wrap .feature-section img,html.ie8 .about-wrap .feature-section .image-mask{border-width:1px;border-style:solid;}.about-wrap .feature-section.text-features{width:31%;float:left;overflow:visible;}.about-wrap .feature-section.text-features div{width:112%;}.about-wrap .feature-section.screenshot-features{width:67%;margin-top:1.33em;float:right;clear:none;overflow:visible;}.about-wrap .feature-section.screenshot-features .angled-right{margin-top:-1em;margin-left:2.5em;}.about-wrap .feature-section.screenshot-features .angled-right p{margin-left:290px;}.about-wrap .feature-section .angled-right h4,.about-wrap .feature-section .angled-left h4{margin-top:0;}.about-wrap .feature-section .angled-right img,.about-wrap .feature-section .angled-left img{margin-top:.1em;margin-right:30px;}.about-wrap .feature-section.three-col{padding-top:15px;margin-bottom:0;}.about-wrap .feature-section.three-col div{width:30%;margin-right:4.999999999%;float:left;}.about-wrap .feature-section.three-col h4{margin:0 0 .6em 0;}.about-wrap .feature-section.three-col img{margin:.5em 0 .5em 5px;max-width:100%;float:none;}html.ie8 .about-wrap .feature-section.three-col img{margin-left:0;}.about-wrap .feature-section.three-col .last-feature{margin-right:0;}.about-wrap .feature-section .feature-images{width:300px;position:absolute;margin-top:1.1em;}.about-wrap .feature-section .feature-images img{width:250px;height:150px;margin-right:5px;}.about-wrap .feature-section.images-stagger-left,.about-wrap .feature-section.images-stagger-right{min-height:265px;}.about-wrap .feature-section.images-stagger-right .angled-right,.about-wrap .feature-section.images-stagger-left .angled-left{margin-bottom:-30px;}.about-wrap .feature-section.images-stagger-left .angled-left{margin-left:5px;}.about-wrap .feature-section .angled-right{float:right;}.about-wrap .feature-section.images-stagger-right .feature-images{right:0;}.about-wrap .feature-section.images-stagger-left .feature-images{left:0;}.about-wrap .feature-section.images-stagger-right .left-feature{margin-right:350px;}.about-wrap .feature-section.images-stagger-left .right-feature{margin-left:350px;}.about-wrap .return-to-dashboard{margin:30px 0 0 -5px;font-size:14px;font-weight:bold;}.about-wrap .return-to-dashboard a{text-decoration:none;padding:0 5px;}.about-wrap h4.wp-people-group{margin-top:2.6em;font-size:16px;}.about-wrap ul.wp-people-group{overflow:hidden;padding:5px;margin:0 -15px 0 -5px;}.about-wrap ul.compact{margin-bottom:0;}.about-wrap li.wp-person{float:left;margin-right:10px;}.about-wrap li.wp-person img.gravatar{float:left;margin:0 10px 10px 0;padding:2px;width:60px;height:60px;}.about-wrap ul.compact li.wp-person img.gravatar{width:30px;height:30px;}.about-wrap li.wp-person{height:70px;width:280px;padding-bottom:15px;}.about-wrap ul.compact li.wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0;}.about-wrap #wp-people-group-validators+p.wp-credits-list{margin-top:0;}.about-wrap li.wp-person a.web{display:block;margin:6px 0 2px;font-size:16px;text-decoration:none;}.about-wrap p.wp-credits-list a{white-space:nowrap;}.freedoms-php .about-wrap ol{margin:40px 60px;}.freedoms-php .about-wrap ol li{list-style-type:decimal;font-weight:bold;}.freedoms-php .about-wrap ol p{font-weight:normal;margin:.6em 0;}#excerpt,.attachmentlinks{margin:0;height:4em;width:98%;}.wp-editor-container textarea.wp-editor-area{width:99.9%;}#template div{margin-right:190px;}p.pagenav{margin:0;display:inline;}.pagenav span{font-weight:bold;margin:0 6px;}.row-title{font-size:13px!important;font-weight:bold;}.column-author img,.column-username img{float:left;margin-right:10px;margin-top:1px;}.row-actions{visibility:hidden;padding:2px 0 0;}tr:hover .row-actions,div.comment-item:hover .row-actions{visibility:visible;}.row-actions-visible{padding:2px 0 0;}.form-table .pre{padding:8px;margin:0;}table.form-table td .updated{font-size:13px;}.tagchecklist{margin-left:14px;font-size:12px;overflow:auto;}.tagchecklist strong{margin-left:-8px;position:absolute;}.tagchecklist span{margin-right:25px;display:block;float:left;font-size:11px;line-height:1.8em;white-space:nowrap;cursor:default;}.tagchecklist span a{margin:6px 0 0 -9px;cursor:pointer;width:10px;height:10px;display:block;float:left;text-indent:-9999px;overflow:hidden;position:absolute;}#poststuff h2{margin-top:20px;font-size:1.5em;margin-bottom:15px;padding:0 0 3px;clear:left;}#poststuff h3,.metabox-holder h3{font-size:15px;font-weight:normal;padding:7px 10px;margin:0;line-height:1;}#poststuff .inside{margin:6px 0 8px;}#post-visibility-select,#post-formats-select{line-height:1.5em;margin-top:3px;}#poststuff #submitdiv .inside{margin:0;padding:0;}#titlediv,#poststuff .postarea{margin-bottom:20px;}td.post-title strong,td.plugin-title strong{display:block;margin-bottom:.2em;}td.post-title p,td.plugin-title p{margin:6px 0;}#templateside ul li a{text-decoration:none;}.tool-box .title{margin:8px 0;font-size:18px;font-weight:normal;line-height:24px;}#sidemenu{margin:-30px 15px 0 315px;list-style:none;position:relative;float:right;padding-left:10px;font-size:12px;}#sidemenu a{padding:0 7px;display:block;float:left;line-height:28px;border-top-width:1px;border-top-style:solid;border-bottom-width:1px;border-bottom-style:solid;}#sidemenu li{display:inline;line-height:200%;list-style:none;text-align:center;white-space:nowrap;margin:0;padding:0;}#sidemenu a.current{font-weight:normal;padding-left:6px;padding-right:6px;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;border-width:1px;border-style:solid;}#sidemenu li a .count-0{display:none;}.plugin-install #description,.plugin-install-network #description{width:60%;}table .vers,table .column-visible,table .column-rating{text-align:left;}.error-message{color:red;font-weight:bold;}body.iframe{height:98%;}td.media-icon{text-align:center;width:80px;padding-top:8px;padding-bottom:8px;}td.media-icon img{max-width:80px;max-height:60px;}.screen-per-page{width:3em;}.list-ajax-loading{float:right;margin-right:9px;margin-top:-1px;}.tablenav .list-ajax-loading{margin-top:7px;}#howto{font-size:11px;margin:0 5px;display:block;}.importers td{padding-right:14px;}.importers{font-size:16px;width:auto;}#namediv table{width:100%;}#namediv td.first{width:10px;white-space:nowrap;}#namediv input{width:98%;}#namediv p{margin:10px 0;}#submitdiv h3{margin-bottom:0!important;}.zerosize{height:0;width:0;margin:0;border:0;padding:0;overflow:hidden;position:absolute;}br.clear{height:2px;line-height:2px;}.checkbox{border:none;margin:0;padding:0;}fieldset{border:0;padding:0;margin:0;}.post-categories{display:inline;margin:0;padding:0;}.post-categories li{display:inline;}.edit-box{display:none;}h3:hover .edit-box{display:inline;}.index-php form .input-text-wrap{background:#fff;border-style:solid;border-width:1px;padding:2px 3px;border-color:#ccc;}#dashboard-widgets form .input-text-wrap input{border:0 none;outline:none;margin:0;padding:0;width:99%;color:#333;}form .textarea-wrap{background:#fff;border-style:solid;border-width:1px;padding:2px;border-color:#ccc;}#dashboard-widgets form .textarea-wrap textarea{border:0 none;padding:0;outline:none;width:99%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;}#dashboard-widgets .postbox form .submit{float:none;margin:.5em 0 0;padding:0;border:none;}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit input{margin:0;}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish{min-width:0;}#dashboard-widgets a{text-decoration:none;}#dashboard-widgets h3 a{text-decoration:underline;}#dashboard-widgets h3 .postbox-title-action{position:absolute;right:30px;padding:0;top:5px;}#dashboard-widgets h4{font-weight:normal;font-size:13px;margin:0 0 .2em;padding:0;}#dashboard_right_now p.sub,#dashboard_right_now .table,#dashboard_right_now .versions{margin:-12px;}#dashboard_right_now .inside{font-size:12px;padding-top:20px;}#dashboard_right_now p.sub{padding:5px 0 15px;color:#8f8f8f;font-size:14px;position:absolute;top:-17px;left:15px;}#dashboard_right_now .table{margin:0;padding:0;position:relative;}#dashboard_right_now .table_content{float:left;border-top:#ececec 1px solid;width:45%;}#dashboard_right_now .table_discussion{float:right;border-top:#ececec 1px solid;width:45%;}#dashboard_right_now table td{padding:3px 0;white-space:nowrap;}#dashboard_right_now table tr.first td{border-top:none;}#dashboard_right_now td.b{padding-right:6px;text-align:right;font-size:14px;width:1%;}#dashboard_right_now td.b a{font-size:18px;}#dashboard_right_now td.b a:hover{color:#d54e21;}#dashboard_right_now .t{font-size:12px;padding-right:12px;padding-top:6px;color:#777;}#dashboard_right_now .t a{white-space:nowrap;}#dashboard_right_now .spam{color:red;}#dashboard_right_now .waiting{color:#e66f00;}#dashboard_right_now .approved{color:green;}#dashboard_right_now .versions{padding:6px 10px 12px;clear:both;}#dashboard_right_now a.button{float:right;clear:right;position:relative;top:-5px;}#dashboard_recent_comments h3{margin-bottom:0;}#dashboard_recent_comments .inside{margin-top:0;}#dashboard_recent_comments .comment-meta .approve{font-style:italic;font-family:sans-serif;font-size:10px;}#dashboard_recent_comments .subsubsub{float:none;white-space:normal;}#the-comment-list{position:relative;}#the-comment-list .comment-item{padding:1em 10px;border-top:1px solid;}#the-comment-list .pingback{padding-left:9px!important;}#the-comment-list .comment-item,#the-comment-list #replyrow{margin:0 -10px;}#the-comment-list .comment-item:first-child{border-top:none;}#the-comment-list .comment-item .avatar{float:left;margin:0 10px 5px 0;}#the-comment-list .comment-item h4{line-height:1.7em;margin-top:-0.4em;color:#777;}#the-comment-list .comment-item h4 cite{font-style:normal;font-weight:normal;}#the-comment-list .comment-item blockquote,#the-comment-list .comment-item blockquote p{margin:0;padding:0;display:inline;}#dashboard_recent_comments #the-comment-list .trackback blockquote,#dashboard_recent_comments #the-comment-list .pingback blockquote{display:block;}#the-comment-list .comment-item p.row-actions{margin:3px 0 0;padding:0;font-size:12px;}#dashboard_quick_press h4{font-family:sans-serif;float:left;width:5em;clear:both;font-weight:normal;text-align:right;font-size:12px;}#dashboard_quick_press h4 label{margin-right:10px;}#dashboard_quick_press .input-text-wrap,#dashboard_quick_press .textarea-wrap{margin:0 0 1em 5em;}#dashboard_quick_press .wp-media-buttons{margin:0 0 .5em 5em;padding:0;}#dashboard_quick_press .wp-media-buttons a{color:#777;}#dashboard-widgets #dashboard_quick_press form p.submit{margin-left:4.6em;}#dashboard-widgets #dashboard_quick_press form p.submit input{float:left;}#dashboard-widgets #dashboard_quick_press form p.submit #save-post{margin:0 1em 0 10px;}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:right;}#dashboard-widgets #dashboard_quick_press form p.submit img.waiting{vertical-align:middle;visibility:hidden;margin:4px 6px 0 0;}#dashboard_recent_drafts ul,#dashboard_recent_drafts p{margin:0;padding:0;}#dashboard_recent_drafts ul{list-style:none;}#dashboard_recent_drafts ul li{margin-bottom:1em;}#dashboard_recent_drafts h4{line-height:1.7em;}#dashboard_recent_drafts h4 abbr{font-weight:normal;font-family:sans-serif;font-size:12px;color:#999;margin-left:3px;}.rss-widget ul{margin:0;padding:0;list-style:none;}a.rsswidget{font-size:13px;line-height:1.7em;}.rss-widget ul li{line-height:1.5em;margin-bottom:12px;}.rss-widget span.rss-date{color:#999;font-size:12px;margin-left:3px;}.rss-widget cite{display:block;text-align:right;margin:0 0 1em;padding:0;}.rss-widget cite:before{content:'\2014';}#dashboard_plugins h4{line-height:1.7em;}#dashboard_plugins h5{font-weight:normal;font-size:13px;margin:0;display:inline;line-height:1.4em;}#dashboard_plugins h5 a{line-height:1.4em;}#dashboard_plugins .inside span{font-size:12px;padding-left:5px;}#dashboard_plugins p{margin:.3em 0 1.4em;line-height:1.4em;}.dashboard-comment-wrap{overflow:hidden;word-wrap:break-word;}#dashboard_browser_nag a.update-browser-link{font-size:1.2em;font-weight:bold;}#dashboard_browser_nag a{text-decoration:underline;}#dashboard_browser_nag p.browser-update-nag.has-browser-icon{padding-right:125px;}#dashboard_browser_nag .browser-icon{margin-top:-35px;}#dashboard_browser_nag.postbox.browser-insecure{background-color:#ac1b1b;border-color:#ac1b1b;}#dashboard_browser_nag.postbox{background-color:#e29808;background-image:none;border-color:#edc048;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;color:#fff;}#dashboard_browser_nag.postbox.browser-insecure h3{border-bottom-color:#cd5a5a;color:#fff;}#dashboard_browser_nag.postbox h3{border-bottom-color:#f6e2ac;text-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;background:transparent none;color:#fff;}#dashboard_browser_nag a{color:#fff;}#dashboard_browser_nag.browser-insecure a.browse-happy-link,#dashboard_browser_nag.browser-insecure a.update-browser-link{text-shadow:#871b15 0 1px 0;}#dashboard_browser_nag a.browse-happy-link,#dashboard_browser_nag a.update-browser-link{text-shadow:#d29a04 0 1px 0;}.login *{margin:0;padding:0;}.login form{margin-left:8px;padding:26px 24px 46px;font-weight:normal;background:#fff;border:1px solid #e5e5e5;-moz-box-shadow:rgba(200,200,200,0.7) 0 4px 10px -1px;-webkit-box-shadow:rgba(200,200,200,0.7) 0 4px 10px -1px;box-shadow:rgba(200,200,200,0.7) 0 4px 10px -1px;}.login form .forgetmenot{font-weight:normal;float:left;margin-bottom:0;}.login .button-primary{font-size:13px!important;line-height:16px;padding:3px 10px;float:right;}#login form p{margin-bottom:0;}#login form p.submit{padding:0;}.login label{color:#777;font-size:14px;}.login form .forgetmenot label{font-size:12px;line-height:19px;}.login form p{margin-bottom:24px;}.login h1 a{background:url(../images/logo-login.png) no-repeat top center;width:326px;height:67px;text-indent:-9999px;overflow:hidden;padding-bottom:15px;display:block;}#login{width:320px;padding:114px 0 0;margin:auto;}#login_error,.login .message{margin:0 0 16px 8px;padding:12px;}.login #nav,.login #backtoblog{text-shadow:#fff 0 1px 0;margin:0 0 0 16px;padding:16px 16px 0;}#backtoblog{padding:12px 16px 0;}.login form .input{font-weight:200;font-size:24px;line-height:1;width:100%;padding:3px;margin-top:2px;margin-right:6px;margin-bottom:16px;border:1px solid #e5e5e5;background:#fbfbfb;outline:none;-moz-box-shadow:inset 1px 1px 2px rgba(200,200,200,0.2);-webkit-box-shadow:inset 1px 1px 2px rgba(200,200,200,0.2);box-shadow:inset 1px 1px 2px rgba(200,200,200,0.2);}.login input{color:#555;}.login #pass-strength-result{width:250px;font-weight:bold;border-style:solid;border-width:1px;margin:12px 0 6px;padding:6px 5px;text-align:center;}#dashboard_right_now p.musub{margin-top:12px;border-top:1px solid #ececec;padding-left:16px;position:static;}.rtl #dashboard_right_now p.musub{padding-left:0;padding-right:16px;}#dashboard_right_now td.b a.musublink{font-size:16px;}#dashboard_right_now div.musubtable{border-top:none;}#dashboard_right_now div.musubtable .t{white-space:normal;}.wp-list-table .site-deleted{background:#ff8573;}.wp-list-table .site-spammed{background:#faafaa;}.wp-list-table .site-archived{background:#ffebe8;}.wp-list-table .site-mature{background:#fecac2;}#nav-menus-frame{margin-left:300px;}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-left:-300px;clear:both;float:left;padding-top:24px;}.no-js #wpbody-content #menu-settings-column{padding-top:31px;}#menu-settings-column .inside{clear:both;}.metabox-holder-disabled .postbox{opacity:.5;filter:alpha(opacity=50);}.metabox-holder-disabled .button-controls .select-all{display:none;}#wpbody{position:relative;}#menu-management-liquid{float:left;min-width:100%;}#menu-management{position:relative;margin-right:20px;margin-top:-3px;width:100%;}#menu-management .menu-edit{margin-bottom:20px;}.nav-menus-php #post-body{padding:10px;border-width:1px 0;border-style:solid;}#nav-menu-header,#nav-menu-footer{padding:0 10px;}#nav-menu-header{border-bottom:1px solid;}#nav-menu-footer{border-top:1px solid;}.nav-menus-php #post-body div.updated,.nav-menus-php #post-body div.error{margin:0;}.nav-menus-php #post-body-content{position:relative;}#menu-management .menu-add-new abbr{font-weight:bold;}#menu-management .nav-tabs-nav{margin:0 20px;}#menu-management .nav-tabs-arrow{width:10px;padding:0 5px 4px;cursor:pointer;position:absolute;top:0;line-height:22px;font-size:18px;text-shadow:0 1px 0 #fff;}#menu-management .nav-tabs-arrow-left{left:0;}#menu-management .nav-tabs-arrow-right{right:0;text-align:right;}#menu-management .nav-tabs-wrapper{width:100%;height:28px;margin-bottom:-1px;overflow:hidden;}#menu-management .nav-tabs{padding-left:20px;padding-right:10px;}.js #menu-management .nav-tabs{float:left;margin-left:0;margin-right:-400px;}#menu-management .nav-tab{margin-bottom:0;font-size:14px;}#select-nav-menu-container{text-align:right;padding:0 10px 3px 10px;margin-bottom:5px;}#select-nav-menu{width:100px;display:inline;}#menu-name-label{margin-top:-2px;}#wpbody .open-label{display:block;float:left;}#wpbody .open-label span{padding-right:10px;}.js .input-with-default-title{font-style:italic;}#menu-management .inside{padding:0 10px;}.postbox .howto input{width:180px;float:right;}.customlinkdiv .howto input{width:200px;}#nav-menu-theme-locations .howto select{width:100%;}#nav-menu-theme-locations .button-controls{text-align:right;}.add-menu-item-view-all{height:400px;}#menu-container .submit{margin:0 0 10px;padding:0;}.nav-menus-php .meta-sep,.nav-menus-php .submitdelete,.nav-menus-php .submitcancel{display:block;float:left;margin:4px 0;line-height:15px;}.meta-sep{padding:0 2px;}#cancel-save{text-decoration:underline;font-size:12px;margin-left:20px;margin-top:5px;}.list-controls{float:left;margin-top:5px;}.add-to-menu{float:right;}.postbox img.waiting{display:none;vertical-align:middle;}.button-controls{clear:both;margin:10px 0;}.show-all,.hide-all{cursor:pointer;}.hide-all{display:none;}#menu-name{width:270px;}#manage-menu .inside{padding:0;}#available-links dt{display:block;}#add-custom-link .howto{font-size:12px;}#add-custom-link label span{display:block;float:left;margin-top:5px;padding-right:5px;}.menu-item-textbox{width:180px;}.nav-menus-php .howto span{margin-top:4px;display:block;float:left;}.quick-search{width:190px;}.nav-menus-php .list-wrap{display:none;clear:both;margin-bottom:10px;}.nav-menus-php .list-container{max-height:200px;overflow-y:auto;padding:10px 10px 5px;}.nav-menus-php .postbox p.submit{margin-bottom:0;}.nav-menus-php .list li{display:none;margin:0;margin-bottom:5px;}.nav-menus-php .list li .menu-item-title{cursor:pointer;display:block;}.nav-menus-php .list li .menu-item-title input{margin-right:3px;margin-top:-3px;}#menu-container .inside{padding-bottom:10px;}.menu{padding-top:1em;}#menu-to-edit{padding:1em 0;}.menu ul{width:100%;}.menu li{margin-bottom:0;position:relative;}.menu-item-bar{clear:both;line-height:1.5em;position:relative;margin:13px 0 0 0;}.menu-item-handle{border:1px solid #dfdfdf;position:relative;padding-left:10px;height:auto;width:400px;line-height:35px;text-shadow:0 1px 0 #FFF;overflow:hidden;word-wrap:break-word;}#menu-to-edit .menu-item-invalid .menu-item-handle{background-color:#f6c9cc;background-image:-ms-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:-moz-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:-o-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:-webkit-gradient(linear,left bottom,left top,from(#f6c9cc),to(#fdf8ff));background-image:-webkit-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:linear-gradient(bottom,#f6c9cc,#fdf8ff);}.menu-item-edit-active .menu-item-handle{-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0;}.no-js .menu-item-edit-active .item-edit{display:none;}.js .menu-item-handle{cursor:move;}.menu li.deleting .menu-item-handle{background-image:none;text-shadow:0;}.menu-item-handle .item-title{font-size:12px;font-weight:bold;padding:7px 0;line-height:20px;display:block;margin-right:13em;}li.menu-item.ui-sortable-helper dl{margin-top:0;}li.menu-item.ui-sortable-helper .menu-item-transport dl{margin-top:13px;}.menu .sortable-placeholder{height:35px;width:410px;margin-top:13px;}.menu-item-depth-0{margin-left:0;}.menu-item-depth-1{margin-left:30px;}.menu-item-depth-2{margin-left:60px;}.menu-item-depth-3{margin-left:90px;}.menu-item-depth-4{margin-left:120px;}.menu-item-depth-5{margin-left:150px;}.menu-item-depth-6{margin-left:180px;}.menu-item-depth-7{margin-left:210px;}.menu-item-depth-8{margin-left:240px;}.menu-item-depth-9{margin-left:270px;}.menu-item-depth-10{margin-left:300px;}.menu-item-depth-11{margin-left:330px;}.menu-item-depth-0 .menu-item-transport{margin-left:0;}.menu-item-depth-1 .menu-item-transport{margin-left:-30px;}.menu-item-depth-2 .menu-item-transport{margin-left:-60px;}.menu-item-depth-3 .menu-item-transport{margin-left:-90px;}.menu-item-depth-4 .menu-item-transport{margin-left:-120px;}.menu-item-depth-5 .menu-item-transport{margin-left:-150px;}.menu-item-depth-6 .menu-item-transport{margin-left:-180px;}.menu-item-depth-7 .menu-item-transport{margin-left:-210px;}.menu-item-depth-8 .menu-item-transport{margin-left:-240px;}.menu-item-depth-9 .menu-item-transport{margin-left:-270px;}.menu-item-depth-10 .menu-item-transport{margin-left:-300px;}.menu-item-depth-11 .menu-item-transport{margin-left:-330px;}body.menu-max-depth-0{min-width:950px!important;}body.menu-max-depth-1{min-width:980px!important;}body.menu-max-depth-2{min-width:1010px!important;}body.menu-max-depth-3{min-width:1040px!important;}body.menu-max-depth-4{min-width:1070px!important;}body.menu-max-depth-5{min-width:1100px!important;}body.menu-max-depth-6{min-width:1130px!important;}body.menu-max-depth-7{min-width:1160px!important;}body.menu-max-depth-8{min-width:1190px!important;}body.menu-max-depth-9{min-width:1220px!important;}body.menu-max-depth-10{min-width:1250px!important;}body.menu-max-depth-11{min-width:1280px!important;}.item-type{font-size:12px;padding-right:10px;}.item-controls{font-size:12px;position:absolute;right:20px;top:-1px;}.item-controls a{text-decoration:none;}.item-controls a:hover{cursor:pointer;}.item-controls .item-order{padding-right:10px;}.nav-menus-php .item-edit{position:absolute;right:-20px;top:0;display:block;width:30px;height:36px;overflow:hidden;text-indent:-999em;border-bottom:1px solid;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}.menu-instructions-inactive{display:none;}.menu-item-settings{display:block;width:400px;padding:10px 0 10px 10px;border:solid;border-width:0 1px 1px 1px;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px;}.menu-item-edit-active .menu-item-settings{display:block;}.menu-item-edit-inactive .menu-item-settings{display:none;}.add-menu-item-pagelinks{margin:.5em auto;text-align:center;}.link-to-original{display:block;margin:0 0 10px;padding:3px 5px 5px;font-size:12px;font-style:italic;}.link-to-original a{padding-left:4px;font-style:normal;}.hidden-field{display:none;}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-right:10px;float:left;}.description-thin{width:190px;height:40px;}.description-wide{width:390px;}.menu-item-actions{padding-top:15px;}#cancel-save{cursor:pointer;}.nav-menus-php .major-publishing-actions{clear:both;padding:3px 0 5px;}.nav-menus-php .major-publishing-actions .publishing-action{text-align:right;float:right;line-height:23px;margin:5px 0 1px;}.nav-menus-php .major-publishing-actions .delete-action{vertical-align:middle;text-align:left;float:left;padding-right:15px;margin-top:5px;}.menu-name-label span,.auto-add-pages label{font-size:12px;font-style:normal;}.menu-name-label{margin-right:15px;}.auto-add-pages input{margin-top:0;}.auto-add-pages{margin-top:4px;float:left;}.nav-menus-php .submitbox .submitcancel{border-bottom:1px solid;padding:1px 2px;text-decoration:none;}.nav-menus-php .major-publishing-actions .form-invalid{padding-left:4px;margin-left:-4px;border:0 none;}#menu-item-name-wrap:after,#menu-item-url-wrap:after,#menu-name-label:after,#menu-settings-column .inside:after,#nav-menus-frame:after,.nav-menus-php #post-body-content:after,.nav-menus-php .button-controls:after,.nav-menus-php .major-publishing-actions:after,.nav-menus-php .menu-item-settings:after{clear:both;content:".";display:block;height:0;visibility:hidden;}#nav-menus-frame,.button-controls,#menu-item-url-wrap,#menu-item-name-wrap{display:block;}div.star-holder{position:relative;height:19px;width:100px;font-size:19px;}div.action-links{font-weight:normal;margin:6px 0 0;}div.star{height:100%;position:absolute;top:0;left:0;background-color:transparent;letter-spacing:1ex;border:none;}.star1{width:20%;}.star2{width:40%;}.star3{width:60%;}.star4{width:80%;}.star5{width:100%;}.star img,div.star a,div.star a:hover,div.star a:visited{display:block;position:absolute;right:0;border:none;text-decoration:none;}div.star img{width:19px;height:19px;}#plugin-information-header{margin:0;padding:0 5px;font-weight:bold;position:relative;border-bottom-width:1px;border-bottom-style:solid;height:2.5em;}#plugin-information ul#sidemenu{font-weight:normal;margin:0 5px;position:absolute;left:0;bottom:-1px;}#plugin-information p.action-button{width:100%;padding-bottom:0;margin-bottom:0;margin-top:10px;-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px;}#plugin-information .action-button a{text-align:center;font-weight:bold;text-decoration:none;display:block;line-height:2em;}#plugin-information h2{clear:none!important;margin-right:200px;}#plugin-information .fyi{margin:0 10px 50px;width:210px;}#plugin-information .fyi h2{font-size:.9em;margin-bottom:0;margin-right:0;}#plugin-information .fyi h2.mainheader{padding:5px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;}#plugin-information .fyi ul{padding:10px 5px 10px 7px;margin:0;list-style:none;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}#plugin-information .fyi li{margin-right:0;}#plugin-information #section-holder{padding:10px;}#plugin-information .section ul,#plugin-information .section ol{margin-left:16px;list-style-type:square;list-style-image:none;}#plugin-information #section-screenshots li img{vertical-align:text-top;}#plugin-information #section-screenshots li p{font-style:italic;padding-left:20px;padding-bottom:2em;}#plugin-information .updated,#plugin-information pre{margin-right:215px;}#plugin-information pre{padding:7px;overflow:auto;}body.press-this{color:#333;margin:0;padding:0;min-width:675px;min-height:400px;}img{border:none;}.press-this #wphead{height:32px;margin-right:5px;margin-bottom:5px;}.press-this #header-logo{float:left;margin:7px 7px 0;-webkit-user-select:none;-moz-user-select:none;user-select:none;}.press-this #wphead h1{font-weight:normal;font-size:16px;line-height:32px;margin:0;float:left;}.press-this #wphead h1 a{text-decoration:none;}.press-this #wphead h1 a:hover{text-decoration:underline;}.press-this-sidebar{float:right;width:200px;padding-top:10px;}.press-this #title{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;}.press-this .tagchecklist span a{background:transparent url(../images/xit.gif) no-repeat 0 0;}.press-this #titlediv{margin:0;}.press-this .wp-media-buttons{cursor:default;padding:8px 8px 0;}.press-this .howto{margin-top:2px;margin-bottom:3px;font-size:12px;font-style:italic;display:block;}.press-this #poststuff{margin:0 10px 10px;}#poststuff #editor-toolbar{height:30px;}div.zerosize{border:0 none;height:0;margin:0;overflow:hidden;padding:0;width:0;}.posting{margin-right:212px;position:relative;}.press-this .inner-sidebar{width:200px;}.press-this .inner-sidebar .sleeve{padding-top:5px;}.press-this #submitdiv p{margin:0;padding:6px;}.press-this #submitdiv #publishing-actions{border-bottom:1px solid #dfdfdf;}.press-this #publish{float:right;}.press-this #poststuff h2,.press-this #poststuff h3{font-size:14px;line-height:1;}.press-this #tagsdiv-post_tag h3,.press-this #categorydiv h3{cursor:pointer;}.press-this #submitdiv h3{cursor:default;}h3.tb{text-shadow:0 1px 0 #fff;font-weight:bold;font-size:12px;margin-left:5px;}#TB_window{border:1px solid #333;}.press-this .postbox,.press-this .stuffbox{margin-bottom:10px;min-width:0;}.postbox:hover .handlediv,.stuffbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px;}.press-this #submitdiv:hover .handlediv{background:none;}.tbtitle{font-size:1.7em;outline:none;padding:3px 4px;border-color:#dfdfdf;}.press-this .actions{float:right;margin:-19px 0 0;}.press-this #extra-fields .actions{margin:-25px -7px 0 0;}.press-this .actions li{float:left;list-style:none;margin-right:10px;}#extra-fields .button{margin-right:5px;}#photo_saving{margin:0 8px 8px;vertical-align:middle;}#img_container_container{overflow:auto;}#extra-fields{margin-top:10px;position:relative;}#extra-fields h2{margin:12px;}#waiting{margin-top:10px;}#extra-fields .postbox{margin-bottom:5px;}#extra-fields .titlewrap{padding:0;overflow:auto;height:100px;}#img_container a{display:block;float:left;overflow:hidden;vertical-align:center;}#img_container img,#img_container a{width:68px;height:68px;}#img_container img{border:none;background-color:#f4f4f4;cursor:pointer;}#img_container a,#img_container a:link,#img_container a:visited{border:1px solid #ccc;display:block;position:relative;}#img_container a:hover,#img_container a:active{border-color:#000;z-index:1000;border-width:2px;margin:-1px;}#embed-code{width:100%;height:98px;}.press-this .categorydiv div.tabs-panel{height:100px;}.press-this .tagsdiv .newtag{width:130px;}.press-this #content{margin:5px 0;padding:0 5px;border:0 none;height:357px;font-family:Consolas,Monaco,monospace;font-size:13px;line-height:19px;background:transparent;}#saving{display:inline;vertical-align:middle;}#TB_ajaxContent #options{position:absolute;top:20px;right:25px;padding:5px;}#TB_ajaxContent h3{margin-bottom:.25em;}.error a{text-decoration:underline;}.updated a{text-decoration:none;padding-bottom:2px;}.taghint{color:#aaa;margin:-17px 0 0 7px;visibility:hidden;}input.newtag ~ div.taghint{visibility:visible;}input.newtag:focus ~ div.taghint{visibility:hidden;}#mce_fullscreen_container{background:#fff;}#photo-add-url-div input[type="text"]{width:300px;}.alignleft h3{margin:0;}h3 span{font-weight:normal;}#template textarea{font-family:Consolas,Monaco,monospace;font-size:12px;width:97%;background:#f9f9f9;outline:none;}#template p{width:97%;}#templateside{float:right;width:190px;word-wrap:break-word;}#templateside h3,#postcustomstuff p.submit{margin:0;}#templateside h4{margin:1em 0 0;}#templateside ol,#templateside ul{margin:.5em;padding:0;}#templateside li{margin:4px 0;}#templateside ul li a span.highlight{display:block;}.nonessential{font-size:11px;font-style:italic;padding-left:12px;}.highlight{padding:3px 3px 3px 12px;margin-left:-12px;font-weight:bold;border:0 none;}#documentation{margin-top:10px;}#documentation label{line-height:22px;vertical-align:top;font-weight:bold;}.fileedit-sub{padding:10px 0 8px;line-height:180%;}.theme-listing .theme-item{display:inline-block;width:200px;border:thin solid #ccc;vertical-align:top;}.theme-listing .theme-item h3{text-align:center;font-size:14px;font-style:italic;margin:0;padding:0;}.theme-listing .theme-item img{max-width:150px;max-height:150px;}.theme-listing .theme-item-info span,.theme-listing .theme-item:hover .theme-item-info span.dots{display:none;}.theme-listing .theme-item:hover .theme-item-info span{display:inline;}.theme-listing .theme-item-info span.action-links{font-weight:bold;text-align:center;}.theme-listing br.line{border-bottom-width:1px;border-bottom-style:solid;margin-bottom:3px;}#theme-information .available-theme,.available-theme{padding:20px 15px;}#theme-information .available-theme{overflow:visible;width:440px;}#theme-information .theme-preview-img{float:left;margin:5px 25px 10px 15px;width:300px;}#theme-information .action-button{border-top-width:1px;border-top-style:solid;margin:10px 5px 0;}#theme-information .action-button #cancel,#theme-information .action-button #install{margin:10px 5px;}#theme-information .action-button #cancel{float:left;}#theme-information .action-button #install{float:right;}#theme-information .available-theme h3{margin:1em 0;}body#theme-information{height:auto;}.feature-filter{padding:8px 12px 0;}.feature-filter .feature-group{float:left;margin:5px 10px 10px;}.feature-filter .feature-group li{display:inline;float:left;list-style-type:none;padding-right:25px;min-width:150px;}.feature-container{width:100%;overflow:auto;margin-bottom:10px;}div.widget-liquid-left{float:left;clear:left;width:100%;margin-right:-325px;}div#widgets-left{margin-left:5px;margin-right:325px;}div#widgets-right{width:285px;margin:0 auto;}div.widget-liquid-right{float:right;clear:right;width:300px;}.widget-liquid-right .widget,.inactive-sidebar .widget,.widget-liquid-right .sidebar-description{width:250px;margin:0 auto 20px;overflow:hidden;}.widget-liquid-right .sidebar-description{margin-bottom:10px;}.inactive-sidebar .widget{margin:0 10px 20px;float:left;}div.sidebar-name h3{font-weight:normal;font-size:15px;margin:0;padding:8px 10px;overflow:hidden;white-space:nowrap;}div.sidebar-name{cursor:pointer;font-size:13px;border-width:1px;border-style:solid;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;}.js .closed .sidebar-name{-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;}.widget-liquid-right .widgets-sortables,#widgets-left .widget-holder{border-width:0 1px 1px;border-style:none solid solid;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;}.js .closed .widgets-sortables,.js .closed .widget-holder{display:none;}.widget-liquid-right .widgets-sortables{padding:15px 0 0;}#available-widgets .widget-holder{padding:7px 5px 0;}#available-widgets .widget{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;}.inactive-sidebar{padding:5px 5px 0;}#widget-list .widget{width:250px;margin:0 10px 15px;border:0 none;background:transparent;float:left;}#widget-list .widget-description{padding:5px 8px;}.widget-placeholder{border-width:1px;border-style:dashed;margin:0 auto 20px;height:26px;width:250px;}.inactive-sidebar .widget-placeholder{margin:0 10px 20px;float:left;}div.widgets-holder-wrap{padding:0;margin:10px 0 20px;}#widgets-left #available-widgets{background-color:transparent;border:0 none;}ul#widget-list{list-style:none;margin:0;padding:0;min-height:100px;}.widget .widget-top{margin-bottom:-1px;font-size:12px;font-weight:bold;height:26px;overflow:hidden;}.widget-top .widget-title{padding:7px 9px;}.widget-top .widget-title-action{float:right;}a.widget-action{display:block;width:24px;height:26px;}#available-widgets a.widget-action{display:none;}.widget-top a.widget-action{background:transparent url(../images/arrows.png) no-repeat 4px 6px;}.widget-top a.widget-action:hover{background:transparent url(../images/arrows-dark.png) no-repeat 4px 6px;}.widget .widget-inside,.widget .widget-description{padding:12px 12px 10px;font-size:12px;line-height:16px;}.widget-inside,.widget-description{display:none;}#available-widgets .widget-description{display:block;}.widget .widget-inside p{margin:0 0 1em;padding:0;}.widget-title h4{margin:0;line-height:1;overflow:hidden;white-space:nowrap;}.widgets-sortables{min-height:90px;}.widget-control-actions{margin-top:8px;}.widget-control-actions a{text-decoration:none;}.widget-control-actions a:hover{text-decoration:underline;}.widget-control-actions .ajax-feedback{padding-bottom:3px;}.widget-control-actions div.alignleft{margin-top:6px;}div#sidebar-info{padding:0 1em;margin-bottom:1em;font-size:12px;}.widget-title a,.widget-title a:hover{text-decoration:none;border-bottom:none;}.widget-control-edit{display:block;font-size:12px;font-weight:normal;line-height:26px;padding:0 8px 0 0;}a.widget-control-edit{text-decoration:none;}.widget-control-edit .add,.widget-control-edit .edit{display:none;}#available-widgets .widget-control-edit .add,#widgets-right .widget-control-edit .edit,.inactive-sidebar .widget-control-edit .edit{display:inline;}.editwidget{margin:0 auto 15px;}.editwidget .widget-inside{display:block;padding:10px;}.inactive p.description{margin:5px 15px 10px;}#available-widgets p.description{margin:0 12px 12px;}.widget-position{margin-top:8px;}.inactive{padding-top:2px;}.sidebar-name-arrow{float:right;height:29px;width:26px;}.widget-title .in-widget-title{font-size:12px;white-space:nowrap;}#removing-widget{display:none;font-weight:normal;padding-left:15px;font-size:12px;line-height:1;}.widget-control-noform,#access-off,.widgets_access .widget-action,.widgets_access .sidebar-name-arrow,.widgets_access #access-on,.widgets_access .widget-holder .description{display:none;}.widgets_access .widget-holder,.widgets_access #widget-list{padding-top:10px;}.widgets_access #access-off{display:inline;}.widgets_access #wpbody-content .widget-title-action,.widgets_access #wpbody-content .widget-control-edit,.widgets_access .closed .widgets-sortables,.widgets_access .closed .widget-holder{display:block;}.widgets_access .closed .sidebar-name{-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0;}.widgets_access .sidebar-name,.widgets_access .widget .widget-top{cursor:default;}@media only screen and(max-width:768px){#col-left{width:100%;}#col-right{width:100%;}}@media only screen and(min-width:769px){#col-left{width:35%;}#col-right{width:65%;}}@media only screen and(max-width:860px){#col-left{width:35%;}#col-right{width:65%;}}@media only screen and(min-width:980px){#col-left{width:35%;}#col-right{width:65%;}}@media only screen and(max-width:768px){#col-left{width:100%;}#col-right{width:100%;}.form-field input,.form-field textarea{width:99%;}.form-wrap .form-field{padding:0;}#profile-page .form-table textarea{max-width:400px;width:auto;}}
\ No newline at end of file
+#wpwrap{height:auto;min-height:100%;width:100%;position:relative}#wpcontent{height:100%}#wpcontent,#footer{margin-left:165px}.folded #wpcontent,.folded #footer{margin-left:52px}#wpbody-content{padding-bottom:65px;float:left;width:100%}#adminmenuback,#adminmenuwrap,#adminmenu,#adminmenu .wp-submenu,#adminmenu .wp-submenu-wrap,.folded #adminmenu .wp-has-current-submenu .wp-submenu{width:145px}#adminmenuback{position:absolute;top:0;bottom:0;z-index:-1}#adminmenu{clear:left;margin:0;padding:0;list-style:none}.folded #adminmenuback,.folded #adminmenuwrap,.folded #adminmenu,.folded #adminmenu li.menu-top{width:32px}.inner-sidebar{float:right;clear:right;display:none;width:281px;position:relative}.columns-2 .inner-sidebar{margin-right:auto;width:286px;display:block}.inner-sidebar #side-sortables,.columns-2 .inner-sidebar #side-sortables{min-height:300px;width:280px;padding:0}.has-right-sidebar .inner-sidebar{display:block}.has-right-sidebar #post-body{float:left;clear:left;width:100%;margin-right:-2000px}.has-right-sidebar #post-body-content{margin-right:300px;float:none;width:auto}#col-container,#col-left,#col-right{overflow:hidden;padding:0;margin:0}#col-left{width:35%}#col-right{float:right;clear:right;width:65%}.col-wrap{padding:0 7px}.alignleft{float:left}.alignright{float:right}.textleft{text-align:left}.textright{text-align:right}.clear{clear:both}.screen-reader-text,.screen-reader-text span{position:absolute;left:-1000em;height:1px;width:1px;overflow:hidden}.hidden,.js .closed .inside,.js .hide-if-js,.no-js .hide-if-no-js{display:none}input[type="text"],input[type="password"],input[type="number"],input[type="search"],input[type="email"],input[type="url"],textarea{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}input[type="checkbox"],input[type="radio"]{vertical-align:text-top;padding:0;margin:1px 0 0}input[type="search"]{-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration{display:none}html,body{height:100%;margin:0;padding:0}body{font-family:sans-serif;font-size:12px;line-height:1.4em;min-width:600px}body.iframe{min-width:0}body.login{background:#fbfbfb;min-width:0}iframe,img{border:0}td,textarea,input,select{font-family:inherit;font-size:inherit;font-weight:inherit}td,textarea{line-height:inherit}input,select{line-height:15px}a,input,select{outline:0}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}p{margin:1em 0}blockquote{margin:1em}label{cursor:pointer}li,dd{margin-bottom:6px}textarea,input,select{margin:1px;padding:3px}h1,h2,h3,h4,h5,h6{display:block;font-weight:bold}h1{font-size:2em;margin:.67em 0}h2{font-size:1.5em;margin:.83em 0}h3{font-size:1.17em;margin:1em 0}h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}ul,ol{padding:0}ul{list-style:none}ol{list-style-type:decimal;margin-left:2em}ul.ul-disc{list-style:disc outside}ul.ul-square{list-style:square outside}ol.ol-decimal{list-style:decimal outside}ul.ul-disc,ul.ul-square,ol.ol-decimal{margin-left:1.8em}ul.ul-disc>li,ul.ul-square>li,ol.ol-decimal>li{margin:0 0 .5em}.code,code{font-family:Consolas,Monaco,monospace}kbd,code{padding:1px 3px;margin:0 1px;font-size:11px}.subsubsub{list-style:none;margin:8px 0 5px;padding:0;white-space:nowrap;font-size:12px;float:left}.subsubsub a{line-height:2;padding:.2em;text-decoration:none}.subsubsub a .count,.subsubsub a.current .count{color:#999;font-weight:normal}.subsubsub a.current{font-weight:bold;background:0;border:0}.subsubsub li{display:inline;margin:0;padding:0}.widefat,div.updated,div.error,.wrap .add-new-h2,textarea,input[type="text"],input[type="password"],input[type="file"],input[type="button"],input[type="submit"],input[type="reset"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="url"],select,.tablenav .tablenav-pages a,.tablenav-pages span.current,#titlediv #title,.postbox,#postcustomstuff table,#postcustomstuff input,#postcustomstuff textarea,.imgedit-menu div,.plugin-update-tr .update-message,#poststuff .inside .the-tagcloud,.login form,#login_error,.login .message,#menu-management .menu-edit,.nav-menus-php .list-container,.menu-item-handle,.link-to-original,.nav-menus-php .major-publishing-actions .form-invalid,.press-this #message,#TB_window,.tbtitle,.highlight,.feature-filter,#widget-list .widget-top,.editwidget .widget-inside{-webkit-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid}.widefat{border-spacing:0;width:100%;clear:both;margin:0}.widefat *{word-wrap:break-word}.widefat a{text-decoration:none}.widefat thead th:first-of-type{-webkit-border-top-left-radius:3px;border-top-left-radius:3px}.widefat thead th:last-of-type{-webkit-border-top-right-radius:3px;border-top-right-radius:3px}.widefat tfoot th:first-of-type{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}.widefat tfoot th:last-of-type{-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px}.widefat td,.widefat th{border-width:1px 0;border-style:solid}.widefat tfoot th{border-bottom:0}.widefat .no-items td{border-bottom-width:0}.widefat td{font-size:12px;padding:4px 7px 2px;vertical-align:top}.widefat td p,.widefat td ol,.widefat td ul{font-size:12px}.widefat th{padding:7px 7px 8px;text-align:left;line-height:1.3em;font-size:14px}.widefat th input{margin:0 0 0 8px;padding:0;vertical-align:text-top}.widefat .check-column{width:2.2em;padding:11px 0 0;vertical-align:top}.widefat tbody th.check-column{padding:9px 0 22px}.widefat .num,.column-comments,.column-links,.column-posts{text-align:center}.widefat th#comments{vertical-align:middle}.wrap{margin:4px 15px 0 0}div.updated,div.error{padding:0 .6em;margin:5px 15px 2px}div.updated p,div.error p{margin:.5em 0;padding:2px}.wrap div.updated,.wrap div.error,.media-upload-form div.error{margin:5px 0 15px}.wrap h2,.subtitle{font-weight:normal;margin:0;text-shadow:#fff 0 1px 0}.wrap h2{font-size:23px;padding:9px 15px 4px 0;line-height:29px}.subtitle{font-size:14px;padding-left:25px}.wrap .add-new-h2{font-family:sans-serif;margin-left:4px;padding:3px 8px;position:relative;top:-3px;text-decoration:none;font-size:12px;border:0 none}.wrap h2.long-header{padding-right:0}div.sidebar-name h3,#menu-management .nav-tab,#dashboard_plugins h5,a.rsswidget,#dashboard_right_now td.b,#dashboard-widgets h4,.tool-box .title,#poststuff h3,.metabox-holder h3,.pressthis a,#your-profile legend,.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title,.tablenav .displaying-num,.widefat th,.quicktags,.search{font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif}h2 .nav-tab,.wrap h2,.subtitle,.login form .input{font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif}.quicktags,.search{font-size:12px}.icon32{float:left;height:34px;margin:7px 8px 0 0;width:36px}.icon16{height:18px;width:18px;padding:6px 6px;margin:-6px 0 0 -8px;float:left}.key-labels label{line-height:24px}.pre{white-space:pre-wrap;white-space:-moz-pre-wrap!important;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}.howto{font-style:italic;display:block;font-family:sans-serif}p.install-help{margin:8px 0;font-style:italic}.no-break{white-space:nowrap}.wp-admin select{padding:2px;height:2em}.wp-admin select[multiple]{height:auto}select option{padding:2px}.submit{padding:1.5em 0;margin:5px 0;-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}form p.submit a.cancel:hover{text-decoration:none}.submit input,.button,input.button,.button-primary,input.button-primary,.button-secondary,input.button-secondary,.button-highlighted,input.button-highlighted,#postcustomstuff .submit input{text-decoration:none;font-size:12px!important;line-height:13px;padding:3px 8px;cursor:pointer;border-width:1px;border-style:solid;-webkit-border-radius:11px;border-radius:11px;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}#minor-publishing-actions input,#major-publishing-actions input,#minor-publishing-actions .preview{min-width:80px;text-align:center}textarea.all-options,input.all-options{width:250px}input.large-text,textarea.large-text{width:99%}input.regular-text,#adduser .form-field input{width:25em}input.small-text{width:50px}input[type="number"].small-text{width:60px}#doaction,#doaction2,#post-query-submit{margin-right:8px}.tablenav select[name="action"],.tablenav select[name="action2"]{width:130px}.tablenav select[name="m"]{width:155px}.tablenav select#cat{width:170px}#wpcontent option{padding:2px}#timezone_string option{margin-left:1em}label,#your-profile label+a{vertical-align:middle}#misc-publishing-actions label{vertical-align:baseline}#pass-strength-result{border-style:solid;border-width:1px;float:left;margin:13px 5px 5px 1px;padding:3px 5px;text-align:center;width:200px;display:none}.indicator-hint{padding-top:8px}p.search-box{float:right;margin:0}input[type="text"].ui-autocomplete-loading{background:transparent url('../images/loading.gif') no-repeat right center;visibility:visible}ul#add-to-blog-users{margin:0 0 0 14px}.ui-autocomplete-input.open{border-bottom-right-radius:0;border-bottom-left-radius:0}.ui-autocomplete{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-width:1px;border-style:solid}.ui-autocomplete li{margin-bottom:0;white-space:nowrap;text-align:left}.ui-autocomplete li a{display:block;height:100%;padding:4px 10px}.ui-autocomplete li a.ui-state-hover{cursor:pointer}#major-publishing-actions{padding:10px 10px 8px;clear:both;border-top:1px solid #f5f5f5;margin-top:-2px}#delete-action{line-height:25px;vertical-align:middle;text-align:left;float:left}#publishing-action{text-align:right;float:right;line-height:23px}#misc-publishing-actions{padding:6px 0 0}.misc-pub-section{padding:6px 10px 8px;border-width:1px 0;border-style:solid}.misc-pub-section:first-child{border-top-width:0}.misc-pub-section-last{border-bottom-width:0}#minor-publishing-actions{padding:10px 10px 2px 8px;text-align:right}#minor-publishing{border-bottom-width:1px;border-bottom-style:solid;-webkit-box-shadow:0 1px 0 #fff;-moz-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff}#save-post{float:left}#minor-publishing .ajax-loading{padding:3px 0 0 4px;float:left}.preview{float:right}#sticky-span{margin-left:18px}.side-info{margin:0;padding:4px;font-size:11px}.side-info h5{padding-bottom:7px;font-size:14px;margin:12px 2px 5px;border-bottom-width:1px;border-bottom-style:solid}.side-info ul{margin:0;padding-left:18px;list-style:square}a.button,a.button-primary,a.button-secondary{line-height:15px;padding:3px 10px;white-space:nowrap;-webkit-border-radius:10px}.approve,.unapproved .unapprove{display:none}.unapproved .approve,.spam .approve,.trash .approve{display:inline}td.action-links,th.action-links{text-align:right}.describe .del-link{padding-left:5px}#update-nag,.update-nag{line-height:19px;padding:5px 0;font-size:12px;text-align:center;margin:-1px 15px 0 5px;border-width:1px;border-style:solid;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.plugins .plugin-update{padding:0}.plugin-update .update-message{margin:0 10px 8px 31px;font-weight:bold}ul#dismissed-updates{display:none}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-0.5em 0 2em 0}.ajax-feedback{visibility:hidden;vertical-align:bottom}#ajax-response.alignleft{margin-left:2em}#adminmenu a,#sidemenu a,#taglist a,#catlist a{text-decoration:none}#screen-options-wrap,#contextual-help-wrap{margin:0;padding:8px 20px 12px;position:relative;overflow:auto}#screen-meta .screen-reader-text{visibility:hidden}#screen-meta-links{margin:0 24px 0 0}#screen-meta{display:none;position:relative;margin:0 15px 0 5px;border-width:0 1px 1px;border-style:none solid solid}#screen-options-link-wrap,#contextual-help-link-wrap{float:right;height:23px;padding:0;margin:0 0 0 6px;font-family:sans-serif}#screen-options-link-wrap,#contextual-help-link-wrap,#screen-meta{-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}#screen-meta-links .screen-meta-toggle{position:relative;top:-1px}#screen-meta-links a.show-settings{text-decoration:none;z-index:1;padding:1px 16px 0 6px;height:22px;line-height:22px;font-size:12px;display:block;text-shadow:rgba(255,255,255,0.7) 0 1px 0}#screen-meta-links a.show-settings:hover{text-decoration:none}.toggle-arrow{background-repeat:no-repeat;background-position:top left;background-color:transparent;height:22px;line-height:22px;display:block}.toggle-arrow-active{background-position:bottom left}#screen-options-wrap h5,#contextual-help-wrap h5{margin:8px 0;font-size:13px}.metabox-prefs label{display:inline-block;padding-right:15px;white-space:nowrap;line-height:30px}.metabox-prefs label input{margin:0 5px 0 2px}.metabox-prefs .columns-prefs label input{margin:0 2px}.metabox-prefs label a{display:none}#contextual-help-wrap{padding:0;margin-left:-4px}#contextual-help-columns{position:relative}#contextual-help-back{position:absolute;top:0;bottom:0;left:150px;right:170px;border-width:0 1px;border-style:solid}#contextual-help-wrap.no-sidebar #contextual-help-back{right:0;border-right-width:0;-webkit-border-bottom-right-radius:2px;border-bottom-right-radius:2px}.contextual-help-tabs{float:left;width:150px;margin:0}.contextual-help-tabs ul{margin:1em 0}.contextual-help-tabs li{margin-bottom:0;list-style-type:none;border-style:solid;border-width:1px 0;border-color:transparent}.contextual-help-tabs a{display:block;padding:5px 5px 5px 12px;line-height:18px;text-decoration:none}.contextual-help-tabs .active{padding:0;margin:0 -1px 0 0;border-width:1px 0 1px 1px;border-style:solid}.contextual-help-tabs-wrap{padding:0 20px;overflow:auto}.help-tab-content{display:none;margin:0 22px 12px 0;line-height:1.6em}.help-tab-content.active{display:block}.help-tab-content li{list-style-type:disc;margin-left:18px}.contextual-help-sidebar{width:150px;float:right;padding:0 8px 0 12px;overflow:auto}#adminmenuback,#adminmenuwrap{border-width:0 1px 0 0;border-style:solid}#adminmenuwrap{position:relative;float:left}#adminmenushadow{position:absolute;top:0;right:0;bottom:0;width:6px;z-index:20}#adminmenu *{-webkit-user-select:none;-moz-user-select:none;user-select:none}#adminmenu .wp-submenu{list-style:none;padding:0;margin:0;overflow:hidden}#adminmenu li .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{display:none;position:absolute;top:-1px;left:146px;z-index:999;overflow:hidden}.js #adminmenu .wp-submenu.sub-open,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.no-js #adminmenu .wp-has-submenu:hover .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu li.focused .wp-submenu{display:block}#adminmenu .wp-has-current-submenu .wp-submenu{position:relative;z-index:2;top:auto;left:auto;right:auto;bottom:auto;padding:0}#adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.folded #adminmenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{top:-5px;left:26px}#adminmenu .wp-submenu.sub-open,#adminmenu li.focused.wp-not-current-submenu .wp-submenu,.folded #adminmenu li.focused.wp-has-current-submenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.no-js #adminmenu .wp-has-submenu:hover .wp-submenu,.no-js.folded #adminmenu .wp-has-current-submenu:hover .wp-submenu{padding:0 8px 8px 0}.no-js #adminmenu .wp-has-current-submenu:hover .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu{padding:0}#adminmenu .wp-submenu a{font-size:12px;line-height:18px}#adminmenu a.menu-top,#adminmenu .wp-submenu-head{font-size:13px;line-height:18px}#adminmenu div.wp-submenu-head{display:none}.folded #adminmenu div.wp-submenu-head{display:block}.folded #adminmenu a.menu-top,body.no-js #adminmenu .wp-menu-toggle,.folded #adminmenu div.wp-menu-toggle{display:none}#adminmenu div.wp-menu-image{float:left;width:28px;height:28px}.folded #adminmenu div.wp-menu-image{width:30px}#adminmenu li{margin:0;padding:0;cursor:pointer}#adminmenu a{display:block;line-height:18px;padding:2px 5px}#adminmenu li.menu-top{min-height:29px;position:relative}#adminmenu a.menu-top{font-weight:bold;line-height:18px;min-width:10em;padding:5px 5px;border-width:1px 0 1px;border-style:solid}#adminmenu li.wp-menu-open{border-width:0 0 1px;border-style:solid}#adminmenu .wp-submenu ul{padding:4px 0}#adminmenu .wp-submenu a{margin:0}#adminmenu li li{margin-left:8px}#adminmenu .wp-submenu a,#adminmenu li li a,.folded #adminmenu .wp-not-current-submenu li a{padding-left:12px}#adminmenu .wp-not-current-submenu li a{padding-left:18px}.folded #adminmenu li li{margin-left:0}.folded #adminmenu li li a{padding-left:0}.wp-menu-arrow{display:none;cursor:auto;z-index:25;position:absolute;right:100%;margin:0;height:30px;width:6px;-moz-transform:translate(146px);-webkit-transform:translate(146px);-o-transform:translate(146px);-ms-transform:translate(146px);transform:translate(146px)}#adminmenu li.wp-has-current-submenu .wp-menu-arrow,#adminmenu li.menu-top:hover .wp-menu-arrow,#adminmenu li.current .wp-menu-arrow,#adminmenu li.focused .wp-menu-arrow,#adminmenu li.menu-top.wp-has-submenu:hover .wp-menu-arrow div{display:block}#adminmenu li.wp-not-current-submenu:hover .wp-menu-arrow div{display:none}#adminmenu li.menu-top:hover .wp-menu-arrow,#adminmenu li.menu-top.focused .wp-menu-arrow{z-index:1001}.ie8 #adminmenu li.menu-top:hover .wp-menu-arrow{display:none}#adminmenu .wp-menu-arrow div{position:absolute;top:7px;left:-1px;width:14px;height:15px;-moz-transform:matrix(-0.6,1,0.6,1,0,0);-webkit-transform:matrix(-0.6,1,0.6,1,0,0);-o-transform:matrix(-0.6,1,0.6,1,0,0);-ms-transform:matrix(-0.6,1,0.6,1,0,0);transform:matrix(-0.6,1,0.6,1,0,0)}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{-moz-transform:translate(145px);-webkit-transform:translate(145px);-o-transform:translate(145px);-ms-transform:translate(145px);transform:translate(145px);height:28px;border-width:1px 0;border-style:solid}.folded .wp-menu-arrow{-moz-transform:translate(33px);-webkit-transform:translate(33px);-o-transform:translate(33px);-ms-transform:translate(33px);transform:translate(33px)}#adminmenu .wp-not-current-submenu .wp-menu-arrow div{width:15px;top:6px;border-width:0 0 1px 1px;border-style:solid}.wp-menu-arrow,.folded #adminmenu li.menu-top:hover .wp-menu-arrow{display:none}.folded #adminmenu li.current:hover .wp-menu-arrow,.folded #adminmenu li.menu-top.wp-menu-open:hover .wp-menu-arrow{display:block;z-index:125}#adminmenu .wp-submenu li{padding:0;margin:0}.folded #adminmenu li.menu-top{border-width:1px 0;border-style:solid none}#adminmenu .wp-menu-image img{float:left;padding:5px 0 0 2px;opacity:.6;filter:alpha(opacity=60)}#adminmenu li.menu-top:hover .wp-menu-image img,#adminmenu li.wp-has-current-submenu .wp-menu-image img{opacity:1;filter:alpha(opacity=100)}#adminmenu li.wp-menu-separator{height:3px;padding:0;margin:0;border-width:1px 0;border-style:solid;cursor:inherit}#adminmenu div.separator{height:1px;padding:0;border-width:1px 0 0 0;border-style:solid}#adminmenu .wp-submenu .wp-submenu-head{padding:6px 4px 5px 10px;cursor:default;border-width:1px 0;border-style:solid}#adminmenu li .wp-submenu-wrap{border-width:1px 1px 1px 0;border-style:solid solid solid none;position:relative;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}#adminmenu li.wp-menu-open .wp-submenu-wrap{border:0 none}.folded #adminmenu .wp-submenu .wp-submenu-wrap{margin-top:3px}.folded #adminmenu .wp-has-current-submenu{margin-bottom:1px}.folded #adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{margin-top:4px}.folded #adminmenu .wp-submenu ul{border-width:0 0 0 1px;border-style:solid}.folded #adminmenu .wp-submenu a{padding-left:10px}.folded #adminmenu a.wp-has-submenu{margin-left:40px}#adminmenu .wp-menu-toggle{width:18px;clear:right;float:right;margin:1px 0 0;height:27px;padding:1px 2px 0 0;cursor:pointer}#adminmenu .wp-menu-image a{height:24px}#adminmenu .awaiting-mod,#adminmenu span.update-plugins,#sidemenu li a span.update-plugins{position:absolute;font-family:sans-serif;font-size:9px;line-height:17px;font-weight:bold;margin-top:1px;margin-left:7px;-webkit-border-radius:10px;border-radius:10px}#adminmenu li .awaiting-mod span,#adminmenu li span.update-plugins span,#sidemenu li a span.update-plugins span{display:block;padding:0 6px}#adminmenu li span.count-0,#sidemenu li a .count-0{display:none}#collapse-menu{font-size:12px;line-height:34px}.folded #collapse-menu span{display:none}#collapse-button,#collapse-button div{width:15px;height:15px}#collapse-button{float:left;margin:8px 6px;border-width:1px;border-style:solid;-webkit-border-radius:10px;border-radius:10px}@media only screen and (max-width:900px){#wpcontent,#footer{margin-left:52px}#adminmenuback,#adminmenuwrap,#adminmenu,#adminmenu li.menu-top{width:32px}#adminmenu .wp-has-current-submenu .wp-submenu{display:none;position:absolute;width:145px;z-index:999;overflow:hidden}#adminmenu .wp-has-current-submenu .wp-submenu.sub-open{display:block}#adminmenu li .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu{top:-5px;left:26px}#adminmenu li.focused.wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu.sub-open{padding:0 8px 8px 0}#adminmenu div.wp-submenu-head{display:block}#adminmenu a.menu-top,#adminmenu div.wp-menu-toggle{display:none}#adminmenu div.wp-menu-image{width:30px}#adminmenu .wp-not-current-submenu li a{padding-left:12px}#adminmenu li li{margin-left:0}#adminmenu li li a{padding-left:0}.wp-menu-arrow{-moz-transform:translate(33px);-webkit-transform:translate(33px);-o-transform:translate(33px);-ms-transform:translate(33px);transform:translate(33px)}#adminmenu li.menu-top:hover .wp-menu-arrow{display:none}#adminmenu li.current:hover .wp-menu-arrow,#adminmenu li.menu-top.wp-menu-open:hover .wp-menu-arrow{display:block;z-index:125}#adminmenu li.menu-top{border-width:1px 0;border-style:solid none}#adminmenu .wp-submenu .wp-submenu-wrap{margin-top:3px}#adminmenu .wp-has-current-submenu{margin-bottom:1px}#adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}#adminmenu .wp-has-current-submenu .wp-submenu-wrap{margin-top:4px}#adminmenu .wp-submenu ul{border-width:0 0 0 1px;border-style:solid}#adminmenu .wp-submenu a{padding-left:10px}#adminmenu a.wp-has-submenu{margin-left:40px}#collapse-menu{display:none}}.post-com-count-wrapper{min-width:22px;font-family:sans-serif}.post-com-count{height:1.3em;line-height:1.1em;display:block;text-decoration:none;padding:0 0 6px;cursor:pointer;background-position:center -80px;background-repeat:no-repeat}.post-com-count span{font-size:11px;font-weight:bold;height:1.4em;line-height:1.4em;min-width:.7em;padding:0 6px;display:inline-block;-webkit-border-radius:5px;border-radius:5px}strong .post-com-count{background-position:center -55px}.post-com-count:hover{background-position:center -3px}.column-response .post-com-count{float:left;margin-right:5px;text-align:center}.response-links{float:left}#the-comment-list .attachment-80x60{padding:4px 8px}html.wp-toolbar{padding-top:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.narrow{width:70%;margin-bottom:40px}.narrow p{line-height:150%}.widefat th,.widefat td{overflow:hidden}.widefat th{font-weight:normal}.widefat td p{margin:2px 0 .8em}.widefat .column-comment p{margin:.6em 0}.postbox-container{float:left}#dashboard-widgets.columns-1 .postbox-container{width:100%}#dashboard-widgets.columns-2 .postbox-container{width:49.5%}#dashboard-widgets.columns-2 #postbox-container-2,#dashboard-widgets.columns-2 #postbox-container-3,#dashboard-widgets.columns-2 #postbox-container-4{float:right;width:50.5%}#dashboard-widgets.columns-3 .postbox-container{width:33.5%}#dashboard-widgets.columns-3 #postbox-container-1{width:33%}#dashboard-widgets.columns-3 #postbox-container-3,#dashboard-widgets.columns-3 #postbox-container-4{float:right}#dashboard-widgets.columns-4 .postbox-container{width:25%}.postbox-container .meta-box-sortables{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.postbox-container .meta-box-sortables:empty{min-height:0;height:0}.metabox-holder .postbox-container .empty-container,#post-body.columns-2 #side-sortables:empty{border:3px dashed #ccc;height:250px}.metabox-holder.columns-1 .postbox-container .empty-container,.columns-2 #postbox-container-3 .empty-container,.columns-2 #postbox-container-4 .empty-container,.columns-3 #postbox-container-4 .empty-container{border:0 none;height:0;min-height:0}#poststuff{padding-top:10px}#poststuff #post-body{padding:0}#post-body-content{width:100%;float:left}#poststuff .postbox-container{width:100%}#poststuff #post-body.columns-2{margin-right:300px}#post-body.columns-2 #postbox-container-1{float:right;margin-right:-300px;width:280px}#post-body.columns-2 #side-sortables{min-height:250px}@media only screen and (max-width:799px){#wpbody-content #dashboard-widgets .postbox-container{width:100%}#wpbody-content .metabox-holder .postbox-container .empty-container{border:0 none;height:0;min-height:0}}@media only screen and (min-width:800px) and (max-width:1200px){#wpbody-content #dashboard-widgets .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets #postbox-container-2,#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:right;width:50.5%}#dashboard-widgets.metabox-holder .postbox-container .empty-container,#dashboard-widgets #postbox-container-3 .empty-container,#dashboard-widgets #postbox-container-4 .empty-container{border:0 none;height:0;min-height:0}#wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}#wpbody #wpbody-content .metabox-holder.columns-1 .postbox-container .empty-container{border:0 none;height:0;min-height:0}.index-php .screen-layout,.index-php .columns-prefs{display:block}.columns-prefs .columns-prefs-3,.columns-prefs .columns-prefs-4{display:none}}@media only screen and (max-width:850px){#wpbody-content #poststuff #post-body{margin:0}#wpbody-content #post-body.columns-2 #postbox-container-1{margin-right:0;width:100%}#poststuff #postbox-container-1 .empty-container,#poststuff #postbox-container-1 #side-sortables:empty{border:0 none;height:0;min-height:0}#poststuff #post-body.columns-2 #side-sortables{min-height:0}.screen-layout,.columns-prefs{display:none}}.postbox .hndle{cursor:move;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.postbox.closed .hndle{-webkit-border-radius:3px;border-radius:3px}.hndle a{font-size:11px;font-weight:normal}.postbox .handlediv{float:right;width:27px;height:30px;cursor:pointer}.sortable-placeholder{border-width:1px;border-style:dashed;margin-bottom:20px}.widget,.postbox,.stuffbox{margin-bottom:20px;padding:0;border-width:1px;border-style:solid;line-height:1}.widget .widget-top,.postbox h3,.stuffbox h3{margin-top:1px;border-bottom-width:1px;border-bottom-style:solid;cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none}.stuffbox h3{cursor:auto}.postbox .inside,.stuffbox .inside{padding:0 10px;line-height:1.4em}.postbox .inside{margin:10px 0;position:relative}.postbox.closed h3{border:0;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.postbox table.form-table{margin-bottom:0}.temp-border{border:1px dotted #ccc}.columns-prefs label{padding:0 5px}#dashboard-widgets-wrap{margin:0 -8px}#wpbody-content .metabox-holder{padding-top:10px}#dashboard-widgets .meta-box-sortables{margin:0 8px}#dashboard_recent_comments div.undo{border-top-style:solid;border-top-width:1px;margin:0 -10px;padding:3px 8px;font-size:11px}#the-comment-list td.comment p.comment-author{margin-top:0;margin-left:0}#the-comment-list p.comment-author img{float:left;margin-right:8px}#the-comment-list p.comment-author strong a{border:0}#the-comment-list td{vertical-align:top}#the-comment-list td.comment{word-wrap:break-word}.welcome-panel{margin:20px 8px;padding:30px 10px 20px;border-width:1px 0;border-style:solid;position:relative;line-height:1.6em;overflow:auto}.welcome-panel h3{font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif;font-size:32px;font-weight:normal;line-height:1.2;margin:.1em 0 .8em}.welcome-panel h4{font-size:14px}.welcome-panel .welcome-panel-close{position:absolute;top:0;right:10px;padding:8px 3px;font-size:13px;text-decoration:none}.welcome-panel .welcome-panel-close:before{background:url('../images/xit.gif') 0 17% no-repeat;content:' ';height:100%;width:10px;left:-12px;position:absolute}.welcome-panel .welcome-panel-close:hover:before{background-position:100% 17%}.welcome-panel .wp-badge{float:left;margin-bottom:20px}.welcome-panel-content{max-width:1500px}.welcome-panel-content .about-description,.welcome-panel h3{margin-left:190px}.welcome-panel p.welcome-panel-dismiss{clear:both;padding:1em 0 0 0}.welcome-panel .welcome-panel-column-container{clear:both;overflow:hidden;position:relative;padding-left:26px}.welcome-panel .welcome-panel-column{margin:0 5% 0 -25px;padding-left:25px;width:30%;min-width:200px;float:left}.welcome-panel .welcome-panel-column.welcome-panel-last{margin-right:0}.welcome-panel h4 .icon16{margin-left:-32px}.welcome-panel .welcome-panel-column ul{margin:1.6em 1em 1em 1.3em}.welcome-panel .welcome-panel-column li{list-style-type:disc;padding-left:2px}table.fixed{table-layout:fixed}.fixed .column-rating,.fixed .column-visible{width:8%}.fixed .column-date,.fixed .column-parent,.fixed .column-links{width:10%}.fixed .column-response,.fixed .column-author,.fixed .column-categories,.fixed .column-tags,.fixed .column-rel,.fixed .column-role{width:15%}.fixed .column-comments{width:4em;padding:8px 0;text-align:left}.fixed .column-comments .vers{padding-left:3px}.fixed .column-comments a{float:left}.fixed .column-slug{width:25%}.fixed .column-posts{width:10%}.fixed .column-icon{width:80px}#comments-form .fixed .column-author{width:20%}#commentsdiv.postbox .inside{margin:0;padding:0}#commentsdiv .inside .row-actions{line-height:18px}#commentsdiv .inside .column-author{width:25%}#commentsdiv .column-comment p{margin:.6em 0;padding:0}#commentsdiv #replyrow td{padding:0}#commentsdiv p{padding:8px 10px;margin:0}#commentsdiv #add-new-comment{border-width:0 0 1px;border-style:none none solid}#commentsdiv .comments-box{border:0 none}#commentsdiv .comments-box thead th{background:transparent;padding:0 7px 4px;font-style:italic}#commentsdiv .comments-box tr:last-child td{border-bottom:0 none}#commentsdiv img.waiting{padding-left:5px}.sorting-indicator{display:none;width:7px;height:4px;margin-top:8px;margin-left:7px;background-image:url(../images/sort.gif);background-repeat:no-repeat}.fixed .column-comments .sorting-indicator{margin-top:3px}.widefat th.sortable,.widefat th.sorted{padding:0}th.sortable a,th.sorted a{display:block;overflow:hidden;padding:7px 7px 8px}.fixed .column-comments.sortable a,.fixed .column-comments.sorted a{padding:8px 0}th.sortable a span,th.sorted a span{float:left;cursor:pointer}th.sorted.asc .sorting-indicator,th.desc:hover span.sorting-indicator{display:block;background-position:0 0}th.sorted.desc .sorting-indicator,th.asc:hover span.sorting-indicator{display:block;background-position:-7px 0}.tablenav-pages a{border-bottom-style:solid;border-bottom-width:2px;font-weight:bold;margin-right:1px;padding:0 2px}.tablenav-pages .current-page{text-align:center}.tablenav-pages .next-page{margin-left:2px}.tablenav a.button-secondary{display:block;margin:3px 8px 0 0}.tablenav{clear:both;height:30px;margin:6px 0 4px;vertical-align:middle}.tablenav.themes{max-width:98%}.tablenav .tablenav-pages{float:right;display:block;cursor:default;height:30px;line-height:30px;font-size:12px}.tablenav .no-pages,.tablenav .one-page .pagination-links{display:none}.tablenav .tablenav-pages a,.tablenav-pages span.current{text-decoration:none;padding:3px 6px}.tablenav .tablenav-pages a.disabled:hover,.tablenav .tablenav-pages a.disabled:active{cursor:default}.tablenav .displaying-num{margin-right:10px;font-size:12px;font-style:italic}.tablenav .actions{padding:2px 8px 0 0}.tablenav .delete{margin-right:20px}.view-switch{float:right;margin:6px 8px 0}.view-switch a{text-decoration:none}.filter{float:left;margin:-5px 0 0 10px}.filter .subsubsub{margin-left:-10px;margin-top:13px}.screen-per-page{width:4em}#posts-filter fieldset{float:left;margin:0 1.5ex 1em 0;padding:0}#posts-filter fieldset legend{padding:0 0 .2em 1px}span.post-state-format{font-weight:normal}#wpbody-content .inline-edit-row fieldset{font-size:12px;float:left;margin:0;padding:0;width:100%}tr.inline-edit-row td,#wpbody-content .inline-edit-row fieldset .inline-edit-col{padding:0 .5em}#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col{border-width:0 0 0 1px;border-style:none none none solid}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:40%}#wpbody-content .quick-edit-row-post .inline-edit-col-right{width:39%}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:20%}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:50%}#wpbody-content .quick-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .inline-edit-col-right{width:49%}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:30%}#wpbody-content .bulk-edit-row-page .inline-edit-col-right{width:69%}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:right;width:69%}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:27px}.inline-edit-row fieldset .inline-edit-group{clear:both}.inline-edit-row fieldset .inline-edit-group:after{content:".";display:block;height:0;clear:both;visibility:hidden}.inline-edit-row p.submit{clear:both;padding:.5em;margin:.5em 0 0}.inline-edit-row span.error{line-height:22px;margin:0 15px;padding:3px 5px}.inline-edit-row h4{margin:.2em 0;padding:0;line-height:23px}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{margin:0;padding:0;line-height:27px}.inline-edit-row fieldset label,.inline-edit-row fieldset span.inline-edit-categories-label{display:block;margin:.2em 0}.inline-edit-row fieldset label.inline-edit-tags{margin-top:0}.inline-edit-row fieldset label.inline-edit-tags span.title{margin:.2em 0}.inline-edit-row fieldset label span.title{display:block;float:left;width:5em}.inline-edit-row fieldset label span.input-text-wrap{display:block;margin-left:5em}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{width:auto;padding-right:.5em}.inline-edit-row .input-text-wrap input[type=text]{width:100%}.inline-edit-row fieldset label input[type=checkbox]{vertical-align:text-bottom}.inline-edit-row fieldset label textarea{width:100%;height:4em}#wpbody-content .bulk-edit-row fieldset .inline-edit-group label{max-width:50%}#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child{margin-right:.5em}.inline-edit-col-right .input-text-wrap input.inline-edit-menu-order-input{width:6em}.inline-edit-row h4{text-transform:uppercase}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{font-style:italic;line-height:1.8em}.inline-edit-row fieldset input[type="text"],.inline-edit-row fieldset textarea{border-style:solid;border-width:1px}.inline-edit-row fieldset .inline-edit-date{float:left}.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=mn]{font-size:12px;width:2.1em}.inline-edit-row fieldset input[name=aa]{font-size:12px;width:3.5em}.inline-edit-row fieldset label input.inline-edit-password-input{width:8em}.inline-edit-row .catshow,.inline-edit-row .cathide{cursor:pointer}ul.cat-checklist{height:12em;border-style:solid;border-width:1px;overflow-y:scroll;padding:0 5px;margin:0}#bulk-titles{display:block;height:12em;border-style:solid;border-width:1px;overflow-y:scroll;padding:0 5px;margin:0 0 5px}.inline-edit-row fieldset ul.cat-checklist li,.inline-edit-row fieldset ul.cat-checklist input{margin:0}.inline-edit-row fieldset ul.cat-checklist label,.inline-edit-row .catshow,.inline-edit-row .cathide,.inline-edit-row #bulk-titles div{font-family:sans-serif;font-style:normal;font-size:11px}table .inline-edit-row fieldset ul.cat-hover{height:auto;max-height:30em;overflow-y:auto;position:absolute}.inline-edit-row fieldset label input.inline-edit-menu-order-input{width:3em}.inline-edit-row fieldset label input.inline-edit-slug-input{width:75%}.quick-edit-row-post fieldset label.inline-edit-status{float:left}#bulk-titles{line-height:140%}#bulk-titles div{margin:.2em .3em}#bulk-titles div a{cursor:pointer;display:block;float:left;height:10px;margin:3px 3px 0 -2px;overflow:hidden;position:relative;text-indent:-9999px;width:10px}#titlediv{position:relative;margin-bottom:20px}#titlediv label{cursor:text}#titlediv div.inside{margin:0}#poststuff #titlewrap{border:0;padding:0}#titlediv #title{padding:3px 8px;font-size:1.7em;line-height:100%;width:100%;outline:0}#titlediv #title-prompt-text,#wp-fullscreen-title-prompt-text{color:#bbb;position:absolute;font-size:1.7em;padding:8px 10px}#wp-fullscreen-title-prompt-text{left:0;padding:11px}#poststuff .inside-submitbox,#side-sortables .inside-submitbox{margin:0 3px;font-size:11px}input#link_description,input#link_url{width:98%}#pending{background:0 none;border:0 none;padding:0;font-size:11px;margin-top:-1px}#edit-slug-box{height:1em;margin-top:8px;padding:0 10px}#editable-post-name-full{display:none}#editable-post-name input{width:16em}.postarea h3 label{float:left}#submitpost #ajax-loading,#submitpost .ajax-loading{vertical-align:middle}#wpcontent .ajax-loading{visibility:hidden}.submitbox .submit{text-align:left;padding:12px 10px 10px;font-size:11px}.submitbox .submitdelete{text-decoration:none;padding:1px 2px}.submitbox .submitdelete,.submitbox .submit a:hover{border-bottom-width:1px;border-bottom-style:solid}.submitbox .submit input{margin-bottom:8px;margin-right:4px;padding:6px}.inside-submitbox #post_status{margin:2px 0 2px -2px}#post-status-select,#post-format{line-height:2.5em;margin-top:3px}#post-body #normal-sortables{min-height:50px}.postbox{position:relative;min-width:255px}#trackback_url{width:99%}#normal-sortables .postbox .submit{background:transparent none;border:0 none;float:right;padding:0 12px;margin:0}.category-add input[type="text"],.category-add select{width:100%;max-width:260px}.press-this #side-sortables .category-tabs li,ul.category-tabs li,#side-sortables .add-menu-item-tabs li,.wp-tab-bar li{display:inline;line-height:1.35em}.no-js .category-tabs li.hide-if-no-js{display:none}.category-tabs a,#side-sortables .add-menu-item-tabs a,.wp-tab-bar a{text-decoration:none}.category-tabs{margin:8px 0 3px}#category-adder h4{margin:10px 0}#side-sortables .add-menu-item-tabs,.wp-tab-bar{margin-bottom:3px}#normal-sortables .postbox #replyrow .submit{float:none;margin:0;padding:0 7px 5px}#side-sortables .submitbox .submit input,#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover{border:0 none}#side-sortables .inside-submitbox .insidebox,.stuffbox .insidebox{margin:11px 0}ul.category-tabs,ul.add-menu-item-tabs,ul.wp-tab-bar{margin-top:12px}ul.category-tabs li,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-style:solid solid none;border-width:1px 1px 0}#post-body .add-menu-item-tabs li.tabs{border-style:solid none solid solid;border-width:1px 0 1px 1px;margin-right:-1px}ul.category-tabs li,ul.add-menu-item-tabs li,ul.wp-tab-bar li{padding:3px 5px 5px;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}form#tags-filter{position:relative}td.post-title strong,td.plugin-title strong{display:block;margin-bottom:.2em}td.post-title p,td.plugin-title p{margin:6px 0}.wp-hidden-children .wp-hidden-child,.ui-tabs-hide{display:none}.commentlist .avatar{vertical-align:text-top}#post-body .tagsdiv #newtag{margin-right:5px;width:16em}#side-sortables input#post_password{width:94%}#side-sortables .tagsdiv #newtag{width:68%}#post-status-info{border-width:0 1px 1px;border-style:none solid solid;width:100%;-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}#post-status-info td{font-size:12px}.autosave-info{padding:2px 15px;text-align:right}#editorcontent #post-status-info{border:0}#post-body .wp_themeSkin .mceStatusbar a.mceResize{display:block;background:transparent url(../images/resize.gif) no-repeat scroll right bottom;width:12px;cursor:se-resize;margin:0 2px;position:relative;top:-2px}#post-body .postarea .wp_themeSkin .mceStatusbar a.mceResize{top:20px}#wp-word-count{display:block;padding:2px 10px}#timestampdiv select{height:20px;line-height:14px;padding:0;vertical-align:top}#aa,#jj,#hh,#mn{padding:1px;font-size:12px}#jj,#hh,#mn{width:2em}#aa{width:3.4em}.curtime #timestamp{background-repeat:no-repeat;background-position:left top;padding-left:18px}#timestampdiv{padding-top:5px;line-height:23px}#timestampdiv p{margin:8px 0 6px}#timestampdiv input{border-width:1px;border-style:solid}#postcustomstuff .updatemeta,#postcustomstuff .deletemeta{margin:auto}#postcustomstuff thead th{padding:5px 8px 8px}#postcustom #postcustomstuff .submit{border:0 none;float:none;padding:5px 8px}#side-sortables #postcustom #postcustomstuff .submit{padding:0 5px}#side-sortables #postcustom #postcustomstuff td.left input{margin:3px 3px 0}#side-sortables #postcustom #postcustomstuff #the-list textarea{height:85px;margin:3px}#postcustomstuff table{margin:0;width:100%;border-width:1px;border-style:solid;border-spacing:0}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{width:95%;margin:8px 0 8px 8px}#postcustomstuff th.left,#postcustomstuff td.left{width:38%}#postcustomstuff #newmeta .submit{padding:0 8px}#postcustomstuff .submit input,#postcustomstuff table #addmetasub{width:auto}#postcustomstuff #newmetaleft{vertical-align:top}#postcustomstuff #newmetaleft a{padding:0 10px;text-decoration:none}table.diff{width:100%}table.diff col.content{width:50%}table.diff tr{background-color:transparent}table.diff td,table.diff th{padding:.5em;font-family:Consolas,Monaco,monospace;border:0}table.diff .diff-deletedline del,table.diff .diff-addedline ins{text-decoration:none}.category-adder{margin-left:120px;padding:4px 0}.category-adder h4{margin:0 0 8px}#side-sortables .category-adder{margin:0}#post-body ul.add-menu-item-tabs{float:left;width:120px;text-align:right;margin:0 -120px 0 5px;padding:0}#post-body ul.add-menu-item-tabs li{padding:8px}#post-body ul.add-menu-item-tabs li.tabs{-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px}.wp-tab-panel,.categorydiv div.tabs-panel,.customlinkdiv div.tabs-panel,.posttypediv div.tabs-panel,.taxonomydiv div.tabs-panel{height:200px;overflow:auto;padding:.5em .9em;border-style:solid;border-width:1px}.nav-menus-php .customlinkdiv div.tabs-panel,.nav-menus-php .posttypediv div.tabs-panel,.nav-menus-php .taxonomydiv div.tabs-panel{height:auto;max-height:205px}div.tabs-panel-active{display:block}div.tabs-panel-inactive{display:none}.colunms-1 .categorydiv div.tabs-panel,.taxonomy div.tabs-panel{margin:0 5px 0 125px}.customlinkdiv ul,.posttypediv ul,.taxonomydiv ul{list-style:none;padding:0;margin:0}#front-page-warning,#front-static-pages ul,ul.export-filters,.inline-editor ul.cat-checklist ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul{margin-left:18px}ul.categorychecklist li{margin:0;padding:0;line-height:19px;word-wrap:break-word}.categorydiv .tabs-panel,.customlinkdiv .tabs-panel,.posttypediv .tabs-panel,.taxonomydiv .tabs-panel{border-width:3px;border-style:solid}.form-wrap p,.form-wrap label{font-size:11px}.form-wrap label{display:block;padding:2px;font-size:12px}.form-field input,.form-field textarea{border-style:solid;border-width:1px;width:95%}p.description,.form-wrap p{margin:2px 0 5px}p.help,p.description,span.description,.form-wrap p{font-size:12px;font-style:italic;font-family:sans-serif}.form-wrap .form-field{margin:0 0 10px;padding:8px}.col-wrap h3{margin:12px 0;font-size:1.1em}.col-wrap p.submit{margin-top:-10px}#poststuff .taghint{color:#aaa;margin:15px 0 -24px 12px}#poststuff .tagsdiv .howto{margin:0 0 6px 8px}.ajaxtag .newtag{position:relative}.tagsdiv .newtag{width:180px}.tagsdiv .the-tags{display:block;height:60px;margin:0 auto;overflow:auto;width:260px}#post-body-content .tagsdiv .the-tags{margin:0 5px}p.popular-tags{-webkit-border-radius:8px;border-radius:8px;border-width:1px;border-style:solid;line-height:2em;max-width:1000px;padding:8px 12px 12px;text-align:justify}p.popular-tags a{padding:0 3px}.tagcloud{width:97%;margin:0 0 40px;text-align:justify}.tagcloud h3{margin:2px 0 12px}.ac_results{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;display:none;border-width:1px;border-style:solid}.ac_results li{padding:2px 5px;white-space:nowrap;text-align:left}.ac_over{cursor:pointer}.ac_match{text-decoration:underline}table.links-table{width:100%}.links-table th{font-weight:normal;text-align:left;vertical-align:top;min-width:80px;width:20%;word-wrap:break-word}.links-table th,.links-table td{padding:5px 0}.links-table td label{margin-right:8px}.links-table td input[type="text"],.links-table td textarea{width:100%}.links-table #link_rel{max-width:280px}.media-item .describe{border-collapse:collapse;width:100%;border-top-style:solid;border-top-width:1px;clear:both;cursor:default}.media-item.media-blank .describe{border:0}.media-item .describe th{vertical-align:top;text-align:left;padding:5px 10px 10px;width:140px}.media-item .describe .align th{padding-top:0}.media-item .media-item-info tr{background-color:transparent}.media-item .describe td{padding:0 8px 8px 0;vertical-align:top}.media-item thead.media-item-info td{padding:4px 10px 0}.media-item .media-item-info .A1B1{padding:0 0 0 10px}.media-item td.savesend{padding-bottom:15px}.media-item .thumbnail{max-height:128px;max-width:128px}#wpbody-content #async-upload-wrap a{display:none}.media-upload-form{margin-top:20px}.media-upload-form td label{margin-right:6px;margin-left:2px}.media-upload-form .align .field label{display:inline;padding:0 0 0 23px;margin:0 1em 0 3px;font-weight:bold}.media-upload-form tr.image-size label{margin:0 0 0 5px;font-weight:bold}.media-upload-form th.label label{font-weight:bold;margin:.5em;font-size:13px}.media-upload-form th.label label span{padding:0 5px}abbr.required{border:medium none;text-decoration:none}.media-item .describe input[type="text"],.media-item .describe textarea{width:460px}.media-item .describe p.help{margin:0;padding:0 0 0 5px}.describe-toggle-on,.describe-toggle-off{display:block;line-height:36px;float:right;margin-right:15px}.media-item .describe-toggle-off,.media-item.open .describe-toggle-on,.media-item.open img.pinkynail{display:none}.media-item.open .describe-toggle-off{display:block}#media-items .media-item{border-style:solid;border-width:1px;min-height:36px;position:relative;margin-top:-1px;width:100%}#media-items{width:623px}#media-items:empty{border:0 none}.media-item .filename{line-height:36px;overflow:hidden;padding:0 10px}.media-item .error-div{padding-left:10px}.media-item .pinkynail{float:left;margin:2px 2px 0;max-width:40px;max-height:32px}.media-item .startopen,.media-item .startclosed{display:none}.media-item .original{position:relative;height:34px}.media-item .progress{float:right;height:22px;margin:6px 10px 0 0;width:200px;line-height:2em;padding:0;overflow:hidden;margin-bottom:2px;border:1px solid #d1d1d1;background:#fff;background-image:linear-gradient(bottom,#fff 0,#f7f7f7 100%);background-image:-o-linear-gradient(bottom,#fff 0,#f7f7f7 100%);background-image:-moz-linear-gradient(bottom,#fff 0,#f7f7f7 100%);background-image:-webkit-linear-gradient(bottom,#fff 0,#f7f7f7 100%);background-image:-ms-linear-gradient(bottom,#fff 0,#f7f7f7 100%);-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,0.1);box-shadow:inset 0 0 3px rgba(0,0,0,0.1)}.media-item .bar{z-index:9;width:0;height:100%;margin-top:-24px;background-color:#83b4d8;background-image:linear-gradient(bottom,#72a7cf 0,#90c5ee 100%);background-image:-o-linear-gradient(bottom,#72a7cf 0,#90c5ee 100%);background-image:-moz-linear-gradient(bottom,#72a7cf 0,#90c5ee 100%);background-image:-webkit-linear-gradient(bottom,#72a7cf 0,#90c5ee 100%);background-image:-ms-linear-gradient(bottom,#72a7cf 0,#90c5ee 100%);-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.3);box-shadow:0 0 3px rgba(0,0,0,0.3)}.media-item .progress .percent{z-index:10;position:relative;width:200px;padding:0 8px;text-shadow:0 1px 0 rgba(255,255,255,0.4);color:rgba(0,0,0,0.6)}.upload-php .fixed .column-parent{width:25%}.js .html-uploader #plupload-upload-ui{display:none}.js .html-uploader #html-upload-ui{display:block}.media-upload-form .media-item.error{margin:0;padding:0}.media-upload-form .media-item.error p,.media-item .error-div{line-height:16px;margin:5px 10px;padding:0}.media-item .error-div a.dismiss{display:block;float:right;margin:5px 4px 0 15px}.find-box{width:500px;height:300px;overflow:hidden;padding:33px 5px 40px;position:absolute;z-index:1000}.find-box-head{cursor:move;font-weight:bold;height:2em;line-height:2em;padding:1px 12px;position:absolute;top:5px;width:100%}.find-box-inside{overflow:auto;width:100%;height:100%}.find-box-search{padding:12px;border-width:1px;border-style:none none solid}#find-posts-response{margin:8px 0;padding:0 1px}#find-posts-response table{width:100%}#find-posts-response .found-radio{padding:5px 0 0 8px;width:15px}.find-box-buttons{width:480px;margin:8px}.find-box-search label{padding-right:6px}.find-box #resize-se{position:absolute;right:1px;bottom:1px}ul#dismissed-updates{display:none}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-0.5em 0 2em 0}#poststuff .inside .the-tagcloud{margin:5px 0 10px;padding:8px;border-width:1px;border-style:solid;line-height:1.8em;word-spacing:3px;-webkit-border-radius:6px;border-radius:6px}.drag-drop #drag-drop-area{border:4px dashed #ddd;height:200px}.drag-drop .drag-drop-inside{margin:70px auto 0;width:250px}.drag-drop-inside p{color:#aaa;font-size:14px;margin:5px 0;display:none}.drag-drop .drag-drop-inside p{text-align:center}.drag-drop-inside p.drag-drop-info{font-size:20px}.drag-drop .drag-drop-inside p,.drag-drop-inside p.drag-drop-buttons{display:block}.drag-drop.drag-over #drag-drop-area{border-color:#83b4d8}#plupload-upload-ui{position:relative}.describe .image-editor{vertical-align:top}.imgedit-wrap{position:relative}.imgedit-settings p{margin:8px 0}.describe .imgedit-wrap table td{vertical-align:top;padding-top:0}.imgedit-wrap p,.describe .imgedit-wrap table td{font-size:11px;line-height:18px}.describe .imgedit-wrap table td.imgedit-settings{padding:0 5px}td.imgedit-settings input{vertical-align:middle}.imgedit-wait{position:absolute;top:0;background:#fff url(../images/wpspin_light.gif) no-repeat scroll 22px 10px;opacity:.7;filter:alpha(opacity=70);width:100%;height:500px;display:none}.media-disabled,.imgedit-settings .disabled{color:grey}.imgedit-wait-spin{padding:0 4px 4px;vertical-align:bottom;visibility:hidden}.imgedit-menu{margin:0 0 12px;min-width:300px}.imgedit-menu div{float:left;width:32px;height:32px}.imgedit-crop-wrap{position:relative}.imgedit-crop{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -9px -31px;margin:0 8px 0 0}.imgedit-crop.disabled:hover{background-position:-9px -31px}.imgedit-crop:hover{background-position:-9px -1px}.imgedit-rleft{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -46px -31px;margin:0 3px}.imgedit-rleft.disabled:hover{background-position:-46px -31px}.imgedit-rleft:hover{background-position:-46px -1px}.imgedit-rright{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -77px -31px;margin:0 8px 0 3px}.imgedit-rright.disabled:hover{background-position:-77px -31px}.imgedit-rright:hover{background-position:-77px -1px}.imgedit-flipv{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -115px -31px;margin:0 3px}.imgedit-flipv.disabled:hover{background-position:-115px -31px}.imgedit-flipv:hover{background-position:-115px -1px}.imgedit-fliph{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -147px -31px;margin:0 8px 0 3px}.imgedit-fliph.disabled:hover{background-position:-147px -31px}.imgedit-fliph:hover{background-position:-147px -1px}.imgedit-undo{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -184px -31px;margin:0 3px}.imgedit-undo.disabled:hover{background-position:-184px -31px}.imgedit-undo:hover{background-position:-184px -1px}.imgedit-redo{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -215px -31px;margin:0 8px 0 3px}.imgedit-redo.disabled:hover{background-position:-215px -31px}.imgedit-redo:hover{background-position:-215px -1px}.imgedit-applyto img{margin:0 8px 0 0}.imgedit-group-top{margin:5px 0}.imgedit-applyto .imgedit-label{padding:2px 0 0;display:block}.imgedit-help{display:none;font-style:italic;margin-bottom:8px}.imgedit-help ul li{font-size:11px}a.imgedit-help-toggle{text-decoration:none}#wpbody-content .imgedit-response div{width:600px;margin:8px}.form-table td.imgedit-response{padding:0}.imgedit-submit{margin:8px 0}.imgedit-submit-btn{margin-left:20px}.imgedit-wrap .nowrap{white-space:nowrap}span.imgedit-scale-warn{color:red;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle}.imgedit-group{border-width:1px;border-style:solid;-webkit-border-radius:8px;border-radius:8px;margin-bottom:8px;padding:2px 10px}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;margin-bottom:-8px;clear:both}.form-table td{margin-bottom:9px;padding:8px 10px;line-height:20px;font-size:12px}.form-table th,.form-wrap label{font-weight:normal;text-shadow:#fff 0 1px 0}.form-table th{vertical-align:top;text-align:left;padding:10px;width:200px}.form-table th.th-full{width:auto}.form-table div.color-option{display:block;clear:both;margin-top:12px}.form-table input.tog{margin-top:2px;margin-right:2px;float:left}.form-table td p{margin-top:4px}.form-table table.color-palette{vertical-align:bottom;float:left;margin:-12px 3px 11px}.form-table .color-palette td{border-width:1px 1px 0;border-style:solid solid none;height:10px;line-height:20px;width:10px}.commentlist li{padding:1em 1em .2em;margin:0;border-bottom-width:1px;border-bottom-style:solid}.commentlist li li{border-bottom:0;padding:0}.commentlist p{padding:0;margin:0 0 .8em}#replyrow input{border-width:1px;border-style:solid}#replyrow td{padding:2px}#replysubmit{margin:0;padding:0 7px 3px;text-align:center}#replysubmit img.waiting,.inline-edit-save img.waiting{padding:4px 10px 0;vertical-align:top;float:right}#replysubmit .button{margin-right:5px}#replysubmit .error{color:red;line-height:21px;text-align:center;vertical-align:center}#replyrow h5{margin:.2em 0 0;padding:0 5px;line-height:1.4em;font-size:1em}#edithead .inside{float:left;padding:3px 0 2px 5px;margin:0;text-align:center}#edithead .inside input{width:180px}#edithead label{padding:2px 0}#replycontainer{padding:5px}#replycontent{height:120px}.comment-ays{margin-bottom:0;border-style:solid;border-width:1px}.comment-ays th{border-right-style:solid;border-right-width:1px}.trash-undo-inside,.spam-undo-inside{margin:1px 8px 1px 0;line-height:16px}.spam-undo-inside .avatar,.trash-undo-inside .avatar{height:20px;width:20px;margin-right:8px;vertical-align:middle}.stuffbox .editcomment{clear:none}#comment-status-radio p{margin:3px 0 5px}#comment-status-radio input{margin:2px 3px 5px 0;vertical-align:middle}#comment-status-radio label{padding:5px 0}.commentlist .avatar{vertical-align:text-top}.theme-install-php .tablenav{height:auto}h3.available-themes{margin:0 0 1em;float:left}.available-theme{display:inline-block;margin-right:10px;overflow:hidden;padding:20px 20px 20px 0;vertical-align:top;width:300px}.available-theme .screenshot{width:300px;height:225px;display:block;border-width:1px;border-style:solid;margin-bottom:10px;overflow:hidden}.available-theme img{width:300px}.available-theme h3{margin:15px 0 0}.available-theme .theme-author{line-height:18px}.available-theme .action-links{margin-top:10px;overflow:hidden}#current-theme .theme-info li,.theme-options li,.available-theme .action-links li{float:left;padding-right:10px;margin-right:10px;border-right:1px solid #dfdfdf}.available-theme .action-links li{padding-right:8px;margin-right:8px}#current-theme .theme-info li:last-child,.theme-options li:last-child,.available-theme .action-links li:last-child{padding-right:0;margin-right:0;border-right:0}.available-theme .action-links .delete-theme{float:right;margin-left:8px;margin-right:0}.available-theme .action-links .delete-theme a{color:red;padding:2px}.available-theme .action-links .delete-theme a:hover{background:red;color:#fff;text-decoration:none}.available-theme .action-links p{float:left}#current-theme{margin:20px 0 10px;padding:0 0 20px;border-bottom:1px solid #dfdfdf;overflow:hidden}#current-theme.has-screenshot{padding-left:330px}#current-theme h3{margin:0;font-size:12px;font-weight:normal;color:#999}#current-theme h4{margin:3px 0 16px;font-size:20px}#current-theme h4 span{margin-left:20px;font-size:12px;font-weight:normal}#current-theme a{border-bottom:0}#current-theme .theme-info{margin:1em 0;overflow:hidden}#current-theme .theme-description{margin-top:5px;max-width:600px;line-height:1.6em}#current-theme img{float:left;width:300px;margin-left:-330px;border-width:1px;border-style:solid}.theme-options{overflow:hidden;font-size:14px;padding-bottom:10px}.theme-options .load-customize{margin-right:30px;float:left}.theme-options span{float:left;margin-right:10px;text-transform:uppercase;font-size:11px;line-height:18px;color:#999}.theme-options ul{float:left;margin:0}@media only screen and (max-width:1200px){.available-theme,.available-theme .screenshot,#current-theme img{width:240px}.available-theme .screenshot{height:180px}.available-theme img{width:100%}#current-theme.has-screenshot{padding-left:270px}#current-theme img{margin-left:-270px}}#post-body ul.add-menu-item-tabs li.tabs a,#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{font-weight:bold;text-decoration:none}#TB_window #TB_title{background-color:#222;color:#cfcfcf}#broken-themes{text-align:left;width:50%;border-spacing:3px;padding:3px}.theme-install-php h4{margin:2.5em 0 8px}.appearance_page_custom-header #headimg{border:1px solid #dfdfdf;width:100%}.appearance_page_custom-header #upload-form p label{font-size:12px}.appearance_page_custom-header .available-headers .default-header{float:left;margin:0 20px 20px 0}.appearance_page_custom-header .random-header{clear:both;margin:0 20px 20px 0;vertical-align:middle}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-right:10px}.appearance_page_custom-header .available-headers label img{vertical-align:middle}div#custom-background-image{min-height:100px;border:1px solid #dfdfdf}div#custom-background-image img{max-width:400px;max-height:300px}.nav-tab{border-style:solid;border-color:#dfdfdf #dfdfdf #fff;border-width:1px 1px 0;color:#aaa;text-shadow:#fff 0 1px 0;font-size:12px;line-height:16px;display:inline-block;padding:4px 14px 6px;text-decoration:none;margin:0 6px -1px 0;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.nav-tab-active{border-width:1px;color:#464646}.nav-tab:hover,.nav-tab-active{border-color:#ccc #ccc #fff}h2.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom:1px solid #ccc;padding-bottom:0}h2 .nav-tab{padding:4px 10px 6px;font-weight:200;font-size:20px;line-height:24px}#dashboard_right_now .versions .b,#post-status-display,#post-visibility-display,#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover,.media-item .percent,.plugins .name,#pass-strength-result.strong,#pass-strength-result.short,.button-highlighted,input.button-highlighted,#quicktags #ed_strong,#ed_reply_toolbar #ed_reply_strong,.item-controls .item-order a,.feature-filter .feature-name{font-weight:bold}.plugins p{margin:0 4px;padding:0}.plugins .desc p{margin:0 0 8px}.plugins td.desc{line-height:1.5em}.plugins .desc ul,.plugins .desc ol{margin:0 0 0 2em}.plugins .desc ul{list-style-type:disc}.plugins .row-actions-visible{padding:0}.plugins tbody th.check-column{padding:7px 0}.plugins .inactive td,.plugins .inactive th,.plugins .active td,.plugins .active th{border-top-style:solid;border-top-width:1px;padding:5px 7px 0}.plugins .update th,.plugins .update td{border-bottom:0}.plugin-update-tr td{border-top:0}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-right:12px;white-space:nowrap}.plugins .second,.plugins .row-actions-visible{padding:0 0 5px}.plugins .update .second,.plugins .update .row-actions-visible{padding-bottom:0}.plugins-php .widefat tfoot th,.plugins-php .widefat tfoot td{border-top-style:solid;border-top-width:1px}.plugin-update-tr .update-message{margin:5px;padding:3px 5px}.plugin-install-php h4{margin:2.5em 0 8px}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-right:5px}#your-profile legend{font-size:22px}#your-profile #rich_editing{border:0}#display_name{width:15em}#createuser .form-field input{width:25em}.pressthis{margin:20px 0}.pressthis a{display:inline-block;position:relative;cursor:move;color:#333;background:#dfdfdf;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0.07,#e6e6e6),color-stop(0.77,#d8d8d8));background-image:-webkit-linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);background-image:-moz-linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);background-image:-ms-linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);background-image:-o-linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);background-image:linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b4b4;font-style:normal;line-height:16px;font-size:14px;text-decoration:none;text-shadow:0 1px 0 #fff}.pressthis a:hover,.pressthis a:active{color:#333}.pressthis a:hover:after{transform:skew(20deg) rotate(9deg);-webkit-transform:skew(20deg) rotate(9deg);-moz-transform:skew(20deg) rotate(9deg);box-shadow:0 10px 8px rgba(0,0,0,0.7);-webkit-box-shadow:0 10px 8px rgba(0,0,0,0.7);-moz-box-shadow:0 10px 8px rgba(0,0,0,0.7)}.pressthis a span{background:url(../images/press-this.png?v=20120502) no-repeat 0 5px;padding:8px 11px 8px 27px;margin:0 5px;display:inline-block}.pressthis a:after{content:'';width:70%;height:55%;z-index:-1;position:absolute;right:10px;bottom:9px;background:transparent;transform:skew(20deg) rotate(6deg);-webkit-transform:skew(20deg) rotate(6deg);-moz-transform:skew(20deg) rotate(6deg);box-shadow:0 10px 8px rgba(0,0,0,0.6);-webkit-box-shadow:0 10px 8px rgba(0,0,0,0.6);-moz-box-shadow:0 10px 8px rgba(0,0,0,0.6)}#utc-time,#local-time{padding-left:25px;font-style:italic;font-family:sans-serif}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}#footer{position:absolute;bottom:0;left:0;right:0;padding:10px 0;margin-right:20px;border-top-width:1px;border-top-style:solid}#footer p{margin:0;line-height:20px}#footer a{text-decoration:none}#footer a:hover{text-decoration:underline}.about-wrap{position:relative;margin:25px 40px 0 20px;max-width:1050px;font-size:15px}.about-wrap div.updated,.about-wrap div.error{display:none!important}.about-wrap p{line-height:1.6em}.about-wrap h1{margin:.2em 200px 0 0;line-height:1.2em;font-size:2.8em;font-weight:200}.about-text,.about-description,.about-wrap li.wp-person a.web{font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif;font-weight:normal;line-height:1.6em;font-size:20px}.about-description{margin-top:1.4em}.about-text{margin:1em 200px 1.4em 0;min-height:60px;font-size:24px}.about-wrap h3{font-size:24px;margin-bottom:1em;padding-top:20px}.about-wrap .changelog{overflow:hidden}.about-wrap .changelog li{list-style-type:disc;margin-left:3em}.about-wrap .feature-section{padding-bottom:20px}.about-wrap .feature-section h4{margin-bottom:.6em}.about-wrap .feature-section p{margin-top:.6em}.about-wrap code{font-size:14px}.about-wrap .point-releases{margin-top:5px}.about-wrap .changelog.point-releases h3{padding-top:35px}.about-wrap .changelog.point-releases h3:first-child{padding-top:7px}.wp-badge{padding-top:142px;height:50px;width:173px;font-weight:bold;font-size:14px;text-align:center;margin:0 -5px;background:url('../images/wp-badge.png?ver=20111120') no-repeat}.about-wrap .wp-badge{position:absolute;top:0;right:0}.about-wrap h2.nav-tab-wrapper{padding-left:6px}.about-wrap h2 .nav-tab{padding:4px 10px 6px;margin:0 3px -1px 0;font-size:18px;vertical-align:top}.about-wrap h2 .nav-tab-active{font-weight:bold;padding-top:3px}.about-wrap .feature-section img{border:0;margin:0 1.94% 10px 0;-webkit-border-radius:3px;border-radius:3px}.about-wrap .feature-section img.image-50{max-width:50%}.about-wrap .feature-section img.image-30{max-width:31.2381%}.ie8 .about-wrap .feature-section img{border-width:1px;border-style:solid}.about-wrap .feature-section.three-col{padding-top:15px;margin-bottom:0}.about-wrap .feature-section.three-col div{width:30%;margin-right:4.999999999%;float:left}.about-wrap .feature-section.three-col h4{margin:0 0 .6em 0}.about-wrap .feature-section.three-col img{margin:.5em 0 .5em 5px;max-width:100%;float:none}.ie8 .about-wrap .feature-section.three-col img{margin-left:0}.about-wrap .feature-section.three-col .last-feature{margin-right:0}.about-wrap .three-col-images{text-align:center}.about-wrap .three-col-images img{margin:0 0 10px}.about-wrap .three-col-images .last-feature{float:right}.about-wrap .three-col-images .first-feature{float:left}.about-wrap .feature-section.images-stagger-right img{float:right;margin:0 5px 12px 12px}.about-wrap .feature-section.images-stagger-left img{float:left;margin:0 12px 12px 5px}@media only screen and (max-width:900px){.about-wrap .feature-section.images-stagger-left img,.about-wrap .feature-section.images-stagger-right img{clear:both}}.about-wrap .return-to-dashboard{margin:30px 0 0 -5px;font-size:14px;font-weight:bold}.about-wrap .return-to-dashboard a{text-decoration:none;padding:0 5px}.about-wrap h4.wp-people-group{margin-top:2.6em;font-size:16px}.about-wrap ul.wp-people-group{overflow:hidden;padding:5px;margin:0 -15px 0 -5px}.about-wrap ul.compact{margin-bottom:0}.about-wrap li.wp-person{float:left;margin-right:10px}.about-wrap li.wp-person img.gravatar{float:left;margin:0 10px 10px 0;padding:2px;width:60px;height:60px}.about-wrap ul.compact li.wp-person img.gravatar{width:30px;height:30px}.about-wrap li.wp-person{height:70px;width:280px;padding-bottom:15px}.about-wrap ul.compact li.wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.about-wrap #wp-people-group-validators+p.wp-credits-list{margin-top:0}.about-wrap li.wp-person a.web{display:block;margin:6px 0 2px;font-size:16px;text-decoration:none}.about-wrap p.wp-credits-list a{white-space:nowrap}.freedoms-php .about-wrap ol{margin:40px 60px}.freedoms-php .about-wrap ol li{list-style-type:decimal;font-weight:bold}.freedoms-php .about-wrap ol p{font-weight:normal;margin:.6em 0}body.full-overlay-active{overflow:hidden}.wp-full-overlay{background:#fff;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;left:0;right:0;height:100%;min-width:0}.wp-full-overlay-sidebar{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:fixed;width:300px;height:100%;top:0;bottom:0;left:0;padding:0;margin:0;z-index:10;overflow:auto;background:#f5f5f5;border-right:1px solid rgba(0,0,0,0.2)}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{overflow:visible}.wp-full-overlay.collapsed,.wp-full-overlay.expanded .wp-full-overlay-sidebar{margin-left:0!important}.wp-full-overlay.expanded{margin-left:300px}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-left:-300px}.wp-full-overlay-sidebar:after{content:'';display:block;position:absolute;top:0;bottom:0;right:0;width:3px;box-shadow:-5px 0 4px -4px rgba(0,0,0,0.1) inset;z-index:1000}.wp-full-overlay-main{position:absolute;left:0;right:0;top:0;bottom:0;height:100%}.wp-full-overlay-sidebar .wp-full-overlay-header,.wp-full-overlay-sidebar .wp-full-overlay-footer{position:absolute;left:0;right:0;height:45px;padding:0 20px;line-height:45px;z-index:10;margin:0}.wp-full-overlay-sidebar .wp-full-overlay-header{top:0;border-top:0;border-bottom:1px solid #fff;box-shadow:inset 0 -1px 0 0 #dfdfdf}.wp-full-overlay-sidebar .wp-full-overlay-footer{bottom:0;border-bottom:0;border-top:1px solid #dfdfdf;box-shadow:inset 0 1px 0 0 #fff}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{position:absolute;top:45px;bottom:45px;left:0;right:0;overflow:auto}.wp-full-overlay .close-full-overlay{text-decoration:none}.wp-full-overlay .collapse-sidebar{position:absolute;bottom:12px;left:0;z-index:50;display:block;width:19px;height:19px;margin-left:15px;padding:0;border-radius:50%;text-decoration:none}.wp-full-overlay.collapsed .collapse-sidebar{position:absolute;left:100%}.wp-full-overlay .collapse-sidebar-arrow{position:absolute;margin-top:2px;margin-left:2px;display:block;width:15px;height:15px;background:transparent url('../images/arrows.png') no-repeat 0 -72px}.wp-full-overlay.collapsed .collapse-sidebar-arrow{background-position:0 -108px}.wp-full-overlay .collapse-sidebar-label{position:absolute;left:100%;color:#808080;line-height:20px;margin-left:10px}.wp-full-overlay.collapsed .collapse-sidebar-label{display:none}.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-label{color:#666}.wp-full-overlay,.wp-full-overlay-sidebar,.wp-full-overlay .collapse-sidebar,.wp-full-overlay-main{-webkit-transition-property:left,right,top,bottom,width,margin;-moz-transition-property:left,right,top,bottom,width,margin;-ms-transition-property:left,right,top,bottom,width,margin;-o-transition-property:left,right,top,bottom,width,margin;transition-property:left,right,top,bottom,width,margin;-webkit-transition-duration:.2s;-moz-transition-duration:.2s;-ms-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s}.no-customize-support .hide-if-no-customize,.customize-support .hide-if-customize{display:none}#customize-container{display:none;background:#fff;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;left:0;right:0;height:100%}.customize-active #customize-container{display:block}.customize-loading #customize-container iframe{opacity:0}.customize-loading #customize-container{background:#fff url("../images/wpspin_light.gif") no-repeat fixed center center}#customize-container iframe,#theme-installer iframe{height:100%;width:100%;z-index:20;-webkit-transition:opacity .3s;-moz-transition:opacity .3s;-ms-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s}#customize-container .collapse-sidebar{bottom:16px}#theme-installer{display:none}#theme-installer.single-theme{display:block}.install-theme-info{display:none;padding:10px 20px 20px}.single-theme .install-theme-info{padding-top:15px}#theme-installer .install-theme-info{display:block}.install-theme-info .theme-install{float:right;margin-top:18px}.install-theme-info .theme-name{font-size:16px;line-height:24px;margin-bottom:0}.install-theme-info .theme-screenshot{margin-top:15px;width:258px;border:1px solid #ccc}.install-theme-info .theme-details{overflow:hidden}.theme-details .theme-version{margin:15px 0;float:left}.theme-details .star-holder{margin:14px 0;float:right}.theme-details .theme-description{float:left;color:#777;line-height:20px}#excerpt,.attachmentlinks{margin:0;height:4em;width:98%}#template div{margin-right:190px}p.pagenav{margin:0;display:inline}.pagenav span{font-weight:bold;margin:0 6px}.row-title{font-size:13px!important;font-weight:bold}.column-author img,.column-username img{float:left;margin-right:10px;margin-top:1px}.row-actions{visibility:hidden;padding:2px 0 0}.mobile .row-actions{visibility:visible}tr:hover .row-actions,div.comment-item:hover .row-actions{visibility:visible}.row-actions-visible{padding:2px 0 0}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}.tagchecklist{margin-left:14px;font-size:12px;overflow:auto}.tagchecklist strong{margin-left:-8px;position:absolute}.tagchecklist span{margin-right:25px;display:block;float:left;font-size:11px;line-height:1.8em;white-space:nowrap;cursor:default}.tagchecklist span a{margin:6px 0 0 -9px;cursor:pointer;width:10px;height:10px;display:block;float:left;text-indent:-9999px;overflow:hidden;position:absolute}#poststuff h2{margin-top:20px;font-size:1.5em;margin-bottom:15px;padding:0 0 3px;clear:left}#poststuff h3,.metabox-holder h3{font-size:15px;font-weight:normal;padding:7px 10px;margin:0;line-height:1}#poststuff .inside{margin:6px 0 8px}#poststuff .inside #parent_id,.inline-edit-row #post_parent{max-width:100%}#post-visibility-select,#post-formats-select{line-height:1.5em;margin-top:3px}#poststuff #submitdiv .inside{margin:0;padding:0}#titlediv,#poststuff .postarea{margin-bottom:20px}#templateside ul li a{text-decoration:none}.tool-box .title{margin:8px 0;font-size:18px;font-weight:normal;line-height:24px}#sidemenu{margin:-30px 15px 0 315px;list-style:none;position:relative;float:right;padding-left:10px;font-size:12px}#sidemenu a{padding:0 7px;display:block;float:left;line-height:28px;border-top-width:1px;border-top-style:solid;border-bottom-width:1px;border-bottom-style:solid}#sidemenu li{display:inline;line-height:200%;list-style:none;text-align:center;white-space:nowrap;margin:0;padding:0}#sidemenu a.current{font-weight:normal;padding-left:6px;padding-right:6px;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;border-width:1px;border-style:solid}#sidemenu li a .count-0{display:none}.plugin-install #description,.plugin-install-network #description{width:60%}table .vers,table .column-visible,table .column-rating{text-align:left}.error-message{color:red;font-weight:bold}body.iframe{height:98%}td.media-icon{text-align:center;width:80px;padding-top:8px;padding-bottom:8px}td.media-icon img{max-width:80px;max-height:60px}.list-ajax-loading{float:right;margin-right:9px;margin-top:-1px}.tablenav .list-ajax-loading{margin-top:7px}#howto{font-size:11px;margin:0 5px;display:block}.importers td{padding-right:14px}.importers{font-size:16px;width:auto}#namediv table{width:100%}#namediv td.first{width:10px;white-space:nowrap}#namediv input{width:98%}#namediv p{margin:10px 0}#submitdiv h3{margin-bottom:0!important}.zerosize{height:0;width:0;margin:0;border:0;padding:0;overflow:hidden;position:absolute}br.clear{height:2px;line-height:2px}.checkbox{border:0;margin:0;padding:0}fieldset{border:0;padding:0;margin:0}.post-categories{display:inline;margin:0;padding:0}.post-categories li{display:inline}.edit-box{display:none}h3:hover .edit-box{display:inline}.index-php form .input-text-wrap{background:#fff;border-style:solid;border-width:1px;padding:2px 3px;border-color:#ccc}#dashboard-widgets form .input-text-wrap input{border:0 none;outline:0;margin:0;padding:0;width:99%;color:#333}form .textarea-wrap{background:#fff;border-style:solid;border-width:1px;padding:2px;border-color:#ccc}#dashboard-widgets form .textarea-wrap textarea{border:0 none;padding:0;outline:0;width:99%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#dashboard-widgets .postbox form .submit{float:none;margin:.5em 0 0;padding:0;border:0}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit input{margin:0}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish{min-width:0}#dashboard-widgets a{text-decoration:none}#dashboard-widgets h3 a{text-decoration:underline}#dashboard-widgets h3 .postbox-title-action{position:absolute;right:30px;padding:0;top:5px}#dashboard-widgets h4{font-weight:normal;font-size:13px;margin:0 0 .2em;padding:0}#dashboard_right_now p.sub,#dashboard_right_now .table,#dashboard_right_now .versions{margin:-12px}#dashboard_right_now .inside{font-size:12px;padding-top:20px}#dashboard_right_now p.sub{padding:5px 0 15px;color:#8f8f8f;font-size:14px;position:absolute;top:-17px;left:15px}#dashboard_right_now .table{margin:0;padding:0;position:relative}#dashboard_right_now .table_content{float:left;border-top:#ececec 1px solid;width:45%}#dashboard_right_now .table_discussion{float:right;border-top:#ececec 1px solid;width:45%}#dashboard_right_now table td{padding:3px 0;white-space:nowrap}#dashboard_right_now table tr.first td{border-top:0}#dashboard_right_now td.b{padding-right:6px;text-align:right;font-size:14px;width:1%}#dashboard_right_now td.b a{font-size:18px}#dashboard_right_now td.b a:hover{color:#d54e21}#dashboard_right_now .t{font-size:12px;padding-right:12px;padding-top:6px;color:#777}#dashboard_right_now .t a{white-space:nowrap}#dashboard_right_now .spam{color:red}#dashboard_right_now .waiting{color:#e66f00}#dashboard_right_now .approved{color:green}#dashboard_right_now .versions{padding:6px 10px 12px;clear:both}#dashboard_right_now a.button{float:right;clear:right;position:relative;top:-5px}#dashboard_recent_comments h3{margin-bottom:0}#dashboard_recent_comments .inside{margin-top:0}#dashboard_recent_comments .comment-meta .approve{font-style:italic;font-family:sans-serif;font-size:10px}#dashboard_recent_comments .subsubsub{float:none;white-space:normal}#the-comment-list{position:relative}#the-comment-list .comment-item{padding:1em 10px;border-top:1px solid}#the-comment-list .pingback{padding-left:9px!important}#the-comment-list .comment-item,#the-comment-list #replyrow{margin:0 -10px}#the-comment-list .comment-item:first-child{border-top:0}#the-comment-list .comment-item .avatar{float:left;margin:0 10px 5px 0}#the-comment-list .comment-item h4{line-height:1.7em;margin-top:-0.4em;color:#777}#the-comment-list .comment-item h4 cite{font-style:normal;font-weight:normal}#the-comment-list .comment-item blockquote,#the-comment-list .comment-item blockquote p{margin:0;padding:0;display:inline}#dashboard_recent_comments #the-comment-list .trackback blockquote,#dashboard_recent_comments #the-comment-list .pingback blockquote{display:block}#the-comment-list .comment-item p.row-actions{margin:3px 0 0;padding:0;font-size:12px}#dashboard_quick_press h4{font-family:sans-serif;float:left;width:5em;clear:both;font-weight:normal;text-align:right;font-size:12px}#dashboard_quick_press h4 label{margin-right:10px}#dashboard_quick_press .input-text-wrap,#dashboard_quick_press .textarea-wrap{margin:0 0 1em 5em}#dashboard_quick_press .wp-media-buttons{margin:0 0 .5em 5em;padding:0}#dashboard_quick_press .wp-media-buttons a{color:#777}#dashboard-widgets #dashboard_quick_press form p.submit{margin-left:4.6em}#dashboard-widgets #dashboard_quick_press form p.submit input{float:left}#dashboard-widgets #dashboard_quick_press form p.submit #save-post{margin:0 1em 0 10px}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:right}#dashboard-widgets #dashboard_quick_press form p.submit img.waiting{vertical-align:middle;visibility:hidden;margin:4px 6px 0 0}#dashboard_recent_drafts ul,#dashboard_recent_drafts p{margin:0;padding:0;word-wrap:break-word}#dashboard_recent_drafts ul{list-style:none}#dashboard_recent_drafts ul li{margin-bottom:1em}#dashboard_recent_drafts h4{line-height:1.7em;word-wrap:break-word}#dashboard_recent_drafts h4 abbr{font-weight:normal;font-family:sans-serif;font-size:12px;color:#999;margin-left:3px}.rss-widget ul{margin:0;padding:0;list-style:none}a.rsswidget{font-size:13px;line-height:1.7em}.rss-widget ul li{line-height:1.5em;margin-bottom:12px}.rss-widget span.rss-date{color:#999;font-size:12px;margin-left:3px}.rss-widget cite{display:block;text-align:right;margin:0 0 1em;padding:0}.rss-widget cite:before{content:'\2014'}#dashboard_plugins h4{line-height:1.7em}#dashboard_plugins h5{font-weight:normal;font-size:13px;margin:0;display:inline;line-height:1.4em}#dashboard_plugins h5 a{line-height:1.4em}#dashboard_plugins .inside span{font-size:12px;padding-left:5px}#dashboard_plugins p{margin:.3em 0 1.4em;line-height:1.4em}.dashboard-comment-wrap{overflow:hidden;word-wrap:break-word}#dashboard_browser_nag a.update-browser-link{font-size:1.2em;font-weight:bold}#dashboard_browser_nag a{text-decoration:underline}#dashboard_browser_nag p.browser-update-nag.has-browser-icon{padding-right:125px}#dashboard_browser_nag .browser-icon{margin-top:-35px}#dashboard_browser_nag.postbox.browser-insecure{background-color:#ac1b1b;border-color:#ac1b1b}#dashboard_browser_nag.postbox{background-color:#e29808;background-image:none;border-color:#edc048;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;color:#fff}#dashboard_browser_nag.postbox.browser-insecure h3{border-bottom-color:#cd5a5a;color:#fff}#dashboard_browser_nag.postbox h3{border-bottom-color:#f6e2ac;text-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;background:transparent none;color:#fff}#dashboard_browser_nag a{color:#fff}#dashboard_browser_nag.browser-insecure a.browse-happy-link,#dashboard_browser_nag.browser-insecure a.update-browser-link{text-shadow:#871b15 0 1px 0}#dashboard_browser_nag a.browse-happy-link,#dashboard_browser_nag a.update-browser-link{text-shadow:#d29a04 0 1px 0}.login *{margin:0;padding:0}.login form{margin-left:8px;padding:26px 24px 46px;font-weight:normal;background:#fff;border:1px solid #e5e5e5;-moz-box-shadow:rgba(200,200,200,0.7) 0 4px 10px -1px;-webkit-box-shadow:rgba(200,200,200,0.7) 0 4px 10px -1px;box-shadow:rgba(200,200,200,0.7) 0 4px 10px -1px}.login form .forgetmenot{font-weight:normal;float:left;margin-bottom:0}.login .button-primary{font-size:13px!important;line-height:16px;padding:3px 10px;float:right}#login form p{margin-bottom:0}#login form p.submit{padding:0}.login label{color:#777;font-size:14px}.login form .forgetmenot label{font-size:12px;line-height:19px}.login form p{margin-bottom:24px}.login h1 a{background-image:url('../images/wordpress-logo.png?ver=20120216');background-size:274px 63px;background-position:top center;background-repeat:no-repeat;width:326px;height:67px;text-indent:-9999px;overflow:hidden;padding-bottom:15px;display:block}@media only screen and (-webkit-min-device-pixel-ratio:1.5){.login h1 a{background-image:url('../images/wordpress-logo-2x.png?ver=20120412');background-size:274px 63px}.wp-badge{background-image:url('../images/wp-badge-2x.png?ver=20120516');background-size:173px 194px}}#login{width:320px;padding:114px 0 0;margin:auto}#login_error,.login .message{margin:0 0 16px 8px;padding:12px}.login #nav,.login #backtoblog{text-shadow:#fff 0 1px 0;margin:0 0 0 16px;padding:16px 16px 0}#backtoblog{padding:12px 16px 0}.login form .input,.login input[type="text"]{color:#555;font-weight:200;font-size:24px;line-height:1;width:100%;padding:3px;margin-top:2px;margin-right:6px;margin-bottom:16px;border:1px solid #e5e5e5;background:#fbfbfb;outline:0;-moz-box-shadow:inset 1px 1px 2px rgba(200,200,200,0.2);-webkit-box-shadow:inset 1px 1px 2px rgba(200,200,200,0.2);box-shadow:inset 1px 1px 2px rgba(200,200,200,0.2)}.login #pass-strength-result{width:250px;font-weight:bold;border-style:solid;border-width:1px;margin:12px 0 6px;padding:6px 5px;text-align:center}.mobile #login{padding:20px 0}.mobile #login form,.mobile #login .message,.mobile #login_error{margin-left:0}.mobile #login #nav,.mobile #login #backtoblog{margin-left:8px}.mobile #login h1 a{width:auto}#dashboard_right_now p.musub{margin-top:12px;border-top:1px solid #ececec;padding-left:16px;position:static}.rtl #dashboard_right_now p.musub{padding-left:0;padding-right:16px}#dashboard_right_now td.b a.musublink{font-size:16px}#dashboard_right_now div.musubtable{border-top:0}#dashboard_right_now div.musubtable .t{white-space:normal}.wp-list-table .site-deleted{background:#ff8573}.wp-list-table .site-spammed{background:#faafaa}.wp-list-table .site-archived{background:#ffebe8}.wp-list-table .site-mature{background:#fecac2}#nav-menus-frame{margin-left:300px}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-left:-300px;clear:both;float:left;padding-top:24px}.no-js #wpbody-content #menu-settings-column{padding-top:31px}#menu-settings-column .inside{clear:both}.metabox-holder-disabled .postbox{opacity:.5;filter:alpha(opacity=50)}.metabox-holder-disabled .button-controls .select-all{display:none}#wpbody{position:relative}#menu-management-liquid{float:left;min-width:100%}#menu-management{position:relative;margin-right:20px;margin-top:-3px;width:100%}#menu-management .menu-edit{margin-bottom:20px}.nav-menus-php #post-body{padding:10px;border-width:1px 0;border-style:solid}#nav-menu-header,#nav-menu-footer{padding:0 10px}#nav-menu-header{border-bottom:1px solid}#nav-menu-footer{border-top:1px solid}.nav-menus-php #post-body div.updated,.nav-menus-php #post-body div.error{margin:0}.nav-menus-php #post-body-content{position:relative;float:none}#menu-management .menu-add-new abbr{font-weight:bold}#menu-management .nav-tabs-nav{margin:0 20px}#menu-management .nav-tabs-arrow{width:10px;padding:0 5px 4px;cursor:pointer;position:absolute;top:0;line-height:22px;font-size:18px;text-shadow:0 1px 0 #fff}#menu-management .nav-tabs-arrow-left{left:0}#menu-management .nav-tabs-arrow-right{right:0;text-align:right}#menu-management .nav-tabs-wrapper{width:100%;height:28px;margin-bottom:-1px;overflow:hidden}#menu-management .nav-tabs{padding-left:20px;padding-right:10px}.js #menu-management .nav-tabs{float:left;margin-left:0;margin-right:-400px}#menu-management .nav-tab{margin-bottom:0;font-size:14px}#select-nav-menu-container{text-align:right;padding:0 10px 3px 10px;margin-bottom:5px}#select-nav-menu{width:100px;display:inline}#menu-name-label{margin-top:-2px}#wpbody .open-label{display:block;float:left}#wpbody .open-label span{padding-right:10px}.js .input-with-default-title{font-style:italic}#menu-management .inside{padding:0 10px}.postbox .howto input{width:180px;float:right}.customlinkdiv .howto input{width:200px}#nav-menu-theme-locations .howto select{width:100%}#nav-menu-theme-locations .button-controls{text-align:right}.add-menu-item-view-all{height:400px}#menu-container .submit{margin:0 0 10px;padding:0}.nav-menus-php .meta-sep,.nav-menus-php .submitdelete,.nav-menus-php .submitcancel{display:block;float:left;margin:4px 0;line-height:15px}.meta-sep{padding:0 2px}#cancel-save{text-decoration:underline;font-size:12px;margin-left:20px;margin-top:5px}.list-controls{float:left;margin-top:5px}.add-to-menu{float:right}.postbox img.waiting{display:none;vertical-align:middle}.button-controls{clear:both;margin:10px 0}.show-all,.hide-all{cursor:pointer}.hide-all{display:none}#menu-name{width:270px}#manage-menu .inside{padding:0}#available-links dt{display:block}#add-custom-link .howto{font-size:12px}#add-custom-link label span{display:block;float:left;margin-top:5px;padding-right:5px}.menu-item-textbox{width:180px}.nav-menus-php .howto span{margin-top:4px;display:block;float:left}.quick-search{width:190px}.nav-menus-php .list-wrap{display:none;clear:both;margin-bottom:10px}.nav-menus-php .list-container{max-height:200px;overflow-y:auto;padding:10px 10px 5px}.nav-menus-php .postbox p.submit{margin-bottom:0}.nav-menus-php .list li{display:none;margin:0;margin-bottom:5px}.nav-menus-php .list li .menu-item-title{cursor:pointer;display:block}.nav-menus-php .list li .menu-item-title input{margin-right:3px;margin-top:-3px}#menu-container .inside{padding-bottom:10px}.menu{padding-top:1em}#menu-to-edit{padding:1em 0}.menu ul{width:100%}.menu li{margin-bottom:0;position:relative}.menu-item-bar{clear:both;line-height:1.5em;position:relative;margin:13px 0 0 0}.menu-item-handle{border:1px solid #dfdfdf;position:relative;padding-left:10px;height:auto;width:400px;line-height:35px;text-shadow:0 1px 0 #fff;overflow:hidden;word-wrap:break-word}#menu-to-edit .menu-item-invalid .menu-item-handle{background-color:#f6c9cc;background-image:-ms-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:-moz-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:-o-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:-webkit-gradient(linear,left bottom,left top,from(#f6c9cc),to(#fdf8ff));background-image:-webkit-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:linear-gradient(bottom,#f6c9cc,#fdf8ff)}.menu-item-edit-active .menu-item-handle{-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.no-js .menu-item-edit-active .item-edit{display:none}.js .menu-item-handle{cursor:move}.menu li.deleting .menu-item-handle{background-image:none;text-shadow:0}.menu-item-handle .item-title{font-size:12px;font-weight:bold;padding:7px 0;line-height:20px;display:block;margin-right:13em}li.menu-item.ui-sortable-helper dl{margin-top:0}li.menu-item.ui-sortable-helper .menu-item-transport dl{margin-top:13px}.menu .sortable-placeholder{height:35px;width:410px;margin-top:13px}.menu-item-depth-0{margin-left:0}.menu-item-depth-1{margin-left:30px}.menu-item-depth-2{margin-left:60px}.menu-item-depth-3{margin-left:90px}.menu-item-depth-4{margin-left:120px}.menu-item-depth-5{margin-left:150px}.menu-item-depth-6{margin-left:180px}.menu-item-depth-7{margin-left:210px}.menu-item-depth-8{margin-left:240px}.menu-item-depth-9{margin-left:270px}.menu-item-depth-10{margin-left:300px}.menu-item-depth-11{margin-left:330px}.menu-item-depth-0 .menu-item-transport{margin-left:0}.menu-item-depth-1 .menu-item-transport{margin-left:-30px}.menu-item-depth-2 .menu-item-transport{margin-left:-60px}.menu-item-depth-3 .menu-item-transport{margin-left:-90px}.menu-item-depth-4 .menu-item-transport{margin-left:-120px}.menu-item-depth-5 .menu-item-transport{margin-left:-150px}.menu-item-depth-6 .menu-item-transport{margin-left:-180px}.menu-item-depth-7 .menu-item-transport{margin-left:-210px}.menu-item-depth-8 .menu-item-transport{margin-left:-240px}.menu-item-depth-9 .menu-item-transport{margin-left:-270px}.menu-item-depth-10 .menu-item-transport{margin-left:-300px}.menu-item-depth-11 .menu-item-transport{margin-left:-330px}body.menu-max-depth-0{min-width:950px!important}body.menu-max-depth-1{min-width:980px!important}body.menu-max-depth-2{min-width:1010px!important}body.menu-max-depth-3{min-width:1040px!important}body.menu-max-depth-4{min-width:1070px!important}body.menu-max-depth-5{min-width:1100px!important}body.menu-max-depth-6{min-width:1130px!important}body.menu-max-depth-7{min-width:1160px!important}body.menu-max-depth-8{min-width:1190px!important}body.menu-max-depth-9{min-width:1220px!important}body.menu-max-depth-10{min-width:1250px!important}body.menu-max-depth-11{min-width:1280px!important}.item-type{font-size:12px;padding-right:10px}.item-controls{font-size:12px;position:absolute;right:20px;top:-1px}.item-controls a{text-decoration:none}.item-controls a:hover{cursor:pointer}.item-controls .item-order{padding-right:10px}.nav-menus-php .item-edit{position:absolute;right:-20px;top:0;display:block;width:30px;height:36px;overflow:hidden;text-indent:-999em;border-bottom:1px solid;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}.menu-instructions-inactive{display:none}.menu-item-settings{display:block;width:400px;padding:10px 0 10px 10px;border:solid;border-width:0 1px 1px 1px;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.menu-item-edit-active .menu-item-settings{display:block}.menu-item-edit-inactive .menu-item-settings{display:none}.add-menu-item-pagelinks{margin:.5em auto;text-align:center}.link-to-original{display:block;margin:0 0 10px;padding:3px 5px 5px;font-size:12px;font-style:italic}.link-to-original a{padding-left:4px;font-style:normal}.hidden-field{display:none}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-right:10px;float:left}.description-thin{width:190px;height:40px}.description-wide{width:390px}.menu-item-actions{padding-top:15px}#cancel-save{cursor:pointer}.nav-menus-php .major-publishing-actions{clear:both;padding:3px 0 5px}.nav-menus-php .major-publishing-actions .publishing-action{text-align:right;float:right;line-height:23px;margin:5px 0 1px}.nav-menus-php .major-publishing-actions .delete-action{vertical-align:middle;text-align:left;float:left;padding-right:15px;margin-top:5px}.menu-name-label span,.auto-add-pages label{font-size:12px;font-style:normal}.menu-name-label{margin-right:15px}.auto-add-pages input{margin-top:0}.auto-add-pages{margin-top:4px;float:left}.nav-menus-php .submitbox .submitcancel{border-bottom:1px solid;padding:1px 2px;text-decoration:none}.nav-menus-php .major-publishing-actions .form-invalid{padding-left:4px;margin-left:-4px;border:0 none}#menu-item-name-wrap:after,#menu-item-url-wrap:after,#menu-name-label:after,#menu-settings-column .inside:after,#nav-menus-frame:after,.nav-menus-php #post-body-content:after,.nav-menus-php .button-controls:after,.nav-menus-php .major-publishing-actions:after,.nav-menus-php .menu-item-settings:after{clear:both;content:".";display:block;height:0;visibility:hidden}#nav-menus-frame,.button-controls,#menu-item-url-wrap,#menu-item-name-wrap{display:block}div.star-holder{position:relative;height:17px;width:100px;background:url('../images/stars.png?ver=20120307') repeat-x bottom left}div.star-holder .star-rating{background:url('../images/stars.png?ver=20120307') repeat-x top left;height:17px;float:left}div.action-links{font-weight:normal;margin:6px 0 0}#plugin-information-header{margin:0;padding:0 5px;font-weight:bold;position:relative;border-bottom-width:1px;border-bottom-style:solid;height:2.5em}#plugin-information ul#sidemenu{font-weight:normal;margin:0 5px;position:absolute;left:0;bottom:-1px}#plugin-information p.action-button{width:100%;padding-bottom:0;margin-bottom:0;margin-top:10px;-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px}#plugin-information .action-button a{text-align:center;font-weight:bold;text-decoration:none;display:block;line-height:2em}#plugin-information h2{clear:none!important;margin-right:200px}#plugin-information .fyi{margin:0 10px 50px;width:210px}#plugin-information .fyi h2{font-size:.9em;margin-bottom:0;margin-right:0}#plugin-information .fyi h2.mainheader{padding:5px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px}#plugin-information .fyi ul{padding:10px 5px 10px 7px;margin:0;list-style:none;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}#plugin-information .fyi li{margin-right:0}#plugin-information #section-holder{padding:10px}#plugin-information .section ul,#plugin-information .section ol{margin-left:16px;list-style-type:square;list-style-image:none}#plugin-information #section-screenshots ol{list-style:none;margin:0}#plugin-information #section-screenshots li img{vertical-align:text-top;max-width:100%;width:auto;height:auto}#plugin-information #section-screenshots li p{font-style:italic;padding-left:20px;padding-bottom:2em}#plugin-information #section-screenshots ol,#plugin-information .updated,#plugin-information pre{margin-right:215px}#plugin-information pre{padding:7px;overflow:auto}body.press-this{color:#333;margin:0;padding:0;min-width:675px;min-height:400px}img{border:0}.press-this #wphead{height:32px;margin-left:0;margin-right:0;margin-bottom:5px}.press-this #header-logo{float:left;margin:7px 7px 0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.press-this #wphead h1{font-weight:normal;font-size:16px;line-height:32px;margin:0;float:left}.press-this #wphead h1 a{text-decoration:none}.press-this #wphead h1 a:hover{text-decoration:underline}.press-this #message{margin:10px 0}.press-this-sidebar{float:right;width:200px;padding-top:10px}.press-this #title{margin-left:0;margin-right:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.press-this .tagchecklist span a{background:transparent url(../images/xit.gif) no-repeat 0 0}.press-this #titlediv{margin:0}.press-this .wp-media-buttons{cursor:default;padding:8px 8px 0}.press-this .howto{margin-top:2px;margin-bottom:3px;font-size:12px;font-style:italic;display:block}.press-this #poststuff{margin:0 10px 10px}#poststuff #editor-toolbar{height:30px}div.zerosize{border:0 none;height:0;margin:0;overflow:hidden;padding:0;width:0}.posting{margin-right:212px;position:relative}.press-this .inner-sidebar{width:200px}.press-this .inner-sidebar .sleeve{padding-top:5px}.press-this #submitdiv p{margin:0;padding:6px}.press-this #submitdiv #publishing-actions{border-bottom:1px solid #dfdfdf}.press-this #publish{float:right}.press-this #poststuff h2,.press-this #poststuff h3{font-size:14px;line-height:1}.press-this #tagsdiv-post_tag h3,.press-this #categorydiv h3{cursor:pointer}.press-this #submitdiv h3{cursor:default}h3.tb{text-shadow:0 1px 0 #fff;font-weight:bold;font-size:12px;margin-left:5px}#TB_window{border:1px solid #333}.press-this .postbox,.press-this .stuffbox{margin-bottom:10px;min-width:0}.postbox:hover .handlediv,.stuffbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px}.press-this #submitdiv:hover .handlediv{background:0}.tbtitle{font-size:1.7em;outline:0;padding:3px 4px;border-color:#dfdfdf}.press-this .actions{float:right;margin:-19px 0 0}.press-this #extra-fields .actions{margin:-25px -7px 0 0}.press-this .actions li{float:left;list-style:none;margin-right:10px}#extra-fields .button{margin-right:5px}#photo_saving{margin:0 8px 8px;vertical-align:middle}#img_container_container{overflow:auto}#extra-fields{margin-top:10px;position:relative}#extra-fields h2{margin:12px}#waiting{margin-top:10px}#extra-fields .postbox{margin-bottom:5px}#extra-fields .titlewrap{padding:0;overflow:auto;height:100px}#img_container a{display:block;float:left;overflow:hidden;vertical-align:center}#img_container img,#img_container a{width:68px;height:68px}#img_container img{border:0;background-color:#f4f4f4;cursor:pointer}#img_container a,#img_container a:link,#img_container a:visited{border:1px solid #ccc;display:block;position:relative}#img_container a:hover,#img_container a:active{border-color:#000;z-index:1000;border-width:2px;margin:-1px}#embed-code{width:100%;height:98px}.press-this .categorydiv div.tabs-panel{height:100px}.press-this .tagsdiv .newtag{width:130px}.press-this #content{margin:5px 0;padding:0 5px;border:0 none;height:357px;font-family:Consolas,Monaco,monospace;font-size:13px;line-height:19px;background:transparent}#saving{display:inline;vertical-align:middle}#TB_ajaxContent #options{position:absolute;top:20px;right:25px;padding:5px}#TB_ajaxContent h3{margin-bottom:.25em}.error a{text-decoration:underline}.updated a{text-decoration:none;padding-bottom:2px}.taghint{color:#aaa;margin:-17px 0 0 7px;visibility:hidden}input.newtag ~ div.taghint{visibility:visible}input.newtag:focus ~ div.taghint{visibility:hidden}#mce_fullscreen_container{background:#fff}#photo-add-url-div input[type="text"]{width:300px}.alignleft h3{margin:0}h3 span{font-weight:normal}#template textarea{font-family:Consolas,Monaco,monospace;font-size:12px;width:97%;background:#f9f9f9;outline:0}#template p{width:97%}#templateside{float:right;width:190px;word-wrap:break-word}#templateside h3,#postcustomstuff p.submit{margin:0}#templateside h4{margin:1em 0 0}#templateside ol,#templateside ul{margin:.5em;padding:0}#templateside li{margin:4px 0}#templateside ul li a span.highlight{display:block}.nonessential{font-size:11px;font-style:italic;padding-left:12px}.highlight{padding:3px 3px 3px 12px;margin-left:-12px;font-weight:bold;border:0 none}#documentation{margin-top:10px}#documentation label{line-height:22px;vertical-align:top;font-weight:bold}.fileedit-sub{padding:10px 0 8px;line-height:180%}#filter-box{clear:both}.feature-filter{padding:8px 12px 0}.feature-filter .feature-group{float:left;margin:5px 10px 10px}.feature-filter .feature-group li{display:inline;float:left;list-style-type:none;padding-right:25px;width:150px}.feature-container{width:100%;overflow:auto;margin-bottom:10px}div.widget-liquid-left{float:left;clear:left;width:100%;margin-right:-325px}div#widgets-left{margin-left:5px;margin-right:325px}div#widgets-right{width:285px;margin:0 auto}div.widget-liquid-right{float:right;clear:right;width:300px}.widget-liquid-right .widget,.inactive-sidebar .widget,.widget-liquid-right .sidebar-description{width:250px;margin:0 auto 20px;overflow:hidden}.widget-liquid-right .sidebar-description{margin-bottom:10px}.inactive-sidebar .widget{margin:0 10px 20px;float:left}div.sidebar-name h3{font-weight:normal;font-size:15px;margin:0;padding:8px 10px;overflow:hidden;white-space:nowrap}div.sidebar-name{cursor:pointer;font-size:13px;border-width:1px;border-style:solid;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px}.js .closed .sidebar-name{-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.widget-liquid-right .widgets-sortables,#widgets-left .widget-holder{border-width:0 1px 1px;border-style:none solid solid;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.js .closed .widgets-sortables,.js .closed .widget-holder{display:none}.widget-liquid-right .widgets-sortables{padding:15px 0 0}#available-widgets .widget-holder{padding:7px 5px 0}#available-widgets .widget{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.inactive-sidebar{padding:5px 5px 0}#widget-list .widget{width:250px;margin:0 10px 15px;border:0 none;background:transparent;float:left}#widget-list .widget-description{padding:5px 8px}.widget-placeholder{border-width:1px;border-style:dashed;margin:0 auto 20px;height:26px;width:250px}.inactive-sidebar .widget-placeholder{margin:0 10px 20px;float:left}div.widgets-holder-wrap{padding:0;margin:10px 0 20px}#widgets-left #available-widgets{background-color:transparent;border:0 none}ul#widget-list{list-style:none;margin:0;padding:0;min-height:100px}.widget .widget-top{margin-bottom:-1px;font-size:12px;font-weight:bold;height:26px;overflow:hidden}.widget-top .widget-title{padding:7px 9px}.widget-top .widget-title-action{float:right}a.widget-action{display:block;width:24px;height:26px}#available-widgets a.widget-action{display:none}.widget-top a.widget-action{background:transparent url(../images/arrows.png) no-repeat 4px 6px}.widget-top a.widget-action:hover{background:transparent url(../images/arrows-dark.png) no-repeat 4px 6px}.widget .widget-inside,.widget .widget-description{padding:12px 12px 10px;font-size:12px;line-height:16px}.widget-inside,.widget-description{display:none}#available-widgets .widget-description{display:block}.widget .widget-inside p{margin:0 0 1em;padding:0}.widget-title h4{margin:0;line-height:1;overflow:hidden;white-space:nowrap}.widgets-sortables{min-height:90px}.widget-control-actions{margin-top:8px}.widget-control-actions a{text-decoration:none}.widget-control-actions a:hover{text-decoration:underline}.widget-control-actions .ajax-feedback{padding-bottom:3px}.widget-control-actions div.alignleft{margin-top:6px}div#sidebar-info{padding:0 1em;margin-bottom:1em;font-size:12px}.widget-title a,.widget-title a:hover{text-decoration:none;border-bottom:0}.widget-control-edit{display:block;font-size:12px;font-weight:normal;line-height:26px;padding:0 8px 0 0}a.widget-control-edit{text-decoration:none}.widget-control-edit .add,.widget-control-edit .edit{display:none}#available-widgets .widget-control-edit .add,#widgets-right .widget-control-edit .edit,.inactive-sidebar .widget-control-edit .edit{display:inline}.editwidget{margin:0 auto 15px}.editwidget .widget-inside{display:block;padding:10px}.inactive p.description{margin:5px 15px 10px}#available-widgets p.description{margin:0 12px 12px}.widget-position{margin-top:8px}.inactive{padding-top:2px}.sidebar-name-arrow{float:right;height:29px;width:26px}.widget-title .in-widget-title{font-size:12px;white-space:nowrap}#removing-widget{display:none;font-weight:normal;padding-left:15px;font-size:12px;line-height:1}.widget-control-noform,#access-off,.widgets_access .widget-action,.widgets_access .sidebar-name-arrow,.widgets_access #access-on,.widgets_access .widget-holder .description{display:none}.widgets_access .widget-holder,.widgets_access #widget-list{padding-top:10px}.widgets_access #access-off{display:inline}.widgets_access #wpbody-content .widget-title-action,.widgets_access #wpbody-content .widget-control-edit,.widgets_access .closed .widgets-sortables,.widgets_access .closed .widget-holder{display:block}.widgets_access .closed .sidebar-name{-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.widgets_access .sidebar-name,.widgets_access .widget .widget-top{cursor:default}@media only screen and (max-width:768px){#col-left{width:100%}#col-right{width:100%}}@media only screen and (min-width:769px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (max-width:860px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (min-width:980px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (max-width:768px){#col-left{width:100%}#col-right{width:100%}.form-field input,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}#profile-page .form-table textarea{max-width:400px;width:auto}}.locale-zh-cn .howto,.locale-zh-cn .tablenav .displaying-num,.locale-zh-cn .js .input-with-default-title,.locale-zh-cn .link-to-original,.locale-zh-cn .inline-edit-row fieldset span.title,.locale-zh-cn .inline-edit-row fieldset span.checkbox-title,.locale-zh-cn #utc-time,.locale-zh-cn #local-time,.locale-zh-cn p.install-help,.locale-zh-cn p.help,.locale-zh-cn p.description,.locale-zh-cn span.description,.locale-zh-cn .form-wrap p{font-style:normal}.locale-zh-cn .hdnle a{font-size:12px}.locale-zh-cn form.upgrade .hint{font-style:normal;font-size:100%}.locale-zh-cn #wp-fullscreen-tagline{font-family:KaiTi,"楷体",sans-serif}.locale-zh-cn #wp-fullscreen-modes a{font-size:12px}.locale-zh-cn #sort-buttons{font-size:1em!important}.locale-ru-ru #dashboard_quick_press .input-text-wrap,.locale-ru-ru #dashboard_quick_press .textarea-wrap,.locale-ru-ru #dashboard_quick_press .wp-media-buttons{margin-left:5.7em}.locale-ru-ru #dashboard_quick_press h4{width:5.7em}.locale-ru-ru #dashboard-widgets #dashboard_quick_press form p.submit{margin-left:5.3em}.locale-ru-ru .inline-edit-row fieldset label span.title{width:auto;min-width:5em}.locale-ru-ru.press-this .posting{margin-right:257px}.locale-ru-ru.press-this #photo-add-url-div input[type="text"]{width:255px}.locale-ru-ru.press-this #side-sortables{width:245px}.locale-lt-lt #dashboard_quick_press .input-text-wrap,.locale-lt-lt #dashboard_quick_press .textarea-wrap,.locale-lt-lt #dashboard_quick_press .wp-media-buttons{margin-left:7em}.locale-lt-lt #dashboard_quick_press h4{width:7em}.locale-lt-lt .inline-edit-row fieldset label span.title{width:8em}.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap{margin-left:8em}
\ No newline at end of file
index 9051f836273ada6459136e83a0e7b0196a54affb..8371546d3701870e000e13583f0147d24b69ec41 100644 (file)
@@ -39,7 +39,9 @@ TABLE OF CONTENTS:
 20.0 - Settings
 21.0 - Admin Footer
 22.0 - About Pages
 20.0 - Settings
 21.0 - Admin Footer
 22.0 - About Pages
-23.0 - Misc
+23.0 - Full Overlay w/ Sidebar
+24.0 - Customize Loader
+25.0 - Misc
 
 ------------------------------------------------------------------------*/
 
 
 ------------------------------------------------------------------------*/
 
@@ -102,6 +104,7 @@ TABLE OF CONTENTS:
 }
 
 /* inner 2 column liquid layout */
 }
 
 /* inner 2 column liquid layout */
+
 .inner-sidebar {
        float: right;
        clear: right;
 .inner-sidebar {
        float: right;
        clear: right;
@@ -136,11 +139,8 @@ TABLE OF CONTENTS:
 
 .has-right-sidebar #post-body-content {
        margin-right: 300px;
 
 .has-right-sidebar #post-body-content {
        margin-right: 300px;
-}
-
-#post-body-content #side-sortables.empty-container {
-       border: 0 none;
-       height: 0;
+       float: none;
+       width: auto;
 }
 
 /* 2 columns main area */
 }
 
 /* 2 columns main area */
@@ -208,6 +208,10 @@ TABLE OF CONTENTS:
 /* include margin and padding in the width calculation of input and textarea */
 input[type="text"],
 input[type="password"],
 /* include margin and padding in the width calculation of input and textarea */
 input[type="text"],
 input[type="password"],
+input[type="number"],
+input[type="search"],
+input[type="email"],
+input[type="url"],
 textarea {
        -moz-box-sizing: border-box;
        -webkit-box-sizing: border-box;
 textarea {
        -moz-box-sizing: border-box;
        -webkit-box-sizing: border-box;
@@ -217,7 +221,17 @@ textarea {
 
 input[type="checkbox"],
 input[type="radio"] {
 
 input[type="checkbox"],
 input[type="radio"] {
-       vertical-align: text-bottom;
+       vertical-align: text-top;
+       padding: 0;
+       margin: 1px 0 0;
+}
+
+input[type="search"] {
+       -webkit-appearance: textfield;
+}
+
+input[type="search"]::-webkit-search-decoration {
+       display: none;
 }
 
 /* general */
 }
 
 /* general */
@@ -630,53 +644,6 @@ div.error p {
 }
 
 
 }
 
 
-/* =CSS 3 transitions
--------------------------------------------------------------- */
-
-.fade-1000,
-.fade-600,
-.fade-400,
-.fade-300 {
-       opacity: 0;
-       -moz-transition-property: opacity;
-       -webkit-transition-property: opacity;
-       -o-transition-property: opacity;
-       transition-property: opacity;
-}
-
-.fade-1000 {
-       -moz-transition-duration: 1s;
-       -webkit-transition-duration: 1s;
-       -o-transition-duration: 1s;
-       transition-duration: 1s;
-}
-
-.fade-600 {
-       -moz-transition-duration: 0.6s;
-       -webkit-transition-duration: 0.6s;
-       -o-transition-duration: 0.6s;
-       transition-duration: 0.6s;
-}
-
-.fade-400 {
-       -moz-transition-duration: 0.4s;
-       -webkit-transition-duration: 0.4s;
-       -o-transition-duration: 0.4s;
-       transition-duration: 0.4s;
-}
-
-.fade-300 {
-       -moz-transition-duration: 0.3s;
-       -webkit-transition-duration: 0.3s;
-       -o-transition-duration: 0.3s;
-       transition-duration: 0.3s;
-}
-
-.fade-trigger {
-       opacity: 1;
-}
-
-
 /*------------------------------------------------------------------------------
   1.0 - Text Styles
 ------------------------------------------------------------------------------*/
 /*------------------------------------------------------------------------------
   1.0 - Text Styles
 ------------------------------------------------------------------------------*/
@@ -837,6 +804,10 @@ input.small-text {
        width: 50px;
 }
 
        width: 50px;
 }
 
+input[type="number"].small-text {
+       width: 60px;
+}
+
 #doaction,
 #doaction2,
 #post-query-submit {
 #doaction,
 #doaction2,
 #post-query-submit {
@@ -892,6 +863,47 @@ p.search-box {
        margin: 0;
 }
 
        margin: 0;
 }
 
+input[type="text"].ui-autocomplete-loading {
+       background: transparent url('../images/loading.gif') no-repeat right center;
+       visibility: visible;
+}
+
+ul#add-to-blog-users {
+       margin: 0 0 0 14px;
+}
+
+.ui-autocomplete-input.open {
+       border-bottom-right-radius: 0;
+       border-bottom-left-radius: 0;
+}
+
+.ui-autocomplete {
+       padding: 0;
+       margin: 0;
+       list-style: none;
+       position: absolute;
+       z-index: 10000;
+       border-bottom-right-radius: 3px;
+       border-bottom-left-radius: 3px;
+       border-width: 1px;
+       border-style: solid;
+}
+
+.ui-autocomplete li {
+       margin-bottom: 0;
+       white-space: nowrap;
+       text-align: left;
+}
+
+.ui-autocomplete li a {
+       display: block;
+       height: 100%;
+       padding: 4px 10px;
+}
+
+.ui-autocomplete li a.ui-state-hover {
+       cursor: pointer;
+}
 
 /*------------------------------------------------------------------------------
   3.0 - Actions
 
 /*------------------------------------------------------------------------------
   3.0 - Actions
@@ -900,7 +912,8 @@ p.search-box {
 #major-publishing-actions {
        padding: 10px 10px 8px;
        clear: both;
 #major-publishing-actions {
        padding: 10px 10px 8px;
        clear: both;
-       border-top: none;
+       border-top: 1px solid #f5f5f5;
+       margin-top: -2px;
 }
 
 #delete-action {
 }
 
 #delete-action {
@@ -916,28 +929,6 @@ p.search-box {
        line-height: 23px;
 }
 
        line-height: 23px;
 }
 
-#post-body #minor-publishing {
-       padding-bottom: 10px;
-}
-
-#post-body #misc-publishing-actions {
-       padding: 0;
-}
-
-#post-body .misc-pub-section {
-       border-right-width: 1px;
-       border-right-style: solid;
-       border-top: 0;
-       border-bottom: 0;
-       min-height: 30px;
-       float: left;
-       max-width: 32%;
-}
-
-#post-body .misc-pub-section-last {
-       border-right: 0;
-}
-
 #misc-publishing-actions {
        padding: 6px 0 0;
 }
 #misc-publishing-actions {
        padding: 6px 0 0;
 }
@@ -951,6 +942,7 @@ p.search-box {
 .misc-pub-section:first-child {
        border-top-width: 0;
 }
 .misc-pub-section:first-child {
        border-top-width: 0;
 }
+
 .misc-pub-section-last {
        border-bottom-width: 0;
 }
 .misc-pub-section-last {
        border-bottom-width: 0;
 }
@@ -1087,261 +1079,6 @@ form.upgrade .hint {
 }
 
 
 }
 
 
-/* Distraction Free Writing mode
- * =Overlay Styles
--------------------------------------------------------------- */
-.fullscreen-overlay {
-       z-index: 149999;
-       display: none;
-       position: fixed;
-       top: 0;
-       bottom: 0;
-       left: 0;
-       right: 0;
-       filter: inherit;
-}
-
-.fullscreen-active .fullscreen-overlay,
-.fullscreen-active #wp-fullscreen-body {
-       display: block;
-}
-
-.fullscreen-fader {
-       z-index: 200000;
-}
-
-.fullscreen-active .fullscreen-fader {
-       display: none;
-}
-
-/* =Overlay Body
--------------------------------------------------------------- */
-#wp-fullscreen-body {
-       width: 100%;
-       z-index: 150005;
-       display: none;
-       position: absolute;
-       top: 0;
-       left: 0;
-}
-
-#wp-fullscreen-wrap {
-       margin: 0 auto 50px;
-       position: relative;
-       padding-top: 60px;
-}
-
-#wp-fullscreen-title {
-    font-size: 1.7em;
-    line-height: 100%;
-    outline: medium none;
-    padding: 6px 7px;
-    width: 100%;
-    margin-bottom: 30px;
-}
-
-#wp-fullscreen-container {
-       padding: 4px 10px 50px;
-}
-
-#wp-fullscreen-title,
-#wp-fullscreen-container {
-       -webkit-border-radius: 0;
-       border-radius: 0;
-       border: 1px dashed transparent;
-       background: transparent;
-       -moz-transition-property: border-color;
-       -moz-transition-duration: 0.6s;
-       -webkit-transition-property: border-color;
-       -webkit-transition-duration: 0.6s;
-       -o-transition-property: border-color;
-       -o-transition-duration: 0.6s;
-       transition-property: border-color;
-       transition-duration: 0.6s;
-}
-
-#wp_mce_fullscreen {
-       width: 100%;
-       min-height: 300px;
-       border: 0;
-       background: transparent;
-       font-family: Consolas, Monaco, monospace;
-       line-height: 1.6em;
-       padding: 0;
-       overflow-y: hidden;
-       outline: none;
-       resize: none;
-}
-
-#wp-fullscreen-tagline {
-       color: #BBBBBB;
-       font-size: 18px;
-       float: right;
-       padding-top: 5px;
-}
-
-/* =Top bar
--------------------------------------------------------------- */
-#fullscreen-topbar {
-       position: fixed;
-       top: 0;
-       left: 0;
-       z-index: 150050;
-       border-bottom-style: solid;
-       border-bottom-width: 1px;
-       min-width: 800px;
-       width: 100%;
-       height: 40px;
-}
-
-#wp-fullscreen-toolbar {
-       padding: 6px 10px 0;
-       clear: both;
-       max-width: 1100px;
-       min-width: 820px;
-       margin: 0 auto;
-}
-
-#wp-fullscreen-mode-bar,
-#wp-fullscreen-button-bar,
-#wp-fullscreen-close,
-#wp-fullscreen-count {
-       float: left;
-}
-
-#wp-fullscreen-save {
-       float: right;
-       padding: 2px 2px 0 5px;
-}
-
-#wp-fullscreen-count,
-#wp-fullscreen-close {
-       padding-top: 5px;
-}
-
-#wp-fullscreen-central-toolbar {
-       margin: auto;
-       padding: 0;
-}
-
-#wp-fullscreen-buttons > div {
-       float: left;
-}
-
-#wp-fullscreen-mode-bar {
-       padding: 1px 14px 0 0;
-}
-
-#wp-fullscreen-modes a {
-       display: block;
-       font-size: 11px;
-       text-decoration: none;
-       float: left;
-       margin: 1px 0 0 0;
-       padding: 2px 6px 2px;
-       border-width: 1px 1px 1px 0;
-       border-style: solid;
-       border-color: #bbb;
-       color: #777;
-       text-shadow: 0 1px 0 #fff;
-       background-color: #f4f4f4;
-       background-image: -moz-linear-gradient(bottom,  #e4e4e4,  #f9f9f9);
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#e4e4e4), to(#f9f9f9));
-}
-
-#wp-fullscreen-modes a:hover,
-.wp-html-mode #wp-fullscreen-modes a:last-child,
-.wp-tmce-mode #wp-fullscreen-modes a:first-child {
-       color: #333;
-       border-color: #999;
-       background-color: #eee;
-       background-image: -moz-linear-gradient(bottom,  #f9f9f9,  #e0e0e0);
-       background-image: -webkit-gradient(linear, left bottom, left top, from(#f9f9f9), to(#e0e0e0));
-}
-
-#wp-fullscreen-modes a:first-child {
-       border-width: 1px;
-       -webkit-border-top-left-radius: 3px;
-       -webkit-border-bottom-left-radius: 3px;
-       border-top-left-radius: 3px;
-       border-bottom-left-radius: 3px;
-}
-
-#wp-fullscreen-modes a:last-child {
-       -webkit-border-top-right-radius: 3px;
-       -webkit-border-bottom-right-radius: 3px;
-       border-top-right-radius: 3px;
-       border-bottom-right-radius: 3px;
-}
-
-#wp-fullscreen-buttons .active a {
-       background: inherit;
-}
-
-#wp-fullscreen-buttons .hidden {
-       display: none;
-}
-
-#wp-fullscreen-buttons .disabled {
-       opacity: 0.5;
-}
-
-.wp-html-mode #wp-fullscreen-buttons div {
-       display: none;
-}
-
-.wp-html-mode #wp-fullscreen-buttons div.wp-fullscreen-both {
-       display: block;
-}
-
-#fullscreen-topbar.fullscreen-make-sticky {
-       display: block !important;
-}
-
-#wp-fullscreen-save img {
-       vertical-align: middle;
-}
-
-#wp-fullscreen-save img,
-#wp-fullscreen-save span {
-       padding-right: 4px;
-       display: none;
-}
-
-#wp-fullscreen-buttons .mce_image .mce_image {
-       background-image: url('../images/menu.png?ver=20111128');
-       background-position: -124px -38px;
-}
-
-#wp-fullscreen-buttons .mce_image .mce_image:hover {
-       background-position: -124px -6px;
-}
-
-/* =Thickbox Adjustments
--------------------------------------------------------------- */
-.fullscreen-active #TB_overlay {
-       z-index: 150100;
-}
-
-.fullscreen-active #TB_window {
-       z-index: 150102;
-}
-
-/* =TinyMCE Adjustments
--------------------------------------------------------------- */
-#wp_mce_fullscreen_ifr {
-       background: transparent;
-}
-
-#wp_mce_fullscreen_parent #wp_mce_fullscreen_tbl tr.mceFirst {
-       display : none;
-}
-
-#wp-fullscreen-container .wp_themeSkin table td {
-       vertical-align: top;
-}
-
-
 /*------------------------------------------------------------------------------
   6.0 - Admin Header
 ------------------------------------------------------------------------------*/
 /*------------------------------------------------------------------------------
   6.0 - Admin Header
 ------------------------------------------------------------------------------*/
@@ -1384,7 +1121,7 @@ form.upgrade .hint {
 #screen-options-link-wrap,
 #contextual-help-link-wrap {
        float: right;
 #screen-options-link-wrap,
 #contextual-help-link-wrap {
        float: right;
-       height: 22px;
+       height: 23px;
        padding: 0;
        margin: 0 0 0 6px;
        font-family: sans-serif;
        padding: 0;
        margin: 0 0 0 6px;
        font-family: sans-serif;
@@ -1399,10 +1136,15 @@ form.upgrade .hint {
        border-bottom-right-radius: 3px;
 }
 
        border-bottom-right-radius: 3px;
 }
 
+#screen-meta-links .screen-meta-toggle {
+       position: relative;
+       top: -1px;
+}
+
 #screen-meta-links a.show-settings {
        text-decoration: none;
        z-index: 1;
 #screen-meta-links a.show-settings {
        text-decoration: none;
        z-index: 1;
-       padding: 0 16px 0 6px;
+       padding: 1px 16px 0 6px;
        height: 22px;
        line-height: 22px;
        font-size: 12px;
        height: 22px;
        line-height: 22px;
        font-size: 12px;
@@ -1445,6 +1187,10 @@ form.upgrade .hint {
        margin: 0 5px 0 2px;
 }
 
        margin: 0 5px 0 2px;
 }
 
+.metabox-prefs .columns-prefs label input {
+       margin: 0 2px;
+}
+
 .metabox-prefs label a {
        display: none;
 }
 .metabox-prefs label a {
        display: none;
 }
@@ -1664,7 +1410,7 @@ body.no-js #adminmenu .wp-menu-toggle,
 }
 
 .folded #adminmenu div.wp-menu-image {
 }
 
 .folded #adminmenu div.wp-menu-image {
-       width: 32px;
+       width: 30px;
 }
 
 #adminmenu li {
 }
 
 #adminmenu li {
@@ -1762,6 +1508,10 @@ body.no-js #adminmenu .wp-menu-toggle,
        z-index: 1001;
 }
 
        z-index: 1001;
 }
 
+.ie8 #adminmenu li.menu-top:hover .wp-menu-arrow {
+       display: none;
+}
+
 #adminmenu .wp-menu-arrow div {
        position: absolute;
        top: 7px;
 #adminmenu .wp-menu-arrow div {
        position: absolute;
        top: 7px;
@@ -1966,9 +1716,127 @@ body.no-js #adminmenu .wp-menu-toggle,
        border-radius: 10px;
 }
 
        border-radius: 10px;
 }
 
+/* Auto-folding of the admin menu */
+@media only screen and (max-width: 900px) {
+       #wpcontent,
+       #footer {
+               margin-left: 52px;
+       }
 
 
-/* List table styles */
-.post-com-count-wrapper {
+       #adminmenuback,
+       #adminmenuwrap,
+       #adminmenu,
+       #adminmenu li.menu-top {
+               width: 32px;
+       }
+
+       #adminmenu .wp-has-current-submenu .wp-submenu {
+               display: none;
+               position: absolute;
+               width: 145px;
+               z-index: 999;
+               overflow: hidden;
+       }
+
+       #adminmenu .wp-has-current-submenu .wp-submenu.sub-open {
+               display: block;
+       }
+
+       #adminmenu li .wp-submenu,
+       #adminmenu .wp-has-current-submenu .wp-submenu {
+               top: -5px;
+               left: 26px;
+       }
+
+       #adminmenu li.focused.wp-has-current-submenu .wp-submenu,
+       #adminmenu .wp-has-current-submenu .wp-submenu.sub-open {
+               padding: 0 8px 8px 0;
+       }
+
+       #adminmenu div.wp-submenu-head {
+               display: block;
+       }
+
+       #adminmenu a.menu-top,
+       #adminmenu div.wp-menu-toggle {
+               display: none;
+       }
+
+       #adminmenu div.wp-menu-image {
+               width: 30px;
+       }
+
+       #adminmenu .wp-not-current-submenu li a {
+               padding-left: 12px;
+       }
+
+       #adminmenu li li {
+               margin-left: 0;
+       }
+
+       #adminmenu li li a {
+               padding-left: 0;
+       }
+
+       .wp-menu-arrow {
+               -moz-transform:    translate( 33px );
+               -webkit-transform: translate( 33px );
+               -o-transform:      translate( 33px );
+               -ms-transform:     translate( 33px );
+               transform:         translate( 33px );
+       }
+
+       #adminmenu li.menu-top:hover .wp-menu-arrow {
+               display: none;
+       }
+
+       #adminmenu li.current:hover .wp-menu-arrow,
+       #adminmenu li.menu-top.wp-menu-open:hover .wp-menu-arrow {
+               display: block;
+               z-index: 125;
+       }
+
+       #adminmenu li.menu-top {
+               border-width: 1px 0;
+               border-style: solid none;
+       }
+
+       #adminmenu .wp-submenu .wp-submenu-wrap {
+               margin-top: 3px;
+       }
+
+       #adminmenu .wp-has-current-submenu {
+               margin-bottom: 1px;
+       }
+
+       #adminmenu .wp-has-current-submenu.menu-top-last {
+               margin-bottom: 0;
+       }
+
+       #adminmenu .wp-has-current-submenu .wp-submenu-wrap {
+               margin-top: 4px;
+       }
+
+       #adminmenu .wp-submenu ul {
+               border-width: 0 0 0 1px;
+               border-style: solid;
+       }
+
+       #adminmenu .wp-submenu a {
+               padding-left: 10px;
+       }
+
+       #adminmenu a.wp-has-submenu {
+               margin-left: 40px;
+       }
+
+       #collapse-menu {
+               display: none;
+       }
+}
+
+/* List table styles */
+.post-com-count-wrapper {
        min-width: 22px;
        font-family: sans-serif;
 }
        min-width: 22px;
        font-family: sans-serif;
 }
@@ -2023,9 +1891,11 @@ strong .post-com-count {
   8.0 - Layout Blocks
 ------------------------------------------------------------------------------*/
 
   8.0 - Layout Blocks
 ------------------------------------------------------------------------------*/
 
-body.admin-bar #wpcontent,
-body.admin-bar #adminmenu {
+html.wp-toolbar {
        padding-top: 28px;
        padding-top: 28px;
+       -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+       box-sizing: border-box;
 }
 
 .narrow {
 }
 
 .narrow {
@@ -2054,18 +1924,184 @@ body.admin-bar #adminmenu {
        margin: 0.6em 0;
 }
 
        margin: 0.6em 0;
 }
 
+/* Screens with postboxes */
 .postbox-container {
        float: left;
 }
 
 .postbox-container {
        float: left;
 }
 
+#dashboard-widgets.columns-1 .postbox-container {
+       width: 100%;
+}
+
+#dashboard-widgets.columns-2 .postbox-container {
+       width: 49.5%;
+}
+
+#dashboard-widgets.columns-2 #postbox-container-2,
+#dashboard-widgets.columns-2 #postbox-container-3,
+#dashboard-widgets.columns-2 #postbox-container-4 {
+       float: right;
+       width: 50.5%;
+}
+
+#dashboard-widgets.columns-3 .postbox-container {
+       width: 33.5%;
+}
+
+#dashboard-widgets.columns-3 #postbox-container-1 {
+       width: 33%;
+}
+
+#dashboard-widgets.columns-3 #postbox-container-3,
+#dashboard-widgets.columns-3 #postbox-container-4 {
+       float: right;
+}
+
+#dashboard-widgets.columns-4 .postbox-container {
+       width: 25%;
+}
+
 .postbox-container .meta-box-sortables {
 .postbox-container .meta-box-sortables {
-       min-height: 350px;
+       -moz-box-sizing: border-box;
+       -webkit-box-sizing: border-box;
+       -ms-box-sizing: border-box;
+       box-sizing: border-box;
+}
+
+.postbox-container .meta-box-sortables:empty {
+       min-height: 0;
+       height: 0;
 }
 
 }
 
-.postbox-container .meta-box-sortables.empty-container,
-#side-sortables.empty-container {
+.metabox-holder .postbox-container .empty-container,
+#post-body.columns-2 #side-sortables:empty {
        border: 3px dashed #CCCCCC;
        border: 3px dashed #CCCCCC;
-       height: 350px;
+       height: 250px;
+}
+
+.metabox-holder.columns-1 .postbox-container .empty-container,
+.columns-2 #postbox-container-3 .empty-container,
+.columns-2 #postbox-container-4 .empty-container,
+.columns-3 #postbox-container-4 .empty-container {
+       border: 0 none;
+       height: 0;
+       min-height: 0;
+}
+
+#poststuff {
+       padding-top: 10px;
+}
+
+#poststuff #post-body {
+       padding: 0;
+}
+
+#post-body-content {
+       width: 100%;
+       float: left;
+}
+
+#poststuff .postbox-container {
+       width: 100%;
+}
+
+#poststuff #post-body.columns-2 {
+       margin-right: 300px;
+}
+
+#post-body.columns-2 #postbox-container-1 {
+       float: right;
+       margin-right: -300px;
+       width: 280px;
+}
+
+#post-body.columns-2 #side-sortables {
+       min-height: 250px;
+}
+
+/* one column on the dash */
+@media only screen and (max-width: 799px) {
+       #wpbody-content #dashboard-widgets .postbox-container {
+               width: 100%;
+       }
+
+       #wpbody-content .metabox-holder .postbox-container .empty-container {
+               border: 0 none;
+               height: 0;
+               min-height: 0;
+       }
+}
+
+/* two columns on the dash, but keep the setting if one is selected */
+@media only screen and (min-width: 800px) and (max-width: 1200px) {
+       #wpbody-content #dashboard-widgets .postbox-container {
+               width: 49.5%;
+       }
+
+       #wpbody-content #dashboard-widgets #postbox-container-2,
+       #wpbody-content #dashboard-widgets #postbox-container-3,
+       #wpbody-content #dashboard-widgets #postbox-container-4 {
+               float: right;
+               width: 50.5%;
+       }
+
+       #dashboard-widgets.metabox-holder .postbox-container .empty-container,
+       #dashboard-widgets #postbox-container-3 .empty-container,
+       #dashboard-widgets #postbox-container-4 .empty-container {
+               border: 0 none;
+               height: 0;
+               min-height: 0;
+       }
+
+       #wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container {
+               width: 100%;
+       }
+
+       #wpbody #wpbody-content .metabox-holder.columns-1 .postbox-container .empty-container {
+               border: 0 none;
+               height: 0;
+               min-height: 0;
+       }
+
+       /* show the radio buttons for column prefs only for one or two columns */
+       .index-php .screen-layout,
+       .index-php .columns-prefs {
+               display: block;
+       }
+
+       .columns-prefs .columns-prefs-3,
+       .columns-prefs .columns-prefs-4 {
+               display: none;
+       }
+}
+
+/* one column on the post write/edit screen */
+@media only screen and (max-width: 850px) {
+       #wpbody-content #poststuff #post-body {
+               margin: 0;
+       }
+
+       #wpbody-content #post-body.columns-2 #postbox-container-1 {
+               margin-right: 0;
+               width: 100%;
+       }
+
+       #poststuff #postbox-container-1 .empty-container,
+       #poststuff #postbox-container-1 #side-sortables:empty {
+               border: 0 none;
+               height: 0;
+               min-height: 0;
+       }
+
+       #poststuff #post-body.columns-2 #side-sortables {
+               min-height: 0;
+       }
+
+       /* hide the radio buttons for column prefs */
+       .screen-layout,
+       .columns-prefs {
+               display: none;
+       }
 }
 
 .postbox .hndle {
 }
 
 .postbox .hndle {
@@ -2121,6 +2157,10 @@ body.admin-bar #adminmenu {
        user-select: none;
 }
 
        user-select: none;
 }
 
+.stuffbox h3 {
+       cursor: auto;
+}
+
 .postbox .inside,
 .stuffbox .inside {
        padding: 0 10px;
 .postbox .inside,
 .stuffbox .inside {
        padding: 0 10px;
@@ -2156,6 +2196,10 @@ body.admin-bar #adminmenu {
   9.0 - Dashboard
 ------------------------------------------------------------------------------*/
 
   9.0 - Dashboard
 ------------------------------------------------------------------------------*/
 
+#dashboard-widgets-wrap {
+       margin: 0 -8px;
+}
+
 #wpbody-content .metabox-holder {
        padding-top: 10px;
 }
 #wpbody-content .metabox-holder {
        padding-top: 10px;
 }
@@ -2226,16 +2270,16 @@ body.admin-bar #adminmenu {
 }
 
 .welcome-panel .welcome-panel-close:before {
 }
 
 .welcome-panel .welcome-panel-close:before {
-    background: url('../images/xit.gif') 0 17% no-repeat;
-    content: ' ';
-    height: 100%;
-    width: 10px;
-    left: -12px;
-    position: absolute;
+       background: url('../images/xit.gif') 0 17% no-repeat;
+       content: ' ';
+       height: 100%;
+       width: 10px;
+       left: -12px;
+       position: absolute;
 }
 
 .welcome-panel .welcome-panel-close:hover:before {
 }
 
 .welcome-panel .welcome-panel-close:hover:before {
-    background-position: 100% 17%;
+       background-position: 100% 17%;
 }
 
 .welcome-panel .wp-badge {
 }
 
 .welcome-panel .wp-badge {
@@ -2261,7 +2305,7 @@ body.admin-bar #adminmenu {
        clear: both;
        overflow: hidden;
        position: relative;
        clear: both;
        overflow: hidden;
        position: relative;
-       padding-left: 25px;
+       padding-left: 26px;
 }
 
 .welcome-panel .welcome-panel-column {
 }
 
 .welcome-panel .welcome-panel-column {
@@ -2344,7 +2388,6 @@ table.fixed {
        width: 80px;
 }
 
        width: 80px;
 }
 
-#commentsdiv .fixed .column-author,
 #comments-form .fixed .column-author {
        width: 20%;
 }
 #comments-form .fixed .column-author {
        width: 20%;
 }
@@ -2354,28 +2397,49 @@ table.fixed {
        padding: 0;
 }
 
        padding: 0;
 }
 
-#commentsdiv.postbox .inside .row-actions {
+#commentsdiv .inside .row-actions {
        line-height:18px;
 }
 
        line-height:18px;
 }
 
-#commentsdiv.postbox .inside td {
-       padding:1em 10px;
+#commentsdiv .inside .column-author {
+       width: 25%;
+}
+
+#commentsdiv .column-comment p {
+       margin: 0.6em 0;
+       padding: 0;
+}
+
+#commentsdiv #replyrow td {
+       padding: 0;
+}
+
+#commentsdiv p {
+       padding: 8px 10px;
+       margin: 0;
+}
+
+#commentsdiv #add-new-comment {
+       border-width: 0 0 1px;
+       border-style: none none solid;
 }
 
 }
 
-#commentsdiv.postbox .inside .column-author {
-       width:33%;
+#commentsdiv .comments-box {
+       border: 0 none;
 }
 
 }
 
-#commentsdiv.postbox .inside p {
-       margin:6px 10px 8px;
+#commentsdiv .comments-box thead th {
+       background: transparent;
+       padding: 0 7px 4px;
+       font-style: italic;
 }
 
 }
 
-#commentsdiv.postbox .column-comment p {
-       margin:0.6em 0;
+#commentsdiv .comments-box tr:last-child td {
+       border-bottom: 0 none;
 }
 
 }
 
-#commentsdiv.postbox #replyrow td {
-       padding:0;
+#commentsdiv img.waiting {
+       padding-left: 5px;
 }
 
 .sorting-indicator {
 }
 
 .sorting-indicator {
@@ -2516,7 +2580,7 @@ th.asc:hover span.sorting-indicator {
        margin-top: 13px;
 }
 .screen-per-page {
        margin-top: 13px;
 }
 .screen-per-page {
-       width: 3em;
+       width: 4em;
 }
 
 #posts-filter fieldset {
 }
 
 #posts-filter fieldset {
@@ -2955,82 +3019,25 @@ input#link_url {
        max-width: 260px;
 }
 
        max-width: 260px;
 }
 
-#post-body ul.category-tabs,
-#post-body ul.add-menu-item-tabs {
-       float: left;
-       width: 120px;
-       text-align: right;
-       /* Negative margin for the sake of those without JS: all tabs display */
-       margin: 0 -120px 0 5px;
-       padding: 0;
-}
-
-#post-body ul.category-tabs li,
-#post-body ul.add-menu-item-tabs li {
-       padding: 8px;
-}
-
-#post-body ul.category-tabs li.tabs,
-#post-body ul.add-menu-item-tabs li.tabs {
-       -webkit-border-top-left-radius: 3px;
-       -webkit-border-bottom-left-radius: 3px;
-       border-top-left-radius: 3px;
-       border-bottom-left-radius: 3px;
-}
-
-.wp-tab-panel,
-.categorydiv div.tabs-panel,
-.customlinkdiv div.tabs-panel,
-.posttypediv div.tabs-panel,
-.taxonomydiv div.tabs-panel,
-#linkcategorydiv div.tabs-panel {
-       height: 200px;
-       overflow: auto;
-       padding: 0.5em 0.9em;
-       border-style: solid;
-       border-width: 1px;
-}
-
-.nav-menus-php .customlinkdiv div.tabs-panel,
-.nav-menus-php .posttypediv div.tabs-panel,
-.nav-menus-php .taxonomydiv div.tabs-panel {
-       height: auto;
-       max-height: 205px;
-}
-
-div.tabs-panel-active {
-       display:block;
-}
-
-div.tabs-panel-inactive {
-       display:none;
-}
-
-#post-body .categorydiv div.tabs-panel,
-.taxonomy div.tabs-panel,
-#post-body #linkcategorydiv div.tabs-panel {
-       margin: 0 5px 0 125px;
-}
-
 .press-this #side-sortables .category-tabs li,
 .press-this #side-sortables .category-tabs li,
-.has-right-sidebar #side-sortables .category-tabs li,
+ul.category-tabs li,
 #side-sortables .add-menu-item-tabs li,
 .wp-tab-bar li {
        display: inline;
        line-height: 1.35em;
 }
 
 #side-sortables .add-menu-item-tabs li,
 .wp-tab-bar li {
        display: inline;
        line-height: 1.35em;
 }
 
-.no-js #side-sortables .category-tabs li.hide-if-no-js {
+.no-js .category-tabs li.hide-if-no-js {
        display: none;
 }
 
        display: none;
 }
 
-#side-sortables .category-tabs a,
+.category-tabs a,
 #side-sortables .add-menu-item-tabs a,
 .wp-tab-bar a {
        text-decoration: none;
 }
 
 #side-sortables .add-menu-item-tabs a,
 .wp-tab-bar a {
        text-decoration: none;
 }
 
-#side-sortables .category-tabs {
+.category-tabs {
        margin: 8px 0 3px;
 }
 
        margin: 8px 0 3px;
 }
 
@@ -3043,20 +3050,10 @@ div.tabs-panel-inactive {
        margin-bottom: 3px;
 }
 
        margin-bottom: 3px;
 }
 
-.categorydiv ul,
-.customlinkdiv ul,
-.posttypediv ul,
-.taxonomydiv ul,
-#linkcategorydiv ul {
-       list-style: none;
-       padding: 0;
-       margin: 0;
-}
-
 #normal-sortables .postbox #replyrow .submit {
        float: none;
        margin: 0;
 #normal-sortables .postbox #replyrow .submit {
        float: none;
        margin: 0;
-       padding: 3px 7px;
+       padding: 0 7px 5px;
 }
 
 #side-sortables .submitbox .submit input,
 }
 
 #side-sortables .submitbox .submit input,
@@ -3070,36 +3067,19 @@ div.tabs-panel-inactive {
        margin: 11px 0;
 }
 
        margin: 11px 0;
 }
 
-#side-sortables .comments-box,
-#normal-sortables .comments-box {
-       border: 0 none;
-}
-
 ul.category-tabs,
 ul.add-menu-item-tabs,
 ul.wp-tab-bar {
        margin-top: 12px;
 }
 
 ul.category-tabs,
 ul.add-menu-item-tabs,
 ul.wp-tab-bar {
        margin-top: 12px;
 }
 
-#side-sortables .comments-box thead th,
-#normal-sortables .comments-box thead th {
-       background: transparent;
-       padding: 0 7px 4px;
-       font-style: italic;
-}
-
-ul.category-tabs li.tabs,
+ul.category-tabs li,
 ul.add-menu-item-tabs li.tabs,
 .wp-tab-active {
        border-style: solid solid none;
        border-width: 1px 1px 0;
 }
 
 ul.add-menu-item-tabs li.tabs,
 .wp-tab-active {
        border-style: solid solid none;
        border-width: 1px 1px 0;
 }
 
-#commentsdiv img.waiting {
-       padding-left: 5px;
-}
-
-#post-body .category-tabs li.tabs,
 #post-body .add-menu-item-tabs li.tabs {
        border-style: solid none solid solid;
        border-width: 1px 0 1px 1px;
 #post-body .add-menu-item-tabs li.tabs {
        border-style: solid none solid solid;
        border-width: 1px 0 1px 1px;
@@ -3121,28 +3101,16 @@ form#tags-filter {
        position: relative;
 }
 
        position: relative;
 }
 
-.screen-per-page {
-       width: 3em;
+/* Edit posts */
+td.post-title strong,
+td.plugin-title strong {
+       display: block;
+       margin-bottom: .2em;
 }
 
 }
 
-#posts-filter fieldset {
-       float: left;
-       margin: 0 1.5ex 1em 0;
-       padding: 0;
-}
-
-#posts-filter fieldset legend {
-       padding: 0 0 .2em 1px;
-}
-
-/* Edit posts */
-td.post-title strong, td.plugin-title strong {
-       display: block;
-       margin-bottom: .2em;
-}
-
-td.post-title p, td.plugin-title p {
-       margin: 6px 0;
+td.post-title p,
+td.plugin-title p {
+       margin: 6px 0;
 }
 
 /* Global classes */
 }
 
 /* Global classes */
@@ -3366,7 +3334,6 @@ table.diff .diff-deletedline del, table.diff .diff-addedline ins {
        margin: 0;
 }
 
        margin: 0;
 }
 
-#post-body ul.category-tabs,
 #post-body ul.add-menu-item-tabs {
        float: left;
        width: 120px;
 #post-body ul.add-menu-item-tabs {
        float: left;
        width: 120px;
@@ -3376,12 +3343,10 @@ table.diff .diff-deletedline del, table.diff .diff-addedline ins {
        padding: 0;
 }
 
        padding: 0;
 }
 
-#post-body ul.category-tabs li,
 #post-body ul.add-menu-item-tabs li {
        padding: 8px;
 }
 
 #post-body ul.add-menu-item-tabs li {
        padding: 8px;
 }
 
-#post-body ul.category-tabs li.tabs,
 #post-body ul.add-menu-item-tabs li.tabs {
        -webkit-border-top-left-radius: 3px;
        -webkit-border-bottom-left-radius: 3px;
 #post-body ul.add-menu-item-tabs li.tabs {
        -webkit-border-top-left-radius: 3px;
        -webkit-border-bottom-left-radius: 3px;
@@ -3389,11 +3354,11 @@ table.diff .diff-deletedline del, table.diff .diff-addedline ins {
        border-bottom-left-radius: 3px;
 }
 
        border-bottom-left-radius: 3px;
 }
 
+.wp-tab-panel,
 .categorydiv div.tabs-panel,
 .customlinkdiv div.tabs-panel,
 .posttypediv div.tabs-panel,
 .categorydiv div.tabs-panel,
 .customlinkdiv div.tabs-panel,
 .posttypediv div.tabs-panel,
-.taxonomydiv div.tabs-panel,
-#linkcategorydiv div.tabs-panel {
+.taxonomydiv div.tabs-panel {
        height: 200px;
        overflow: auto;
        padding: 0.5em 0.9em;
        height: 200px;
        overflow: auto;
        padding: 0.5em 0.9em;
@@ -3416,17 +3381,14 @@ div.tabs-panel-inactive {
        display:none;
 }
 
        display:none;
 }
 
-#post-body .categorydiv div.tabs-panel,
-.taxonomy div.tabs-panel,
-#post-body #linkcategorydiv div.tabs-panel {
+.colunms-1 .categorydiv div.tabs-panel,
+.taxonomy div.tabs-panel {
        margin: 0 5px 0 125px;
 }
 
        margin: 0 5px 0 125px;
 }
 
-.categorydiv ul,
 .customlinkdiv ul,
 .posttypediv ul,
 .customlinkdiv ul,
 .posttypediv ul,
-.taxonomydiv ul,
-#linkcategorydiv ul {
+.taxonomydiv ul {
        list-style: none;
        padding: 0;
        margin: 0;
        list-style: none;
        padding: 0;
        margin: 0;
@@ -3439,8 +3401,7 @@ ul.export-filters,
 .categorydiv ul.categorychecklist ul,
 .customlinkdiv ul.categorychecklist ul,
 .posttypediv ul.categorychecklist ul,
 .categorydiv ul.categorychecklist ul,
 .customlinkdiv ul.categorychecklist ul,
 .posttypediv ul.categorychecklist ul,
-.taxonomydiv ul.categorychecklist ul,
-#linkcategorydiv ul.categorychecklist ul {
+.taxonomydiv ul.categorychecklist ul {
        margin-left: 18px;
 }
 
        margin-left: 18px;
 }
 
@@ -3589,6 +3550,37 @@ p.popular-tags a {
        text-decoration: underline;
 }
 
        text-decoration: underline;
 }
 
+/* links tables */
+table.links-table {
+       width: 100%;
+}
+
+.links-table th {
+       font-weight: normal;
+       text-align: left;
+       vertical-align: top;
+       min-width: 80px;
+       width: 20%;
+       word-wrap: break-word;
+}
+
+.links-table th,
+.links-table td {
+       padding: 5px 0;
+}
+
+.links-table td label {
+       margin-right: 8px;
+}
+
+.links-table td input[type="text"],
+.links-table td textarea {
+       width: 100%;
+}
+
+.links-table #link_rel {
+       max-width: 280px;
+}
 
 /*------------------------------------------------------------------------------
   14.0 - Media Screen
 
 /*------------------------------------------------------------------------------
   14.0 - Media Screen
@@ -3758,9 +3750,9 @@ abbr.required {
 
 .media-item .progress {
        float: right;
 
 .media-item .progress {
        float: right;
-    height: 22px;
-    margin: 6px 10px 0 0;
-    width: 200px;
+       height: 22px;
+       margin: 6px 10px 0 0;
+       width: 200px;
        line-height: 2em;
        padding: 0;
        overflow: hidden;
        line-height: 2em;
        padding: 0;
        overflow: hidden;
@@ -3824,14 +3816,14 @@ abbr.required {
 .media-upload-form .media-item.error p,
 .media-item .error-div {
        line-height: 16px;
 .media-upload-form .media-item.error p,
 .media-item .error-div {
        line-height: 16px;
-       font-size: 12px;
-       margin: 10px;
+       margin: 5px 10px;
        padding: 0;
 }
 
 .media-item .error-div a.dismiss {
        padding: 0;
 }
 
 .media-item .error-div a.dismiss {
+       display: block;
        float: right;
        float: right;
-       padding-left: 15px;
+       margin: 5px 4px 0 15px;
 }
 
 /*------------------------------------------------------------------------------
 }
 
 /*------------------------------------------------------------------------------
@@ -4396,22 +4388,26 @@ span.imgedit-scale-warn {
 ------------------------------------------------------------------------------*/
 
 .theme-install-php .tablenav {
 ------------------------------------------------------------------------------*/
 
 .theme-install-php .tablenav {
-       height:auto;
+       height: auto;
+}
+
+h3.available-themes {
+       margin: 0 0 1em;
+       float: left;
 }
 
 .available-theme {
        display: inline-block;
 }
 
 .available-theme {
        display: inline-block;
-       margin-bottom: 10px;
-       margin-right: 25px;
+       margin-right: 10px;
        overflow: hidden;
        overflow: hidden;
-       padding: 20px;
+       padding: 20px 20px 20px 0;
        vertical-align: top;
        vertical-align: top;
-       width: 240px;
+       width: 300px;
 }
 
 }
 
-.available-theme a.screenshot {
-       width: 240px;
-       height: 180px;
+.available-theme .screenshot {
+       width: 300px;
+       height: 225px;
        display: block;
        border-width: 1px;
        border-style: solid;
        display: block;
        border-width: 1px;
        border-style: solid;
@@ -4420,50 +4416,168 @@ span.imgedit-scale-warn {
 }
 
 .available-theme img {
 }
 
 .available-theme img {
-       width: 240px;
+       width: 300px;
 }
 
 .available-theme h3 {
 }
 
 .available-theme h3 {
-       margin: 15px 0 5px;
+       margin: 15px 0 0;
+}
+
+.available-theme .theme-author {
+       line-height: 18px;
+}
+
+.available-theme .action-links {
+       margin-top: 10px;
+       overflow: hidden;
+}
+
+#current-theme .theme-info li,
+.theme-options li,
+.available-theme .action-links li {
+       float: left;
+       padding-right: 10px;
+       margin-right: 10px;
+       border-right: 1px solid #dfdfdf;
+}
+
+.available-theme .action-links li {
+       padding-right: 8px;
+       margin-right: 8px;
+}
+
+#current-theme .theme-info li:last-child,
+.theme-options li:last-child,
+.available-theme .action-links li:last-child {
+       padding-right: 0;
+       margin-right: 0;
+       border-right: 0;
+}
+
+.available-theme .action-links .delete-theme {
+       float: right;
+       margin-left: 8px;
+       margin-right: 0;
+}
+
+.available-theme .action-links .delete-theme a {
+       color: red;
+       padding: 2px;
+}
+
+.available-theme .action-links .delete-theme a:hover {
+       background: red;
+       color: #fff;
+       text-decoration: none;
+}
+
+.available-theme .action-links p {
+       float: left;
 }
 
 #current-theme {
 }
 
 #current-theme {
-       margin: 1em 0 1.5em;
+       margin: 20px 0 10px;
+       padding: 0 0 20px;
+       border-bottom: 1px solid #dfdfdf;
+       overflow: hidden;
 }
 
 }
 
-#current-theme a {
-       border-bottom: none;
+#current-theme.has-screenshot {
+       padding-left: 330px;
 }
 
 #current-theme h3 {
 }
 
 #current-theme h3 {
-       font-size: 17px;
-       font-weight: normal;
        margin: 0;
        margin: 0;
+       font-size: 12px;
+       font-weight: normal;
+       color: #999;
+}
+
+#current-theme h4 {
+       margin: 3px 0 16px;
+       font-size: 20px;
+}
+
+#current-theme h4 span {
+       margin-left: 20px;
+       font-size: 12px;
+       font-weight: normal;
+}
+
+#current-theme a {
+       border-bottom: none;
+}
+
+#current-theme .theme-info {
+       margin: 1em 0;
+       overflow: hidden;
 }
 
 #current-theme .theme-description {
        margin-top: 5px;
 }
 
 #current-theme .theme-description {
        margin-top: 5px;
+       max-width: 600px;
+       line-height: 1.6em;
 }
 
 #current-theme img {
        float: left;
 }
 
 #current-theme img {
        float: left;
+       width: 300px;
+       margin-left: -330px;
+
        border-width: 1px;
        border-style: solid;
        border-width: 1px;
        border-style: solid;
-       margin-right: 1em;
-       margin-bottom: 1.5em;
-       width: 150px;
+}
+
+.theme-options {
+       overflow: hidden;
+       font-size: 14px;
+       padding-bottom: 10px;
+}
+
+.theme-options .load-customize {
+       margin-right: 30px;
+       float: left;
 }
 
 .theme-options span {
 }
 
 .theme-options span {
+       float: left;
+       margin-right: 10px;
        text-transform: uppercase;
        text-transform: uppercase;
-       font-size: 13px;
+       font-size: 11px;
+       line-height: 18px;
+       color: #999;
 }
 
 }
 
-.theme-options a {
-       font-size: 15px;
+.theme-options ul {
+       float: left;
+       margin: 0;
+}
+
+/* Allow for three-up on 1024px wide screens, e.g. tablets */
+@media only screen and (max-width: 1200px) {
+       .available-theme,
+       .available-theme .screenshot,
+       #current-theme img {
+               width: 240px;
+       }
+
+       .available-theme .screenshot {
+               height: 180px;
+       }
+
+       .available-theme img {
+               width: 100%;
+       }
+
+       #current-theme.has-screenshot {
+               padding-left: 270px;
+       }
+
+       #current-theme img {
+               margin-left: -270px;
+       }
 }
 
 }
 
-#post-body ul.category-tabs li.tabs a,
 #post-body ul.add-menu-item-tabs li.tabs a,
 #TB_window #TB_title a.tb-theme-preview-link,
 #TB_window #TB_title a.tb-theme-preview-link:visited {
 #post-body ul.add-menu-item-tabs li.tabs a,
 #TB_window #TB_title a.tb-theme-preview-link,
 #TB_window #TB_title a.tb-theme-preview-link:visited {
@@ -4494,7 +4608,6 @@ span.imgedit-scale-warn {
 
 .appearance_page_custom-header #headimg {
        border: 1px solid #DFDFDF;
 
 .appearance_page_custom-header #headimg {
        border: 1px solid #DFDFDF;
-       min-height: 100px;
        width: 100%;
 }
 
        width: 100%;
 }
 
@@ -4646,15 +4759,30 @@ input.button-highlighted,
        padding: 5px 7px 0;
 }
 
        padding: 5px 7px 0;
 }
 
-#wpbody-content .plugins .plugin-title, #wpbody-content .plugins .theme-title {
+.plugins .update th,
+.plugins .update td {
+       border-bottom: 0;
+}
+.plugin-update-tr td {
+       border-top: 0;
+}
+
+#wpbody-content .plugins .plugin-title,
+#wpbody-content .plugins .theme-title {
        padding-right: 12px;
        white-space:nowrap;
 }
 
        padding-right: 12px;
        white-space:nowrap;
 }
 
-.plugins .second, .plugins .row-actions-visible {
+.plugins .second,
+.plugins .row-actions-visible {
        padding: 0 0 5px;
 }
 
        padding: 0 0 5px;
 }
 
+.plugins .update .second,
+.plugins .update .row-actions-visible {
+       padding-bottom: 0;
+}
+
 .plugins-php .widefat tfoot th,
 .plugins-php .widefat tfoot td {
        border-top-style: solid;
 .plugins-php .widefat tfoot th,
 .plugins-php .widefat tfoot td {
        border-top-style: solid;
@@ -4710,33 +4838,24 @@ input.button-highlighted,
 
 .pressthis a {
        display: inline-block;
 
 .pressthis a {
        display: inline-block;
-       width: 113px;
        position: relative;
        cursor: move;
        color: #333;
        background: #dfdfdf;
        position: relative;
        cursor: move;
        color: #333;
        background: #dfdfdf;
-       background-image: -webkit-gradient(
-               linear,
-               left bottom,
-               left top,
-               color-stop(0.07, rgb(230,230,230)),
-               color-stop(0.77, rgb(216,216,216))
-       );
-       background-image: -moz-linear-gradient(
-               center bottom,
-               rgb(230,230,230) 7%,
-               rgb(216,216,216) 77%
-       );
-       background-repeat: no-repeat;
-       background-image-position: 10px 8px;
+       background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0.07, #e6e6e6), color-stop(0.77, #d8d8d8));
+       background-image: -webkit-linear-gradient(bottom, #e6e6e6 7%, #d8d8d8 77%);
+       background-image: -moz-linear-gradient(bottom, #e6e6e6 7%, #d8d8d8 77%);
+       background-image: -ms-linear-gradient(bottom, #e6e6e6 7%, #d8d8d8 77%);
+       background-image: -o-linear-gradient(bottom, #e6e6e6 7%, #d8d8d8 77%);
+       background-image: linear-gradient(bottom, #e6e6e6 7%, #d8d8d8 77%);
        -webkit-border-radius: 5px;
        border-radius: 5px;
        -webkit-border-radius: 5px;
        border-radius: 5px;
-       border: 1px #b4b4b4 solid;
+       border: 1px solid #b4b4b4;
        font-style: normal;
        line-height: 16px;
        font-size: 14px;
        text-decoration: none;
        font-style: normal;
        line-height: 16px;
        font-size: 14px;
        text-decoration: none;
-       text-shadow: #fff 0 1px 0px;
+       text-shadow: 0 1px 0px #fff;
 }
 
 .pressthis a:hover,
 }
 
 .pressthis a:hover,
@@ -4754,8 +4873,9 @@ input.button-highlighted,
 }
 
 .pressthis a span {
 }
 
 .pressthis a span {
-       background: url(../images/press-this.png) no-repeat -45px 5px ;
-       padding: 8px 0 8px 32px;
+       background: url(../images/press-this.png?v=20120502) no-repeat 0px 5px;
+       padding: 8px 11px 8px 27px;
+       margin: 0 5px;
        display: inline-block;
 }
 
        display: inline-block;
 }
 
@@ -4828,14 +4948,14 @@ input.button-highlighted,
 .about-wrap {
        position: relative;
        margin: 25px 40px 0 20px;
 .about-wrap {
        position: relative;
        margin: 25px 40px 0 20px;
-       min-width: 770px;
        max-width: 1050px; /* readability */
 
        font-size: 15px;
 }
        max-width: 1050px; /* readability */
 
        font-size: 15px;
 }
+
 .about-wrap div.updated,
 .about-wrap div.error {
 .about-wrap div.updated,
 .about-wrap div.error {
-    display: none !important;
+       display: none !important;
 }
 
 /* Typography */
 }
 
 /* Typography */
@@ -4843,12 +4963,14 @@ input.button-highlighted,
 .about-wrap p {
        line-height: 1.6em;
 }
 .about-wrap p {
        line-height: 1.6em;
 }
+
 .about-wrap h1 {
        margin: 0.2em 200px 0 0;
        line-height: 1.2em;
        font-size: 2.8em;
        font-weight: 200;
 }
 .about-wrap h1 {
        margin: 0.2em 200px 0 0;
        line-height: 1.2em;
        font-size: 2.8em;
        font-weight: 200;
 }
+
 .about-text,
 .about-description,
 .about-wrap li.wp-person a.web {
 .about-text,
 .about-description,
 .about-wrap li.wp-person a.web {
@@ -4857,14 +4979,17 @@ input.button-highlighted,
        line-height: 1.6em;
        font-size: 20px;
 }
        line-height: 1.6em;
        font-size: 20px;
 }
+
 .about-description {
        margin-top: 1.4em;
 }
 .about-description {
        margin-top: 1.4em;
 }
+
 .about-text {
        margin: 1em 200px 1.4em 0;
        min-height: 60px;
        font-size: 24px;
 }
 .about-text {
        margin: 1em 200px 1.4em 0;
        min-height: 60px;
        font-size: 24px;
 }
+
 .about-wrap h3 {
        font-size: 24px;
        margin-bottom: 1em;
 .about-wrap h3 {
        font-size: 24px;
        margin-bottom: 1em;
@@ -4872,34 +4997,40 @@ input.button-highlighted,
 }
 
 .about-wrap .changelog {
 }
 
 .about-wrap .changelog {
-       padding-bottom: 10px;
        overflow: hidden;
 }
        overflow: hidden;
 }
+
 .about-wrap .changelog li {
        list-style-type: disc;
        margin-left: 3em;
 }
 .about-wrap .changelog li {
        list-style-type: disc;
        margin-left: 3em;
 }
+
+.about-wrap .feature-section {
+       padding-bottom: 20px;
+}
+
 .about-wrap .feature-section h4 {
        margin-bottom: 0.6em;
 }
 .about-wrap .feature-section h4 {
        margin-bottom: 0.6em;
 }
+
 .about-wrap .feature-section p {
        margin-top: 0.6em;
 }
 .about-wrap .feature-section p {
        margin-top: 0.6em;
 }
+
 .about-wrap code {
        font-size: 14px;
 }
 .about-wrap code {
        font-size: 14px;
 }
-html.ie8 .about-wrap img.element-screenshot {
-       padding: 2px;
-}
 
 /* Point Releases */
 
 .about-wrap .point-releases {
        margin-top: 5px;
 }
 
 /* Point Releases */
 
 .about-wrap .point-releases {
        margin-top: 5px;
 }
+
 .about-wrap .changelog.point-releases h3 {
        padding-top: 35px;
 }
 .about-wrap .changelog.point-releases h3 {
        padding-top: 35px;
 }
+
 .about-wrap .changelog.point-releases h3:first-child {
        padding-top: 7px;
 }
 .about-wrap .changelog.point-releases h3:first-child {
        padding-top: 7px;
 }
@@ -4910,15 +5041,13 @@ html.ie8 .about-wrap img.element-screenshot {
        padding-top: 142px;
        height: 50px;
        width: 173px;
        padding-top: 142px;
        height: 50px;
        width: 173px;
-
        font-weight: bold;
        font-size: 14px;
        text-align: center;
        font-weight: bold;
        font-size: 14px;
        text-align: center;
-
        margin: 0 -5px;
        margin: 0 -5px;
-
        background: url('../images/wp-badge.png?ver=20111120') no-repeat;
 }
        background: url('../images/wp-badge.png?ver=20111120') no-repeat;
 }
+
 .about-wrap .wp-badge {
        position: absolute;
        top: 0;
 .about-wrap .wp-badge {
        position: absolute;
        top: 0;
@@ -4930,12 +5059,14 @@ html.ie8 .about-wrap img.element-screenshot {
 .about-wrap h2.nav-tab-wrapper {
        padding-left: 6px;
 }
 .about-wrap h2.nav-tab-wrapper {
        padding-left: 6px;
 }
+
 .about-wrap h2 .nav-tab {
        padding: 4px 10px 6px;
        margin: 0 3px -1px 0;
        font-size: 18px;
        vertical-align: top;
 }
 .about-wrap h2 .nav-tab {
        padding: 4px 10px 6px;
        margin: 0 3px -1px 0;
        font-size: 18px;
        vertical-align: top;
 }
+
 .about-wrap h2 .nav-tab-active {
        font-weight: bold;
        padding-top: 3px;
 .about-wrap h2 .nav-tab-active {
        font-weight: bold;
        padding-top: 3px;
@@ -4943,128 +5074,86 @@ html.ie8 .about-wrap img.element-screenshot {
 
 /* Changelog / Update screen */
 
 
 /* Changelog / Update screen */
 
-.about-wrap .feature-section .left-feature,
-.about-wrap .feature-section img,
-.about-wrap .feature-section .right-feature {
-       float: left;
-}
-
-.about-wrap .feature-section {
-       min-height: 100px;
-       overflow: hidden;
-       clear: both;
-}
 .about-wrap .feature-section img {
 .about-wrap .feature-section img {
-       margin: 5px auto;
-
        border: none;
        border: none;
-
+       margin: 0 1.94% 10px 0;
        -webkit-border-radius: 3px;
        border-radius: 3px;
 }
        -webkit-border-radius: 3px;
        border-radius: 3px;
 }
-html.ie8 .about-wrap .feature-section img,
-html.ie8 .about-wrap .feature-section .image-mask {
-       border-width: 1px;
-       border-style: solid;
-}
-
-.about-wrap .feature-section.text-features {
-       width: 31%;
-
-       float: left;
-       overflow: visible;
-}
-.about-wrap .feature-section.text-features div {
-       width: 112%;
-}
-.about-wrap .feature-section.screenshot-features {
-       width: 67%;
-       margin-top: 1.33em;
 
 
-       float: right;
-       clear: none;
-       overflow: visible;
+.about-wrap .feature-section img.image-50 {
+       max-width: 50%;
 }
 
 }
 
-.about-wrap .feature-section.screenshot-features .angled-right {
-       margin-top: -1em;
-       margin-left: 2.5em;
-}
-.about-wrap .feature-section.screenshot-features .angled-right p {
-       margin-left: 290px;
+.about-wrap .feature-section img.image-30 {
+       max-width: 31.2381%;
 }
 
 }
 
-.about-wrap .feature-section .angled-right h4,
-.about-wrap .feature-section .angled-left h4 {
-       margin-top: 0;
-}
-.about-wrap .feature-section .angled-right img,
-.about-wrap .feature-section .angled-left img {
-       margin-top: .1em;
-       margin-right: 30px;
+.ie8 .about-wrap .feature-section img {
+       border-width: 1px;
+       border-style: solid;
 }
 
 .about-wrap .feature-section.three-col {
        padding-top: 15px;
        margin-bottom: 0;
 }
 }
 
 .about-wrap .feature-section.three-col {
        padding-top: 15px;
        margin-bottom: 0;
 }
+
 .about-wrap .feature-section.three-col div {
        width: 30%;
        margin-right: 4.999999999%;
 .about-wrap .feature-section.three-col div {
        width: 30%;
        margin-right: 4.999999999%;
-
        float: left;
 }
        float: left;
 }
+
 .about-wrap .feature-section.three-col h4 {
        margin:  0 0 0.6em 0;
 }
 .about-wrap .feature-section.three-col h4 {
        margin:  0 0 0.6em 0;
 }
+
 .about-wrap .feature-section.three-col img {
        margin: 0.5em 0 0.5em 5px;
        max-width: 100%;
 .about-wrap .feature-section.three-col img {
        margin: 0.5em 0 0.5em 5px;
        max-width: 100%;
-
        float: none;
 }
        float: none;
 }
-html.ie8 .about-wrap .feature-section.three-col img {
+
+.ie8 .about-wrap .feature-section.three-col img {
        margin-left: 0;
 }
        margin-left: 0;
 }
+
 .about-wrap .feature-section.three-col .last-feature {
        margin-right: 0;
 }
 
 .about-wrap .feature-section.three-col .last-feature {
        margin-right: 0;
 }
 
-.about-wrap .feature-section .feature-images {
-       width: 300px;
-       position: absolute;
-       margin-top: 1.1em;
-}
-.about-wrap .feature-section .feature-images img {
-       width: 250px;
-       height: 150px;
-       margin-right: 5px;
-}
-.about-wrap .feature-section.images-stagger-left,
-.about-wrap .feature-section.images-stagger-right {
-       min-height: 265px;
-}
-.about-wrap .feature-section.images-stagger-right .angled-right,
-.about-wrap .feature-section.images-stagger-left .angled-left {
-       margin-bottom: -30px;
+.about-wrap .three-col-images {
+       text-align: center;
 }
 }
-.about-wrap .feature-section.images-stagger-left .angled-left {
-       margin-left: 5px;
+
+.about-wrap .three-col-images img {
+       margin: 0 0 10px;
 }
 }
-.about-wrap .feature-section .angled-right {
+
+.about-wrap .three-col-images .last-feature {
        float: right;
 }
        float: right;
 }
-.about-wrap .feature-section.images-stagger-right .feature-images {
-       right: 0;
+
+.about-wrap .three-col-images .first-feature {
+       float: left;
 }
 }
-.about-wrap .feature-section.images-stagger-left .feature-images {
-       left: 0;
+
+.about-wrap .feature-section.images-stagger-right img {
+       float: right;
+       margin: 0 5px 12px 12px;
 }
 }
-.about-wrap .feature-section.images-stagger-right .left-feature {
-       margin-right: 350px;
+
+.about-wrap .feature-section.images-stagger-left img {
+       float: left;
+       margin: 0 12px 12px 5px;
 }
 }
-.about-wrap .feature-section.images-stagger-left .right-feature {
-       margin-left: 350px;
+
+@media only screen and (max-width: 900px) {
+       .about-wrap .feature-section.images-stagger-left img,
+       .about-wrap .feature-section.images-stagger-right img {
+               clear: both;
+       }
 }
 
 /* Return to Dashboard Home link */
 }
 
 /* Return to Dashboard Home link */
@@ -5074,80 +5163,388 @@ html.ie8 .about-wrap .feature-section.three-col img {
        font-size: 14px;
        font-weight: bold;
 }
        font-size: 14px;
        font-weight: bold;
 }
+
 .about-wrap .return-to-dashboard a {
        text-decoration: none;
        padding: 0 5px;
 }
 
 .about-wrap .return-to-dashboard a {
        text-decoration: none;
        padding: 0 5px;
 }
 
-/* Credits */
-
-.about-wrap h4.wp-people-group {
-       margin-top: 2.6em;
-       font-size: 16px;
+/* Credits */
+
+.about-wrap h4.wp-people-group {
+       margin-top: 2.6em;
+       font-size: 16px;
+}
+
+.about-wrap ul.wp-people-group {
+       overflow: hidden;
+       padding: 5px;
+       margin: 0 -15px 0 -5px;
+}
+
+.about-wrap ul.compact {
+       margin-bottom: 0
+}
+
+.about-wrap li.wp-person {
+       float: left;
+       margin-right: 10px;
+}
+
+.about-wrap li.wp-person img.gravatar {
+       float: left;
+       margin: 0 10px 10px 0;
+       padding: 2px;
+       width: 60px;
+       height: 60px;
+}
+
+.about-wrap ul.compact li.wp-person img.gravatar {
+       width: 30px;
+       height: 30px;
+}
+
+.about-wrap li.wp-person {
+       height: 70px;
+       width: 280px;
+       padding-bottom: 15px;
+}
+
+.about-wrap ul.compact li.wp-person {
+       height: auto;
+       width: 180px;
+       padding-bottom: 0;
+       margin-bottom: 0;
+}
+
+.about-wrap #wp-people-group-validators + p.wp-credits-list {
+       margin-top: 0;
+}
+
+.about-wrap li.wp-person a.web {
+       display: block;
+       margin: 6px 0 2px;
+       font-size: 16px;
+       text-decoration: none;
+}
+
+.about-wrap p.wp-credits-list a {
+       white-space: nowrap;
+}
+
+/* Freedoms */
+
+.freedoms-php .about-wrap ol {
+       margin: 40px 60px;
+}
+
+.freedoms-php .about-wrap ol li {
+       list-style-type: decimal;
+       font-weight: bold;
+}
+
+.freedoms-php .about-wrap ol p {
+       font-weight: normal;
+       margin: 0.6em 0;
+}
+
+/*------------------------------------------------------------------------------
+  23.0 - Full Overlay w/ Sidebar
+------------------------------------------------------------------------------*/
+
+body.full-overlay-active {
+       overflow: hidden;
+}
+
+.wp-full-overlay {
+       background: #fff;
+       z-index: 500000;
+       position: fixed;
+       overflow: visible;
+       top: 0;
+       bottom: 0;
+       left: 0;
+       right: 0;
+       height: 100%;
+       min-width: 0;
+}
+
+.wp-full-overlay-sidebar {
+       -webkit-box-sizing: border-box;
+       -moz-box-sizing:    border-box;
+       box-sizing:         border-box;
+
+       position: fixed;
+       width: 300px;
+       height: 100%;
+       top: 0;
+       bottom: 0;
+       left: 0;
+       padding: 0;
+       margin: 0;
+       z-index: 10;
+       overflow: auto;
+       background: #f5f5f5;
+       border-right: 1px solid rgba( 0, 0, 0, 0.2 );
+}
+
+.wp-full-overlay.collapsed .wp-full-overlay-sidebar {
+       overflow: visible;
+}
+
+.wp-full-overlay.collapsed,
+.wp-full-overlay.expanded .wp-full-overlay-sidebar {
+       margin-left: 0 !important;
+}
+
+.wp-full-overlay.expanded {
+       margin-left: 300px;
+}
+
+.wp-full-overlay.collapsed .wp-full-overlay-sidebar {
+       margin-left: -300px;
+}
+
+.wp-full-overlay-sidebar:after {
+       content: '';
+       display: block;
+       position: absolute;
+       top: 0;
+       bottom: 0;
+       right: 0;
+       width: 3px;
+       box-shadow: -5px 0 4px -4px rgba(0, 0, 0, 0.1) inset;
+       z-index: 1000;
+}
+
+.wp-full-overlay-main {
+       position: absolute;
+       left: 0;
+       right: 0;
+       top: 0;
+       bottom: 0;
+       height: 100%;
+}
+
+.wp-full-overlay-sidebar .wp-full-overlay-header,
+.wp-full-overlay-sidebar .wp-full-overlay-footer {
+       position: absolute;
+       left: 0;
+       right: 0;
+       height: 45px;
+       padding: 0 20px;
+       line-height: 45px;
+       z-index: 10;
+       margin: 0;
+}
+
+.wp-full-overlay-sidebar .wp-full-overlay-header {
+       top: 0;
+       border-top: 0;
+       border-bottom: 1px solid #fff;
+       box-shadow: inset 0 -1px 0 0px #dfdfdf;
+}
+
+.wp-full-overlay-sidebar .wp-full-overlay-footer {
+       bottom: 0;
+       border-bottom: 0;
+       border-top: 1px solid #dfdfdf;
+       box-shadow: inset 0 1px 0 0px #fff;
+}
+
+.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content {
+       position: absolute;
+       top: 45px;
+       bottom: 45px;
+       left: 0;
+       right: 0;
+       overflow: auto;
+}
+
+/* Close Link */
+.wp-full-overlay .close-full-overlay {
+       text-decoration: none;
+}
+
+/* Collapse Button */
+.wp-full-overlay .collapse-sidebar {
+       position: absolute;
+       bottom: 12px;
+       left: 0;
+       z-index: 50;
+       display: block;
+       width: 19px;
+       height: 19px;
+       margin-left: 15px;
+       padding: 0;
+       border-radius: 50%;
+       text-decoration: none;
+}
+
+.wp-full-overlay.collapsed .collapse-sidebar {
+       position: absolute;
+       left: 100%;
+}
+
+.wp-full-overlay .collapse-sidebar-arrow {
+       position: absolute;
+       margin-top: 2px;
+       margin-left: 2px;
+       display: block;
+       width: 15px;
+       height: 15px;
+       background: transparent url('../images/arrows.png') no-repeat 0 -72px;
+}
+
+.wp-full-overlay.collapsed .collapse-sidebar-arrow {
+       background-position: 0 -108px;
+}
+
+.wp-full-overlay .collapse-sidebar-label {
+       position: absolute;
+       left: 100%;
+       color: #808080;
+       line-height: 20px;
+       margin-left: 10px;
+}
+
+.wp-full-overlay.collapsed .collapse-sidebar-label {
+       display: none;
+}
+
+.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-label {
+       color: #666;
+}
+
+/* Animations */
+.wp-full-overlay,
+.wp-full-overlay-sidebar,
+.wp-full-overlay .collapse-sidebar,
+.wp-full-overlay-main {
+       -webkit-transition-property: left, right, top, bottom, width, margin;
+       -moz-transition-property:    left, right, top, bottom, width, margin;
+       -ms-transition-property:     left, right, top, bottom, width, margin;
+       -o-transition-property:      left, right, top, bottom, width, margin;
+       transition-property:         left, right, top, bottom, width, margin;
+
+       -webkit-transition-duration: 0.2s;
+       -moz-transition-duration:    0.2s;
+       -ms-transition-duration:     0.2s;
+       -o-transition-duration:      0.2s;
+       transition-duration:         0.2s;
+}
+
+/*------------------------------------------------------------------------------
+  24.0 - Customize Loader
+------------------------------------------------------------------------------*/
+
+.no-customize-support .hide-if-no-customize,
+.customize-support .hide-if-customize {
+       display: none;
+}
+
+#customize-container {
+       display: none;
+       background: #fff;
+       z-index: 500000;
+       position: fixed;
+       overflow: visible;
+       top: 0;
+       bottom: 0;
+       left: 0;
+       right: 0;
+       height: 100%;
+}
+
+.customize-active #customize-container {
+       display: block;
+}
+
+.customize-loading #customize-container iframe {
+       opacity: 0;
+}
+
+.customize-loading #customize-container {
+       background: #fff url("../images/wpspin_light.gif") no-repeat fixed center center;
 }
 }
-.about-wrap ul.wp-people-group {
-       overflow: hidden;
-       padding: 5px;
-       margin: 0 -15px 0 -5px;
+
+#customize-container iframe,
+#theme-installer iframe {
+       height: 100%;
+       width: 100%;
+       z-index: 20;
+
+       -webkit-transition: opacity 0.3s;
+       -moz-transition:    opacity 0.3s;
+       -ms-transition:     opacity 0.3s;
+       -o-transition:      opacity 0.3s;
+       transition:         opacity 0.3s;
 }
 }
-.about-wrap ul.compact {
-       margin-bottom: 0
+
+#customize-container .collapse-sidebar {
+       bottom: 16px;
 }
 }
-.about-wrap li.wp-person {
-       float: left;
-       margin-right: 10px;
+
+#theme-installer {
+       display: none;
 }
 }
-.about-wrap li.wp-person img.gravatar {
-       float: left;
-       margin: 0 10px 10px 0;
-       padding: 2px;
-       width: 60px;
-       height: 60px;
+
+#theme-installer.single-theme {
+       display: block;
 }
 }
-.about-wrap ul.compact li.wp-person img.gravatar {
-       width: 30px;
-       height: 30px;
+
+.install-theme-info {
+       display: none;
+       padding: 10px 20px 20px;
 }
 }
-.about-wrap li.wp-person {
-       height: 70px;
-       width: 280px;
-       padding-bottom: 15px;
+
+.single-theme .install-theme-info {
+       padding-top: 15px;
 }
 }
-.about-wrap ul.compact li.wp-person {
-       height: auto;
-       width: 180px;
-       padding-bottom: 0;
-       margin-bottom: 0;
+
+#theme-installer .install-theme-info {
+       display: block;
 }
 }
-.about-wrap #wp-people-group-validators + p.wp-credits-list {
-       margin-top: 0;
+
+.install-theme-info .theme-install {
+       float: right;
+       margin-top: 18px;
 }
 }
-.about-wrap li.wp-person a.web {
-       display: block;
-       margin: 6px 0 2px;
+
+.install-theme-info .theme-name {
        font-size: 16px;
        font-size: 16px;
-       text-decoration: none;
+       line-height: 24px;
+       margin-bottom: 0;
 }
 }
-.about-wrap p.wp-credits-list a {
-       white-space: nowrap;
+
+.install-theme-info .theme-screenshot {
+       margin-top: 15px;
+       width: 258px;
+       border: 1px solid #ccc;
 }
 
 }
 
-/* Freedoms */
+.install-theme-info .theme-details {
+       overflow: hidden;
+}
 
 
-.freedoms-php .about-wrap ol {
-       margin: 40px 60px;
+.theme-details .theme-version {
+       margin: 15px 0;
+       float: left;
 }
 }
-.freedoms-php .about-wrap ol li {
-       list-style-type: decimal;
-       font-weight: bold;
+
+.theme-details .star-holder {
+       margin: 14px 0;
+       float: right;
 }
 }
-.freedoms-php .about-wrap ol p {
-       font-weight: normal;
-       margin: 0.6em 0;
+
+.theme-details .theme-description {
+       float: left;
+       color: #777;
+       line-height: 20px;
 }
 
 /*------------------------------------------------------------------------------
 }
 
 /*------------------------------------------------------------------------------
-  23.0 - Misc
+  25.0 - Misc
 ------------------------------------------------------------------------------*/
 
 #excerpt,
 ------------------------------------------------------------------------------*/
 
 #excerpt,
@@ -5157,10 +5554,6 @@ html.ie8 .about-wrap .feature-section.three-col img {
        width: 98%;
 }
 
        width: 98%;
 }
 
-.wp-editor-container textarea.wp-editor-area {
-       width: 99.9%;
-}
-
 #template div {
        margin-right: 190px;
 }
 #template div {
        margin-right: 190px;
 }
@@ -5191,6 +5584,10 @@ p.pagenav {
        padding: 2px 0 0;
 }
 
        padding: 2px 0 0;
 }
 
+.mobile .row-actions {
+       visibility: visible;
+}
+
 tr:hover .row-actions,
 div.comment-item:hover .row-actions {
        visibility: visible;
 tr:hover .row-actions,
 div.comment-item:hover .row-actions {
        visibility: visible;
@@ -5260,6 +5657,11 @@ table.form-table td .updated {
        margin: 6px 0 8px;
 }
 
        margin: 6px 0 8px;
 }
 
+#poststuff .inside #parent_id,
+.inline-edit-row #post_parent {
+       max-width: 100%;
+}
+
 #post-visibility-select,
 #post-formats-select {
        line-height: 1.5em;
 #post-visibility-select,
 #post-formats-select {
        line-height: 1.5em;
@@ -5276,17 +5678,6 @@ table.form-table td .updated {
        margin-bottom: 20px;
 }
 
        margin-bottom: 20px;
 }
 
-td.post-title strong,
-td.plugin-title strong {
-       display: block;
-       margin-bottom: .2em;
-}
-
-td.post-title p,
-td.plugin-title p {
-       margin: 6px 0;
-}
-
 #templateside ul li a {
        text-decoration: none;
 }
 #templateside ul li a {
        text-decoration: none;
 }
@@ -5380,10 +5771,6 @@ td.media-icon img {
        max-height: 60px;
 }
 
        max-height: 60px;
 }
 
-.screen-per-page {
-       width: 3em;
-}
-
 .list-ajax-loading {
        float: right;
        margin-right: 9px;
 .list-ajax-loading {
        float: right;
        margin-right: 9px;
@@ -5470,9 +5857,6 @@ fieldset {
 }
 
 
 }
 
 
-
-
-
 /*-----------------------------------------------------------------------------
  MERGED
 -------------------------------------------------------------------------------*/
 /*-----------------------------------------------------------------------------
  MERGED
 -------------------------------------------------------------------------------*/
@@ -5787,6 +6171,7 @@ form .textarea-wrap {
 #dashboard_recent_drafts p {
        margin: 0;
        padding: 0;
 #dashboard_recent_drafts p {
        margin: 0;
        padding: 0;
+       word-wrap: break-word;
 }
 
 #dashboard_recent_drafts ul {
 }
 
 #dashboard_recent_drafts ul {
@@ -5799,6 +6184,7 @@ form .textarea-wrap {
 
 #dashboard_recent_drafts h4 {
        line-height: 1.7em;
 
 #dashboard_recent_drafts h4 {
        line-height: 1.7em;
+       word-wrap: break-word;
 }
 
 #dashboard_recent_drafts h4 abbr {
 }
 
 #dashboard_recent_drafts h4 abbr {
@@ -5992,7 +6378,10 @@ a.rsswidget {
 }
 
 .login h1 a {
 }
 
 .login h1 a {
-       background: url(../images/logo-login.png) no-repeat top center;
+       background-image: url('../images/wordpress-logo.png?ver=20120216');
+       background-size: 274px 63px;
+       background-position: top center;
+       background-repeat: no-repeat;
        width: 326px;
        height: 67px;
        text-indent: -9999px;
        width: 326px;
        height: 67px;
        text-indent: -9999px;
@@ -6001,6 +6390,18 @@ a.rsswidget {
        display: block;
 }
 
        display: block;
 }
 
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5) {
+       .login h1 a {
+               background-image: url('../images/wordpress-logo-2x.png?ver=20120412');
+               background-size: 274px 63px;
+       }
+
+       .wp-badge {
+               background-image: url('../images/wp-badge-2x.png?ver=20120516');
+               background-size: 173px 194px;
+       }
+}
+
 #login {
        width: 320px;
        padding: 114px 0 0;
 #login {
        width: 320px;
        padding: 114px 0 0;
@@ -6024,7 +6425,9 @@ a.rsswidget {
        padding: 12px 16px 0;
 }
 
        padding: 12px 16px 0;
 }
 
-.login form .input {
+.login form .input,
+.login input[type="text"] {
+       color: #555;
        font-weight: 200;
        font-size: 24px;
        line-height: 1;
        font-weight: 200;
        font-size: 24px;
        line-height: 1;
@@ -6041,10 +6444,6 @@ a.rsswidget {
        box-shadow: inset 1px 1px 2px rgba(200, 200, 200, 0.2);
 }
 
        box-shadow: inset 1px 1px 2px rgba(200, 200, 200, 0.2);
 }
 
-.login input {
-       color: #555;
-}
-
 .login #pass-strength-result {
        width: 250px;
        font-weight: bold;
 .login #pass-strength-result {
        width: 250px;
        font-weight: bold;
@@ -6055,6 +6454,25 @@ a.rsswidget {
        text-align: center;
 }
 
        text-align: center;
 }
 
+.mobile #login {
+       padding: 20px 0;
+}
+
+.mobile #login form,
+.mobile #login .message,
+.mobile #login_error {
+       margin-left: 0;
+}
+
+.mobile #login #nav,
+.mobile #login #backtoblog {
+       margin-left: 8px;
+}
+
+.mobile #login h1 a {
+       width: auto;
+}
+
 
 /* ms */
 /* Dashboard: MS Specific Data */
 
 /* ms */
 /* Dashboard: MS Specific Data */
@@ -6096,7 +6514,6 @@ a.rsswidget {
        background: #fecac2;
 }
 
        background: #fecac2;
 }
 
-
 /* nav-menu */
 
 #nav-menus-frame {
 /* nav-menu */
 
 #nav-menus-frame {
@@ -6176,6 +6593,7 @@ a.rsswidget {
 
 .nav-menus-php #post-body-content {
        position: relative;
 
 .nav-menus-php #post-body-content {
        position: relative;
+       float: none;
 }
 
 #menu-management .menu-add-new abbr {
 }
 
 #menu-management .menu-add-new abbr {
@@ -6733,14 +7151,18 @@ body.menu-max-depth-11 { min-width: 1280px !important; }
        display: block;
 }
 
        display: block;
 }
 
-
-/* plugin-install */
-/* NOTE: the following CSS rules(.star*) are taken more or less straight from the bbPress rating plugin. */
+/* Star ratings */
 div.star-holder {
        position: relative;
 div.star-holder {
        position: relative;
-       height: 19px;
+       height: 17px;
        width: 100px;
        width: 100px;
-       font-size: 19px;
+       background: url('../images/stars.png?ver=20120307') repeat-x bottom left;
+}
+
+div.star-holder .star-rating {
+       background: url('../images/stars.png?ver=20120307') repeat-x top left;
+       height: 17px;
+       float: left;
 }
 
 div.action-links {
 }
 
 div.action-links {
@@ -6748,38 +7170,6 @@ div.action-links {
        margin: 6px 0 0;
 }
 
        margin: 6px 0 0;
 }
 
-div.star {
-       height: 100%;
-       position: absolute;
-       top: 0;
-       left: 0;
-       background-color: transparent;
-       letter-spacing: 1ex;
-       border: none;
-}
-
-.star1 { width: 20%; }
-.star2 { width: 40%; }
-.star3 { width: 60%; }
-.star4 { width: 80%; }
-.star5 { width: 100%; }
-
-.star img,
-div.star a,
-div.star a:hover,
-div.star a:visited {
-       display: block;
-       position: absolute;
-       right: 0;
-       border: none;
-       text-decoration: none;
-}
-
-div.star img {
-       width: 19px;
-       height: 19px;
-}
-
 /* Header on thickbox */
 #plugin-information-header {
        margin: 0;
 /* Header on thickbox */
 #plugin-information-header {
        margin: 0;
@@ -6863,8 +7253,16 @@ div.star img {
        list-style-image: none;
 }
 
        list-style-image: none;
 }
 
+#plugin-information #section-screenshots ol {
+       list-style: none;
+       margin: 0;
+}
+
 #plugin-information #section-screenshots li img {
        vertical-align: text-top;
 #plugin-information #section-screenshots li img {
        vertical-align: text-top;
+       max-width: 100%;
+       width: auto;
+       height: auto;
 }
 
 #plugin-information #section-screenshots li p {
 }
 
 #plugin-information #section-screenshots li p {
@@ -6873,6 +7271,7 @@ div.star img {
        padding-bottom: 2em;
 }
 
        padding-bottom: 2em;
 }
 
+#plugin-information #section-screenshots ol,
 #plugin-information .updated,
 #plugin-information pre {
        margin-right: 215px;
 #plugin-information .updated,
 #plugin-information pre {
        margin-right: 215px;
@@ -6899,7 +7298,8 @@ img {
 /* Header */
 .press-this #wphead {
        height: 32px;
 /* Header */
 .press-this #wphead {
        height: 32px;
-       margin-right: 5px;
+       margin-left: 0;
+       margin-right: 0;
        margin-bottom: 5px;
 }
 
        margin-bottom: 5px;
 }
 
@@ -6927,6 +7327,10 @@ img {
        text-decoration: underline;
 }
 
        text-decoration: underline;
 }
 
+.press-this #message {
+       margin: 10px 0;
+}
+
 .press-this-sidebar {
        float: right;
        width: 200px;
 .press-this-sidebar {
        float: right;
        width: 200px;
@@ -6934,6 +7338,8 @@ img {
 }
 
 .press-this #title {
 }
 
 .press-this #title {
+       margin-left: 0;
+       margin-right: 0;
        -moz-box-sizing: border-box;
        -webkit-box-sizing: border-box;
        -ms-box-sizing: border-box;
        -moz-box-sizing: border-box;
        -webkit-box-sizing: border-box;
        -ms-box-sizing: border-box;
@@ -7294,90 +7700,8 @@ h3 span {
        line-height: 180%;
 }
 
        line-height: 180%;
 }
 
-
-/* theme-install */
-.theme-listing .theme-item {
-       display: inline-block;
-       width: 200px;
-       border: thin solid #ccc;
-       vertical-align: top;
-}
-
-.theme-listing .theme-item h3 {
-       text-align: center;
-       font-size: 14px;
-       font-style: italic;
-       margin: 0;
-       padding: 0;
-}
-
-.theme-listing .theme-item img {
-       max-width: 150px;
-       max-height: 150px;
-}
-
-.theme-listing .theme-item-info span,
-.theme-listing .theme-item:hover .theme-item-info span.dots {
-       display: none;
-}
-
-.theme-listing .theme-item:hover .theme-item-info span {
-       display: inline;
-}
-
-.theme-listing .theme-item-info span.action-links {
-       font-weight: bold;
-       text-align: center;
-}
-
-.theme-listing br.line {
-       border-bottom-width: 1px;
-       border-bottom-style: solid;
-       margin-bottom: 3px;
-}
-
-
-#theme-information .available-theme,
-.available-theme {
-       padding: 20px 15px;
-}
-
-#theme-information .available-theme {
-       overflow: visible;
-       width: 440px;
-}
-
-#theme-information .theme-preview-img {
-       float: left;
-       margin: 5px 25px 10px 15px;
-       width: 300px;
-}
-
-#theme-information .action-button {
-       border-top-width: 1px;
-       border-top-style: solid;
-       margin: 10px 5px 0;
-}
-
-#theme-information .action-button #cancel,
-#theme-information .action-button #install {
-       margin: 10px 5px;
-}
-
-#theme-information .action-button #cancel {
-       float: left;
-}
-
-#theme-information .action-button #install {
-       float: right;
-}
-
-#theme-information .available-theme h3 {
-       margin: 1em 0;
-}
-
-body#theme-information {
-       height: auto;
+#filter-box {
+       clear: both;
 }
 
 .feature-filter {
 }
 
 .feature-filter {
@@ -7394,7 +7718,7 @@ body#theme-information {
        float: left;
        list-style-type: none;
        padding-right: 25px;
        float: left;
        list-style-type: none;
        padding-right: 25px;
-       min-width: 150px;
+       width: 150px;
 }
 
 .feature-container {
 }
 
 .feature-container {
@@ -7403,7 +7727,6 @@ overflow: auto;
 margin-bottom: 10px;
 }
 
 margin-bottom: 10px;
 }
 
-
 /* widgets */
 
 /* 2 column liquid layout */
 /* widgets */
 
 /* 2 column liquid layout */
@@ -7825,3 +8148,81 @@ a.widget-control-edit {
                width: auto;
        }
 }
                width: auto;
        }
 }
+
+/* =Localized CSS
+-------------------------------------------------------------- */
+
+/* zh_CN: Remove italic properties. */
+.locale-zh-cn .howto,
+.locale-zh-cn .tablenav .displaying-num,
+.locale-zh-cn .js .input-with-default-title,
+.locale-zh-cn .link-to-original,
+.locale-zh-cn .inline-edit-row fieldset span.title,
+.locale-zh-cn .inline-edit-row fieldset span.checkbox-title,
+.locale-zh-cn #utc-time,
+.locale-zh-cn #local-time,
+.locale-zh-cn p.install-help,
+.locale-zh-cn p.help,
+.locale-zh-cn p.description,
+.locale-zh-cn span.description,
+.locale-zh-cn .form-wrap p {
+       font-style: normal;
+}
+
+/* zh_CN: Enlarge dashboard widget 'Configure' link */
+.locale-zh-cn .hdnle a { font-size: 12px; }
+
+/* zn_CH: Enlarge font size, set font-size: normal */
+.locale-zh-cn form.upgrade .hint { font-style: normal; font-size: 100%; }
+
+/* Zn_CH: Distraction free writing.
+ *  More beautiful font for "Just write."
+ *  Larger text for HTML/Visual mode.
+ */
+.locale-zh-cn #wp-fullscreen-tagline { font-family: KaiTi, "楷体", sans-serif; }
+.locale-zh-cn #wp-fullscreen-modes a { font-size: 12px; }
+
+/* zh_CN: Enlarge font-size. */
+.locale-zh-cn #sort-buttons { font-size: 1em !important; }
+
+/* ru_RU: Text needs more room to breathe. */
+.locale-ru-ru #dashboard_quick_press .input-text-wrap,
+.locale-ru-ru #dashboard_quick_press .textarea-wrap,
+.locale-ru-ru #dashboard_quick_press .wp-media-buttons  {
+       margin-left: 5.7em; /* default 5em + 0.7em */
+}
+.locale-ru-ru #dashboard_quick_press h4 {
+       width: 5.7em; /* default 5.5em + 0.2em */
+}
+.locale-ru-ru #dashboard-widgets #dashboard_quick_press form p.submit {
+       margin-left: 5.3em; /* default 4.6em + 0.7em */
+}
+.locale-ru-ru .inline-edit-row fieldset label span.title {
+       width: auto; /* default 5em */
+       min-width: 5em;
+}
+.locale-ru-ru.press-this .posting {
+       margin-right: 257px; /* default 212px + 45px */
+}
+.locale-ru-ru.press-this #photo-add-url-div input[type="text"]  {
+       width: 255px; /* default 300px - 45px */
+}
+.locale-ru-ru.press-this #side-sortables {
+       width: 245px; /* default 200px + 45px */
+}
+
+/* lt_LT: QuickPress + QuickEdit */
+.locale-lt-lt #dashboard_quick_press .input-text-wrap,
+.locale-lt-lt #dashboard_quick_press .textarea-wrap,
+.locale-lt-lt #dashboard_quick_press .wp-media-buttons  {
+       margin-left: 7em;
+}
+.locale-lt-lt #dashboard_quick_press h4 {
+       width: 7em;
+}
+.locale-lt-lt .inline-edit-row fieldset label span.title {
+       width: 8em;
+}
+.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap {
+       margin-left: 8em;
+}
index 168c65e33f5fe6c36978f937d3e5acf89eb7cb57..8fb1399b3b87ebd6c4a320cf6585e79e49964e90 100644 (file)
@@ -53,6 +53,9 @@ class Custom_Background {
        function __construct($admin_header_callback = '', $admin_image_div_callback = '') {
                $this->admin_header_callback = $admin_header_callback;
                $this->admin_image_div_callback = $admin_image_div_callback;
        function __construct($admin_header_callback = '', $admin_image_div_callback = '') {
                $this->admin_header_callback = $admin_header_callback;
                $this->admin_image_div_callback = $admin_image_div_callback;
+
+               add_action( 'admin_menu', array( $this, 'init' ) );
+               add_action( 'wp_ajax_set-background-image', array( $this, 'wp_set_background_image' ) );
        }
 
        /**
        }
 
        /**
@@ -70,6 +73,12 @@ class Custom_Background {
                add_action("load-$page", array(&$this, 'take_action'), 49);
                add_action("load-$page", array(&$this, 'handle_upload'), 49);
 
                add_action("load-$page", array(&$this, 'take_action'), 49);
                add_action("load-$page", array(&$this, 'handle_upload'), 49);
 
+               if ( isset( $_REQUEST['context'] ) && $_REQUEST['context'] == 'custom-background' ) {
+                       add_filter( 'attachment_fields_to_edit', array( $this, 'attachment_fields_to_edit' ), 10, 2 );
+                       add_filter( 'media_upload_tabs', array( $this, 'filter_upload_tabs' ) );
+                       add_filter( 'media_upload_mime_type_links', '__return_empty_array' );
+               }
+
                if ( $this->admin_header_callback )
                        add_action("admin_head-$page", $this->admin_header_callback, 51);
        }
                if ( $this->admin_header_callback )
                        add_action("admin_head-$page", $this->admin_header_callback, 51);
        }
@@ -96,6 +105,8 @@ class Custom_Background {
                        '<p>' . __( '<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>' ) . '</p>'
                );
 
                        '<p>' . __( '<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>' ) . '</p>'
                );
 
+               add_thickbox();
+               wp_enqueue_script('media-upload');
                wp_enqueue_script('custom-background');
                wp_enqueue_style('farbtastic');
        }
                wp_enqueue_script('custom-background');
                wp_enqueue_style('farbtastic');
        }
@@ -124,6 +135,7 @@ class Custom_Background {
                        set_theme_mod('background_image', '');
                        set_theme_mod('background_image_thumb', '');
                        $this->updated = true;
                        set_theme_mod('background_image', '');
                        set_theme_mod('background_image_thumb', '');
                        $this->updated = true;
+                       wp_safe_redirect( $_POST['_wp_http_referer'] );
                        return;
                }
 
                        return;
                }
 
@@ -199,15 +211,15 @@ if ( $bgcolor = get_background_color() )
 
 if ( get_background_image() ) {
        // background-image URL must be single quote, see below
 
 if ( get_background_image() ) {
        // background-image URL must be single quote, see below
-       $background_styles .= ' background-image: url(\'' . get_theme_mod('background_image_thumb', '') . '\');'
+       $background_styles .= ' background-image: url(\'' . set_url_scheme( get_theme_mod( 'background_image_thumb', get_background_image() ) ) . '\');'
                . ' background-repeat: ' . get_theme_mod('background_repeat', 'repeat') . ';'
                . ' background-position: top ' . get_theme_mod('background_position_x', 'left');
 }
 ?>
 <div id="custom-background-image" style="<?php echo $background_styles; ?>"><?php // must be double quote, see above ?>
 <?php if ( get_background_image() ) { ?>
                . ' background-repeat: ' . get_theme_mod('background_repeat', 'repeat') . ';'
                . ' background-position: top ' . get_theme_mod('background_position_x', 'left');
 }
 ?>
 <div id="custom-background-image" style="<?php echo $background_styles; ?>"><?php // must be double quote, see above ?>
 <?php if ( get_background_image() ) { ?>
-<img class="custom-background-image" src="<?php echo get_theme_mod('background_image_thumb', ''); ?>" style="visibility:hidden;" alt="" /><br />
-<img class="custom-background-image" src="<?php echo get_theme_mod('background_image_thumb', ''); ?>" style="visibility:hidden;" alt="" />
+<img class="custom-background-image" src="<?php echo set_url_scheme( get_theme_mod( 'background_image_thumb', get_background_image() ) ); ?>" style="visibility:hidden;" alt="" /><br />
+<img class="custom-background-image" src="<?php echo set_url_scheme( get_theme_mod( 'background_image_thumb', get_background_image() ) ); ?>" style="visibility:hidden;" alt="" />
 <?php } ?>
 </div>
 <?php } ?>
 <?php } ?>
 </div>
 <?php } ?>
@@ -226,7 +238,8 @@ if ( get_background_image() ) {
 </tr>
 <?php endif; ?>
 
 </tr>
 <?php endif; ?>
 
-<?php if ( defined( 'BACKGROUND_IMAGE' ) ) : // Show only if a default background image exists ?>
+<?php $default_image = get_theme_support( 'custom-background', 'default-image' ); ?>
+<?php if ( $default_image && get_background_image() != $default_image ) : ?>
 <tr valign="top">
 <th scope="row"><?php _e('Restore Original Image'); ?></th>
 <td>
 <tr valign="top">
 <th scope="row"><?php _e('Restore Original Image'); ?></th>
 <td>
@@ -240,13 +253,25 @@ if ( get_background_image() ) {
 
 <?php endif; ?>
 <tr valign="top">
 
 <?php endif; ?>
 <tr valign="top">
-<th scope="row"><?php _e('Upload Image'); ?></th>
+<th scope="row"><?php _e('Select Image'); ?></th>
 <td><form enctype="multipart/form-data" id="upload-form" method="post" action="">
 <td><form enctype="multipart/form-data" id="upload-form" method="post" action="">
-<label for="upload"><?php _e('Choose an image from your computer:'); ?></label><br /><input type="file" id="upload" name="import" />
-<input type="hidden" name="action" value="save" />
-<?php wp_nonce_field('custom-background-upload', '_wpnonce-custom-background-upload') ?>
-<?php submit_button( __( 'Upload' ), 'button', 'submit', false ); ?>
-</form>
+       <p>
+               <label for="upload"><?php _e( 'Choose an image from your computer:' ); ?></label><br />
+               <input type="file" id="upload" name="import" />
+               <input type="hidden" name="action" value="save" />
+               <?php wp_nonce_field( 'custom-background-upload', '_wpnonce-custom-background-upload' ); ?>
+               <?php submit_button( __( 'Upload' ), 'button', 'submit', false ); ?>
+       </p>
+       <?php
+               $image_library_url = get_upload_iframe_src( 'image', null, 'library' );
+               $image_library_url = remove_query_arg( 'TB_iframe', $image_library_url );
+               $image_library_url = add_query_arg( array( 'context' => 'custom-background', 'TB_iframe' => 1 ), $image_library_url );
+       ?>
+       <p>
+               <label for="choose-from-library-link"><?php _e( 'Or choose an image from your media library:' ); ?></label><br />
+               <a id="choose-from-library-link" class="button thickbox" href="<?php echo esc_url( $image_library_url ); ?>"><?php _e( 'Choose Image' ); ?></a>
+       </p>
+       </form>
 </td>
 </tr>
 </tbody>
 </td>
 </tr>
 </tbody>
@@ -302,9 +327,10 @@ if ( get_background_image() ) {
 <tr valign="top">
 <th scope="row"><?php _e( 'Background Color' ); ?></th>
 <td><fieldset><legend class="screen-reader-text"><span><?php _e( 'Background Color' ); ?></span></legend>
 <tr valign="top">
 <th scope="row"><?php _e( 'Background Color' ); ?></th>
 <td><fieldset><legend class="screen-reader-text"><span><?php _e( 'Background Color' ); ?></span></legend>
-<?php $show_clear = get_background_color() ? '' : ' style="display:none"'; ?>
+<?php $show_clear = get_theme_mod('background_color') ? '' : ' style="display:none"'; ?>
 <input type="text" name="background-color" id="background-color" value="#<?php echo esc_attr(get_background_color()) ?>" />
 <input type="text" name="background-color" id="background-color" value="#<?php echo esc_attr(get_background_color()) ?>" />
-<a class="hide-if-no-js" href="#" id="pickcolor"><?php _e('Select a Color'); ?></a> <span<?php echo $show_clear; ?> class="hide-if-no-js" id="clearcolor"> (<a href="#"><?php _e( 'Clear' ); ?></a>)</span>
+<a class="hide-if-no-js" href="#" id="pickcolor"><?php _e('Select a Color'); ?></a> <span<?php echo $show_clear; ?> class="hide-if-no-js" id="clearcolor"> (<a href="#"><?php current_theme_supports( 'custom-background', 'default-color' ) ? _e( 'Default' ) : _e( 'Clear' ); ?></a>)</span>
+<input type="hidden" id="defaultcolor" value="<?php if ( current_theme_supports( 'custom-background', 'default-color' ) ) echo '#' . esc_attr( get_theme_support( 'custom-background', 'default-color' ) ); ?>" />
 <div id="colorPickerDiv" style="z-index: 100; background:#eee; border:1px solid #ccc; position:absolute; display:none;"></div>
 </fieldset></td>
 </tr>
 <div id="colorPickerDiv" style="z-index: 100; background:#eee; border:1px solid #ccc; position:absolute; display:none;"></div>
 </fieldset></td>
 </tr>
@@ -357,14 +383,50 @@ if ( get_background_image() ) {
                wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) );
                update_post_meta( $id, '_wp_attachment_is_custom_background', get_option('stylesheet' ) );
 
                wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) );
                update_post_meta( $id, '_wp_attachment_is_custom_background', get_option('stylesheet' ) );
 
-               set_theme_mod('background_image', esc_url($url));
+               set_theme_mod('background_image', esc_url_raw($url));
 
                $thumbnail = wp_get_attachment_image_src( $id, 'thumbnail' );
 
                $thumbnail = wp_get_attachment_image_src( $id, 'thumbnail' );
-               set_theme_mod('background_image_thumb', esc_url( $thumbnail[0] ) );
+               set_theme_mod('background_image_thumb', esc_url_raw( $thumbnail[0] ) );
 
                do_action('wp_create_file_in_uploads', $file, $id); // For replication
                $this->updated = true;
        }
 
 
                do_action('wp_create_file_in_uploads', $file, $id); // For replication
                $this->updated = true;
        }
 
+       /**
+        * Replace default attachment actions with "Set as background" link.
+        *
+        * @since 3.4.0
+        */
+       function attachment_fields_to_edit( $form_fields, $post ) {
+               $form_fields = array( 'image-size' => $form_fields['image-size'] );
+               $form_fields['buttons'] = array( 'tr' => '<tr class="submit"><td></td><td><a data-attachment-id="' . $post->ID . '" class="wp-set-background">' . __( 'Set as background' ) . '</a></td></tr>' );
+               $form_fields['context'] = array( 'input' => 'hidden', 'value' => 'custom-background' );
+
+               return $form_fields;
+       }
+
+       /**
+        * Leave only "Media Library" tab in the uploader window.
+        *
+        * @since 3.4.0
+        */
+       function filter_upload_tabs() {
+               return array( 'library' => __('Media Library') );
+       }
+
+       public function wp_set_background_image() {
+               if ( ! current_user_can('edit_theme_options') || ! isset( $_POST['attachment_id'] ) ) exit;
+               $attachment_id = absint($_POST['attachment_id']);
+               $sizes = array_keys(apply_filters( 'image_size_names_choose', array('thumbnail' => __('Thumbnail'), 'medium' => __('Medium'), 'large' => __('Large'), 'full' => __('Full Size')) ));
+               $size = 'thumbnail';
+               if ( in_array( $_POST['size'], $sizes ) )
+                       $size = esc_attr( $_POST['size'] );
+
+               update_post_meta( $attachment_id, '_wp_attachment_is_custom_background', get_option('stylesheet' ) );
+               $url = wp_get_attachment_image_src( $attachment_id, $size );
+               $thumbnail = wp_get_attachment_image_src( $attachment_id, 'thumbnail' );
+               set_theme_mod( 'background_image', esc_url_raw( $url[0] ) );
+               set_theme_mod( 'background_image_thumb', esc_url_raw( $thumbnail[0] ) );
+               exit;
+       }
 }
 }
-?>
index ebeb2a5ad7815a4713608c113824cad0e1c4fc5b..fc9d4f126f10894ea7e8b1edd341857a50138cb9 100644 (file)
@@ -42,7 +42,6 @@ class Custom_Image_Header {
         */
        var $default_headers = array();
 
         */
        var $default_headers = array();
 
-
        /**
         * Holds custom headers uploaded by the user
         *
        /**
         * Holds custom headers uploaded by the user
         *
@@ -72,6 +71,8 @@ class Custom_Image_Header {
        function __construct($admin_header_callback, $admin_image_div_callback = '') {
                $this->admin_header_callback = $admin_header_callback;
                $this->admin_image_div_callback = $admin_image_div_callback;
        function __construct($admin_header_callback, $admin_image_div_callback = '') {
                $this->admin_header_callback = $admin_header_callback;
                $this->admin_image_div_callback = $admin_image_div_callback;
+
+               add_action( 'admin_menu', array( $this, 'init' ) );
        }
 
        /**
        }
 
        /**
@@ -90,7 +91,14 @@ class Custom_Image_Header {
                add_action("admin_head-$page", array(&$this, 'help') );
                add_action("admin_head-$page", array(&$this, 'take_action'), 50);
                add_action("admin_head-$page", array(&$this, 'js'), 50);
                add_action("admin_head-$page", array(&$this, 'help') );
                add_action("admin_head-$page", array(&$this, 'take_action'), 50);
                add_action("admin_head-$page", array(&$this, 'js'), 50);
-               add_action("admin_head-$page", $this->admin_header_callback, 51);
+               if ( $this->admin_header_callback )
+                       add_action("admin_head-$page", $this->admin_header_callback, 51);
+
+               if ( isset( $_REQUEST['context'] ) && $_REQUEST['context'] == 'custom-header' ) {
+                       add_filter( 'attachment_fields_to_edit', array( $this, 'attachment_fields_to_edit' ), 10, 2 );
+                       add_filter( 'media_upload_tabs', array( $this, 'filter_upload_tabs' ) );
+                       add_filter( 'media_upload_mime_type_links', '__return_empty_array' );
+               }
        }
 
        /**
        }
 
        /**
@@ -103,9 +111,27 @@ class Custom_Image_Header {
                        'id'      => 'overview',
                        'title'   => __('Overview'),
                        'content' =>
                        'id'      => 'overview',
                        'title'   => __('Overview'),
                        'content' =>
-                               '<p>' . __( 'You can set a custom image header for your site. Simply upload the image and crop it, and the new header will go live immediately.' ) . '</p>' .
-                               '<p>' . __( 'If you want to discard your custom header and go back to the default included in your theme, click on the buttons to remove the custom image and restore the original header image.' ) . '</p>' .
-                               '<p>' . __( 'Some themes come with additional header images bundled. If you see multiple images displayed, select the one you&#8217;d like and click the Save Changes button.' ) . '</p>'
+                               '<p>' . __( 'This screen is used to customize the header section of your theme.') . '</p>' .
+                               '<p>' . __( 'You can choose from the theme&#8217;s default header images, or use one of your own. You can also customize how your Site Title and Tagline are displayed.') . '<p>'
+               ) );
+
+               get_current_screen()->add_help_tab( array(
+                       'id'      => 'set-header-image',
+                       'title'   => __('Header Image'),
+                       'content' =>
+                               '<p>' . __( 'You can set a custom image header for your site. Simply upload the image and crop it, and the new header will go live immediately. Alternatively, you can use an image that has already been uploaded to your Media Library by clicking the &#8220;Choose Image&#8221; button.' ) . '</p>' .
+                               '<p>' . __( 'Some themes come with additional header images bundled. If you see multiple images displayed, select the one you&#8217;d like and click the &#8220;Save Changes&#8221; button.' ) . '</p>' .
+                               '<p>' . __( 'If your theme has more than one default header image, or you have uploaded more than one custom header image, you have the option of having WordPress display a randomly different image on each page of your site. Click the &#8220;Random&#8221; radio button next to the Uploaded Images or Default Images section to enable this feature.') . '</p>' .
+                               '<p>' . __( 'If you don&#8217;t want a header image to be displayed on your site at all, click the &#8220;Remove Header Image&#8221; button at the bottom of the Header Image section of this page. If you want to re-enable the header image later, you just have to select one of the other image options and click &#8220;Save Changes&#8221;.') . '</p>'
+               ) );
+
+               get_current_screen()->add_help_tab( array(
+                       'id'      => 'set-header-text',
+                       'title'   => __('Header Text'),
+                       'content' =>
+                               '<p>' . sprintf( __( 'For most themes, the header text is your Site Title and Tagline, as defined in the <a href="%1$s">General Settings</a> section.' ), admin_url( 'options-general.php' ) ) . '<p>' .
+                               '<p>' . __( 'In the Header Text section of this page, you can choose whether to display this text or hide it. You can also choose a color for the text by typing in a legitimate HTML hex value (eg: &#8220;#ff0000&#8221; for red) or by clicking &#8220;Select a Color&#8221; and dialing in a color using the color picker.') . '</p>' .
+                               '<p>' . __( 'Don&#8217;t forget to Save Changes when you&#8217;re done!') . '</p>'
                ) );
 
                get_current_screen()->set_help_sidebar(
                ) );
 
                get_current_screen()->set_help_sidebar(
@@ -127,8 +153,11 @@ class Custom_Image_Header {
                        return 1;
 
                $step = (int) $_GET['step'];
                        return 1;
 
                $step = (int) $_GET['step'];
-               if ( $step < 1 || 3 < $step )
-                       $step = 1;
+               if ( $step < 1 || 3 < $step ||
+                       ( 2 == $step && ! wp_verify_nonce( $_REQUEST['_wpnonce-custom-header-upload'], 'custom-header-upload' ) ) ||
+                       ( 3 == $step && ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'custom-header-crop-image' ) )
+               )
+                       return 1;
 
                return $step;
        }
 
                return $step;
        }
@@ -141,10 +170,15 @@ class Custom_Image_Header {
        function js_includes() {
                $step = $this->step();
 
        function js_includes() {
                $step = $this->step();
 
-               if ( ( 1 == $step || 3 == $step ) && $this->header_text() )
-                       wp_enqueue_script('farbtastic');
-               elseif ( 2 == $step )
+               if ( ( 1 == $step || 3 == $step ) ) {
+                       add_thickbox();
+                       wp_enqueue_script( 'media-upload' );
+                       wp_enqueue_script( 'custom-header' );
+                       if ( current_theme_supports( 'custom-header', 'header-text' ) )
+                               wp_enqueue_script('farbtastic');
+               } elseif ( 2 == $step ) {
                        wp_enqueue_script('imgareaselect');
                        wp_enqueue_script('imgareaselect');
+               }
        }
 
        /**
        }
 
        /**
@@ -155,24 +189,12 @@ class Custom_Image_Header {
        function css_includes() {
                $step = $this->step();
 
        function css_includes() {
                $step = $this->step();
 
-               if ( ( 1 == $step || 3 == $step ) && $this->header_text() )
+               if ( ( 1 == $step || 3 == $step ) && current_theme_supports( 'custom-header', 'header-text' ) )
                        wp_enqueue_style('farbtastic');
                elseif ( 2 == $step )
                        wp_enqueue_style('imgareaselect');
        }
 
                        wp_enqueue_style('farbtastic');
                elseif ( 2 == $step )
                        wp_enqueue_style('imgareaselect');
        }
 
-       /**
-        * Check if header text is allowed
-        *
-        * @since 3.0.0
-        */
-       function header_text() {
-               if ( defined( 'NO_HEADER_TEXT' ) && NO_HEADER_TEXT )
-                       return false;
-
-               return true;
-       }
-
        /**
         * Execute custom header modification.
         *
        /**
         * Execute custom header modification.
         *
@@ -189,7 +211,7 @@ class Custom_Image_Header {
 
                if ( isset( $_POST['resetheader'] ) ) {
                        check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' );
 
                if ( isset( $_POST['resetheader'] ) ) {
                        check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' );
-                       remove_theme_mod( 'header_image' );
+                       $this->reset_header_image();
                        return;
                }
 
                        return;
                }
 
@@ -201,36 +223,27 @@ class Custom_Image_Header {
 
                if ( isset( $_POST['removeheader'] ) ) {
                        check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' );
 
                if ( isset( $_POST['removeheader'] ) ) {
                        check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' );
-                       set_theme_mod( 'header_image', 'remove-header' );
+                       $this->remove_header_image();
                        return;
                }
 
                        return;
                }
 
-               if ( isset( $_POST['text-color'] ) ) {
+               if ( isset( $_POST['text-color'] ) && ! isset( $_POST['display-header-text'] ) ) {
+                       check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' );
+                       set_theme_mod( 'header_textcolor', 'blank' );
+               } elseif ( isset( $_POST['text-color'] ) ) {
                        check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' );
                        $_POST['text-color'] = str_replace( '#', '', $_POST['text-color'] );
                        check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' );
                        $_POST['text-color'] = str_replace( '#', '', $_POST['text-color'] );
-                       if ( 'blank' == $_POST['text-color'] ) {
+                       $color = preg_replace('/[^0-9a-fA-F]/', '', $_POST['text-color']);
+                       if ( strlen($color) == 6 || strlen($color) == 3 )
+                               set_theme_mod('header_textcolor', $color);
+                       elseif ( ! $color )
                                set_theme_mod( 'header_textcolor', 'blank' );
                                set_theme_mod( 'header_textcolor', 'blank' );
-                       } else {
-                               $color = preg_replace('/[^0-9a-fA-F]/', '', $_POST['text-color']);
-                               if ( strlen($color) == 6 || strlen($color) == 3 )
-                                       set_theme_mod('header_textcolor', $color);
-                       }
                }
 
                if ( isset( $_POST['default-header'] ) ) {
                        check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' );
                }
 
                if ( isset( $_POST['default-header'] ) ) {
                        check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' );
-                       if ( 'random-default-image' == $_POST['default-header'] ) {
-                               set_theme_mod( 'header_image', 'random-default-image' );
-                       } elseif ( 'random-uploaded-image' == $_POST['default-header'] ) {
-                               set_theme_mod( 'header_image', 'random-uploaded-image' );
-                       } else {
-                               $this->process_default_headers();
-                               $uploaded = get_uploaded_header_images();
-                               if ( isset( $uploaded[$_POST['default-header']] ) )
-                                       set_theme_mod( 'header_image', esc_url( $uploaded[$_POST['default-header']]['url'] ) );
-                               elseif ( isset( $this->default_headers[$_POST['default-header']] ) )
-                                       set_theme_mod( 'header_image', esc_url( $this->default_headers[$_POST['default-header']]['url'] ) );
-                       }
+                       $this->set_header_image( $_POST['default-header'] );
+                       return;
                }
        }
 
                }
        }
 
@@ -290,9 +303,9 @@ class Custom_Image_Header {
                        echo '<div class="default-header">';
                        echo '<label><input name="default-header" type="radio" value="' . esc_attr( $header_key ) . '" ' . checked( $header_url, get_theme_mod( 'header_image' ), false ) . ' />';
                        $width = '';
                        echo '<div class="default-header">';
                        echo '<label><input name="default-header" type="radio" value="' . esc_attr( $header_key ) . '" ' . checked( $header_url, get_theme_mod( 'header_image' ), false ) . ' />';
                        $width = '';
-                       if ( !empty( $header['uploaded'] ) )
+                       if ( !empty( $header['attachment_id'] ) )
                                $width = ' width="230"';
                                $width = ' width="230"';
-                       echo '<img src="' . $header_thumbnail . '" alt="' . esc_attr( $header_desc ) .'" title="' . esc_attr( $header_desc ) . '"' . $width . ' /></label>';
+                       echo '<img src="' . set_url_scheme( $header_thumbnail ) . '" alt="' . esc_attr( $header_desc ) .'" title="' . esc_attr( $header_desc ) . '"' . $width . ' /></label>';
                        echo '</div>';
                }
                echo '<div class="clear"></div></div>';
                        echo '</div>';
                }
                echo '<div class="clear"></div></div>';
@@ -305,7 +318,7 @@ class Custom_Image_Header {
         */
        function js() {
                $step = $this->step();
         */
        function js() {
                $step = $this->step();
-               if ( ( 1 == $step || 3 == $step ) && $this->header_text() )
+               if ( ( 1 == $step || 3 == $step ) && current_theme_supports( 'custom-header', 'header-text' ) )
                        $this->js_1();
                elseif ( 2 == $step )
                        $this->js_2();
                        $this->js_1();
                elseif ( 2 == $step )
                        $this->js_2();
@@ -319,86 +332,75 @@ class Custom_Image_Header {
        function js_1() { ?>
 <script type="text/javascript">
 /* <![CDATA[ */
        function js_1() { ?>
 <script type="text/javascript">
 /* <![CDATA[ */
-       var text_objects = ['#name', '#desc', '#text-color-row'];
-       var farbtastic;
-       var default_color = '#<?php echo HEADER_TEXTCOLOR; ?>';
-       var old_color = null;
+var farbtastic;
+(function($){
+       var default_color = '#<?php echo get_theme_support( 'custom-header', 'default-text-color' ); ?>',
+               header_text_fields;
 
        function pickColor(color) {
 
        function pickColor(color) {
-               jQuery('#name').css('color', color);
-               jQuery('#desc').css('color', color);
-               jQuery('#text-color').val(color);
+               $('#name').css('color', color);
+               $('#desc').css('color', color);
+               $('#text-color').val(color);
                farbtastic.setColor(color);
        }
 
                farbtastic.setColor(color);
        }
 
-       function toggle_text(s) {
-               if (jQuery(s).attr('id') == 'showtext' && jQuery('#text-color').val() != 'blank')
-                       return;
-
-               if (jQuery(s).attr('id') == 'hidetext' && jQuery('#text-color').val() == 'blank')
+       function toggle_text() {
+               var checked = $('#display-header-text').prop('checked'),
+                       text_color;
+               header_text_fields.toggle( checked );
+               if ( ! checked )
                        return;
                        return;
-
-               if (jQuery('#text-color').val() == 'blank') {
-                       //Show text
-                       if (old_color == '#blank')
-                               old_color = default_color;
-
-                       jQuery( text_objects.toString() ).show();
-                       jQuery('#text-color').val(old_color);
-                       jQuery('#name').css('color', old_color);
-                       jQuery('#desc').css('color', old_color);
-                       pickColor(old_color);
+               text_color = $('#text-color');
+               if ( '' == text_color.val().replace('#', '') ) {
+                       text_color.val( default_color );
+                       pickColor( default_color );
                } else {
                } else {
-                       //Hide text
-                       jQuery( text_objects.toString() ).hide();
-                       old_color = jQuery('#text-color').val();
-                       jQuery('#text-color').val('blank');
+                       pickColor( text_color.val() );
                }
        }
 
                }
        }
 
-       jQuery(document).ready(function() {
-               jQuery('#pickcolor').click(function() {
-                       jQuery('#color-picker').show();
+       $(document).ready(function() {
+               header_text_fields = $('.displaying-header-text');
+               $('#pickcolor').click(function(e) {
+                       e.preventDefault();
+                       $('#color-picker').show();
                });
 
                });
 
-               jQuery('input[name="hidetext"]').click(function() {
-                       toggle_text(this);
-               });
+               $('#display-header-text').click( toggle_text );
 
 
-               jQuery('#defaultcolor').click(function() {
+               $('#defaultcolor').click(function() {
                        pickColor(default_color);
                        pickColor(default_color);
-                       jQuery('#text-color').val(default_color)
+                       $('#text-color').val(default_color);
                });
 
                });
 
-               jQuery('#text-color').keyup(function() {
-                       var _hex = jQuery('#text-color').val();
+               $('#text-color').keyup(function() {
+                       var _hex = $('#text-color').val();
                        var hex = _hex;
                        if ( hex[0] != '#' )
                                hex = '#' + hex;
                        hex = hex.replace(/[^#a-fA-F0-9]+/, '');
                        if ( hex != _hex )
                        var hex = _hex;
                        if ( hex[0] != '#' )
                                hex = '#' + hex;
                        hex = hex.replace(/[^#a-fA-F0-9]+/, '');
                        if ( hex != _hex )
-                               jQuery('#text-color').val(hex);
+                               $('#text-color').val(hex);
                        if ( hex.length == 4 || hex.length == 7 )
                                pickColor( hex );
                });
 
                        if ( hex.length == 4 || hex.length == 7 )
                                pickColor( hex );
                });
 
-               jQuery(document).mousedown(function(){
-                       jQuery('#color-picker').each( function() {
-                               var display = jQuery(this).css('display');
+               $(document).mousedown(function(){
+                       $('#color-picker').each( function() {
+                               var display = $(this).css('display');
                                if (display == 'block')
                                if (display == 'block')
-                                       jQuery(this).fadeOut(2);
+                                       $(this).fadeOut(2);
                        });
                });
 
                        });
                });
 
-               farbtastic = jQuery.farbtastic('#color-picker', function(color) { pickColor(color); });
-               <?php if ( $color = get_theme_mod('header_textcolor', HEADER_TEXTCOLOR) ) { ?>
-               pickColor('#<?php echo $color; ?>');
-               <?php } ?>
-
-               <?php if ( 'blank' == get_theme_mod( 'header_textcolor', HEADER_TEXTCOLOR ) || '' == get_theme_mod('header_textcolor', HEADER_TEXTCOLOR) || ! $this->header_text() ) { ?>
+               farbtastic = $.farbtastic('#color-picker', function(color) { pickColor(color); });
+               <?php if ( display_header_text() ) { ?>
+               pickColor('#<?php echo get_header_textcolor(); ?>');
+               <?php } else { ?>
                toggle_text();
                <?php } ?>
        });
                toggle_text();
                <?php } ?>
        });
+})(jQuery);
 /* ]]> */
 </script>
 <?php
 /* ]]> */
 </script>
 <?php
@@ -420,8 +422,8 @@ class Custom_Image_Header {
        }
 
        jQuery(document).ready(function() {
        }
 
        jQuery(document).ready(function() {
-               var xinit = <?php echo HEADER_IMAGE_WIDTH; ?>;
-               var yinit = <?php echo HEADER_IMAGE_HEIGHT; ?>;
+               var xinit = <?php echo absint( get_theme_support( 'custom-header', 'width' ) ); ?>;
+               var yinit = <?php echo absint( get_theme_support( 'custom-header', 'height' ) ); ?>;
                var ratio = xinit / yinit;
                var ximg = jQuery('img#upload').width();
                var yimg = jQuery('img#upload').height();
                var ratio = xinit / yinit;
                var ximg = jQuery('img#upload').width();
                var yimg = jQuery('img#upload').height();
@@ -439,14 +441,28 @@ class Custom_Image_Header {
                jQuery('img#upload').imgAreaSelect({
                        handles: true,
                        keys: true,
                jQuery('img#upload').imgAreaSelect({
                        handles: true,
                        keys: true,
-                       aspectRatio: xinit + ':' + yinit,
                        show: true,
                        x1: 0,
                        y1: 0,
                        x2: xinit,
                        y2: yinit,
                        show: true,
                        x1: 0,
                        y1: 0,
                        x2: xinit,
                        y2: yinit,
-                       maxHeight: <?php echo HEADER_IMAGE_HEIGHT; ?>,
-                       maxWidth: <?php echo HEADER_IMAGE_WIDTH; ?>,
+                       <?php
+                       if ( ! current_theme_supports( 'custom-header', 'flex-height' ) && ! current_theme_supports( 'custom-header', 'flex-width' ) ) {
+                       ?>
+                       aspectRatio: xinit + ':' + yinit,
+                       <?php
+                       }
+                       if ( ! current_theme_supports( 'custom-header', 'flex-height' ) ) {
+                       ?>
+                       maxHeight: <?php echo get_theme_support( 'custom-header', 'height' ); ?>,
+                       <?php
+                       }
+                       if ( ! current_theme_supports( 'custom-header', 'flex-width' ) ) {
+                       ?>
+                       maxWidth: <?php echo get_theme_support( 'custom-header', 'width' ); ?>,
+                       <?php
+                       }
+                       ?>
                        onInit: function () {
                                jQuery('#width').val(xinit);
                                jQuery('#height').val(yinit);
                        onInit: function () {
                                jQuery('#width').val(xinit);
                                jQuery('#height').val(yinit);
@@ -483,44 +499,70 @@ class Custom_Image_Header {
 </div>
 <?php } ?>
 
 </div>
 <?php } ?>
 
+<h3><?php _e( 'Header Image' ); ?></h3>
+
 <table class="form-table">
 <tbody>
 
 <table class="form-table">
 <tbody>
 
-
 <tr valign="top">
 <th scope="row"><?php _e( 'Preview' ); ?></th>
 <tr valign="top">
 <th scope="row"><?php _e( 'Preview' ); ?></th>
-<td >
+<td>
        <?php if ( $this->admin_image_div_callback ) {
          call_user_func( $this->admin_image_div_callback );
        } else {
        ?>
        <?php if ( $this->admin_image_div_callback ) {
          call_user_func( $this->admin_image_div_callback );
        } else {
        ?>
-       <div id="headimg" style="max-width:<?php echo HEADER_IMAGE_WIDTH; ?>px;height:<?php echo HEADER_IMAGE_HEIGHT; ?>px;background-image:url(<?php esc_url ( header_image() ) ?>);">
+       <div id="headimg" style="background-image:url(<?php esc_url ( header_image() ) ?>);max-width:<?php echo get_custom_header()->width; ?>px;height:<?php echo get_custom_header()->height; ?>px;">
                <?php
                <?php
-               if ( 'blank' == get_theme_mod('header_textcolor', HEADER_TEXTCOLOR) || '' == get_theme_mod('header_textcolor', HEADER_TEXTCOLOR) || ! $this->header_text() )
-                       $style = ' style="display:none;"';
+               if ( display_header_text() )
+                       $style = ' style="color:#' . get_header_textcolor() . ';"';
                else
                else
-                       $style = ' style="color:#' . get_theme_mod( 'header_textcolor', HEADER_TEXTCOLOR ) . ';"';
+                       $style = ' style="display:none;"';
                ?>
                ?>
-               <h1><a id="name"<?php echo $style; ?> onclick="return false;" href="<?php bloginfo('url'); ?>"><?php bloginfo( 'name' ); ?></a></h1>
-               <div id="desc"<?php echo $style; ?>><?php bloginfo( 'description' ); ?></div>
+               <h1><a id="name" class="displaying-header-text" <?php echo $style; ?> onclick="return false;" href="<?php bloginfo('url'); ?>"><?php bloginfo( 'name' ); ?></a></h1>
+               <div id="desc" class="displaying-header-text" <?php echo $style; ?>><?php bloginfo( 'description' ); ?></div>
        </div>
        <?php } ?>
 </td>
 </tr>
        </div>
        <?php } ?>
 </td>
 </tr>
-<?php if ( current_theme_supports( 'custom-header-uploads' ) ) : ?>
+<?php if ( current_theme_supports( 'custom-header', 'uploads' ) ) : ?>
 <tr valign="top">
 <tr valign="top">
-<th scope="row"><?php _e( 'Upload Image' ); ?></th>
+<th scope="row"><?php _e( 'Select Image' ); ?></th>
 <td>
        <p><?php _e( 'You can upload a custom header image to be shown at the top of your site instead of the default one. On the next screen you will be able to crop the image.' ); ?><br />
 <td>
        <p><?php _e( 'You can upload a custom header image to be shown at the top of your site instead of the default one. On the next screen you will be able to crop the image.' ); ?><br />
-       <?php printf( __( 'Images of exactly <strong>%1$d &times; %2$d pixels</strong> will be used as-is.' ), HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT ); ?></p>
+       <?php
+       if ( ! current_theme_supports( 'custom-header', 'flex-height' ) && ! current_theme_supports( 'custom-header', 'flex-width' ) ) {
+               printf( __( 'Images of exactly <strong>%1$d &times; %2$d pixels</strong> will be used as-is.' ) . '<br />', get_theme_support( 'custom-header', 'width' ), get_theme_support( 'custom-header', 'height' ) );
+       } elseif ( current_theme_supports( 'custom-header', 'flex-height' ) ) {
+               if ( ! current_theme_supports( 'custom-header', 'flex-width' ) )
+                       printf( __( 'Images should be at least <strong>%1$d pixels</strong> wide.' ) . ' ', get_theme_support( 'custom-header', 'width' ) );
+       } elseif ( current_theme_supports( 'custom-header', 'flex-width' ) ) {
+               if ( ! current_theme_supports( 'custom-header', 'flex-height' ) )
+                       printf( __( 'Images should be at least <strong>%1$d pixels</strong> tall.' ) . ' ', get_theme_support( 'custom-header', 'height' ) );
+       }
+       if ( current_theme_supports( 'custom-header', 'flex-height' ) || current_theme_supports( 'custom-header', 'flex-width' ) ) {
+               if ( current_theme_supports( 'custom-header', 'width' ) )
+                       printf( __( 'Suggested width is <strong>%1$d pixels</strong>.' ) . ' ', get_theme_support( 'custom-header', 'width' ) );
+               if ( current_theme_supports( 'custom-header', 'height' ) )
+                       printf( __( 'Suggested height is <strong>%1$d pixels</strong>.' ) . ' ', get_theme_support( 'custom-header', 'height' ) );
+       }
+       ?></p>
        <form enctype="multipart/form-data" id="upload-form" method="post" action="<?php echo esc_attr( add_query_arg( 'step', 2 ) ) ?>">
        <p>
                <label for="upload"><?php _e( 'Choose an image from your computer:' ); ?></label><br />
                <input type="file" id="upload" name="import" />
                <input type="hidden" name="action" value="save" />
        <form enctype="multipart/form-data" id="upload-form" method="post" action="<?php echo esc_attr( add_query_arg( 'step', 2 ) ) ?>">
        <p>
                <label for="upload"><?php _e( 'Choose an image from your computer:' ); ?></label><br />
                <input type="file" id="upload" name="import" />
                <input type="hidden" name="action" value="save" />
-               <?php wp_nonce_field( 'custom-header-upload', '_wpnonce-custom-header-upload' ) ?>
+               <?php wp_nonce_field( 'custom-header-upload', '_wpnonce-custom-header-upload' ); ?>
                <?php submit_button( __( 'Upload' ), 'button', 'submit', false ); ?>
        </p>
                <?php submit_button( __( 'Upload' ), 'button', 'submit', false ); ?>
        </p>
+       <?php
+               $image_library_url = get_upload_iframe_src( 'image', null, 'library' );
+               $image_library_url = remove_query_arg( 'TB_iframe', $image_library_url );
+               $image_library_url = add_query_arg( array( 'context' => 'custom-header', 'TB_iframe' => 1 ), $image_library_url );
+       ?>
+       <p>
+               <label for="choose-from-library-link"><?php _e( 'Or choose an image from your media library:' ); ?></label><br />
+               <a id="choose-from-library-link" class="button thickbox" href="<?php echo esc_url( $image_library_url ); ?>"><?php _e( 'Choose Image' ); ?></a>
+       </p>
        </form>
 </td>
 </tr>
        </form>
 </td>
 </tr>
@@ -546,7 +588,7 @@ class Custom_Image_Header {
 <tr valign="top">
 <th scope="row"><?php _e( 'Default Images' ); ?></th>
 <td>
 <tr valign="top">
 <th scope="row"><?php _e( 'Default Images' ); ?></th>
 <td>
-<?php if ( current_theme_supports( 'custom-header-uploads' ) ) : ?>
+<?php if ( current_theme_supports( 'custom-header', 'uploads' ) ) : ?>
        <p><?php _e( 'If you don&lsquo;t want to upload your own image, you can use one of these cool headers, or show a random one.' ) ?></p>
 <?php else: ?>
        <p><?php _e( 'You can use one of these cool headers or show a random one on each page.' ) ?></p>
        <p><?php _e( 'If you don&lsquo;t want to upload your own image, you can use one of these cool headers, or show a random one.' ) ?></p>
 <?php else: ?>
        <p><?php _e( 'You can use one of these cool headers or show a random one on each page.' ) ?></p>
@@ -567,7 +609,8 @@ class Custom_Image_Header {
 </tr>
        <?php endif;
 
 </tr>
        <?php endif;
 
-       if ( defined( 'HEADER_IMAGE' ) && '' != HEADER_IMAGE ) : ?>
+       $default_image = get_theme_support( 'custom-header', 'default-image' );
+       if ( $default_image && get_header_image() != $default_image ) : ?>
 <tr valign="top">
 <th scope="row"><?php _e( 'Reset Image' ); ?></th>
 <td>
 <tr valign="top">
 <th scope="row"><?php _e( 'Reset Image' ); ?></th>
 <td>
@@ -579,33 +622,37 @@ class Custom_Image_Header {
 </tbody>
 </table>
 
 </tbody>
 </table>
 
-       <?php if ( $this->header_text() ) : ?>
+<?php if ( current_theme_supports( 'custom-header', 'header-text' ) ) : ?>
+
+<h3><?php _e( 'Header Text' ); ?></h3>
+
 <table class="form-table">
 <tbody>
 <table class="form-table">
 <tbody>
-<tr valign="top" class="hide-if-no-js">
-<th scope="row"><?php _e( 'Display Text' ); ?></th>
+<tr valign="top">
+<th scope="row"><?php _e( 'Header Text' ); ?></th>
 <td>
        <p>
 <td>
        <p>
-       <?php $hidetext = get_theme_mod( 'header_textcolor', HEADER_TEXTCOLOR ); ?>
-       <label><input type="radio" value="1" name="hidetext" id="hidetext"<?php checked( ( 'blank' == $hidetext || empty( $hidetext ) )  ? true : false ); ?> /> <?php _e( 'No' ); ?></label>
-       <label><input type="radio" value="0" name="hidetext" id="showtext"<?php checked( ( 'blank' == $hidetext || empty( $hidetext ) ) ? false : true ); ?> /> <?php _e( 'Yes' ); ?></label>
+       <label><input type="checkbox" name="display-header-text" id="display-header-text"<?php checked( display_header_text() ); ?> /> <?php _e( 'Show header text with your image.' ); ?></label>
        </p>
 </td>
 </tr>
 
        </p>
 </td>
 </tr>
 
-<tr valign="top" id="text-color-row">
+<tr valign="top" class="displaying-header-text">
 <th scope="row"><?php _e( 'Text Color' ); ?></th>
 <td>
        <p>
 <th scope="row"><?php _e( 'Text Color' ); ?></th>
 <td>
        <p>
-               <input type="text" name="text-color" id="text-color" value="#<?php echo esc_attr( get_theme_mod( 'header_textcolor', HEADER_TEXTCOLOR ) ); ?>" />
-               <span class="description hide-if-js"><?php _e( 'If you want to hide header text, add <strong>#blank</strong> as text color.' );?></span>
-               <input type="button" class="button hide-if-no-js" value="<?php esc_attr_e( 'Select a Color' ); ?>" id="pickcolor" />
+<?php if ( display_header_text() ) : ?>
+               <input type="text" name="text-color" id="text-color" value="#<?php echo esc_attr( get_header_textcolor() ); ?>" />
+<?php else : ?>
+               <input type="text" name="text-color" id="text-color" value="#<?php echo esc_attr( get_theme_support( 'custom-header', 'default-text-color' ) ); ?>" />
+<?php endif; ?>
+               <a href="#" class="hide-if-no-js" id="pickcolor"><?php _e( 'Select a Color' ); ?></a>
        </p>
        <div id="color-picker" style="z-index: 100; background:#eee; border:1px solid #ccc; position:absolute; display:none;"></div>
 </td>
 </tr>
 
        </p>
        <div id="color-picker" style="z-index: 100; background:#eee; border:1px solid #ccc; position:absolute; display:none;"></div>
 </td>
 </tr>
 
-       <?php if ( defined('HEADER_TEXTCOLOR') && get_theme_mod('header_textcolor') ) { ?>
+       <?php if ( current_theme_supports( 'custom-header', 'default-text-color' ) && get_theme_mod( 'header_textcolor' ) ) { ?>
 <tr valign="top">
 <th scope="row"><?php _e('Reset Text Color'); ?></th>
 <td>
 <tr valign="top">
 <th scope="row"><?php _e('Reset Text Color'); ?></th>
 <td>
@@ -617,7 +664,7 @@ class Custom_Image_Header {
 
 </tbody>
 </table>
 
 </tbody>
 </table>
-       <?php endif;
+<?php endif;
 
 do_action( 'custom_header_options' );
 
 
 do_action( 'custom_header_options' );
 
@@ -636,49 +683,55 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
         */
        function step_2() {
                check_admin_referer('custom-header-upload', '_wpnonce-custom-header-upload');
         */
        function step_2() {
                check_admin_referer('custom-header-upload', '_wpnonce-custom-header-upload');
-               if ( ! current_theme_supports( 'custom-header-uploads' ) )
+               if ( ! current_theme_supports( 'custom-header', 'uploads' ) )
                        wp_die( __( 'Cheatin&#8217; uh?' ) );
 
                        wp_die( __( 'Cheatin&#8217; uh?' ) );
 
-               $overrides = array('test_form' => false);
-               $file = wp_handle_upload($_FILES['import'], $overrides);
-
-               if ( isset($file['error']) )
-                       wp_die( $file['error'],  __( 'Image Upload Error' ) );
-
-               $url = $file['url'];
-               $type = $file['type'];
-               $file = $file['file'];
-               $filename = basename($file);
+               if ( empty( $_POST ) && isset( $_GET['file'] ) ) {
+                       $attachment_id = absint( $_GET['file'] );
+                       $file = get_attached_file( $attachment_id, true );
+                       $url = wp_get_attachment_image_src( $attachment_id, 'full');
+                       $url = $url[0];
+               } elseif ( isset( $_POST ) ) {
+                       extract($this->step_2_manage_upload());
+               }
 
 
-               // Construct the object array
-               $object = array(
-               'post_title' => $filename,
-               'post_content' => $url,
-               'post_mime_type' => $type,
-               'guid' => $url,
-               'context' => 'custom-header'
-               );
+               if ( file_exists( $file ) ) {
+                       list( $width, $height, $type, $attr ) = getimagesize( $file );
+               } else {
+                       $data = wp_get_attachment_metadata( $attachment_id );
+                       $height = $data[ 'height' ];
+                       $width = $data[ 'width' ];
+                       unset( $data );
+               }
 
 
-               // Save the data
-               $id = wp_insert_attachment($object, $file);
+               $max_width = 0;
+               // For flex, limit size of image displayed to 1500px unless theme says otherwise
+               if ( current_theme_supports( 'custom-header', 'flex-width' ) )
+                       $max_width = 1500;
 
 
-               list($width, $height, $type, $attr) = getimagesize( $file );
+               if ( current_theme_supports( 'custom-header', 'max-width' ) )
+                       $max_width = max( $max_width, get_theme_support( 'custom-header', 'max-width' ) );
+               $max_width = max( $max_width, get_theme_support( 'custom-header', 'width' ) );
 
 
-               if ( $width == HEADER_IMAGE_WIDTH && $height == HEADER_IMAGE_HEIGHT ) {
+               // If flexible height isn't supported and the image is the exact right size
+               if ( ! current_theme_supports( 'custom-header', 'flex-height' ) && ! current_theme_supports( 'custom-header', 'flex-width' )
+                       && $width == get_theme_support( 'custom-header', 'width' ) && $height == get_theme_support( 'custom-header', 'height' ) )
+               {
                        // Add the meta-data
                        // Add the meta-data
-                       wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) );
-                       update_post_meta( $id, '_wp_attachment_is_custom_header', get_option('stylesheet' ) );
+                       if ( file_exists( $file ) )
+                               wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $file ) );
 
 
-                       set_theme_mod('header_image', esc_url($url));
-                       do_action('wp_create_file_in_uploads', $file, $id); // For replication
+                       $this->set_header_image( compact( 'url', 'attachment_id', 'width', 'height' ) );
+
+                       do_action('wp_create_file_in_uploads', $file, $attachment_id); // For replication
                        return $this->finished();
                        return $this->finished();
-               } elseif ( $width > HEADER_IMAGE_WIDTH ) {
-                       $oitar = $width / HEADER_IMAGE_WIDTH;
-                       $image = wp_crop_image($file, 0, 0, $width, $height, HEADER_IMAGE_WIDTH, $height / $oitar, false, str_replace(basename($file), 'midsize-'.basename($file), $file));
-                       if ( is_wp_error( $image ) )
-                               wp_die( __( 'Image could not be processed.  Please go back and try again.' ), __( 'Image Processing Error' ) );
+               } elseif ( $width > $max_width ) {
+                       $oitar = $width / $max_width;
+                       $image = wp_crop_image($attachment_id, 0, 0, $width, $height, $max_width, $height / $oitar, false, str_replace(basename($file), 'midsize-'.basename($file), $file));
+                       if ( ! $image || is_wp_error( $image ) )
+                               wp_die( __( 'Image could not be processed. Please go back and try again.' ), __( 'Image Processing Error' ) );
 
 
-                       $image = apply_filters('wp_create_file_in_uploads', $image, $id); // For replication
+                       $image = apply_filters('wp_create_file_in_uploads', $image, $attachment_id); // For replication
 
                        $url = str_replace(basename($url), basename($image), $url);
                        $width = $width / $oitar;
 
                        $url = str_replace(basename($url), basename($image), $url);
                        $width = $width / $oitar;
@@ -704,25 +757,66 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
        <input type="hidden" name="y1" id="y1" value="0"/>
        <input type="hidden" name="width" id="width" value="<?php echo esc_attr( $width ); ?>"/>
        <input type="hidden" name="height" id="height" value="<?php echo esc_attr( $height ); ?>"/>
        <input type="hidden" name="y1" id="y1" value="0"/>
        <input type="hidden" name="width" id="width" value="<?php echo esc_attr( $width ); ?>"/>
        <input type="hidden" name="height" id="height" value="<?php echo esc_attr( $height ); ?>"/>
-       <input type="hidden" name="attachment_id" id="attachment_id" value="<?php echo esc_attr( $id ); ?>" />
+       <input type="hidden" name="attachment_id" id="attachment_id" value="<?php echo esc_attr( $attachment_id ); ?>" />
        <input type="hidden" name="oitar" id="oitar" value="<?php echo esc_attr( $oitar ); ?>" />
        <input type="hidden" name="oitar" id="oitar" value="<?php echo esc_attr( $oitar ); ?>" />
+       <?php if ( empty( $_POST ) && isset( $_GET['file'] ) ) { ?>
+       <input type="hidden" name="create-new-attachment" value="true" />
+       <?php } ?>
        <?php wp_nonce_field( 'custom-header-crop-image' ) ?>
 
        <?php wp_nonce_field( 'custom-header-crop-image' ) ?>
 
-       <?php submit_button( __( 'Crop and Publish' ) ); ?>
+       <p class="submit">
+       <?php submit_button( __( 'Crop and Publish' ), 'primary', 'submit', false ); ?>
+       <?php
+       if ( isset( $oitar ) && 1 == $oitar )
+               submit_button( __( 'Skip Cropping, Publish Image as Is' ), 'secondary', 'skip-cropping', false );
+       ?>
        </p>
 </form>
 </div>
                <?php
        }
 
        </p>
 </form>
 </div>
                <?php
        }
 
+
+       /**
+        * Upload the file to be cropped in the second step.
+        *
+        * @since 3.4.0
+        */
+       function step_2_manage_upload() {
+               $overrides = array('test_form' => false);
+               $file = wp_handle_upload($_FILES['import'], $overrides);
+
+               if ( isset($file['error']) )
+                       wp_die( $file['error'],  __( 'Image Upload Error' ) );
+
+               $url = $file['url'];
+               $type = $file['type'];
+               $file = $file['file'];
+               $filename = basename($file);
+
+               // Construct the object array
+               $object = array(
+                       'post_title'     => $filename,
+                       'post_content'   => $url,
+                       'post_mime_type' => $type,
+                       'guid'           => $url,
+                       'context'        => 'custom-header'
+               );
+
+               // Save the data
+               $attachment_id = wp_insert_attachment( $object, $file );
+               return compact( 'attachment_id', 'file', 'filename', 'url', 'type' );
+       }
+
        /**
         * Display third step of custom header image page.
         *
         * @since 2.1.0
         */
        function step_3() {
        /**
         * Display third step of custom header image page.
         *
         * @since 2.1.0
         */
        function step_3() {
-               check_admin_referer('custom-header-crop-image');
-               if ( ! current_theme_supports( 'custom-header-uploads' ) )
+               check_admin_referer( 'custom-header-crop-image' );
+
+               if ( ! current_theme_supports( 'custom-header', 'uploads' ) )
                        wp_die( __( 'Cheatin&#8217; uh?' ) );
 
                if ( $_POST['oitar'] > 1 ) {
                        wp_die( __( 'Cheatin&#8217; uh?' ) );
 
                if ( $_POST['oitar'] > 1 ) {
@@ -735,37 +829,75 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
                $attachment_id = absint( $_POST['attachment_id'] );
                $original = get_attached_file($attachment_id);
 
                $attachment_id = absint( $_POST['attachment_id'] );
                $original = get_attached_file($attachment_id);
 
-               $cropped = wp_crop_image( $attachment_id, (int) $_POST['x1'], (int) $_POST['y1'], (int) $_POST['width'], (int) $_POST['height'], HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT );
-               if ( is_wp_error( $cropped ) )
-                       wp_die( __( 'Image could not be processed.  Please go back and try again.' ), __( 'Image Processing Error' ) );
+
+               $max_width = 0;
+               // For flex, limit size of image displayed to 1500px unless theme says otherwise
+               if ( current_theme_supports( 'custom-header', 'flex-width' ) )
+                       $max_width = 1500;
+
+               if ( current_theme_supports( 'custom-header', 'max-width' ) )
+                       $max_width = max( $max_width, get_theme_support( 'custom-header', 'max-width' ) );
+               $max_width = max( $max_width, get_theme_support( 'custom-header', 'width' ) );
+
+               if ( ( current_theme_supports( 'custom-header', 'flex-height' ) && ! current_theme_supports( 'custom-header', 'flex-width' ) ) || $_POST['width'] > $max_width )
+                       $dst_height = absint( $_POST['height'] * ( $max_width / $_POST['width'] ) );
+               elseif ( current_theme_supports( 'custom-header', 'flex-height' ) && current_theme_supports( 'custom-header', 'flex-width' ) )
+                       $dst_height = absint( $_POST['height'] );
+               else
+                       $dst_height = get_theme_support( 'custom-header', 'height' );
+
+               if ( ( current_theme_supports( 'custom-header', 'flex-width' ) && ! current_theme_supports( 'custom-header', 'flex-height' ) ) || $_POST['width'] > $max_width )
+                       $dst_width = absint( $_POST['width'] * ( $max_width / $_POST['width'] ) );
+               elseif ( current_theme_supports( 'custom-header', 'flex-width' ) && current_theme_supports( 'custom-header', 'flex-height' ) )
+                       $dst_width = absint( $_POST['width'] );
+               else
+                       $dst_width = get_theme_support( 'custom-header', 'width' );
+
+               if ( empty( $_POST['skip-cropping'] ) )
+                       $cropped = wp_crop_image( $attachment_id, (int) $_POST['x1'], (int) $_POST['y1'], (int) $_POST['width'], (int) $_POST['height'], $dst_width, $dst_height );
+               elseif ( ! empty( $_POST['create-new-attachment'] ) )
+                       $cropped = _copy_image_file( $attachment_id );
+               else
+                       $cropped = get_attached_file( $attachment_id );
+
+               if ( ! $cropped || is_wp_error( $cropped ) )
+                       wp_die( __( 'Image could not be processed. Please go back and try again.' ), __( 'Image Processing Error' ) );
 
                $cropped = apply_filters('wp_create_file_in_uploads', $cropped, $attachment_id); // For replication
 
                $parent = get_post($attachment_id);
                $parent_url = $parent->guid;
 
                $cropped = apply_filters('wp_create_file_in_uploads', $cropped, $attachment_id); // For replication
 
                $parent = get_post($attachment_id);
                $parent_url = $parent->guid;
-               $url = str_replace(basename($parent_url), basename($cropped), $parent_url);
+               $url = str_replace( basename( $parent_url ), basename( $cropped ), $parent_url );
+
+               $size = @getimagesize( $cropped );
+               $image_type = ( $size ) ? $size['mime'] : 'image/jpeg';
 
                // Construct the object array
                $object = array(
                        'ID' => $attachment_id,
                        'post_title' => basename($cropped),
                        'post_content' => $url,
 
                // Construct the object array
                $object = array(
                        'ID' => $attachment_id,
                        'post_title' => basename($cropped),
                        'post_content' => $url,
-                       'post_mime_type' => 'image/jpeg',
+                       'post_mime_type' => $image_type,
                        'guid' => $url,
                        'context' => 'custom-header'
                );
                        'guid' => $url,
                        'context' => 'custom-header'
                );
+               if ( ! empty( $_POST['create-new-attachment'] ) )
+                       unset( $object['ID'] );
 
                // Update the attachment
 
                // Update the attachment
-               wp_insert_attachment($object, $cropped);
+               $attachment_id = wp_insert_attachment( $object, $cropped );
                wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $cropped ) );
                wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $cropped ) );
-               update_post_meta( $attachment_id, '_wp_attachment_is_custom_header', get_option('stylesheet' ) );
 
 
-               set_theme_mod('header_image', $url);
+               $width = $dst_width;
+               $height = $dst_height;
+               $this->set_header_image( compact( 'url', 'attachment_id', 'width', 'height' ) );
 
                // cleanup
 
                // cleanup
-               $medium = str_replace(basename($original), 'midsize-'.basename($original), $original);
-               @unlink( apply_filters( 'wp_delete_file', $medium ) );
-               @unlink( apply_filters( 'wp_delete_file', $original ) );
+               $medium = str_replace( basename( $original ), 'midsize-' . basename( $original ), $original );
+               if ( file_exists( $medium ) )
+                       @unlink( apply_filters( 'wp_delete_file', $medium ) );
+               if ( empty( $_POST['create-new-attachment'] ) && empty( $_POST['skip-cropping'] ) )
+                       @unlink( apply_filters( 'wp_delete_file', $original ) );
 
                return $this->finished();
        }
 
                return $this->finished();
        }
@@ -789,13 +921,132 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
                if ( ! current_user_can('edit_theme_options') )
                        wp_die(__('You do not have permission to customize headers.'));
                $step = $this->step();
                if ( ! current_user_can('edit_theme_options') )
                        wp_die(__('You do not have permission to customize headers.'));
                $step = $this->step();
-               if ( 1 == $step )
-                       $this->step_1();
-               elseif ( 2 == $step )
+               if ( 2 == $step )
                        $this->step_2();
                elseif ( 3 == $step )
                        $this->step_3();
                        $this->step_2();
                elseif ( 3 == $step )
                        $this->step_3();
+               else
+                       $this->step_1();
+       }
+
+       /**
+        * Replace default attachment actions with "Set as header" link.
+        *
+        * @since 3.4.0
+        */
+       function attachment_fields_to_edit( $form_fields, $post ) {
+               $form_fields = array();
+               $href = esc_url(add_query_arg(array(
+                       'page' => 'custom-header',
+                       'step' => 2,
+                       '_wpnonce-custom-header-upload' => wp_create_nonce('custom-header-upload'),
+                       'file' => $post->ID
+               ), admin_url('themes.php')));
+
+               $form_fields['buttons'] = array( 'tr' => '<tr class="submit"><td></td><td><a data-location="' . $href . '" class="wp-set-header">' . __( 'Set as header' ) . '</a></td></tr>' );
+               $form_fields['context'] = array( 'input' => 'hidden', 'value' => 'custom-header' );
+
+               return $form_fields;
+       }
+
+       /**
+        * Leave only "Media Library" tab in the uploader window.
+        *
+        * @since 3.4.0
+        */
+       function filter_upload_tabs() {
+               return array( 'library' => __('Media Library') );
+       }
+
+       /**
+        * Choose a header image, selected from existing uploaded and default headers,
+        * or provide an array of uploaded header data (either new, or from media library).
+        *
+        * @param mixed $choice Which header image to select. Allows for values of 'random-default-image',
+        *      for randomly cycling among the default images; 'random-uploaded-image', for randomly cycling
+        *      among the uploaded images; the key of a default image registered for that theme; and
+        *      the key of an image uploaded for that theme (the basename of the URL).
+        *  Or an array of arguments: attachment_id, url, width, height. All are required.
+        *
+        * @since 3.4.0
+        */
+       final public function set_header_image( $choice ) {
+               if ( is_array( $choice ) || is_object( $choice ) ) {
+                       $choice = (array) $choice;
+                       if ( ! isset( $choice['attachment_id'] ) || ! isset( $choice['url'] ) )
+                               return;
+
+                       $choice['url'] = esc_url_raw( $choice['url'] );
+
+                       $header_image_data = (object) array(
+                               'attachment_id' => $choice['attachment_id'],
+                               'url'           => $choice['url'],
+                               'thumbnail_url' => $choice['url'],
+                               'height'        => $choice['height'],
+                               'width'         => $choice['width'],
+                       );
+
+                       update_post_meta( $choice['attachment_id'], '_wp_attachment_is_custom_header', get_stylesheet() );
+                       set_theme_mod( 'header_image', $choice['url'] );
+                       set_theme_mod( 'header_image_data', $header_image_data );
+                       return;
+               }
+
+               if ( in_array( $choice, array( 'remove-header', 'random-default-image', 'random-uploaded-image' ) ) ) {
+                       set_theme_mod( 'header_image', $choice );
+                       remove_theme_mod( 'header_image_data' );
+                       return;
+               }
+
+               $uploaded = get_uploaded_header_images();
+               if ( $uploaded && isset( $uploaded[ $choice ] ) ) {
+                       $header_image_data = $uploaded[ $choice ];
+
+               } else {
+                       $this->process_default_headers();
+                       if ( isset( $this->default_headers[ $choice ] ) )
+                               $header_image_data = $this->default_headers[ $choice ];
+                       else
+                               return;
+               }
+
+               set_theme_mod( 'header_image', esc_url_raw( $header_image_data['url'] ) );
+               set_theme_mod( 'header_image_data', $header_image_data );
+       }
+
+       /**
+        * Remove a header image.
+        *
+        * @since 3.4.0
+        */
+       final public function remove_header_image() {
+               return $this->set_header_image( 'remove-header' );
        }
 
        }
 
+       /**
+        * Reset a header image to the default image for the theme.
+        *
+        * This method does not do anything if the theme does not have a default header image.
+        *
+        * @since 3.4.0
+        */
+       final public function reset_header_image() {
+               $this->process_default_headers();
+               $default = get_theme_support( 'custom-header', 'default-image' );
+
+               if ( ! $default )
+                       return $this->remove_header_image();
+
+               $default = sprintf( $default, get_template_directory_uri(), get_stylesheet_directory_uri() );
+
+               foreach ( $this->default_headers as $header => $details ) {
+                       if ( $details['url'] == $default ) {
+                               $default_data = $details;
+                               break;
+                       }
+               }
+
+               set_theme_mod( 'header_image', $default );
+               set_theme_mod( 'header_image_data', (object) $default_data );
+       }
 }
 }
-?>
diff --git a/wp-admin/customize.php b/wp-admin/customize.php
new file mode 100644 (file)
index 0000000..3e6a675
--- /dev/null
@@ -0,0 +1,198 @@
+<?php
+/**
+ * Customize Controls
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 3.4.0
+ */
+
+require_once( './admin.php' );
+if ( ! current_user_can( 'edit_theme_options' ) )
+       wp_die( __( 'Cheatin&#8217; uh?' ) );
+
+wp_reset_vars( array( 'url', 'return' ) );
+$url = urldecode( $url );
+$url = wp_validate_redirect( $url, home_url( '/' ) );
+if ( $return )
+       $return = wp_validate_redirect( urldecode( $return ) );
+if ( ! $return )
+       $return = $url;
+
+global $wp_scripts, $wp_customize;
+
+$registered = $wp_scripts->registered;
+$wp_scripts = new WP_Scripts;
+$wp_scripts->registered = $registered;
+
+add_action( 'customize_controls_print_scripts',        'print_head_scripts', 20 );
+add_action( 'customize_controls_print_footer_scripts', '_wp_footer_scripts'     );
+add_action( 'customize_controls_print_styles',         'print_admin_styles', 20 );
+
+do_action( 'customize_controls_init' );
+
+wp_enqueue_script( 'customize-controls' );
+wp_enqueue_style( 'customize-controls' );
+
+do_action( 'customize_controls_enqueue_scripts' );
+
+// Let's roll.
+@header('Content-Type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset'));
+
+wp_user_settings();
+_wp_admin_html_begin();
+
+$body_class = '';
+
+if ( wp_is_mobile() ) :
+       $body_class .= ' mobile';
+
+       ?><meta name="viewport" id="viewport-meta" content="width=device-width, initial-scale=0.8, minimum-scale=0.5, maximum-scale=1.2"><?php
+endif;
+
+$is_ios = wp_is_mobile() && preg_match( '/iPad|iPod|iPhone/', $_SERVER['HTTP_USER_AGENT'] );
+
+if ( $is_ios )
+       $body_class .= ' ios';
+
+$admin_title = sprintf( __( '%1$s &#8212; WordPress' ), strip_tags( sprintf( __( 'Customize %s' ), $wp_customize->theme()->display('Name') ) ) );
+?><title><?php echo $admin_title; ?></title><?php
+
+do_action( 'customize_controls_print_styles' );
+do_action( 'customize_controls_print_scripts' );
+?>
+</head>
+<body class="<?php echo esc_attr( $body_class ); ?>">
+<div class="wp-full-overlay expanded">
+       <form id="customize-controls" class="wrap wp-full-overlay-sidebar">
+               <?php wp_nonce_field( 'customize_controls-' . $wp_customize->get_stylesheet() ); ?>
+               <div id="customize-header-actions" class="wp-full-overlay-header">
+                       <?php
+                               $save_text = $wp_customize->is_theme_active() ? __( 'Save &amp; Publish' ) : __( 'Save &amp; Activate' );
+                               submit_button( $save_text, 'primary', 'save', false );
+                       ?>
+                       <img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" />
+                       <a class="back button" href="<?php echo esc_url( $return ? $return : admin_url( 'themes.php' ) ); ?>">
+                               <?php _e( 'Cancel' ); ?>
+                       </a>
+               </div>
+
+               <?php
+                       $screenshot = $wp_customize->theme()->get_screenshot();
+                       $cannot_expand = ! ( $screenshot || $wp_customize->theme()->get('Description') );
+               ?>
+
+               <div class="wp-full-overlay-sidebar-content">
+                       <div id="customize-info" class="customize-section<?php if ( $cannot_expand ) echo ' cannot-expand'; ?>">
+                               <div class="customize-section-title">
+                                       <span class="preview-notice"><?php
+                                               /* translators: %s is the theme name in the Customize/Live Preview pane */
+                                               echo sprintf( __( 'You are previewing %s' ), '<strong class="theme-name">' . $wp_customize->theme()->display('Name') . '</strong>' );
+                                       ?></span>
+                               </div>
+                               <?php if ( ! $cannot_expand ) : ?>
+                               <div class="customize-section-content">
+                                       <?php if ( $screenshot ) : ?>
+                                               <img class="theme-screenshot" src="<?php echo esc_url( $screenshot ); ?>" />
+                                       <?php endif; ?>
+
+                                       <?php if ( $wp_customize->theme()->get('Description') ): ?>
+                                               <div class="theme-description"><?php echo $wp_customize->theme()->display('Description'); ?></div>
+                                       <?php endif; ?>
+                               </div>
+                               <?php endif; ?>
+                       </div>
+
+                       <div id="customize-theme-controls"><ul>
+                               <?php
+                               foreach ( $wp_customize->sections() as $section )
+                                       $section->maybe_render();
+                               ?>
+                       </ul></div>
+               </div>
+
+               <div id="customize-footer-actions" class="wp-full-overlay-footer">
+                       <a href="#" class="collapse-sidebar button-secondary" title="<?php esc_attr_e('Collapse Sidebar'); ?>">
+                               <span class="collapse-sidebar-arrow"></span>
+                               <span class="collapse-sidebar-label"><?php _e('Collapse'); ?></span>
+                       </a>
+               </div>
+       </form>
+       <div id="customize-preview" class="wp-full-overlay-main"></div>
+       <?php
+
+       do_action( 'customize_controls_print_footer_scripts' );
+
+       // If the frontend and the admin are served from the same domain, load the
+       // preview over ssl if the customizer is being loaded over ssl. This avoids
+       // insecure content warnings. This is not attempted if the admin and frontend
+       // are on different domains to avoid the case where the frontend doesn't have
+       // ssl certs. Domain mapping plugins can allow other urls in these conditions
+       // using the customize_allowed_urls filter.
+
+       $allowed_urls = array( home_url('/') );
+       $admin_origin = parse_url( admin_url() );
+       $home_origin  = parse_url( home_url() );
+       $cross_domain = ( strtolower( $admin_origin[ 'host' ] ) != strtolower( $home_origin[ 'host' ] ) );
+
+       if ( is_ssl() && ! $cross_domain )
+               $allowed_urls[] = home_url( '/', 'https' );
+
+       $allowed_urls = array_unique( apply_filters( 'customize_allowed_urls', $allowed_urls ) );
+
+       $fallback_url = add_query_arg( array(
+               'preview'        => 1,
+               'template'       => $wp_customize->get_template(),
+               'stylesheet'     => $wp_customize->get_stylesheet(),
+               'preview_iframe' => true,
+               'TB_iframe'      => 'true'
+       ), home_url( '/' ) );
+
+       $login_url = add_query_arg( array(
+               'interim-login' => 1,
+               'customize-login' => 1
+       ), wp_login_url() );
+
+       $settings = array(
+               'theme'    => array(
+                       'stylesheet' => $wp_customize->get_stylesheet(),
+                       'active'     => $wp_customize->is_theme_active(),
+               ),
+               'url'      => array(
+                       'preview'       => esc_url( $url ? $url : home_url( '/' ) ),
+                       'parent'        => esc_url( admin_url() ),
+                       'activated'     => admin_url( 'themes.php?activated=true&previewed' ),
+                       'ajax'          => esc_url( admin_url( 'admin-ajax.php', 'relative' ) ),
+                       'allowed'       => array_map( 'esc_url', $allowed_urls ),
+                       'isCrossDomain' => $cross_domain,
+                       'fallback'      => $fallback_url,
+                       'home'          => esc_url( home_url( '/' ) ),
+                       'login'         => $login_url,
+               ),
+               'browser'  => array(
+                       'mobile' => wp_is_mobile(),
+                       'ios'    => $is_ios,
+               ),
+               'settings' => array(),
+               'controls' => array(),
+       );
+
+       foreach ( $wp_customize->settings() as $id => $setting ) {
+               $settings['settings'][ $id ] = array(
+                       'value'     => $setting->js_value(),
+                       'transport' => $setting->transport,
+               );
+       }
+
+       foreach ( $wp_customize->controls() as $id => $control ) {
+               $control->to_json();
+               $settings['controls'][ $id ] = $control->json;
+       }
+
+       ?>
+       <script type="text/javascript">
+               var _wpCustomizeSettings = <?php echo json_encode( $settings ); ?>;
+       </script>
+</div>
+</body>
+</html>
index 224d36741c8e67fb2c741fcb03c84603cb99cb32..100d02302583664abff924259a2a94095b8ff5b6 100644 (file)
@@ -121,13 +121,11 @@ get_current_screen()->add_help_tab( array(
 'id'           => 'moderating-comments',
 'title'                => __('Moderating Comments'),
 'content'      =>
 'id'           => 'moderating-comments',
 'title'                => __('Moderating Comments'),
 'content'      =>
-       '<ul>' .
-               '<li>' . __( 'A yellow row means the comment is waiting for you to moderate it.' ) . '</li>' .
-               '<li>' . __( 'In the <strong>Author</strong> column, in addition to the author&#8217;s name, email address, and blog URL, the commenter&#8217;s IP address is shown. Clicking on this link will show you all the comments made from this IP address.' ) . '</li>' .
-               '<li>' . __( 'In the <strong>Comment</strong> column, above each comment it says &#8220;Submitted on,&#8221; followed by the date and time the comment was left on your site. Clicking on the date/time link will take you to that comment on your live site. Hovering over any comment gives you options to approve, reply (and approve), quick edit, edit, spam mark, or trash that comment.' ) . '</li>' .
-               '<li>' . __( 'In the <strong>In Response To</strong> column, there are three elements. The text is the name of the post that inspired the comment, and links to the post editor for that entry. The View Post link leads to that post on your live site. The small bubble with the number in it shows how many comments that post has received. If the bubble is gray, you have moderated all comments for that post. If it is blue, there are pending comments. Clicking the bubble will filter the comments screen to show only comments on that post.' ) . '</li>' .
-               '<li>' . __( 'Many people take advantage of keyboard shortcuts to moderate their comments more quickly. Use the link to the side to learn more.' ) . '</li>' .
-       '</ul>'
+               '<p>' . __( 'A yellow row means the comment is waiting for you to moderate it.' ) . '</p>' .
+               '<p>' . __( 'In the <strong>Author</strong> column, in addition to the author&#8217;s name, email address, and blog URL, the commenter&#8217;s IP address is shown. Clicking on this link will show you all the comments made from this IP address.' ) . '</p>' .
+               '<p>' . __( 'In the <strong>Comment</strong> column, above each comment it says &#8220;Submitted on,&#8221; followed by the date and time the comment was left on your site. Clicking on the date/time link will take you to that comment on your live site. Hovering over any comment gives you options to approve, reply (and approve), quick edit, edit, spam mark, or trash that comment.' ) . '</p>' .
+               '<p>' . __( 'In the <strong>In Response To</strong> column, there are three elements. The text is the name of the post that inspired the comment, and links to the post editor for that entry. The View Post link leads to that post on your live site. The small bubble with the number in it shows how many comments that post has received. If the bubble is gray, you have moderated all comments for that post. If it is blue, there are pending comments. Clicking the bubble will filter the comments screen to show only comments on that post.' ) . '</p>' .
+               '<p>' . __( 'Many people take advantage of keyboard shortcuts to moderate their comments more quickly. Use the link to the side to learn more.' ) . '</p>'
 ) );
 
 get_current_screen()->set_help_sidebar(
 ) );
 
 get_current_screen()->set_help_sidebar(
index ec6f4ca38926eb7f4504310d558e95d23209ff26..c22c68aaf32a28e7e3735b9f2ed82676af5587a1 100644 (file)
@@ -12,6 +12,9 @@ if ( !defined('ABSPATH') )
 
 wp_enqueue_script('post');
 
 
 wp_enqueue_script('post');
 
+if ( wp_is_mobile() )
+       wp_enqueue_script( 'jquery-touch-punch' );
+
 if ( post_type_supports($post_type, 'editor') || post_type_supports($post_type, 'thumbnail') ) {
        add_thickbox();
        wp_enqueue_script('media-upload');
 if ( post_type_supports($post_type, 'editor') || post_type_supports($post_type, 'thumbnail') ) {
        add_thickbox();
        wp_enqueue_script('media-upload');
@@ -87,7 +90,7 @@ $form_extra .= "<input type='hidden' id='post_ID' name='post_ID' value='" . esc_
 if ( $autosave && mysql2date( 'U', $autosave->post_modified_gmt, false ) > mysql2date( 'U', $post->post_modified_gmt, false ) ) {
        foreach ( _wp_post_revision_fields() as $autosave_field => $_autosave_field ) {
                if ( normalize_whitespace( $autosave->$autosave_field ) != normalize_whitespace( $post->$autosave_field ) ) {
 if ( $autosave && mysql2date( 'U', $autosave->post_modified_gmt, false ) > mysql2date( 'U', $post->post_modified_gmt, false ) ) {
        foreach ( _wp_post_revision_fields() as $autosave_field => $_autosave_field ) {
                if ( normalize_whitespace( $autosave->$autosave_field ) != normalize_whitespace( $post->$autosave_field ) ) {
-                       $notice = sprintf( __( 'There is an autosave of this post that is more recent than the version below.  <a href="%s">View the autosave</a>' ), get_edit_post_link( $autosave->ID ) );
+                       $notice = sprintf( __( 'There is an autosave of this post that is more recent than the version below. <a href="%s">View the autosave</a>' ), get_edit_post_link( $autosave->ID ) );
                        break;
                }
        }
                        break;
                }
        }
@@ -240,7 +243,7 @@ if ( 'post' == $post_type ) {
 require_once('./admin-header.php');
 ?>
 
 require_once('./admin-header.php');
 ?>
 
-<div class="wrap columns-<?php echo (int) $screen_layout_columns ? (int) $screen_layout_columns : 'auto'; ?>">
+<div class="wrap">
 <?php screen_icon(); ?>
 <h2><?php echo esc_html( $title ); ?><?php if ( isset( $post_new_file ) ) : ?> <a href="<?php echo esc_url( $post_new_file ) ?>" class="add-new-h2"><?php echo esc_html($post_type_object->labels->add_new); ?></a><?php endif; ?></h2>
 <?php if ( $notice ) : ?>
 <?php screen_icon(); ?>
 <h2><?php echo esc_html( $title ); ?><?php if ( isset( $post_new_file ) ) : ?> <a href="<?php echo esc_url( $post_new_file ) ?>" class="add-new-h2"><?php echo esc_html($post_type_object->labels->add_new); ?></a><?php endif; ?></h2>
 <?php if ( $notice ) : ?>
@@ -272,17 +275,9 @@ wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false );
 wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
 ?>
 
 wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
 ?>
 
-<div id="poststuff" class="metabox-holder<?php echo 1 != $screen_layout_columns ? ' has-right-sidebar' : ''; ?>">
-<div id="side-info-column" class="inner-sidebar">
-<?php
-if ( 1 != $screen_layout_columns ) {
-       ('page' == $post_type) ? do_action('submitpage_box') : do_action('submitpost_box');
-       $side_meta_boxes = do_meta_boxes($post_type, 'side', $post);
-}
-?>
-</div>
+<div id="poststuff">
 
 
-<div id="post-body">
+<div id="post-body" class="metabox-holder columns-<?php echo 1 == get_current_screen()->get_columns() ? '1' : '2'; ?>">
 <div id="post-body-content">
 <?php if ( post_type_supports($post_type, 'title') ) { ?>
 <div id="titlediv">
 <div id="post-body-content">
 <?php if ( post_type_supports($post_type, 'title') ) { ?>
 <div id="titlediv">
@@ -338,25 +333,41 @@ wp_nonce_field( 'samplepermalink', 'samplepermalinknonce', false );
 </tr></tbody></table>
 
 </div>
 </tr></tbody></table>
 
 </div>
+<?php } ?>
+</div><!-- /post-body-content -->
 
 
+<div id="postbox-container-1" class="postbox-container">
 <?php
 <?php
-}
 
 
-if ( 1 == $screen_layout_columns ) {
-       ('page' == $post_type) ? do_action('submitpage_box') : do_action('submitpost_box');
-       $side_meta_boxes = do_meta_boxes($post_type, 'side', $post);
-}
+if ( 'page' == $post_type )
+       do_action('submitpage_box');
+else
+       do_action('submitpost_box');
+
+do_meta_boxes($post_type, 'side', $post);
+
+?>
+</div>
+<div id="postbox-container-2" class="postbox-container">
+<?php
 
 do_meta_boxes(null, 'normal', $post);
 
 
 do_meta_boxes(null, 'normal', $post);
 
-( 'page' == $post_type ) ? do_action('edit_page_form') : do_action('edit_form_advanced');
+if ( 'page' == $post_type )
+       do_action('edit_page_form');
+else
+       do_action('edit_form_advanced');
 
 do_meta_boxes(null, 'advanced', $post);
 
 
 do_meta_boxes(null, 'advanced', $post);
 
-do_action('dbx_post_sidebar'); ?>
-
-</div>
+?>
 </div>
 </div>
+<?php
+
+do_action('dbx_post_sidebar');
+
+?>
+</div><!-- /post-body -->
 <br class="clear" />
 </div><!-- /poststuff -->
 </form>
 <br class="clear" />
 </div><!-- /poststuff -->
 </form>
index 37772e3ca7a6b64942ad4424f0c319f005d77dfb..2340baf4f3b6fea7103b9aeaa6a8769269577915 100644 (file)
@@ -9,28 +9,67 @@
 // don't load directly
 if ( !defined('ABSPATH') )
        die('-1');
 // don't load directly
 if ( !defined('ABSPATH') )
        die('-1');
-
-/**
- * @var string
- */
-$submitbutton_text = __('Edit Comment');
-$toprow_title = sprintf(__('Editing Comment # %s'), $comment->comment_ID);
-$form_action = 'editedcomment';
-$form_extra = "' />\n<input type='hidden' name='comment_ID' value='" . esc_attr($comment->comment_ID) . "' />\n<input type='hidden' name='comment_post_ID' value='" . esc_attr($comment->comment_post_ID);
-$comment->comment_author_email = esc_attr($comment->comment_author_email);
 ?>
 ?>
-
 <form name="post" action="comment.php" method="post" id="post">
 <?php wp_nonce_field('update-comment_' . $comment->comment_ID) ?>
 <div class="wrap">
 <?php screen_icon(); ?>
 <h2><?php _e('Edit Comment'); ?></h2>
 
 <form name="post" action="comment.php" method="post" id="post">
 <?php wp_nonce_field('update-comment_' . $comment->comment_ID) ?>
 <div class="wrap">
 <?php screen_icon(); ?>
 <h2><?php _e('Edit Comment'); ?></h2>
 
-<div id="poststuff" class="metabox-holder has-right-sidebar">
-<input type="hidden" name="user_ID" value="<?php echo (int) $user_ID ?>" />
-<input type="hidden" name="action" value='<?php echo $form_action . $form_extra ?>' />
+<div id="poststuff">
+<input type="hidden" name="user_ID" value="<?php echo (int) $user_ID; ?>" />
+<input type="hidden" name="action" value="editedcomment" />
+<input type="hidden" name="comment_ID" value="<?php echo esc_attr( $comment->comment_ID ); ?>" />
+<input type="hidden" name="comment_post_ID" value="<?php echo esc_attr( $comment->comment_post_ID ); ?>" />
+
+<div id="post-body" class="metabox-holder columns-2">
+<div id="post-body-content">
+<div id="namediv" class="stuffbox">
+<h3><label for="name"><?php _e( 'Author' ) ?></label></h3>
+<div class="inside">
+<table class="form-table editcomment">
+<tbody>
+<tr valign="top">
+       <td class="first"><?php _e( 'Name:' ); ?></td>
+       <td><input type="text" name="newcomment_author" size="30" value="<?php echo esc_attr( $comment->comment_author ); ?>" tabindex="1" id="name" /></td>
+</tr>
+<tr valign="top">
+       <td class="first">
+       <?php
+               if ( $comment->comment_author_email ) {
+                       printf( __( 'E-mail (%s):' ), get_comment_author_email_link( __( 'send e-mail' ), '', '' ) );
+               } else {
+                       _e( 'E-mail:' );
+               }
+?></td>
+       <td><input type="text" name="newcomment_author_email" size="30" value="<?php echo $comment->comment_author_email; ?>" tabindex="2" id="email" /></td>
+</tr>
+<tr valign="top">
+       <td class="first">
+       <?php
+               if ( ! empty( $comment->comment_author_url ) && 'http://' != $comment->comment_author_url ) {
+                       $link = '<a href="' . $comment->comment_author_url . '" rel="external nofollow" target="_blank">' . __('visit site') . '</a>';
+                       printf( __( 'URL (%s):' ), apply_filters('get_comment_author_link', $link ) );
+               } else {
+                       _e( 'URL:' );
+               } ?></td>
+       <td><input type="text" id="newcomment_author_url" name="newcomment_author_url" size="30" class="code" value="<?php echo esc_attr($comment->comment_author_url); ?>" tabindex="3" /></td>
+</tr>
+</tbody>
+</table>
+<br />
+</div>
+</div>
+
+<div id="postdiv" class="postarea">
+<?php
+       $quicktags_settings = array( 'buttons' => 'strong,em,link,block,del,ins,img,ul,ol,li,code,spell,close' );
+       wp_editor( $comment->comment_content, 'content', array( 'media_buttons' => false, 'tinymce' => false, 'quicktags' => $quicktags_settings ) );
+       wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?>
+</div>
+</div><!-- /post-body-content -->
 
 
-<div id="side-info-column" class="inner-sidebar">
+<div id="postbox-container-1" class="postbox-container">
 <div id="submitdiv" class="stuffbox" >
 <h3><span class='hndle'><?php _e('Status') ?></span></h3>
 <div class="inside">
 <div id="submitdiv" class="stuffbox" >
 <h3><span class='hndle'><?php _e('Status') ?></span></h3>
 <div class="inside">
@@ -52,7 +91,7 @@ $comment->comment_author_email = esc_attr($comment->comment_author_email);
 <label class="spam"><input type="radio"<?php checked( $comment->comment_approved, 'spam' ); ?> name="comment_status" value="spam" /><?php /* translators: comment type radio button */ _ex('Spam', 'adjective'); ?></label>
 </div>
 
 <label class="spam"><input type="radio"<?php checked( $comment->comment_approved, 'spam' ); ?> name="comment_status" value="spam" /><?php /* translators: comment type radio button */ _ex('Spam', 'adjective'); ?></label>
 </div>
 
-<div class="misc-pub-section curtime misc-pub-section-last">
+<div class="misc-pub-section curtime">
 <?php
 // translators: Publish box date format, see http://php.net/date
 $datef = __( 'M j, Y @ G:i' );
 <?php
 // translators: Publish box date format, see http://php.net/date
 $datef = __( 'M j, Y @ G:i' );
@@ -77,69 +116,27 @@ $date = date_i18n( $datef, strtotime( $comment->comment_date ) );
 </div>
 </div>
 </div>
 </div>
 </div>
 </div>
-</div>
+</div><!-- /submitdiv -->
 </div>
 
 </div>
 
-<div id="post-body">
-<div id="post-body-content">
-<div id="namediv" class="stuffbox">
-<h3><label for="name"><?php _e( 'Author' ) ?></label></h3>
-<div class="inside">
-<table class="form-table editcomment">
-<tbody>
-<tr valign="top">
-       <td class="first"><?php _e( 'Name:' ); ?></td>
-       <td><input type="text" name="newcomment_author" size="30" value="<?php echo esc_attr( $comment->comment_author ); ?>" tabindex="1" id="name" /></td>
-</tr>
-<tr valign="top">
-       <td class="first">
-       <?php
-               if ( $comment->comment_author_email ) {
-                       printf( __( 'E-mail (%s):' ), get_comment_author_email_link( __( 'send e-mail' ), '', '' ) );
-               } else {
-                       _e( 'E-mail:' );
-               }
-?></td>
-       <td><input type="text" name="newcomment_author_email" size="30" value="<?php echo $comment->comment_author_email; ?>" tabindex="2" id="email" /></td>
-</tr>
-<tr valign="top">
-       <td class="first">
-       <?php
-               if ( ! empty( $comment->comment_author_url ) && 'http://' != $comment->comment_author_url ) {
-                       $link = '<a href="' . $comment->comment_author_url . '" rel="external nofollow" target="_blank">' . __('visit site') . '</a>';
-                       printf( __( 'URL (%s):' ), apply_filters('get_comment_author_link', $link ) );
-               } else {
-                       _e( 'URL:' );
-               } ?></td>
-       <td><input type="text" id="newcomment_author_url" name="newcomment_author_url" size="30" class="code" value="<?php echo esc_attr($comment->comment_author_url); ?>" tabindex="3" /></td>
-</tr>
-</tbody>
-</table>
-<br />
-</div>
-</div>
-
-<div id="postdiv" class="postarea">
+<div id="postbox-container-2" class="postbox-container">
 <?php
 <?php
-       $quicktags_settings = array( 'buttons' => 'strong,em,link,block,del,ins,img,ul,ol,li,code,spell,close' );
-       wp_editor( $comment->comment_content, 'content', array( 'media_buttons' => false, 'tinymce' => false, 'quicktags' => $quicktags_settings ) );
-       wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?>
-</div>
 
 
-<?php
 do_action('add_meta_boxes', 'comment', $comment);
 do_action('add_meta_boxes_comment', $comment);
 
 do_meta_boxes(null, 'normal', $comment);
 do_action('add_meta_boxes', 'comment', $comment);
 do_action('add_meta_boxes_comment', $comment);
 
 do_meta_boxes(null, 'normal', $comment);
+
 ?>
 ?>
+</div>
+
 <input type="hidden" name="c" value="<?php echo esc_attr($comment->comment_ID) ?>" />
 <input type="hidden" name="p" value="<?php echo esc_attr($comment->comment_post_ID) ?>" />
 <input name="referredby" type="hidden" id="referredby" value="<?php echo esc_url(stripslashes(wp_get_referer())); ?>" />
 <?php wp_original_referer_field(true, 'previous'); ?>
 <input type="hidden" name="noredir" value="1" />
 
 <input type="hidden" name="c" value="<?php echo esc_attr($comment->comment_ID) ?>" />
 <input type="hidden" name="p" value="<?php echo esc_attr($comment->comment_post_ID) ?>" />
 <input name="referredby" type="hidden" id="referredby" value="<?php echo esc_url(stripslashes(wp_get_referer())); ?>" />
 <?php wp_original_referer_field(true, 'previous'); ?>
 <input type="hidden" name="noredir" value="1" />
 
-</div>
-</div>
+</div><!-- /post-body -->
 </div>
 </div>
 </form>
 </div>
 </div>
 </form>
index a6051ce142c2bcb6298e64dad0b6654e5ed51255..4ae317b8985b8c7190d591f15951ef11a9625657 100644 (file)
@@ -57,7 +57,7 @@ get_current_screen()->set_help_sidebar(
 require_once ('admin-header.php');
 ?>
 
 require_once ('admin-header.php');
 ?>
 
-<div class="wrap columns-<?php echo (int) $screen_layout_columns ? (int) $screen_layout_columns : 'auto'; ?>">
+<div class="wrap">
 <?php screen_icon(); ?>
 <h2><?php echo esc_html( $title ); ?>  <a href="link-add.php" class="add-new-h2"><?php echo esc_html_x('Add New', 'link'); ?></a></h2>
 
 <?php screen_icon(); ?>
 <h2><?php echo esc_html( $title ); ?>  <a href="link-add.php" class="add-new-h2"><?php echo esc_html_x('Add New', 'link'); ?></a></h2>
 
@@ -75,17 +75,9 @@ wp_nonce_field( $nonce_action );
 wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
 wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?>
 
 wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
 wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?>
 
-<div id="poststuff" class="metabox-holder<?php echo 1 != $screen_layout_columns ? ' has-right-sidebar' : ''; ?>">
-<div id="side-info-column" class="inner-sidebar">
-<?php
-if ( 1 != $screen_layout_columns ) {
-       do_action('submitlink_box');
-       $side_meta_boxes = do_meta_boxes( 'link', 'side', $link );
-}
-?>
-</div>
+<div id="poststuff">
 
 
-<div id="post-body">
+<div id="post-body" class="metabox-holder columns-<?php echo 1 == get_current_screen()->get_columns() ? '1' : '2'; ?>">
 <div id="post-body-content">
 <div id="namediv" class="stuffbox">
 <h3><label for="link_name"><?php _ex('Name', 'link name') ?></label></h3>
 <div id="post-body-content">
 <div id="namediv" class="stuffbox">
 <h3><label for="link_name"><?php _ex('Name', 'link name') ?></label></h3>
@@ -110,18 +102,27 @@ if ( 1 != $screen_layout_columns ) {
     <p><?php _e('This will be shown when someone hovers over the link in the blogroll, or optionally below the link.'); ?></p>
 </div>
 </div>
     <p><?php _e('This will be shown when someone hovers over the link in the blogroll, or optionally below the link.'); ?></p>
 </div>
 </div>
+</div><!-- /post-body-content -->
 
 
+<div id="postbox-container-1" class="postbox-container">
 <?php
 
 <?php
 
-if ( 1 == $screen_layout_columns ) {
-       do_action('submitlink_box');
-       $side_meta_boxes = do_meta_boxes( 'link', 'side', $link );
-}
+do_action('submitlink_box');
+$side_meta_boxes = do_meta_boxes( 'link', 'side', $link );
+
+?>
+</div>
+<div id="postbox-container-2" class="postbox-container">
+<?php
 
 do_meta_boxes(null, 'normal', $link);
 
 do_meta_boxes(null, 'advanced', $link);
 
 
 do_meta_boxes(null, 'normal', $link);
 
 do_meta_boxes(null, 'advanced', $link);
 
+?>
+</div>
+<?php
+
 if ( $link_id ) : ?>
 <input type="hidden" name="action" value="save" />
 <input type="hidden" name="link_id" value="<?php echo (int) $link_id; ?>" />
 if ( $link_id ) : ?>
 <input type="hidden" name="action" value="save" />
 <input type="hidden" name="link_id" value="<?php echo (int) $link_id; ?>" />
@@ -131,7 +132,6 @@ if ( $link_id ) : ?>
 <input type="hidden" name="action" value="add" />
 <?php endif; ?>
 
 <input type="hidden" name="action" value="add" />
 <?php endif; ?>
 
-</div>
 </div>
 </div>
 
 </div>
 </div>
 
index 92f074a790c00a1172a95989a248b73349bc636f..24efd82f88a30f11f21eb1c17ed43a469a4d6857 100644 (file)
@@ -24,7 +24,7 @@ elseif ( 'link_category' == $taxonomy )
 else
        do_action('edit_tag_form_pre', $tag);
 
 else
        do_action('edit_tag_form_pre', $tag);
 
-do_action($taxonomy . '_pre_edit_form', $tag, $taxonomy);  ?>
+do_action($taxonomy . '_pre_edit_form', $tag, $taxonomy); ?>
 
 <div class="wrap">
 <?php screen_icon(); ?>
 
 <div class="wrap">
 <?php screen_icon(); ?>
@@ -52,16 +52,16 @@ do_action($taxonomy . '_pre_edit_form', $tag, $taxonomy);  ?>
                <tr class="form-field">
                        <th scope="row" valign="top"><label for="parent"><?php _ex('Parent', 'Taxonomy Parent'); ?></label></th>
                        <td>
                <tr class="form-field">
                        <th scope="row" valign="top"><label for="parent"><?php _ex('Parent', 'Taxonomy Parent'); ?></label></th>
                        <td>
-                               <?php wp_dropdown_categories(array('hide_empty' => 0, 'hide_if_empty' => false, 'name' => 'parent', 'orderby' => 'name', 'taxonomy' => $taxonomy, 'selected' => $tag->parent, 'exclude_tree' => $tag->term_id, 'hierarchical' => true, 'show_option_none' => __('None'))); ?><br />
+                               <?php wp_dropdown_categories(array('hide_empty' => 0, 'hide_if_empty' => false, 'name' => 'parent', 'orderby' => 'name', 'taxonomy' => $taxonomy, 'selected' => $tag->parent, 'exclude_tree' => $tag->term_id, 'hierarchical' => true, 'show_option_none' => __('None'))); ?>
                                <?php if ( 'category' == $taxonomy ) : ?>
                                <?php if ( 'category' == $taxonomy ) : ?>
-                               <span class="description"><?php _e('Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have children categories for Bebop and Big Band. Totally optional.'); ?></span>
+                               <p class="description"><?php _e('Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have children categories for Bebop and Big Band. Totally optional.'); ?></p>
                                <?php endif; ?>
                        </td>
                </tr>
 <?php endif; // is_taxonomy_hierarchical() ?>
                <tr class="form-field">
                        <th scope="row" valign="top"><label for="description"><?php _ex('Description', 'Taxonomy Description'); ?></label></th>
                                <?php endif; ?>
                        </td>
                </tr>
 <?php endif; // is_taxonomy_hierarchical() ?>
                <tr class="form-field">
                        <th scope="row" valign="top"><label for="description"><?php _ex('Description', 'Taxonomy Description'); ?></label></th>
-                       <td><textarea name="description" id="description" rows="5" cols="50" style="width: 97%;"><?php echo $tag->description; // textarea_escaped ?></textarea><br />
+                       <td><textarea name="description" id="description" rows="5" cols="50" class="large-text"><?php echo $tag->description; // textarea_escaped ?></textarea><br />
                        <span class="description"><?php _e('The description is not prominent by default, however some themes may show it.'); ?></span></td>
                </tr>
                <?php
                        <span class="description"><?php _e('The description is not prominent by default, however some themes may show it.'); ?></span></td>
                </tr>
                <?php
index fdb64c2479fb230760bd74c11c42ef13578d2206..44b2aa57e9bd5291018af026ca4ae14dbfcb1c7b 100644 (file)
@@ -80,7 +80,7 @@ case 'delete':
        }
 
        $tag_ID = (int) $_REQUEST['tag_ID'];
        }
 
        $tag_ID = (int) $_REQUEST['tag_ID'];
-       check_admin_referer( 'delete-tag_' .  $tag_ID );
+       check_admin_referer( 'delete-tag_' . $tag_ID );
 
        if ( !current_user_can( $tax->cap->delete_terms ) )
                wp_die( __( 'Cheatin&#8217; uh?' ) );
 
        if ( !current_user_can( $tax->cap->delete_terms ) )
                wp_die( __( 'Cheatin&#8217; uh?' ) );
@@ -416,5 +416,3 @@ break;
 }
 
 include('./admin-footer.php');
 }
 
 include('./admin-footer.php');
-
-?>
index b3b6b2e859bd538c0e6195adc0dd1bd42826a170..ab16be088faaba1330c4ca0a2bdd855559b4dcf3 100644 (file)
@@ -133,7 +133,7 @@ if ( $doaction ) {
                        break;
        }
 
                        break;
        }
 
-       $sendback = remove_query_arg( array('action', 'action2', 'tags_input', 'post_author', 'comment_status', 'ping_status', '_status',  'post', 'bulk_edit', 'post_view'), $sendback );
+       $sendback = remove_query_arg( array('action', 'action2', 'tags_input', 'post_author', 'comment_status', 'ping_status', '_status', 'post', 'bulk_edit', 'post_view'), $sendback );
 
        wp_redirect($sendback);
        exit();
 
        wp_redirect($sendback);
        exit();
@@ -222,49 +222,41 @@ require_once('./admin-header.php');
 <div class="wrap">
 <?php screen_icon(); ?>
 <h2><?php echo esc_html( $post_type_object->labels->name ); ?> <a href="<?php echo $post_new_file ?>" class="add-new-h2"><?php echo esc_html($post_type_object->labels->add_new); ?></a> <?php
 <div class="wrap">
 <?php screen_icon(); ?>
 <h2><?php echo esc_html( $post_type_object->labels->name ); ?> <a href="<?php echo $post_new_file ?>" class="add-new-h2"><?php echo esc_html($post_type_object->labels->add_new); ?></a> <?php
-if ( isset($_REQUEST['s']) && $_REQUEST['s'] )
+if ( ! empty( $_REQUEST['s'] ) )
        printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', get_search_query() ); ?>
 </h2>
 
        printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', get_search_query() ); ?>
 </h2>
 
-<?php if ( isset($_REQUEST['locked']) || isset($_REQUEST['skipped']) || isset($_REQUEST['updated']) || isset($_REQUEST['deleted']) || isset($_REQUEST['trashed']) || isset($_REQUEST['untrashed']) ) {
+<?php if ( isset( $_REQUEST['locked'] ) || isset( $_REQUEST['updated'] ) || isset( $_REQUEST['deleted'] ) || isset( $_REQUEST['trashed'] ) || isset( $_REQUEST['untrashed'] ) ) {
        $messages = array();
 ?>
 <div id="message" class="updated"><p>
        $messages = array();
 ?>
 <div id="message" class="updated"><p>
-<?php if ( isset($_REQUEST['updated']) && (int) $_REQUEST['updated'] ) {
-       $messages[] = sprintf( _n( '%s post updated.', '%s posts updated.', $_REQUEST['updated'] ), number_format_i18n( $_REQUEST['updated'] ) );
-       unset($_REQUEST['updated']);
+<?php if ( isset( $_REQUEST['updated'] ) && $updated = absint( $_REQUEST['updated'] ) ) {
+       $messages[] = sprintf( _n( '%s post updated.', '%s posts updated.', $updated ), number_format_i18n( $updated ) );
 }
 
 }
 
-if ( isset($_REQUEST['skipped']) && (int) $_REQUEST['skipped'] )
-       unset($_REQUEST['skipped']);
-
-if ( isset($_REQUEST['locked']) && (int) $_REQUEST['locked'] ) {
-       $messages[] = sprintf( _n( '%s item not updated, somebody is editing it.', '%s items not updated, somebody is editing them.', $_REQUEST['locked'] ), number_format_i18n( $_REQUEST['locked'] ) );
-       unset($_REQUEST['locked']);
+if ( isset( $_REQUEST['locked'] ) && $locked = absint( $_REQUEST['locked'] ) ) {
+       $messages[] = sprintf( _n( '%s item not updated, somebody is editing it.', '%s items not updated, somebody is editing them.', $locked ), number_format_i18n( $locked ) );
 }
 
 }
 
-if ( isset($_REQUEST['deleted']) && (int) $_REQUEST['deleted'] ) {
-       $messages[] = sprintf( _n( 'Item permanently deleted.', '%s items permanently deleted.', $_REQUEST['deleted'] ), number_format_i18n( $_REQUEST['deleted'] ) );
-       unset($_REQUEST['deleted']);
+if ( isset( $_REQUEST['deleted'] ) && $deleted = absint( $_REQUEST['deleted'] ) ) {
+       $messages[] = sprintf( _n( 'Item permanently deleted.', '%s items permanently deleted.', $deleted ), number_format_i18n( $deleted ) );
 }
 
 }
 
-if ( isset($_REQUEST['trashed']) && (int) $_REQUEST['trashed'] ) {
-       $messages[] = sprintf( _n( 'Item moved to the Trash.', '%s items moved to the Trash.', $_REQUEST['trashed'] ), number_format_i18n( $_REQUEST['trashed'] ) );
+if ( isset( $_REQUEST['trashed'] ) && $trashed = absint( $_REQUEST['trashed'] ) ) {
+       $messages[] = sprintf( _n( 'Item moved to the Trash.', '%s items moved to the Trash.', $trashed ), number_format_i18n( $trashed ) );
        $ids = isset($_REQUEST['ids']) ? $_REQUEST['ids'] : 0;
        $messages[] = '<a href="' . esc_url( wp_nonce_url( "edit.php?post_type=$post_type&doaction=undo&action=untrash&ids=$ids", "bulk-posts" ) ) . '">' . __('Undo') . '</a>';
        $ids = isset($_REQUEST['ids']) ? $_REQUEST['ids'] : 0;
        $messages[] = '<a href="' . esc_url( wp_nonce_url( "edit.php?post_type=$post_type&doaction=undo&action=untrash&ids=$ids", "bulk-posts" ) ) . '">' . __('Undo') . '</a>';
-       unset($_REQUEST['trashed']);
 }
 
 }
 
-if ( isset($_REQUEST['untrashed']) && (int) $_REQUEST['untrashed'] ) {
-       $messages[] = sprintf( _n( 'Item restored from the Trash.', '%s items restored from the Trash.', $_REQUEST['untrashed'] ), number_format_i18n( $_REQUEST['untrashed'] ) );
-       unset($_REQUEST['undeleted']);
+if ( isset( $_REQUEST['untrashed'] ) && $untrashed = absint( $_REQUEST['untrashed'] ) ) {
+       $messages[] = sprintf( _n( 'Item restored from the Trash.', '%s items restored from the Trash.', $untrashed ), number_format_i18n( $untrashed ) );
 }
 
 if ( $messages )
        echo join( ' ', $messages );
 unset( $messages );
 
 }
 
 if ( $messages )
        echo join( ' ', $messages );
 unset( $messages );
 
-$_SERVER['REQUEST_URI'] = remove_query_arg( array('locked', 'skipped', 'updated', 'deleted', 'trashed', 'untrashed'), $_SERVER['REQUEST_URI'] );
+$_SERVER['REQUEST_URI'] = remove_query_arg( array( 'locked', 'skipped', 'updated', 'deleted', 'trashed', 'untrashed' ), $_SERVER['REQUEST_URI'] );
 ?>
 </p></div>
 <?php } ?>
 ?>
 </p></div>
 <?php } ?>
index 700655246b1c1e5ffa5558da6975f96da90dc903..8257b5187b78ccc0e3d4ff5d7cdc70beee55e554 100644 (file)
@@ -41,7 +41,7 @@ add_action( 'admin_head', 'add_js' );
 get_current_screen()->add_help_tab( array(
        'id'      => 'overview',
        'title'   => __('Overview'),
 get_current_screen()->add_help_tab( array(
        'id'      => 'overview',
        'title'   => __('Overview'),
-       'content' => '<p>' . __('You can export a file of your site&#8217;s content in order to import it into another installation or platform. The export file will be an XML file format called WXR. Posts, pages, comments, custom fields, categories, and tags can be included. You can choose for the WXR file to include only certain posts or pages by setting the dropdown filters to  limit the export by category, author, date range by month, or publishing status.') . '</p>' .
+       'content' => '<p>' . __('You can export a file of your site&#8217;s content in order to import it into another installation or platform. The export file will be an XML file format called WXR. Posts, pages, comments, custom fields, categories, and tags can be included. You can choose for the WXR file to include only certain posts or pages by setting the dropdown filters to limit the export by category, author, date range by month, or publishing status.') . '</p>' .
                '<p>' . __('Once generated, your WXR file can be imported by another WordPress site or by another blogging platform able to access this format.') . '</p>',
 ) );
 
                '<p>' . __('Once generated, your WXR file can be imported by another WordPress site or by another blogging platform able to access this format.') . '</p>',
 ) );
 
@@ -95,15 +95,15 @@ if ( isset( $_GET['download'] ) ) {
 
 require_once ('admin-header.php');
 
 
 require_once ('admin-header.php');
 
-function export_date_options() {
+function export_date_options( $post_type = 'post' ) {
        global $wpdb, $wp_locale;
 
        global $wpdb, $wp_locale;
 
-       $months = $wpdb->get_results( "
+       $months = $wpdb->get_results( $wpdb->prepare( "
                SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month
                FROM $wpdb->posts
                SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month
                FROM $wpdb->posts
-               WHERE post_type = 'post' AND post_status != 'auto-draft'
+               WHERE post_type = %s AND post_status != 'auto-draft'
                ORDER BY post_date DESC
                ORDER BY post_date DESC
-       " );
+       ", $post_type ) );
 
        $month_count = count( $months );
        if ( !$month_count || ( 1 == $month_count && 0 == $months[0]->month ) )
 
        $month_count = count( $months );
        if ( !$month_count || ( 1 == $month_count && 0 == $months[0]->month ) )
@@ -130,8 +130,8 @@ function export_date_options() {
 <h3><?php _e( 'Choose what to export' ); ?></h3>
 <form action="" method="get" id="export-filters">
 <input type="hidden" name="download" value="true" />
 <h3><?php _e( 'Choose what to export' ); ?></h3>
 <form action="" method="get" id="export-filters">
 <input type="hidden" name="download" value="true" />
-<p><label><input type="radio" name="content" value="all" checked="checked" /> <?php _e( 'All content' ); ?></label>
-<span class="description"><?php _e( 'This will contain all of your posts, pages, comments, custom fields, terms, navigation menus and custom posts.' ); ?></span></p>
+<p><label><input type="radio" name="content" value="all" checked="checked" /> <?php _e( 'All content' ); ?></label></p>
+<p class="description"><?php _e( 'This will contain all of your posts, pages, comments, custom fields, terms, navigation menus and custom posts.' ); ?></p>
 
 <p><label><input type="radio" name="content" value="posts" /> <?php _e( 'Posts' ); ?></label></p>
 <ul id="post-filters" class="export-filters">
 
 <p><label><input type="radio" name="content" value="posts" /> <?php _e( 'Posts' ); ?></label></p>
 <ul id="post-filters" class="export-filters">
@@ -182,11 +182,11 @@ function export_date_options() {
                <label><?php _e( 'Date range:' ); ?></label>
                <select name="page_start_date">
                        <option value="0"><?php _e( 'Start Date' ); ?></option>
                <label><?php _e( 'Date range:' ); ?></label>
                <select name="page_start_date">
                        <option value="0"><?php _e( 'Start Date' ); ?></option>
-                       <?php export_date_options(); ?>
+                       <?php export_date_options( 'page' ); ?>
                </select>
                <select name="page_end_date">
                        <option value="0"><?php _e( 'End Date' ); ?></option>
                </select>
                <select name="page_end_date">
                        <option value="0"><?php _e( 'End Date' ); ?></option>
-                       <?php export_date_options(); ?>
+                       <?php export_date_options( 'page' ); ?>
                </select>
        </li>
        <li>
                </select>
        </li>
        <li>
index fa7d4e508851354b51ce0ebe22ac4aadfb621fc6..99251dcfe40face1c7763573d8979dddada8de3c 100644 (file)
@@ -13,13 +13,13 @@ $title = __( 'Freedoms' );
 
 list( $display_version ) = explode( '-', $wp_version );
 
 
 list( $display_version ) = explode( '-', $wp_version );
 
-include( './admin-header.php' );
+include( ABSPATH . 'wp-admin/admin-header.php' );
 ?>
 <div class="wrap about-wrap">
 
 <h1><?php printf( __( 'Welcome to WordPress %s' ), $display_version ); ?></h1>
 
 ?>
 <div class="wrap about-wrap">
 
 <h1><?php printf( __( 'Welcome to WordPress %s' ), $display_version ); ?></h1>
 
-<div class="about-text"><?php printf( __( 'Thank you for updating to the latest version! Using WordPress %s will improve your looks, personality, and web publishing experience. Okay, just the last one, but still. :)' ), $display_version ); ?></div>
+<div class="about-text"><?php printf( __( 'Thank you for updating to the latest version! WordPress %s is already making your website better, faster, and more attractive, just like you!' ), $display_version ); ?></div>
 
 <div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>
 
 
 <div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>
 
@@ -54,4 +54,4 @@ printf( __( 'Every plugin and theme in WordPress.org&#8217;s directory is 100%%
 <p><?php _e( 'Don&#8217;t you wish all software came with these freedoms? So do we! For more information, check out the <a href="http://www.fsf.org/">Free Software Foundation</a>.' ); ?></p>
 
 </div>
 <p><?php _e( 'Don&#8217;t you wish all software came with these freedoms? So do we! For more information, check out the <a href="http://www.fsf.org/">Free Software Foundation</a>.' ); ?></p>
 
 </div>
-<?php include( './admin-footer.php' ); ?>
+<?php include( ABSPATH . 'wp-admin/admin-footer.php' ); ?>
diff --git a/wp-admin/images/gray-star.png b/wp-admin/images/gray-star.png
deleted file mode 100644 (file)
index a32b058..0000000
Binary files a/wp-admin/images/gray-star.png and /dev/null differ
diff --git a/wp-admin/images/icons32-2x.png b/wp-admin/images/icons32-2x.png
new file mode 100644 (file)
index 0000000..3cccb7b
Binary files /dev/null and b/wp-admin/images/icons32-2x.png differ
diff --git a/wp-admin/images/icons32-vs-2x.png b/wp-admin/images/icons32-vs-2x.png
new file mode 100644 (file)
index 0000000..8975737
Binary files /dev/null and b/wp-admin/images/icons32-vs-2x.png differ
diff --git a/wp-admin/images/logo-login.png b/wp-admin/images/logo-login.png
deleted file mode 100644 (file)
index 497f683..0000000
Binary files a/wp-admin/images/logo-login.png and /dev/null differ
diff --git a/wp-admin/images/menu-2x.png b/wp-admin/images/menu-2x.png
new file mode 100644 (file)
index 0000000..c8f5da9
Binary files /dev/null and b/wp-admin/images/menu-2x.png differ
index 8da666e84512a001496704d510a6e022507abd90..bbb1c50ed0a66a3291088beb722f652fa39f6285 100644 (file)
Binary files a/wp-admin/images/menu.png and b/wp-admin/images/menu.png differ
index 26c96975bf6383df9de265f69e2472e21900ee53..124156206a0fc2c5c5e10ddb73b020a0e0e3908d 100644 (file)
Binary files a/wp-admin/images/press-this.png and b/wp-admin/images/press-this.png differ
diff --git a/wp-admin/images/screenshots/admin-flyouts.png b/wp-admin/images/screenshots/admin-flyouts.png
deleted file mode 100644 (file)
index 92871e1..0000000
Binary files a/wp-admin/images/screenshots/admin-flyouts.png and /dev/null differ
diff --git a/wp-admin/images/screenshots/captions-1.png b/wp-admin/images/screenshots/captions-1.png
new file mode 100644 (file)
index 0000000..73dbb48
Binary files /dev/null and b/wp-admin/images/screenshots/captions-1.png differ
diff --git a/wp-admin/images/screenshots/captions-2.png b/wp-admin/images/screenshots/captions-2.png
new file mode 100644 (file)
index 0000000..653ed54
Binary files /dev/null and b/wp-admin/images/screenshots/captions-2.png differ
diff --git a/wp-admin/images/screenshots/coediting.png b/wp-admin/images/screenshots/coediting.png
deleted file mode 100644 (file)
index 4f30c67..0000000
Binary files a/wp-admin/images/screenshots/coediting.png and /dev/null differ
diff --git a/wp-admin/images/screenshots/drag-and-drop.png b/wp-admin/images/screenshots/drag-and-drop.png
deleted file mode 100644 (file)
index 4f52758..0000000
Binary files a/wp-admin/images/screenshots/drag-and-drop.png and /dev/null differ
diff --git a/wp-admin/images/screenshots/flex-header-1.png b/wp-admin/images/screenshots/flex-header-1.png
new file mode 100644 (file)
index 0000000..371a284
Binary files /dev/null and b/wp-admin/images/screenshots/flex-header-1.png differ
diff --git a/wp-admin/images/screenshots/flex-header-2.png b/wp-admin/images/screenshots/flex-header-2.png
new file mode 100644 (file)
index 0000000..5cee055
Binary files /dev/null and b/wp-admin/images/screenshots/flex-header-2.png differ
diff --git a/wp-admin/images/screenshots/flex-header-3.png b/wp-admin/images/screenshots/flex-header-3.png
new file mode 100644 (file)
index 0000000..a45f1c9
Binary files /dev/null and b/wp-admin/images/screenshots/flex-header-3.png differ
diff --git a/wp-admin/images/screenshots/flex-header-media-library.png b/wp-admin/images/screenshots/flex-header-media-library.png
new file mode 100644 (file)
index 0000000..d63012d
Binary files /dev/null and b/wp-admin/images/screenshots/flex-header-media-library.png differ
diff --git a/wp-admin/images/screenshots/help-screen.png b/wp-admin/images/screenshots/help-screen.png
deleted file mode 100644 (file)
index 02f0d9a..0000000
Binary files a/wp-admin/images/screenshots/help-screen.png and /dev/null differ
diff --git a/wp-admin/images/screenshots/media-icon.png b/wp-admin/images/screenshots/media-icon.png
deleted file mode 100644 (file)
index 9f97564..0000000
Binary files a/wp-admin/images/screenshots/media-icon.png and /dev/null differ
diff --git a/wp-admin/images/screenshots/new-feature-pointer.png b/wp-admin/images/screenshots/new-feature-pointer.png
deleted file mode 100644 (file)
index fbcd5a6..0000000
Binary files a/wp-admin/images/screenshots/new-feature-pointer.png and /dev/null differ
diff --git a/wp-admin/images/screenshots/theme-customizer.png b/wp-admin/images/screenshots/theme-customizer.png
new file mode 100644 (file)
index 0000000..fa62d88
Binary files /dev/null and b/wp-admin/images/screenshots/theme-customizer.png differ
diff --git a/wp-admin/images/screenshots/twitter-embed-1.png b/wp-admin/images/screenshots/twitter-embed-1.png
new file mode 100644 (file)
index 0000000..d79ee1d
Binary files /dev/null and b/wp-admin/images/screenshots/twitter-embed-1.png differ
diff --git a/wp-admin/images/screenshots/twitter-embed-2.png b/wp-admin/images/screenshots/twitter-embed-2.png
new file mode 100644 (file)
index 0000000..14da4b8
Binary files /dev/null and b/wp-admin/images/screenshots/twitter-embed-2.png differ
diff --git a/wp-admin/images/screenshots/welcome-screen.png b/wp-admin/images/screenshots/welcome-screen.png
deleted file mode 100644 (file)
index 5f6d15f..0000000
Binary files a/wp-admin/images/screenshots/welcome-screen.png and /dev/null differ
diff --git a/wp-admin/images/star.png b/wp-admin/images/star.png
deleted file mode 100644 (file)
index 4ca5261..0000000
Binary files a/wp-admin/images/star.png and /dev/null differ
diff --git a/wp-admin/images/stars-rtl.png b/wp-admin/images/stars-rtl.png
new file mode 100644 (file)
index 0000000..c6330b6
Binary files /dev/null and b/wp-admin/images/stars-rtl.png differ
diff --git a/wp-admin/images/stars.png b/wp-admin/images/stars.png
new file mode 100644 (file)
index 0000000..98e32a5
Binary files /dev/null and b/wp-admin/images/stars.png differ
diff --git a/wp-admin/images/wordpress-logo-2x.png b/wp-admin/images/wordpress-logo-2x.png
new file mode 100644 (file)
index 0000000..6679e11
Binary files /dev/null and b/wp-admin/images/wordpress-logo-2x.png differ
index 7421f2194aedf01405058f6fae0a73e2192e1ff4..849a2d0b574d92e20d7f0b5a09316765b4e9bf06 100644 (file)
Binary files a/wp-admin/images/wordpress-logo.png and b/wp-admin/images/wordpress-logo.png differ
diff --git a/wp-admin/images/wp-badge-2x.png b/wp-admin/images/wp-badge-2x.png
new file mode 100644 (file)
index 0000000..6dfb577
Binary files /dev/null and b/wp-admin/images/wp-badge-2x.png differ
index f9d813709c85c21b342df81050e46cf261143c84..a9de2654b96eff86eacacf05952eb8dd0ebf15b0 100644 (file)
@@ -20,10 +20,9 @@ get_current_screen()->add_help_tab( array(
        'id'      => 'overview',
        'title'   => __('Overview'),
        'content' => '<p>' . __('This screen lists links to plugins to import data from blogging/content management platforms. Choose the platform you want to import from, and click Install Now when you are prompted in the popup window. If your platform is not listed, click the link to search the plugin directory for other importer plugins to see if there is one for your platform.') . '</p>' .
        'id'      => 'overview',
        'title'   => __('Overview'),
        'content' => '<p>' . __('This screen lists links to plugins to import data from blogging/content management platforms. Choose the platform you want to import from, and click Install Now when you are prompted in the popup window. If your platform is not listed, click the link to search the plugin directory for other importer plugins to see if there is one for your platform.') . '</p>' .
-               '<p>' . __('In previous versions of WordPress, all importers were built-in.  They have been turned into plugins since most people only use them once or infrequently.') . '</p>',
+               '<p>' . __('In previous versions of WordPress, all importers were built-in. They have been turned into plugins since most people only use them once or infrequently.') . '</p>',
 ) );
 
 ) );
 
-
 get_current_screen()->set_help_sidebar(
        '<p><strong>' . __('For more information:') . '</strong></p>' .
        '<p>' . __('<a href="http://codex.wordpress.org/Tools_Import_Screen" target="_blank">Documentation on Import</a>') . '</p>' .
 get_current_screen()->set_help_sidebar(
        '<p><strong>' . __('For more information:') . '</strong></p>' .
        '<p>' . __('<a href="http://codex.wordpress.org/Tools_Import_Screen" target="_blank">Documentation on Import</a>') . '</p>' .
@@ -138,4 +137,3 @@ if ( current_user_can('install_plugins') )
 <?php
 
 include ('admin-footer.php');
 <?php
 
 include ('admin-footer.php');
-?>
index 5f5190d8d1bad115fddf18a0ff11c7a9003742a2..439fcdb81e19b63837a6ae2bd356cb56423f656b 100644 (file)
@@ -6,6 +6,13 @@
  * @subpackage Administration
  */
 
  * @subpackage Administration
  */
 
+if ( ! defined('WP_ADMIN') ) {
+       // This file is being included from a file other than wp-admin/admin.php, so
+       // some setup was skipped. Make sure the admin message catalog is loaded since
+       // load_default_textdomain() will not have done so in this context.
+       load_textdomain( 'default', WP_LANG_DIR . '/admin-' . get_locale() . '.mo' );
+}
+
 /** WordPress Bookmark Administration API */
 require_once(ABSPATH . 'wp-admin/includes/bookmark.php');
 
 /** WordPress Bookmark Administration API */
 require_once(ABSPATH . 'wp-admin/includes/bookmark.php');
 
@@ -63,5 +70,3 @@ if ( is_multisite() ) {
        require_once(ABSPATH . 'wp-admin/includes/ms.php');
        require_once(ABSPATH . 'wp-admin/includes/ms-deprecated.php');
 }
        require_once(ABSPATH . 'wp-admin/includes/ms.php');
        require_once(ABSPATH . 'wp-admin/includes/ms-deprecated.php');
 }
-
-?>
diff --git a/wp-admin/includes/ajax-actions.php b/wp-admin/includes/ajax-actions.php
new file mode 100644 (file)
index 0000000..5ced901
--- /dev/null
@@ -0,0 +1,1787 @@
+<?php
+/**
+ * WordPress Core Ajax Handlers.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/*
+ * No-privilege Ajax handlers.
+ */
+
+function wp_ajax_nopriv_autosave() {
+       $id = isset( $_POST['post_ID'] ) ? (int) $_POST['post_ID'] : 0;
+
+       if ( ! $id )
+               wp_die( -1 );
+
+       $message = sprintf( __('<strong>ALERT: You are logged out!</strong> Could not save draft. <a href="%s" target="_blank">Please log in again.</a>'), wp_login_url() );
+       $x = new WP_Ajax_Response( array(
+               'what' => 'autosave',
+               'id' => $id,
+               'data' => $message
+       ) );
+       $x->send();
+}
+
+/*
+ * GET-based Ajax handlers.
+ */
+function wp_ajax_fetch_list() {
+       global $current_screen, $wp_list_table;
+
+       $list_class = $_GET['list_args']['class'];
+       check_ajax_referer( "fetch-list-$list_class", '_ajax_fetch_list_nonce' );
+
+       $current_screen = convert_to_screen( $_GET['list_args']['screen']['id'] );
+
+       define( 'WP_NETWORK_ADMIN', $current_screen->is_network );
+       define( 'WP_USER_ADMIN', $current_screen->is_user );
+
+       $wp_list_table = _get_list_table( $list_class );
+       if ( ! $wp_list_table )
+               wp_die( 0 );
+
+       if ( ! $wp_list_table->ajax_user_can() )
+               wp_die( -1 );
+
+       $wp_list_table->ajax_response();
+
+       wp_die( 0 );
+}
+function wp_ajax_ajax_tag_search() {
+       global $wpdb;
+
+       if ( isset( $_GET['tax'] ) ) {
+               $taxonomy = sanitize_key( $_GET['tax'] );
+               $tax = get_taxonomy( $taxonomy );
+               if ( ! $tax )
+                       wp_die( 0 );
+               if ( ! current_user_can( $tax->cap->assign_terms ) )
+                       wp_die( -1 );
+       } else {
+               wp_die( 0 );
+       }
+
+       $s = stripslashes( $_GET['q'] );
+
+       $comma = _x( ',', 'tag delimiter' );
+       if ( ',' !== $comma )
+               $s = str_replace( $comma, ',', $s );
+       if ( false !== strpos( $s, ',' ) ) {
+               $s = explode( ',', $s );
+               $s = $s[count( $s ) - 1];
+       }
+       $s = trim( $s );
+       if ( strlen( $s ) < 2 )
+               wp_die(); // require 2 chars for matching
+
+       $results = $wpdb->get_col( $wpdb->prepare( "SELECT t.name FROM $wpdb->term_taxonomy AS tt INNER JOIN $wpdb->terms AS t ON tt.term_id = t.term_id WHERE tt.taxonomy = %s AND t.name LIKE (%s)", $taxonomy, '%' . like_escape( $s ) . '%' ) );
+
+       echo join( $results, "\n" );
+       wp_die();
+}
+
+function wp_ajax_wp_compression_test() {
+       if ( !current_user_can( 'manage_options' ) )
+               wp_die( -1 );
+
+       if ( ini_get('zlib.output_compression') || 'ob_gzhandler' == ini_get('output_handler') ) {
+               update_site_option('can_compress_scripts', 0);
+               wp_die( 0 );
+       }
+
+       if ( isset($_GET['test']) ) {
+               header( 'Expires: Wed, 11 Jan 1984 05:00:00 GMT' );
+               header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
+               header( 'Cache-Control: no-cache, must-revalidate, max-age=0' );
+               header( 'Pragma: no-cache' );
+               header('Content-Type: application/x-javascript; charset=UTF-8');
+               $force_gzip = ( defined('ENFORCE_GZIP') && ENFORCE_GZIP );
+               $test_str = '"wpCompressionTest Lorem ipsum dolor sit amet consectetuer mollis sapien urna ut a. Eu nonummy condimentum fringilla tempor pretium platea vel nibh netus Maecenas. Hac molestie amet justo quis pellentesque est ultrices interdum nibh Morbi. Cras mattis pretium Phasellus ante ipsum ipsum ut sociis Suspendisse Lorem. Ante et non molestie. Porta urna Vestibulum egestas id congue nibh eu risus gravida sit. Ac augue auctor Ut et non a elit massa id sodales. Elit eu Nulla at nibh adipiscing mattis lacus mauris at tempus. Netus nibh quis suscipit nec feugiat eget sed lorem et urna. Pellentesque lacus at ut massa consectetuer ligula ut auctor semper Pellentesque. Ut metus massa nibh quam Curabitur molestie nec mauris congue. Volutpat molestie elit justo facilisis neque ac risus Ut nascetur tristique. Vitae sit lorem tellus et quis Phasellus lacus tincidunt nunc Fusce. Pharetra wisi Suspendisse mus sagittis libero lacinia Integer consequat ac Phasellus. Et urna ac cursus tortor aliquam Aliquam amet tellus volutpat Vestibulum. Justo interdum condimentum In augue congue tellus sollicitudin Quisque quis nibh."';
+
+                if ( 1 == $_GET['test'] ) {
+                       echo $test_str;
+                       wp_die();
+                } elseif ( 2 == $_GET['test'] ) {
+                       if ( !isset($_SERVER['HTTP_ACCEPT_ENCODING']) )
+                               wp_die( -1 );
+                       if ( false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'deflate') && function_exists('gzdeflate') && ! $force_gzip ) {
+                               header('Content-Encoding: deflate');
+                               $out = gzdeflate( $test_str, 1 );
+                       } elseif ( false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') && function_exists('gzencode') ) {
+                               header('Content-Encoding: gzip');
+                               $out = gzencode( $test_str, 1 );
+                       } else {
+                               wp_die( -1 );
+                       }
+                       echo $out;
+                       wp_die();
+               } elseif ( 'no' == $_GET['test'] ) {
+                       update_site_option('can_compress_scripts', 0);
+               } elseif ( 'yes' == $_GET['test'] ) {
+                       update_site_option('can_compress_scripts', 1);
+               }
+       }
+
+       wp_die( 0 );
+}
+
+function wp_ajax_imgedit_preview() {
+       $post_id = intval($_GET['postid']);
+       if ( empty($post_id) || !current_user_can('edit_post', $post_id) )
+               wp_die( -1 );
+
+       check_ajax_referer( "image_editor-$post_id" );
+
+       include_once( ABSPATH . 'wp-admin/includes/image-edit.php' );
+       if ( ! stream_preview_image($post_id) )
+               wp_die( -1 );
+
+       wp_die();
+}
+
+function wp_ajax_oembed_cache() {
+       global $wp_embed;
+
+       $return = ( $wp_embed->cache_oembed( $_GET['post'] ) ) ? '1' : '0';
+       wp_die( $return );
+}
+
+function wp_ajax_autocomplete_user() {
+       if ( ! is_multisite() || ! current_user_can( 'promote_users' ) || wp_is_large_network( 'users' ) )
+               wp_die( -1 );
+
+       if ( ! is_super_admin() && ! apply_filters( 'autocomplete_users_for_site_admins', false ) )
+               wp_die( -1 );
+
+       $return = array();
+
+       // Check the type of request
+       if ( isset( $_REQUEST['autocomplete_type'] ) )
+               $type = $_REQUEST['autocomplete_type'];
+       else
+               $type = 'add';
+
+       // Exclude current users of this blog
+       if ( isset( $_REQUEST['site_id'] ) )
+               $id = absint( $_REQUEST['site_id'] );
+       else
+               $id = get_current_blog_id();
+
+       $include_blog_users = ( $type == 'search' ? get_users( array( 'blog_id' => $id, 'fields' => 'ID' ) ) : array() );
+       $exclude_blog_users = ( $type == 'add' ? get_users( array( 'blog_id' => $id, 'fields' => 'ID' ) ) : array() );
+
+       $users = get_users( array(
+               'blog_id' => false,
+               'search'  => '*' . $_REQUEST['term'] . '*',
+               'include' => $include_blog_users,
+               'exclude' => $exclude_blog_users,
+               'search_columns' => array( 'user_login', 'user_nicename', 'user_email' ),
+       ) );
+
+       foreach ( $users as $user ) {
+               $return[] = array(
+                       /* translators: 1: user_login, 2: user_email */
+                       'label' => sprintf( __( '%1$s (%2$s)' ), $user->user_login, $user->user_email ),
+                       'value' => $user->user_login,
+               );
+       }
+
+       wp_die( json_encode( $return ) );
+}
+
+function wp_ajax_dashboard_widgets() {
+       require ABSPATH . 'wp-admin/includes/dashboard.php';
+
+       switch ( $_GET['widget'] ) {
+               case 'dashboard_incoming_links' :
+                       wp_dashboard_incoming_links();
+                       break;
+               case 'dashboard_primary' :
+                       wp_dashboard_primary();
+                       break;
+               case 'dashboard_secondary' :
+                       wp_dashboard_secondary();
+                       break;
+               case 'dashboard_plugins' :
+                       wp_dashboard_plugins();
+                       break;
+       }
+       wp_die();
+}
+
+function wp_ajax_logged_in() {
+       wp_die( 1 );
+}
+
+/*
+ * Ajax helper.
+ */
+
+/**
+ * Sends back current comment total and new page links if they need to be updated.
+ *
+ * Contrary to normal success AJAX response ("1"), die with time() on success.
+ *
+ * @since 2.7
+ *
+ * @param int $comment_id
+ * @return die
+ */
+function _wp_ajax_delete_comment_response( $comment_id, $delta = -1 ) {
+       $total = (int) @$_POST['_total'];
+       $per_page = (int) @$_POST['_per_page'];
+       $page = (int) @$_POST['_page'];
+       $url = esc_url_raw( @$_POST['_url'] );
+       // JS didn't send us everything we need to know. Just die with success message
+       if ( !$total || !$per_page || !$page || !$url )
+               wp_die( time() );
+
+       $total += $delta;
+       if ( $total < 0 )
+               $total = 0;
+
+       // Only do the expensive stuff on a page-break, and about 1 other time per page
+       if ( 0 == $total % $per_page || 1 == mt_rand( 1, $per_page ) ) {
+               $post_id = 0;
+               $status = 'total_comments'; // What type of comment count are we looking for?
+               $parsed = parse_url( $url );
+               if ( isset( $parsed['query'] ) ) {
+                       parse_str( $parsed['query'], $query_vars );
+                       if ( !empty( $query_vars['comment_status'] ) )
+                               $status = $query_vars['comment_status'];
+                       if ( !empty( $query_vars['p'] ) )
+                               $post_id = (int) $query_vars['p'];
+               }
+
+               $comment_count = wp_count_comments($post_id);
+
+               if ( isset( $comment_count->$status ) ) // We're looking for a known type of comment count
+                       $total = $comment_count->$status;
+                       // else use the decremented value from above
+       }
+
+       $time = time(); // The time since the last comment count
+
+       $x = new WP_Ajax_Response( array(
+               'what' => 'comment',
+               'id' => $comment_id, // here for completeness - not used
+               'supplemental' => array(
+                       'total_items_i18n' => sprintf( _n( '1 item', '%s items', $total ), number_format_i18n( $total ) ),
+                       'total_pages' => ceil( $total / $per_page ),
+                       'total_pages_i18n' => number_format_i18n( ceil( $total / $per_page ) ),
+                       'total' => $total,
+                       'time' => $time
+               )
+       ) );
+       $x->send();
+}
+
+/*
+ * POST-based Ajax handlers.
+ */
+
+function _wp_ajax_add_hierarchical_term() {
+       $action = $_POST['action'];
+       $taxonomy = get_taxonomy(substr($action, 4));
+       check_ajax_referer( $action, '_ajax_nonce-add-' . $taxonomy->name );
+       if ( !current_user_can( $taxonomy->cap->edit_terms ) )
+               wp_die( -1 );
+       $names = explode(',', $_POST['new'.$taxonomy->name]);
+       $parent = isset($_POST['new'.$taxonomy->name.'_parent']) ? (int) $_POST['new'.$taxonomy->name.'_parent'] : 0;
+       if ( 0 > $parent )
+               $parent = 0;
+       if ( $taxonomy->name == 'category' )
+               $post_category = isset($_POST['post_category']) ? (array) $_POST['post_category'] : array();
+       else
+               $post_category = ( isset($_POST['tax_input']) && isset($_POST['tax_input'][$taxonomy->name]) ) ? (array) $_POST['tax_input'][$taxonomy->name] : array();
+       $checked_categories = array_map( 'absint', (array) $post_category );
+       $popular_ids = wp_popular_terms_checklist($taxonomy->name, 0, 10, false);
+
+       foreach ( $names as $cat_name ) {
+               $cat_name = trim($cat_name);
+               $category_nicename = sanitize_title($cat_name);
+               if ( '' === $category_nicename )
+                       continue;
+               if ( !$cat_id = term_exists( $cat_name, $taxonomy->name, $parent ) )
+                       $cat_id = wp_insert_term( $cat_name, $taxonomy->name, array( 'parent' => $parent ) );
+               if ( is_wp_error( $cat_id ) )
+                       continue;
+               else if ( is_array( $cat_id ) )
+                       $cat_id = $cat_id['term_id'];
+               $checked_categories[] = $cat_id;
+               if ( $parent ) // Do these all at once in a second
+                       continue;
+               ob_start();
+                       wp_terms_checklist( 0, array( 'taxonomy' => $taxonomy->name, 'descendants_and_self' => $cat_id, 'selected_cats' => $checked_categories, 'popular_cats' => $popular_ids ));
+               $data = ob_get_contents();
+               ob_end_clean();
+               $add = array(
+                       'what' => $taxonomy->name,
+                       'id' => $cat_id,
+                       'data' => str_replace( array("\n", "\t"), '', $data),
+                       'position' => -1
+               );
+       }
+
+       if ( $parent ) { // Foncy - replace the parent and all its children
+               $parent = get_term( $parent, $taxonomy->name );
+               $term_id = $parent->term_id;
+
+               while ( $parent->parent ) { // get the top parent
+                       $parent = &get_term( $parent->parent, $taxonomy->name );
+                       if ( is_wp_error( $parent ) )
+                               break;
+                       $term_id = $parent->term_id;
+               }
+
+               ob_start();
+                       wp_terms_checklist( 0, array('taxonomy' => $taxonomy->name, 'descendants_and_self' => $term_id, 'selected_cats' => $checked_categories, 'popular_cats' => $popular_ids));
+               $data = ob_get_contents();
+               ob_end_clean();
+               $add = array(
+                       'what' => $taxonomy->name,
+                       'id' => $term_id,
+                       'data' => str_replace( array("\n", "\t"), '', $data),
+                       'position' => -1
+               );
+       }
+
+       ob_start();
+               wp_dropdown_categories( array(
+                       'taxonomy' => $taxonomy->name, 'hide_empty' => 0, 'name' => 'new'.$taxonomy->name.'_parent', 'orderby' => 'name',
+                       'hierarchical' => 1, 'show_option_none' => '&mdash; '.$taxonomy->labels->parent_item.' &mdash;'
+               ) );
+       $sup = ob_get_contents();
+       ob_end_clean();
+       $add['supplemental'] = array( 'newcat_parent' => $sup );
+
+       $x = new WP_Ajax_Response( $add );
+       $x->send();
+}
+
+function wp_ajax_delete_comment() {
+       $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0;
+
+       if ( !$comment = get_comment( $id ) )
+               wp_die( time() );
+       if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) )
+               wp_die( -1 );
+
+       check_ajax_referer( "delete-comment_$id" );
+       $status = wp_get_comment_status( $comment->comment_ID );
+
+       $delta = -1;
+       if ( isset($_POST['trash']) && 1 == $_POST['trash'] ) {
+               if ( 'trash' == $status )
+                       wp_die( time() );
+               $r = wp_trash_comment( $comment->comment_ID );
+       } elseif ( isset($_POST['untrash']) && 1 == $_POST['untrash'] ) {
+               if ( 'trash' != $status )
+                       wp_die( time() );
+               $r = wp_untrash_comment( $comment->comment_ID );
+               if ( ! isset( $_POST['comment_status'] ) || $_POST['comment_status'] != 'trash' ) // undo trash, not in trash
+                       $delta = 1;
+       } elseif ( isset($_POST['spam']) && 1 == $_POST['spam'] ) {
+               if ( 'spam' == $status )
+                       wp_die( time() );
+               $r = wp_spam_comment( $comment->comment_ID );
+       } elseif ( isset($_POST['unspam']) && 1 == $_POST['unspam'] ) {
+               if ( 'spam' != $status )
+                       wp_die( time() );
+               $r = wp_unspam_comment( $comment->comment_ID );
+               if ( ! isset( $_POST['comment_status'] ) || $_POST['comment_status'] != 'spam' ) // undo spam, not in spam
+                       $delta = 1;
+       } elseif ( isset($_POST['delete']) && 1 == $_POST['delete'] ) {
+               $r = wp_delete_comment( $comment->comment_ID );
+       } else {
+               wp_die( -1 );
+       }
+
+       if ( $r ) // Decide if we need to send back '1' or a more complicated response including page links and comment counts
+               _wp_ajax_delete_comment_response( $comment->comment_ID, $delta );
+       wp_die( 0 );
+}
+
+function wp_ajax_delete_tag() {
+       $tag_id = (int) $_POST['tag_ID'];
+       check_ajax_referer( "delete-tag_$tag_id" );
+
+       $taxonomy = !empty($_POST['taxonomy']) ? $_POST['taxonomy'] : 'post_tag';
+       $tax = get_taxonomy($taxonomy);
+
+       if ( !current_user_can( $tax->cap->delete_terms ) )
+               wp_die( -1 );
+
+       $tag = get_term( $tag_id, $taxonomy );
+       if ( !$tag || is_wp_error( $tag ) )
+               wp_die( 1 );
+
+       if ( wp_delete_term($tag_id, $taxonomy))
+               wp_die( 1 );
+       else
+               wp_die( 0 );
+}
+
+function wp_ajax_delete_link() {
+       $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0;
+
+       check_ajax_referer( "delete-bookmark_$id" );
+       if ( !current_user_can( 'manage_links' ) )
+               wp_die( -1 );
+
+       $link = get_bookmark( $id );
+       if ( !$link || is_wp_error( $link ) )
+               wp_die( 1 );
+
+       if ( wp_delete_link( $id ) )
+               wp_die( 1 );
+       else
+               wp_die( 0 );
+}
+
+function wp_ajax_delete_meta() {
+       $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0;
+
+       check_ajax_referer( "delete-meta_$id" );
+       if ( !$meta = get_metadata_by_mid( 'post', $id ) )
+               wp_die( 1 );
+
+       if ( is_protected_meta( $meta->meta_key, 'post' ) || ! current_user_can( 'delete_post_meta',  $meta->post_id, $meta->meta_key ) )
+               wp_die( -1 );
+       if ( delete_meta( $meta->meta_id ) )
+               wp_die( 1 );
+       wp_die( 0 );
+}
+
+function wp_ajax_delete_post( $action ) {
+       if ( empty( $action ) )
+               $action = 'delete-post';
+       $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0;
+
+       check_ajax_referer( "{$action}_$id" );
+       if ( !current_user_can( 'delete_post', $id ) )
+               wp_die( -1 );
+
+       if ( !get_post( $id ) )
+               wp_die( 1 );
+
+       if ( wp_delete_post( $id ) )
+               wp_die( 1 );
+       else
+               wp_die( 0 );
+}
+
+function wp_ajax_trash_post( $action ) {
+       if ( empty( $action ) )
+               $action = 'trash-post';
+       $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0;
+
+       check_ajax_referer( "{$action}_$id" );
+       if ( !current_user_can( 'delete_post', $id ) )
+               wp_die( -1 );
+
+       if ( !get_post( $id ) )
+               wp_die( 1 );
+
+       if ( 'trash-post' == $action )
+               $done = wp_trash_post( $id );
+       else
+               $done = wp_untrash_post( $id );
+
+       if ( $done )
+               wp_die( 1 );
+
+       wp_die( 0 );
+}
+
+function wp_ajax_untrash_post( $action ) {
+       if ( empty( $action ) )
+               $action = 'untrash-post';
+       wp_ajax_trash_post( $action );
+}
+
+function wp_ajax_delete_page( $action ) {
+       if ( empty( $action ) )
+               $action = 'delete-page';
+       $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0;
+
+       check_ajax_referer( "{$action}_$id" );
+       if ( !current_user_can( 'delete_page', $id ) )
+               wp_die( -1 );
+
+       if ( !get_page( $id ) )
+               wp_die( 1 );
+
+       if ( wp_delete_post( $id ) )
+               wp_die( 1 );
+       else
+               wp_die( 0 );
+}
+
+function wp_ajax_dim_comment() {
+       $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0;
+
+       if ( !$comment = get_comment( $id ) ) {
+               $x = new WP_Ajax_Response( array(
+                       'what' => 'comment',
+                       'id' => new WP_Error('invalid_comment', sprintf(__('Comment %d does not exist'), $id))
+               ) );
+               $x->send();
+       }
+
+       if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) && ! current_user_can( 'moderate_comments' ) )
+               wp_die( -1 );
+
+       $current = wp_get_comment_status( $comment->comment_ID );
+       if ( $_POST['new'] == $current )
+               wp_die( time() );
+
+       check_ajax_referer( "approve-comment_$id" );
+       if ( in_array( $current, array( 'unapproved', 'spam' ) ) )
+               $result = wp_set_comment_status( $comment->comment_ID, 'approve', true );
+       else
+               $result = wp_set_comment_status( $comment->comment_ID, 'hold', true );
+
+       if ( is_wp_error($result) ) {
+               $x = new WP_Ajax_Response( array(
+                       'what' => 'comment',
+                       'id' => $result
+               ) );
+               $x->send();
+       }
+
+       // Decide if we need to send back '1' or a more complicated response including page links and comment counts
+       _wp_ajax_delete_comment_response( $comment->comment_ID );
+       wp_die( 0 );
+}
+
+function wp_ajax_add_link_category( $action ) {
+       if ( empty( $action ) )
+               $action = 'add-link-category';
+       check_ajax_referer( $action );
+       if ( !current_user_can( 'manage_categories' ) )
+               wp_die( -1 );
+       $names = explode(',', $_POST['newcat']);
+       $x = new WP_Ajax_Response();
+       foreach ( $names as $cat_name ) {
+               $cat_name = trim($cat_name);
+               $slug = sanitize_title($cat_name);
+               if ( '' === $slug )
+                       continue;
+               if ( !$cat_id = term_exists( $cat_name, 'link_category' ) )
+                       $cat_id = wp_insert_term( $cat_name, 'link_category' );
+               if ( is_wp_error( $cat_id ) )
+                       continue;
+               else if ( is_array( $cat_id ) )
+                       $cat_id = $cat_id['term_id'];
+               $cat_name = esc_html(stripslashes($cat_name));
+               $x->add( array(
+                       'what' => 'link-category',
+                       'id' => $cat_id,
+                       'data' => "<li id='link-category-$cat_id'><label for='in-link-category-$cat_id' class='selectit'><input value='" . esc_attr($cat_id) . "' type='checkbox' checked='checked' name='link_category[]' id='in-link-category-$cat_id'/> $cat_name</label></li>",
+                       'position' => -1
+               ) );
+       }
+       $x->send();
+}
+
+function wp_ajax_add_tag() {
+       global $wp_list_table;
+
+       check_ajax_referer( 'add-tag', '_wpnonce_add-tag' );
+       $post_type = !empty($_POST['post_type']) ? $_POST['post_type'] : 'post';
+       $taxonomy = !empty($_POST['taxonomy']) ? $_POST['taxonomy'] : 'post_tag';
+       $tax = get_taxonomy($taxonomy);
+
+       if ( !current_user_can( $tax->cap->edit_terms ) )
+               wp_die( -1 );
+
+       $x = new WP_Ajax_Response();
+
+       $tag = wp_insert_term($_POST['tag-name'], $taxonomy, $_POST );
+
+       if ( !$tag || is_wp_error($tag) || (!$tag = get_term( $tag['term_id'], $taxonomy )) ) {
+               $message = __('An error has occurred. Please reload the page and try again.');
+               if ( is_wp_error($tag) && $tag->get_error_message() )
+                       $message = $tag->get_error_message();
+
+               $x->add( array(
+                       'what' => 'taxonomy',
+                       'data' => new WP_Error('error', $message )
+               ) );
+               $x->send();
+       }
+
+       set_current_screen( $_POST['screen'] );
+
+       $wp_list_table = _get_list_table('WP_Terms_List_Table');
+
+       $level = 0;
+       if ( is_taxonomy_hierarchical($taxonomy) ) {
+               $level = count( get_ancestors( $tag->term_id, $taxonomy ) );
+               ob_start();
+               $wp_list_table->single_row( $tag, $level );
+               $noparents = ob_get_clean();
+       }
+
+       ob_start();
+       $wp_list_table->single_row( $tag );
+       $parents = ob_get_clean();
+
+       $x->add( array(
+               'what' => 'taxonomy',
+               'supplemental' => compact('parents', 'noparents')
+               ) );
+       $x->add( array(
+               'what' => 'term',
+               'position' => $level,
+               'supplemental' => (array) $tag
+               ) );
+       $x->send();
+}
+
+function wp_ajax_get_tagcloud() {
+       if ( isset( $_POST['tax'] ) ) {
+               $taxonomy = sanitize_key( $_POST['tax'] );
+               $tax = get_taxonomy( $taxonomy );
+               if ( ! $tax )
+                       wp_die( 0 );
+               if ( ! current_user_can( $tax->cap->assign_terms ) )
+                       wp_die( -1 );
+       } else {
+               wp_die( 0 );
+       }
+
+       $tags = get_terms( $taxonomy, array( 'number' => 45, 'orderby' => 'count', 'order' => 'DESC' ) );
+
+       if ( empty( $tags ) )
+               wp_die( isset( $tax->no_tagcloud ) ? $tax->no_tagcloud : __('No tags found!') );
+
+       if ( is_wp_error( $tags ) )
+               wp_die( $tags->get_error_message() );
+
+       foreach ( $tags as $key => $tag ) {
+               $tags[ $key ]->link = '#';
+               $tags[ $key ]->id = $tag->term_id;
+       }
+
+       // We need raw tag names here, so don't filter the output
+       $return = wp_generate_tag_cloud( $tags, array('filter' => 0) );
+
+       if ( empty($return) )
+               wp_die( 0 );
+
+       echo $return;
+
+       wp_die();
+}
+
+function wp_ajax_get_comments( $action ) {
+       global $wp_list_table, $post_id;
+       if ( empty( $action ) )
+               $action = 'get-comments';
+
+       check_ajax_referer( $action );
+
+       set_current_screen( 'edit-comments' );
+
+       $wp_list_table = _get_list_table('WP_Post_Comments_List_Table');
+
+       if ( !current_user_can( 'edit_post', $post_id ) )
+               wp_die( -1 );
+
+       $wp_list_table->prepare_items();
+
+       if ( !$wp_list_table->has_items() )
+               wp_die( 1 );
+
+       $x = new WP_Ajax_Response();
+       ob_start();
+       foreach ( $wp_list_table->items as $comment ) {
+               if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) )
+                       continue;
+               get_comment( $comment );
+               $wp_list_table->single_row( $comment );
+       }
+       $comment_list_item = ob_get_contents();
+       ob_end_clean();
+
+       $x->add( array(
+               'what' => 'comments',
+               'data' => $comment_list_item
+       ) );
+       $x->send();
+}
+
+function wp_ajax_replyto_comment( $action ) {
+       global $wp_list_table, $wpdb;
+       if ( empty( $action ) )
+               $action = 'replyto-comment';
+
+       check_ajax_referer( $action, '_ajax_nonce-replyto-comment' );
+
+       set_current_screen( 'edit-comments' );
+
+       $comment_post_ID = (int) $_POST['comment_post_ID'];
+       if ( !current_user_can( 'edit_post', $comment_post_ID ) )
+               wp_die( -1 );
+
+       $status = $wpdb->get_var( $wpdb->prepare("SELECT post_status FROM $wpdb->posts WHERE ID = %d", $comment_post_ID) );
+
+       if ( empty($status) )
+               wp_die( 1 );
+       elseif ( in_array($status, array('draft', 'pending', 'trash') ) )
+               wp_die( __('ERROR: you are replying to a comment on a draft post.') );
+
+       $user = wp_get_current_user();
+       if ( $user->exists() ) {
+               $user_ID = $user->ID;
+               $comment_author       = $wpdb->escape($user->display_name);
+               $comment_author_email = $wpdb->escape($user->user_email);
+               $comment_author_url   = $wpdb->escape($user->user_url);
+               $comment_content      = trim($_POST['content']);
+               if ( current_user_can( 'unfiltered_html' ) ) {
+                       if ( wp_create_nonce( 'unfiltered-html-comment' ) != $_POST['_wp_unfiltered_html_comment'] ) {
+                               kses_remove_filters(); // start with a clean slate
+                               kses_init_filters(); // set up the filters
+                       }
+               }
+       } else {
+               wp_die( __( 'Sorry, you must be logged in to reply to a comment.' ) );
+       }
+
+       if ( '' == $comment_content )
+               wp_die( __( 'ERROR: please type a comment.' ) );
+
+       $comment_parent = absint($_POST['comment_ID']);
+       $comment_auto_approved = false;
+       $commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID');
+
+       $comment_id = wp_new_comment( $commentdata );
+       $comment = get_comment($comment_id);
+       if ( ! $comment ) wp_die( 1 );
+
+       $position = ( isset($_POST['position']) && (int) $_POST['position'] ) ? (int) $_POST['position'] : '-1';
+
+       // automatically approve parent comment
+       if ( !empty($_POST['approve_parent']) ) {
+               $parent = get_comment( $comment_parent );
+
+               if ( $parent && $parent->comment_approved === '0' && $parent->comment_post_ID == $comment_post_ID ) {
+                       if ( wp_set_comment_status( $parent->comment_ID, 'approve' ) )
+                               $comment_auto_approved = true;
+               }
+       }
+
+       ob_start();
+               if ( 'dashboard' == $_REQUEST['mode'] ) {
+                       require_once( ABSPATH . 'wp-admin/includes/dashboard.php' );
+                       _wp_dashboard_recent_comments_row( $comment );
+               } else {
+                       if ( 'single' == $_REQUEST['mode'] ) {
+                               $wp_list_table = _get_list_table('WP_Post_Comments_List_Table');
+                       } else {
+                               $wp_list_table = _get_list_table('WP_Comments_List_Table');
+                       }
+                       $wp_list_table->single_row( $comment );
+               }
+               $comment_list_item = ob_get_contents();
+       ob_end_clean();
+
+       $response =  array(
+               'what' => 'comment',
+               'id' => $comment->comment_ID,
+               'data' => $comment_list_item,
+               'position' => $position
+       );
+
+       if ( $comment_auto_approved )
+               $response['supplemental'] = array( 'parent_approved' => $parent->comment_ID );
+
+       $x = new WP_Ajax_Response();
+       $x->add( $response );
+       $x->send();
+}
+
+function wp_ajax_edit_comment() {
+       global $wp_list_table;
+
+       check_ajax_referer( 'replyto-comment', '_ajax_nonce-replyto-comment' );
+
+       set_current_screen( 'edit-comments' );
+
+       $comment_id = (int) $_POST['comment_ID'];
+       if ( ! current_user_can( 'edit_comment', $comment_id ) )
+               wp_die( -1 );
+
+       if ( '' == $_POST['content'] )
+               wp_die( __( 'ERROR: please type a comment.' ) );
+
+       $_POST['comment_status'] = $_POST['status'];
+       edit_comment();
+
+       $position = ( isset($_POST['position']) && (int) $_POST['position']) ? (int) $_POST['position'] : '-1';
+       $comments_status = isset($_POST['comments_listing']) ? $_POST['comments_listing'] : '';
+
+       $checkbox = ( isset($_POST['checkbox']) && true == $_POST['checkbox'] ) ? 1 : 0;
+       $wp_list_table = _get_list_table( $checkbox ? 'WP_Comments_List_Table' : 'WP_Post_Comments_List_Table' );
+
+       $comment = get_comment( $comment_id );
+
+       ob_start();
+               $wp_list_table->single_row( $comment );
+               $comment_list_item = ob_get_contents();
+       ob_end_clean();
+
+       $x = new WP_Ajax_Response();
+
+       $x->add( array(
+               'what' => 'edit_comment',
+               'id' => $comment->comment_ID,
+               'data' => $comment_list_item,
+               'position' => $position
+       ));
+
+       $x->send();
+}
+
+function wp_ajax_add_menu_item() {
+       check_ajax_referer( 'add-menu_item', 'menu-settings-column-nonce' );
+
+       if ( ! current_user_can( 'edit_theme_options' ) )
+               wp_die( -1 );
+
+       require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
+
+       // For performance reasons, we omit some object properties from the checklist.
+       // The following is a hacky way to restore them when adding non-custom items.
+
+       $menu_items_data = array();
+       foreach ( (array) $_POST['menu-item'] as $menu_item_data ) {
+               if (
+                       ! empty( $menu_item_data['menu-item-type'] ) &&
+                       'custom' != $menu_item_data['menu-item-type'] &&
+                       ! empty( $menu_item_data['menu-item-object-id'] )
+               ) {
+                       switch( $menu_item_data['menu-item-type'] ) {
+                               case 'post_type' :
+                                       $_object = get_post( $menu_item_data['menu-item-object-id'] );
+                               break;
+
+                               case 'taxonomy' :
+                                       $_object = get_term( $menu_item_data['menu-item-object-id'], $menu_item_data['menu-item-object'] );
+                               break;
+                       }
+
+                       $_menu_items = array_map( 'wp_setup_nav_menu_item', array( $_object ) );
+                       $_menu_item = array_shift( $_menu_items );
+
+                       // Restore the missing menu item properties
+                       $menu_item_data['menu-item-description'] = $_menu_item->description;
+               }
+
+               $menu_items_data[] = $menu_item_data;
+       }
+
+       $item_ids = wp_save_nav_menu_items( 0, $menu_items_data );
+       if ( is_wp_error( $item_ids ) )
+               wp_die( 0 );
+
+       $menu_items = array();
+
+       foreach ( (array) $item_ids as $menu_item_id ) {
+               $menu_obj = get_post( $menu_item_id );
+               if ( ! empty( $menu_obj->ID ) ) {
+                       $menu_obj = wp_setup_nav_menu_item( $menu_obj );
+                       $menu_obj->label = $menu_obj->title; // don't show "(pending)" in ajax-added items
+                       $menu_items[] = $menu_obj;
+               }
+       }
+
+       $walker_class_name = apply_filters( 'wp_edit_nav_menu_walker', 'Walker_Nav_Menu_Edit', $_POST['menu'] );
+
+       if ( ! class_exists( $walker_class_name ) )
+               wp_die( 0 );
+
+       if ( ! empty( $menu_items ) ) {
+               $args = array(
+                       'after' => '',
+                       'before' => '',
+                       'link_after' => '',
+                       'link_before' => '',
+                       'walker' => new $walker_class_name,
+               );
+               echo walk_nav_menu_tree( $menu_items, 0, (object) $args );
+       }
+}
+
+function wp_ajax_add_meta() {
+       check_ajax_referer( 'add-meta', '_ajax_nonce-add-meta' );
+       $c = 0;
+       $pid = (int) $_POST['post_id'];
+       $post = get_post( $pid );
+
+       if ( isset($_POST['metakeyselect']) || isset($_POST['metakeyinput']) ) {
+               if ( !current_user_can( 'edit_post', $pid ) )
+                       wp_die( -1 );
+               if ( isset($_POST['metakeyselect']) && '#NONE#' == $_POST['metakeyselect'] && empty($_POST['metakeyinput']) )
+                       wp_die( 1 );
+               if ( $post->post_status == 'auto-draft' ) {
+                       $save_POST = $_POST; // Backup $_POST
+                       $_POST = array(); // Make it empty for edit_post()
+                       $_POST['action'] = 'draft'; // Warning fix
+                       $_POST['post_ID'] = $pid;
+                       $_POST['post_type'] = $post->post_type;
+                       $_POST['post_status'] = 'draft';
+                       $now = current_time('timestamp', 1);
+                       $_POST['post_title'] = sprintf('Draft created on %s at %s', date(get_option('date_format'), $now), date(get_option('time_format'), $now));
+
+                       if ( $pid = edit_post() ) {
+                               if ( is_wp_error( $pid ) ) {
+                                       $x = new WP_Ajax_Response( array(
+                                               'what' => 'meta',
+                                               'data' => $pid
+                                       ) );
+                                       $x->send();
+                               }
+                               $_POST = $save_POST; // Now we can restore original $_POST again
+                               if ( !$mid = add_meta( $pid ) )
+                                       wp_die( __( 'Please provide a custom field value.' ) );
+                       } else {
+                               wp_die( 0 );
+                       }
+               } else if ( !$mid = add_meta( $pid ) ) {
+                       wp_die( __( 'Please provide a custom field value.' ) );
+               }
+
+               $meta = get_metadata_by_mid( 'post', $mid );
+               $pid = (int) $meta->post_id;
+               $meta = get_object_vars( $meta );
+               $x = new WP_Ajax_Response( array(
+                       'what' => 'meta',
+                       'id' => $mid,
+                       'data' => _list_meta_row( $meta, $c ),
+                       'position' => 1,
+                       'supplemental' => array('postid' => $pid)
+               ) );
+       } else { // Update?
+               $mid = (int) key( $_POST['meta'] );
+               $key = stripslashes( $_POST['meta'][$mid]['key'] );
+               $value = stripslashes( $_POST['meta'][$mid]['value'] );
+               if ( '' == trim($key) )
+                       wp_die( __( 'Please provide a custom field name.' ) );
+               if ( '' == trim($value) )
+                       wp_die( __( 'Please provide a custom field value.' ) );
+               if ( ! $meta = get_metadata_by_mid( 'post', $mid ) )
+                       wp_die( 0 ); // if meta doesn't exist
+               if ( is_protected_meta( $meta->meta_key, 'post' ) || is_protected_meta( $key, 'post' ) ||
+                       ! current_user_can( 'edit_post_meta', $meta->post_id, $meta->meta_key ) ||
+                       ! current_user_can( 'edit_post_meta', $meta->post_id, $key ) )
+                       wp_die( -1 );
+               if ( $meta->meta_value != $value || $meta->meta_key != $key ) {
+                       if ( !$u = update_metadata_by_mid( 'post', $mid, $value, $key ) )
+                               wp_die( 0 ); // We know meta exists; we also know it's unchanged (or DB error, in which case there are bigger problems).
+               }
+
+               $x = new WP_Ajax_Response( array(
+                       'what' => 'meta',
+                       'id' => $mid, 'old_id' => $mid,
+                       'data' => _list_meta_row( array(
+                               'meta_key' => $key,
+                               'meta_value' => $value,
+                               'meta_id' => $mid
+                       ), $c ),
+                       'position' => 0,
+                       'supplemental' => array('postid' => $meta->post_id)
+               ) );
+       }
+       $x->send();
+}
+
+function wp_ajax_add_user( $action ) {
+       global $wp_list_table;
+       if ( empty( $action ) )
+               $action = 'add-user';
+
+       check_ajax_referer( $action );
+       if ( ! current_user_can('create_users') )
+               wp_die( -1 );
+       if ( ! $user_id = edit_user() ) {
+               wp_die( 0 );
+       } elseif ( is_wp_error( $user_id ) ) {
+               $x = new WP_Ajax_Response( array(
+                       'what' => 'user',
+                       'id' => $user_id
+               ) );
+               $x->send();
+       }
+       $user_object = new WP_User( $user_id );
+
+       $wp_list_table = _get_list_table('WP_Users_List_Table');
+
+       $x = new WP_Ajax_Response( array(
+               'what' => 'user',
+               'id' => $user_id,
+               'data' => $wp_list_table->single_row( $user_object, '', $user_object->roles[0] ),
+               'supplemental' => array(
+                       'show-link' => sprintf(__( 'User <a href="#%s">%s</a> added' ), "user-$user_id", $user_object->user_login),
+                       'role' => $user_object->roles[0]
+               )
+       ) );
+       $x->send();
+}
+
+function wp_ajax_autosave() {
+       global $login_grace_period;
+
+       define( 'DOING_AUTOSAVE', true );
+
+       $nonce_age = check_ajax_referer( 'autosave', 'autosavenonce' );
+
+       $_POST['post_category'] = explode(",", $_POST['catslist']);
+       if ( $_POST['post_type'] == 'page' || empty($_POST['post_category']) )
+               unset($_POST['post_category']);
+
+       $do_autosave = (bool) $_POST['autosave'];
+       $do_lock = true;
+
+       $data = $alert = '';
+       /* translators: draft saved date format, see http://php.net/date */
+       $draft_saved_date_format = __('g:i:s a');
+       /* translators: %s: date and time */
+       $message = sprintf( __('Draft saved at %s.'), date_i18n( $draft_saved_date_format ) );
+
+       $supplemental = array();
+       if ( isset($login_grace_period) )
+               $alert .= sprintf( __('Your login has expired. Please open a new browser window and <a href="%s" target="_blank">log in again</a>. '), add_query_arg( 'interim-login', 1, wp_login_url() ) );
+
+       $id = $revision_id = 0;
+
+       $post_ID = (int) $_POST['post_ID'];
+       $_POST['ID'] = $post_ID;
+       $post = get_post($post_ID);
+       if ( 'auto-draft' == $post->post_status )
+               $_POST['post_status'] = 'draft';
+
+       if ( $last = wp_check_post_lock( $post->ID ) ) {
+               $do_autosave = $do_lock = false;
+
+               $last_user = get_userdata( $last );
+               $last_user_name = $last_user ? $last_user->display_name : __( 'Someone' );
+               $data = __( 'Autosave disabled.' );
+
+               $supplemental['disable_autosave'] = 'disable';
+               $alert .= sprintf( __( '%s is currently editing this article. If you update it, you will overwrite the changes.' ), esc_html( $last_user_name ) );
+       }
+
+       if ( 'page' == $post->post_type ) {
+               if ( !current_user_can('edit_page', $post_ID) )
+                       wp_die( __( 'You are not allowed to edit this page.' ) );
+       } else {
+               if ( !current_user_can('edit_post', $post_ID) )
+                       wp_die( __( 'You are not allowed to edit this post.' ) );
+       }
+
+       if ( $do_autosave ) {
+               // Drafts and auto-drafts are just overwritten by autosave
+               if ( 'auto-draft' == $post->post_status || 'draft' == $post->post_status ) {
+                       $id = edit_post();
+               } else { // Non drafts are not overwritten. The autosave is stored in a special post revision.
+                       $revision_id = wp_create_post_autosave( $post->ID );
+                       if ( is_wp_error($revision_id) )
+                               $id = $revision_id;
+                       else
+                               $id = $post->ID;
+               }
+               $data = $message;
+       } else {
+               if ( ! empty( $_POST['auto_draft'] ) )
+                       $id = 0; // This tells us it didn't actually save
+               else
+                       $id = $post->ID;
+       }
+
+       if ( $do_lock && empty( $_POST['auto_draft'] ) && $id && is_numeric( $id ) ) {
+               $lock_result = wp_set_post_lock( $id );
+               $supplemental['active-post-lock'] = implode( ':', $lock_result );
+       }
+
+       if ( $nonce_age == 2 ) {
+               $supplemental['replace-autosavenonce'] = wp_create_nonce('autosave');
+               $supplemental['replace-getpermalinknonce'] = wp_create_nonce('getpermalink');
+               $supplemental['replace-samplepermalinknonce'] = wp_create_nonce('samplepermalink');
+               $supplemental['replace-closedpostboxesnonce'] = wp_create_nonce('closedpostboxes');
+               $supplemental['replace-_ajax_linking_nonce'] = wp_create_nonce( 'internal-linking' );
+               if ( $id ) {
+                       if ( $_POST['post_type'] == 'post' )
+                               $supplemental['replace-_wpnonce'] = wp_create_nonce('update-post_' . $id);
+                       elseif ( $_POST['post_type'] == 'page' )
+                               $supplemental['replace-_wpnonce'] = wp_create_nonce('update-page_' . $id);
+               }
+       }
+
+       if ( ! empty($alert) )
+               $supplemental['alert'] = $alert;
+
+       $x = new WP_Ajax_Response( array(
+               'what' => 'autosave',
+               'id' => $id,
+               'data' => $id ? $data : '',
+               'supplemental' => $supplemental
+       ) );
+       $x->send();
+}
+
+function wp_ajax_closed_postboxes() {
+       check_ajax_referer( 'closedpostboxes', 'closedpostboxesnonce' );
+       $closed = isset( $_POST['closed'] ) ? explode( ',', $_POST['closed']) : array();
+       $closed = array_filter($closed);
+
+       $hidden = isset( $_POST['hidden'] ) ? explode( ',', $_POST['hidden']) : array();
+       $hidden = array_filter($hidden);
+
+       $page = isset( $_POST['page'] ) ? $_POST['page'] : '';
+
+       if ( $page != sanitize_key( $page ) )
+               wp_die( 0 );
+
+       if ( ! $user = wp_get_current_user() )
+               wp_die( -1 );
+
+       if ( is_array($closed) )
+               update_user_option($user->ID, "closedpostboxes_$page", $closed, true);
+
+       if ( is_array($hidden) ) {
+               $hidden = array_diff( $hidden, array('submitdiv', 'linksubmitdiv', 'manage-menu', 'create-menu') ); // postboxes that are always shown
+               update_user_option($user->ID, "metaboxhidden_$page", $hidden, true);
+       }
+
+       wp_die( 1 );
+}
+
+function wp_ajax_hidden_columns() {
+       check_ajax_referer( 'screen-options-nonce', 'screenoptionnonce' );
+       $hidden = isset( $_POST['hidden'] ) ? $_POST['hidden'] : '';
+       $hidden = explode( ',', $_POST['hidden'] );
+       $page = isset( $_POST['page'] ) ? $_POST['page'] : '';
+
+       if ( $page != sanitize_key( $page ) )
+               wp_die( 0 );
+
+       if ( ! $user = wp_get_current_user() )
+               wp_die( -1 );
+
+       if ( is_array($hidden) )
+               update_user_option($user->ID, "manage{$page}columnshidden", $hidden, true);
+
+       wp_die( 1 );
+}
+
+function wp_ajax_update_welcome_panel() {
+       check_ajax_referer( 'welcome-panel-nonce', 'welcomepanelnonce' );
+
+       if ( ! current_user_can( 'edit_theme_options' ) )
+               wp_die( -1 );
+
+       update_user_meta( get_current_user_id(), 'show_welcome_panel', empty( $_POST['visible'] ) ? 0 : 1 );
+
+       wp_die( 1 );
+}
+
+function wp_ajax_menu_get_metabox() {
+       if ( ! current_user_can( 'edit_theme_options' ) )
+               wp_die( -1 );
+
+       require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
+
+       if ( isset( $_POST['item-type'] ) && 'post_type' == $_POST['item-type'] ) {
+               $type = 'posttype';
+               $callback = 'wp_nav_menu_item_post_type_meta_box';
+               $items = (array) get_post_types( array( 'show_in_nav_menus' => true ), 'object' );
+       } elseif ( isset( $_POST['item-type'] ) && 'taxonomy' == $_POST['item-type'] ) {
+               $type = 'taxonomy';
+               $callback = 'wp_nav_menu_item_taxonomy_meta_box';
+               $items = (array) get_taxonomies( array( 'show_ui' => true ), 'object' );
+       }
+
+       if ( ! empty( $_POST['item-object'] ) && isset( $items[$_POST['item-object']] ) ) {
+               $item = apply_filters( 'nav_menu_meta_box_object', $items[ $_POST['item-object'] ] );
+               ob_start();
+               call_user_func_array($callback, array(
+                       null,
+                       array(
+                               'id' => 'add-' . $item->name,
+                               'title' => $item->labels->name,
+                               'callback' => $callback,
+                               'args' => $item,
+                       )
+               ));
+
+               $markup = ob_get_clean();
+
+               echo json_encode(array(
+                       'replace-id' => $type . '-' . $item->name,
+                       'markup' => $markup,
+               ));
+       }
+
+       wp_die();
+}
+
+function wp_ajax_wp_link_ajax() {
+       check_ajax_referer( 'internal-linking', '_ajax_linking_nonce' );
+
+       $args = array();
+
+       if ( isset( $_POST['search'] ) )
+               $args['s'] = stripslashes( $_POST['search'] );
+       $args['pagenum'] = ! empty( $_POST['page'] ) ? absint( $_POST['page'] ) : 1;
+
+       require(ABSPATH . WPINC . '/class-wp-editor.php');
+       $results = _WP_Editors::wp_link_query( $args );
+
+       if ( ! isset( $results ) )
+               wp_die( 0 );
+
+       echo json_encode( $results );
+       echo "\n";
+
+       wp_die();
+}
+
+function wp_ajax_menu_locations_save() {
+       if ( ! current_user_can( 'edit_theme_options' ) )
+               wp_die( -1 );
+       check_ajax_referer( 'add-menu_item', 'menu-settings-column-nonce' );
+       if ( ! isset( $_POST['menu-locations'] ) )
+               wp_die( 0 );
+       set_theme_mod( 'nav_menu_locations', array_map( 'absint', $_POST['menu-locations'] ) );
+       wp_die( 1 );
+}
+
+function wp_ajax_meta_box_order() {
+       check_ajax_referer( 'meta-box-order' );
+       $order = isset( $_POST['order'] ) ? (array) $_POST['order'] : false;
+       $page_columns = isset( $_POST['page_columns'] ) ? $_POST['page_columns'] : 'auto';
+
+       if ( $page_columns != 'auto' )
+               $page_columns = (int) $page_columns;
+
+       $page = isset( $_POST['page'] ) ? $_POST['page'] : '';
+
+       if ( $page != sanitize_key( $page ) )
+               wp_die( 0 );
+
+       if ( ! $user = wp_get_current_user() )
+               wp_die( -1 );
+
+       if ( $order )
+               update_user_option($user->ID, "meta-box-order_$page", $order, true);
+
+       if ( $page_columns )
+               update_user_option($user->ID, "screen_layout_$page", $page_columns, true);
+
+       wp_die( 1 );
+}
+
+function wp_ajax_menu_quick_search() {
+       if ( ! current_user_can( 'edit_theme_options' ) )
+               wp_die( -1 );
+
+       require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
+
+       _wp_ajax_menu_quick_search( $_POST );
+
+       wp_die();
+}
+
+function wp_ajax_get_permalink() {
+       check_ajax_referer( 'getpermalink', 'getpermalinknonce' );
+       $post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0;
+       wp_die( add_query_arg( array( 'preview' => 'true' ), get_permalink( $post_id ) ) );
+}
+
+function wp_ajax_sample_permalink() {
+       check_ajax_referer( 'samplepermalink', 'samplepermalinknonce' );
+       $post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0;
+       $title = isset($_POST['new_title'])? $_POST['new_title'] : '';
+       $slug = isset($_POST['new_slug'])? $_POST['new_slug'] : null;
+       wp_die( get_sample_permalink_html( $post_id, $title, $slug ) );
+}
+
+function wp_ajax_inline_save() {
+       global $wp_list_table;
+
+       check_ajax_referer( 'inlineeditnonce', '_inline_edit' );
+
+       if ( ! isset($_POST['post_ID']) || ! ( $post_ID = (int) $_POST['post_ID'] ) )
+               wp_die();
+
+       if ( 'page' == $_POST['post_type'] ) {
+               if ( ! current_user_can( 'edit_page', $post_ID ) )
+                       wp_die( __( 'You are not allowed to edit this page.' ) );
+       } else {
+               if ( ! current_user_can( 'edit_post', $post_ID ) )
+                       wp_die( __( 'You are not allowed to edit this post.' ) );
+       }
+
+       set_current_screen( $_POST['screen'] );
+
+       if ( $last = wp_check_post_lock( $post_ID ) ) {
+               $last_user = get_userdata( $last );
+               $last_user_name = $last_user ? $last_user->display_name : __( 'Someone' );
+               printf( $_POST['post_type'] == 'page' ? __( 'Saving is disabled: %s is currently editing this page.' ) : __( 'Saving is disabled: %s is currently editing this post.' ),        esc_html( $last_user_name ) );
+               wp_die();
+       }
+
+       $data = &$_POST;
+
+       $post = get_post( $post_ID, ARRAY_A );
+       $post = add_magic_quotes($post); //since it is from db
+
+       $data['content'] = $post['post_content'];
+       $data['excerpt'] = $post['post_excerpt'];
+
+       // rename
+       $data['user_ID'] = $GLOBALS['user_ID'];
+
+       if ( isset($data['post_parent']) )
+               $data['parent_id'] = $data['post_parent'];
+
+       // status
+       if ( isset($data['keep_private']) && 'private' == $data['keep_private'] )
+               $data['post_status'] = 'private';
+       else
+               $data['post_status'] = $data['_status'];
+
+       if ( empty($data['comment_status']) )
+               $data['comment_status'] = 'closed';
+       if ( empty($data['ping_status']) )
+               $data['ping_status'] = 'closed';
+
+       // update the post
+       edit_post();
+
+       $wp_list_table = _get_list_table('WP_Posts_List_Table');
+
+       $mode = $_POST['post_view'];
+       $wp_list_table->display_rows( array( get_post( $_POST['post_ID'] ) ) );
+
+       wp_die();
+}
+
+function wp_ajax_inline_save_tax() {
+       global $wp_list_table;
+
+       check_ajax_referer( 'taxinlineeditnonce', '_inline_edit' );
+
+       $taxonomy = sanitize_key( $_POST['taxonomy'] );
+       $tax = get_taxonomy( $taxonomy );
+       if ( ! $tax )
+               wp_die( 0 );
+
+       if ( ! current_user_can( $tax->cap->edit_terms ) )
+               wp_die( -1 );
+
+       set_current_screen( 'edit-' . $taxonomy );
+
+       $wp_list_table = _get_list_table('WP_Terms_List_Table');
+
+       if ( ! isset($_POST['tax_ID']) || ! ( $id = (int) $_POST['tax_ID'] ) )
+               wp_die( -1 );
+
+       $tag = get_term( $id, $taxonomy );
+       $_POST['description'] = $tag->description;
+
+       $updated = wp_update_term($id, $taxonomy, $_POST);
+       if ( $updated && !is_wp_error($updated) ) {
+               $tag = get_term( $updated['term_id'], $taxonomy );
+               if ( !$tag || is_wp_error( $tag ) ) {
+                       if ( is_wp_error($tag) && $tag->get_error_message() )
+                               wp_die( $tag->get_error_message() );
+                       wp_die( __( 'Item not updated.' ) );
+               }
+
+               echo $wp_list_table->single_row( $tag );
+       } else {
+               if ( is_wp_error($updated) && $updated->get_error_message() )
+                       wp_die( $updated->get_error_message() );
+               wp_die( __( 'Item not updated.' ) );
+       }
+
+       wp_die();
+}
+
+function wp_ajax_find_posts() {
+       global $wpdb;
+
+       check_ajax_referer( 'find-posts' );
+
+       if ( empty($_POST['ps']) )
+               wp_die();
+
+       if ( !empty($_POST['post_type']) && in_array( $_POST['post_type'], get_post_types() ) )
+               $what = $_POST['post_type'];
+       else
+               $what = 'post';
+
+       $s = stripslashes($_POST['ps']);
+       preg_match_all('/".*?("|$)|((?<=[\\s",+])|^)[^\\s",+]+/', $s, $matches);
+       $search_terms = array_map('_search_terms_tidy', $matches[0]);
+
+       $searchand = $search = '';
+       foreach ( (array) $search_terms as $term ) {
+               $term = esc_sql( like_escape( $term ) );
+               $search .= "{$searchand}(($wpdb->posts.post_title LIKE '%{$term}%') OR ($wpdb->posts.post_content LIKE '%{$term}%'))";
+               $searchand = ' AND ';
+       }
+       $term = esc_sql( like_escape( $s ) );
+       if ( count($search_terms) > 1 && $search_terms[0] != $s )
+               $search .= " OR ($wpdb->posts.post_title LIKE '%{$term}%') OR ($wpdb->posts.post_content LIKE '%{$term}%')";
+
+       $posts = $wpdb->get_results( "SELECT ID, post_title, post_status, post_date FROM $wpdb->posts WHERE post_type = '$what' AND post_status IN ('draft', 'publish') AND ($search) ORDER BY post_date_gmt DESC LIMIT 50" );
+
+       if ( ! $posts ) {
+               $posttype = get_post_type_object($what);
+               wp_die( $posttype->labels->not_found );
+       }
+
+       $html = '<table class="widefat" cellspacing="0"><thead><tr><th class="found-radio"><br /></th><th>'.__('Title').'</th><th>'.__('Date').'</th><th>'.__('Status').'</th></tr></thead><tbody>';
+       foreach ( $posts as $post ) {
+
+               switch ( $post->post_status ) {
+                       case 'publish' :
+                       case 'private' :
+                               $stat = __('Published');
+                               break;
+                       case 'future' :
+                               $stat = __('Scheduled');
+                               break;
+                       case 'pending' :
+                               $stat = __('Pending Review');
+                               break;
+                       case 'draft' :
+                               $stat = __('Draft');
+                               break;
+               }
+
+               if ( '0000-00-00 00:00:00' == $post->post_date ) {
+                       $time = '';
+               } else {
+                       /* translators: date format in table columns, see http://php.net/date */
+                       $time = mysql2date(__('Y/m/d'), $post->post_date);
+               }
+
+               $html .= '<tr class="found-posts"><td class="found-radio"><input type="radio" id="found-'.$post->ID.'" name="found_post_id" value="' . esc_attr($post->ID) . '"></td>';
+               $html .= '<td><label for="found-'.$post->ID.'">'.esc_html( $post->post_title ).'</label></td><td>'.esc_html( $time ).'</td><td>'.esc_html( $stat ).'</td></tr>'."\n\n";
+       }
+       $html .= '</tbody></table>';
+
+       $x = new WP_Ajax_Response();
+       $x->add( array(
+               'what' => $what,
+               'data' => $html
+       ));
+       $x->send();
+
+}
+
+function wp_ajax_widgets_order() {
+       check_ajax_referer( 'save-sidebar-widgets', 'savewidgets' );
+
+       if ( !current_user_can('edit_theme_options') )
+               wp_die( -1 );
+
+       unset( $_POST['savewidgets'], $_POST['action'] );
+
+       // save widgets order for all sidebars
+       if ( is_array($_POST['sidebars']) ) {
+               $sidebars = array();
+               foreach ( $_POST['sidebars'] as $key => $val ) {
+                       $sb = array();
+                       if ( !empty($val) ) {
+                               $val = explode(',', $val);
+                               foreach ( $val as $k => $v ) {
+                                       if ( strpos($v, 'widget-') === false )
+                                               continue;
+
+                                       $sb[$k] = substr($v, strpos($v, '_') + 1);
+                               }
+                       }
+                       $sidebars[$key] = $sb;
+               }
+               wp_set_sidebars_widgets($sidebars);
+               wp_die( 1 );
+       }
+
+       wp_die( -1 );
+}
+
+function wp_ajax_save_widget() {
+       global $wp_registered_widgets, $wp_registered_widget_controls, $wp_registered_widget_updates;
+
+       check_ajax_referer( 'save-sidebar-widgets', 'savewidgets' );
+
+       if ( !current_user_can('edit_theme_options') || !isset($_POST['id_base']) )
+               wp_die( -1 );
+
+       unset( $_POST['savewidgets'], $_POST['action'] );
+
+       do_action('load-widgets.php');
+       do_action('widgets.php');
+       do_action('sidebar_admin_setup');
+
+       $id_base = $_POST['id_base'];
+       $widget_id = $_POST['widget-id'];
+       $sidebar_id = $_POST['sidebar'];
+       $multi_number = !empty($_POST['multi_number']) ? (int) $_POST['multi_number'] : 0;
+       $settings = isset($_POST['widget-' . $id_base]) && is_array($_POST['widget-' . $id_base]) ? $_POST['widget-' . $id_base] : false;
+       $error = '<p>' . __('An error has occurred. Please reload the page and try again.') . '</p>';
+
+       $sidebars = wp_get_sidebars_widgets();
+       $sidebar = isset($sidebars[$sidebar_id]) ? $sidebars[$sidebar_id] : array();
+
+       // delete
+       if ( isset($_POST['delete_widget']) && $_POST['delete_widget'] ) {
+
+               if ( !isset($wp_registered_widgets[$widget_id]) )
+                       wp_die( $error );
+
+               $sidebar = array_diff( $sidebar, array($widget_id) );
+               $_POST = array('sidebar' => $sidebar_id, 'widget-' . $id_base => array(), 'the-widget-id' => $widget_id, 'delete_widget' => '1');
+       } elseif ( $settings && preg_match( '/__i__|%i%/', key($settings) ) ) {
+               if ( !$multi_number )
+                       wp_die( $error );
+
+               $_POST['widget-' . $id_base] = array( $multi_number => array_shift($settings) );
+               $widget_id = $id_base . '-' . $multi_number;
+               $sidebar[] = $widget_id;
+       }
+       $_POST['widget-id'] = $sidebar;
+
+       foreach ( (array) $wp_registered_widget_updates as $name => $control ) {
+
+               if ( $name == $id_base ) {
+                       if ( !is_callable( $control['callback'] ) )
+                               continue;
+
+                       ob_start();
+                               call_user_func_array( $control['callback'], $control['params'] );
+                       ob_end_clean();
+                       break;
+               }
+       }
+
+       if ( isset($_POST['delete_widget']) && $_POST['delete_widget'] ) {
+               $sidebars[$sidebar_id] = $sidebar;
+               wp_set_sidebars_widgets($sidebars);
+               echo "deleted:$widget_id";
+               wp_die();
+       }
+
+       if ( !empty($_POST['add_new']) )
+               wp_die();
+
+       if ( $form = $wp_registered_widget_controls[$widget_id] )
+               call_user_func_array( $form['callback'], $form['params'] );
+
+       wp_die();
+}
+
+function wp_ajax_upload_attachment() {
+       check_ajax_referer( 'media-form' );
+
+       if ( ! current_user_can( 'upload_files' ) )
+               wp_die( -1 );
+
+       if ( isset( $_REQUEST['post_id'] ) ) {
+               $post_id = $_REQUEST['post_id'];
+               if ( ! current_user_can( 'edit_post', $post_id ) )
+                       wp_die( -1 );
+       } else {
+               $post_id = null;
+       }
+
+       $post_data = isset( $_REQUEST['post_data'] ) ? $_REQUEST['post_data'] : array();
+
+       $attachment_id = media_handle_upload( 'async-upload', $post_id, $post_data );
+
+       if ( is_wp_error( $attachment_id ) ) {
+               echo json_encode( array(
+                       'type' => 'error',
+                       'data' => array(
+                               'message'  => $attachment_id->get_error_message(),
+                               'filename' => $_FILES['async-upload']['name'],
+                       ),
+               ) );
+               wp_die();
+       }
+
+       if ( isset( $post_data['context'] ) && isset( $post_data['theme'] ) ) {
+               if ( 'custom-background' === $post_data['context'] )
+                       update_post_meta( $attachment_id, '_wp_attachment_is_custom_background', $post_data['theme'] );
+
+               if ( 'custom-header' === $post_data['context'] )
+                       update_post_meta( $attachment_id, '_wp_attachment_is_custom_header', $post_data['theme'] );
+       }
+
+       $post = get_post( $attachment_id );
+
+       echo json_encode( array(
+               'type' => 'success',
+               'data' => array(
+                       'id'       => $attachment_id,
+                       'title'    => esc_attr( $post->post_title ),
+                       'filename' => esc_html( basename( $post->guid ) ),
+                       'url'      => wp_get_attachment_url( $attachment_id ),
+                       'meta'     => wp_get_attachment_metadata( $attachment_id ),
+               ),
+       ) );
+       wp_die();
+}
+
+function wp_ajax_image_editor() {
+       $attachment_id = intval($_POST['postid']);
+       if ( empty($attachment_id) || !current_user_can('edit_post', $attachment_id) )
+               wp_die( -1 );
+
+       check_ajax_referer( "image_editor-$attachment_id" );
+       include_once( ABSPATH . 'wp-admin/includes/image-edit.php' );
+
+       $msg = false;
+       switch ( $_POST['do'] ) {
+               case 'save' :
+                       $msg = wp_save_image($attachment_id);
+                       $msg = json_encode($msg);
+                       wp_die( $msg );
+                       break;
+               case 'scale' :
+                       $msg = wp_save_image($attachment_id);
+                       break;
+               case 'restore' :
+                       $msg = wp_restore_image($attachment_id);
+                       break;
+       }
+
+       wp_image_editor($attachment_id, $msg);
+       wp_die();
+}
+
+function wp_ajax_set_post_thumbnail() {
+       $post_ID = intval( $_POST['post_id'] );
+       if ( !current_user_can( 'edit_post', $post_ID ) )
+               wp_die( -1 );
+       $thumbnail_id = intval( $_POST['thumbnail_id'] );
+
+       check_ajax_referer( "set_post_thumbnail-$post_ID" );
+
+       if ( $thumbnail_id == '-1' ) {
+               if ( delete_post_thumbnail( $post_ID ) )
+                       wp_die( _wp_post_thumbnail_html( null, $post_ID ) );
+               else
+                       wp_die( 0 );
+       }
+
+       if ( set_post_thumbnail( $post_ID, $thumbnail_id ) )
+               wp_die( _wp_post_thumbnail_html( $thumbnail_id, $post_ID ) );
+       wp_die( 0 );
+}
+
+function wp_ajax_date_format() {
+       wp_die( date_i18n( sanitize_option( 'date_format', $_POST['date'] ) ) );
+}
+
+function wp_ajax_time_format() {
+       wp_die( date_i18n( sanitize_option( 'time_format', $_POST['date'] ) ) );
+}
+
+function wp_ajax_wp_fullscreen_save_post() {
+       $post_id = isset( $_POST['post_ID'] ) ? (int) $_POST['post_ID'] : 0;
+
+       $post = $post_type = null;
+
+       if ( $post_id )
+               $post = get_post( $post_id );
+
+       if ( $post )
+               $post_type = $post->post_type;
+       elseif ( isset( $_POST['post_type'] ) && post_type_exists( $_POST['post_type'] ) )
+               $post_type = $_POST['post_type'];
+
+       check_ajax_referer('update-' . $post_type . '_' . $post_id, '_wpnonce');
+
+       $post_id = edit_post();
+
+       if ( is_wp_error($post_id) ) {
+               if ( $post_id->get_error_message() )
+                       $message = $post_id->get_error_message();
+               else
+                       $message = __('Save failed');
+
+               echo json_encode( array( 'message' => $message, 'last_edited' => '' ) );
+               wp_die();
+       } else {
+               $message = __('Saved.');
+       }
+
+       if ( $post ) {
+               $last_date = mysql2date( get_option('date_format'), $post->post_modified );
+               $last_time = mysql2date( get_option('time_format'), $post->post_modified );
+       } else {
+               $last_date = date_i18n( get_option('date_format') );
+               $last_time = date_i18n( get_option('time_format') );
+       }
+
+       if ( $last_id = get_post_meta($post_id, '_edit_last', true) ) {
+               $last_user = get_userdata($last_id);
+               $last_edited = sprintf( __('Last edited by %1$s on %2$s at %3$s'), esc_html( $last_user->display_name ), $last_date, $last_time );
+       } else {
+               $last_edited = sprintf( __('Last edited on %1$s at %2$s'), $last_date, $last_time );
+       }
+
+       echo json_encode( array( 'message' => $message, 'last_edited' => $last_edited ) );
+       wp_die();
+}
+
+function wp_ajax_wp_remove_post_lock() {
+       if ( empty( $_POST['post_ID'] ) || empty( $_POST['active_post_lock'] ) )
+               wp_die( 0 );
+       $post_id = (int) $_POST['post_ID'];
+       if ( ! $post = get_post( $post_id ) )
+               wp_die( 0 );
+
+       check_ajax_referer( 'update-' . $post->post_type . '_' . $post_id );
+
+       if ( ! current_user_can( 'edit_post', $post_id ) )
+               wp_die( -1 );
+
+       $active_lock = array_map( 'absint', explode( ':', $_POST['active_post_lock'] ) );
+       if ( $active_lock[1] != get_current_user_id() )
+               wp_die( 0 );
+
+       $new_lock = ( time() - apply_filters( 'wp_check_post_lock_window', AUTOSAVE_INTERVAL * 2 ) + 5 ) . ':' . $active_lock[1];
+       update_post_meta( $post_id, '_edit_lock', $new_lock, implode( ':', $active_lock ) );
+       wp_die( 1 );
+}
+
+function wp_ajax_dismiss_wp_pointer() {
+       $pointer = $_POST['pointer'];
+       if ( $pointer != sanitize_key( $pointer ) )
+               wp_die( 0 );
+
+//     check_ajax_referer( 'dismiss-pointer_' . $pointer );
+
+       $dismissed = array_filter( explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) ) );
+
+       if ( in_array( $pointer, $dismissed ) )
+               wp_die( 0 );
+
+       $dismissed[] = $pointer;
+       $dismissed = implode( ',', $dismissed );
+
+       update_user_meta( get_current_user_id(), 'dismissed_wp_pointers', $dismissed );
+       wp_die( 1 );
+}
index 0ed560c1913986eed2f7506625e7b1d5f6f49478..17a8229aa65897086cca43c10a9dac5fb0384a00 100644 (file)
@@ -53,6 +53,7 @@ function edit_link( $link_id = 0 ) {
  * @return object Default link
  */
 function get_default_link_to_edit() {
  * @return object Default link
  */
 function get_default_link_to_edit() {
+       $link = new stdClass;
        if ( isset( $_GET['linkurl'] ) )
                $link->link_url = esc_url( $_GET['linkurl'] );
        else
        if ( isset( $_GET['linkurl'] ) )
                $link->link_url = esc_url( $_GET['linkurl'] );
        else
@@ -83,7 +84,7 @@ function wp_delete_link( $link_id ) {
 
        wp_delete_object_term_relationships( $link_id, 'link_category' );
 
 
        wp_delete_object_term_relationships( $link_id, 'link_category' );
 
-       $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->links WHERE link_id = %d", $link_id ) );
+       $wpdb->delete( $wpdb->links, array( 'link_id' => $link_id ) );
 
        do_action( 'deleted_link', $link_id );
 
 
        do_action( 'deleted_link', $link_id );
 
@@ -265,5 +266,3 @@ function wp_update_link( $linkdata ) {
 
        return wp_insert_link( $linkdata );
 }
 
        return wp_insert_link( $linkdata );
 }
-
-?>
index 1e35e745317a2452e815ff2b9f50830f16c92c6a..1ae3e870ebf4243745d12235373d27ff311b07c7 100644 (file)
@@ -896,11 +896,12 @@ class ftp_base {
        }
 }
 
        }
 }
 
-$mod_sockets=TRUE;
-if (!extension_loaded('sockets')) {
-       $prefix = (PHP_SHLIB_SUFFIX == 'dll') ? 'php_' : '';
-       if(!@dl($prefix . 'sockets.' . PHP_SHLIB_SUFFIX)) $mod_sockets=FALSE;
+$mod_sockets = extension_loaded( 'sockets' );
+if ( ! $mod_sockets && function_exists( 'dl' ) && is_callable( 'dl' ) ) {
+       $prefix = ( PHP_SHLIB_SUFFIX == 'dll' ) ? 'php_' : '';
+       @dl( $prefix . 'sockets.' . PHP_SHLIB_SUFFIX );
+       $mod_sockets = extension_loaded( 'sockets' );
 }
 
 }
 
-require_once "class-ftp-".($mod_sockets?"sockets":"pure").".php";
+require_once "class-ftp-" . ( $mod_sockets ? "sockets" : "pure" ) . ".php";
 ?>
 ?>
index e3dc4c48b777157a4f402ca6ed9a2140dfccdc53..bb5a95e6a741ff71d40e57e3341ad9d47d1d6831 100644 (file)
@@ -130,13 +130,13 @@ class WP_Comments_List_Table extends WP_List_Table {
                global $comment_status;
 
                if ( 'moderated' == $comment_status )
                global $comment_status;
 
                if ( 'moderated' == $comment_status )
-                       _e( 'No comments awaiting moderation&hellip; yet.' );
+                       _e( 'No comments awaiting moderation.' );
                else
                        _e( 'No comments found.' );
        }
 
        function get_views() {
                else
                        _e( 'No comments found.' );
        }
 
        function get_views() {
-               global $post_id, $comment_status;
+               global $post_id, $comment_status, $comment_type;
 
                $status_links = array();
                $num_comments = ( $post_id ) ? wp_count_comments( $post_id ) : wp_count_comments();
 
                $status_links = array();
                $num_comments = ( $post_id ) ? wp_count_comments( $post_id ) : wp_count_comments();
@@ -186,7 +186,7 @@ class WP_Comments_List_Table extends WP_List_Table {
                $actions = array();
                if ( in_array( $comment_status, array( 'all', 'approved' ) ) )
                        $actions['unapprove'] = __( 'Unapprove' );
                $actions = array();
                if ( in_array( $comment_status, array( 'all', 'approved' ) ) )
                        $actions['unapprove'] = __( 'Unapprove' );
-               if ( in_array( $comment_status, array( 'all', 'moderated', 'spam' ) ) )
+               if ( in_array( $comment_status, array( 'all', 'moderated' ) ) )
                        $actions['approve'] = __( 'Approve' );
                if ( in_array( $comment_status, array( 'all', 'moderated', 'approved' ) ) )
                        $actions['spam'] = _x( 'Mark as Spam', 'comment' );
                        $actions['approve'] = __( 'Approve' );
                if ( in_array( $comment_status, array( 'all', 'moderated', 'approved' ) ) )
                        $actions['spam'] = _x( 'Mark as Spam', 'comment' );
@@ -556,5 +556,3 @@ class WP_Post_Comments_List_Table extends WP_Comments_List_Table {
                return 10;
        }
 }
                return 10;
        }
 }
-
-?>
index 3d3016acd701d78bbdb966f0dea26003ea03c9f5..1f22f24182de3b0a3cc5696c594aa121197c39ce 100644 (file)
@@ -328,5 +328,3 @@ class WP_Filesystem_Base {
                return (bool) preg_match('|[^\x20-\x7E]|', $text); //chr(32)..chr(127)
        }
 }
                return (bool) preg_match('|[^\x20-\x7E]|', $text); //chr(32)..chr(127)
        }
 }
-
-?>
index ebd64b3e8236d61e95700c89d66c6624852e1a2f..457f199c3db445e2323585de93a0313e75b6d1e0 100644 (file)
@@ -207,7 +207,7 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
                if ( ! $overwrite && $this->exists($destination) )
                        return false;
 
                if ( ! $overwrite && $this->exists($destination) )
                        return false;
 
-               // try using rename first.  if that fails (for example, source is read only) try copy
+               // try using rename first. if that fails (for example, source is read only) try copy
                if ( @rename($source, $destination) )
                        return true;
 
                if ( @rename($source, $destination) )
                        return true;
 
@@ -361,4 +361,3 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
                return $ret;
        }
 }
                return $ret;
        }
 }
-?>
index 79bacfbaa4d719fde8030e157902394192aaa235..12280304721c792c4eb9888d981f2d21ccaf3437 100644 (file)
@@ -387,5 +387,3 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
                        ftp_close($this->link);
        }
 }
                        ftp_close($this->link);
        }
 }
-
-?>
index 7dae3b773724953f484d9e452b22a52f534a5fd6..2e9fbd69970f5f0ed1500ed7880b1a06477db887 100644 (file)
@@ -327,5 +327,3 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
                $this->ftp->quit();
        }
 }
                $this->ftp->quit();
        }
 }
-
-?>
index cbe3ed54a1bbfdacf74f3ee71ffe381380fabb17..4776a52f81bcb82c38db24fe23528655317f75cb 100644 (file)
@@ -182,5 +182,3 @@ class WP_Links_List_Table extends WP_List_Table {
                }
        }
 }
                }
        }
 }
-
-?>
index 446174d4dea6409f8a2ef7381caa485b3f05732a..6de7abf538c1c428671d40401bd3df6e0188a429 100644 (file)
@@ -212,7 +212,7 @@ class WP_List_Table {
 ?>
 <p class="search-box">
        <label class="screen-reader-text" for="<?php echo $input_id ?>"><?php echo $text; ?>:</label>
 ?>
 <p class="search-box">
        <label class="screen-reader-text" for="<?php echo $input_id ?>"><?php echo $text; ?>:</label>
-       <input type="text" id="<?php echo $input_id ?>" name="s" value="<?php _admin_search_query(); ?>" />
+       <input type="search" id="<?php echo $input_id ?>" name="s" value="<?php _admin_search_query(); ?>" />
        <?php submit_button( $text, 'button', false, false, array('id' => 'search-submit') ); ?>
 </p>
 <?php
        <?php submit_button( $text, 'button', false, false, array('id' => 'search-submit') ); ?>
 </p>
 <?php
@@ -386,7 +386,8 @@ class WP_List_Table {
                        printf( "<option %s value='%s'>%s</option>\n",
                                selected( $m, $year . $month, false ),
                                esc_attr( $arc_row->year . $month ),
                        printf( "<option %s value='%s'>%s</option>\n",
                                selected( $m, $year . $month, false ),
                                esc_attr( $arc_row->year . $month ),
-                               $wp_locale->get_month( $month ) . " $year"
+                               /* translators: 1: month name, 2: 4-digit year */
+                               sprintf( __( '%1$s %2$d' ), $wp_locale->get_month( $month ), $year )
                        );
                }
 ?>
                        );
                }
 ?>
@@ -483,7 +484,7 @@ class WP_List_Table {
                if ( empty( $this->_pagination_args ) )
                        return;
 
                if ( empty( $this->_pagination_args ) )
                        return;
 
-               extract( $this->_pagination_args );
+               extract( $this->_pagination_args, EXTR_SKIP );
 
                $output = '<span class="displaying-num">' . sprintf( _n( '1 item', '%s items', $total_items ), number_format_i18n( $total_items ) ) . '</span>';
 
 
                $output = '<span class="displaying-num">' . sprintf( _n( '1 item', '%s items', $total_items ), number_format_i18n( $total_items ) ) . '</span>';
 
@@ -518,9 +519,8 @@ class WP_List_Table {
                if ( 'bottom' == $which )
                        $html_current_page = $current;
                else
                if ( 'bottom' == $which )
                        $html_current_page = $current;
                else
-                       $html_current_page = sprintf( "<input class='current-page' title='%s' type='text' name='%s' value='%s' size='%d' />",
+                       $html_current_page = sprintf( "<input class='current-page' title='%s' type='text' name='paged' value='%s' size='%d' />",
                                esc_attr__( 'Current page' ),
                                esc_attr__( 'Current page' ),
-                               esc_attr( 'paged' ),
                                $current,
                                strlen( $total_pages )
                        );
                                $current,
                                strlen( $total_pages )
                        );
@@ -542,7 +542,10 @@ class WP_List_Table {
                        '&raquo;'
                );
 
                        '&raquo;'
                );
 
-               $output .= "\n<span class='pagination-links'>" . join( "\n", $page_links ) . '</span>';
+               $pagination_links_class = 'pagination-links';
+               if ( ! empty( $infinite_scroll ) )
+                       $pagination_links_class = ' hide-if-js';
+               $output .= "\n<span class='$pagination_links_class'>" . join( "\n", $page_links ) . '</span>';
 
                if ( $total_pages )
                        $page_class = $total_pages < 2 ? ' one-page' : '';
 
                if ( $total_pages )
                        $page_class = $total_pages < 2 ? ' one-page' : '';
@@ -871,7 +874,7 @@ class WP_List_Table {
                $this->prepare_items();
 
                extract( $this->_args );
                $this->prepare_items();
 
                extract( $this->_args );
-               extract( $this->_pagination_args );
+               extract( $this->_pagination_args, EXTR_SKIP );
 
                ob_start();
                if ( ! empty( $_REQUEST['no_placeholder'] ) )
 
                ob_start();
                if ( ! empty( $_REQUEST['no_placeholder'] ) )
@@ -913,4 +916,3 @@ class WP_List_Table {
                printf( "<script type='text/javascript'>list_args = %s;</script>\n", json_encode( $args ) );
        }
 }
                printf( "<script type='text/javascript'>list_args = %s;</script>\n", json_encode( $args ) );
        }
 }
-?>
index 9c63ca3267691dca7bbc5d156eeb00988ec0b07c..5f9c165e861c8718e4f2d3537d05300452ee216d 100644 (file)
@@ -302,8 +302,8 @@ foreach ( $columns as $column_name => $column_display_name ) {
                        <td <?php echo $attributes ?>><strong>
                                <?php if( current_user_can( 'edit_post', $post->post_parent ) ) { ?>
                                        <a href="<?php echo get_edit_post_link( $post->post_parent ); ?>">
                        <td <?php echo $attributes ?>><strong>
                                <?php if( current_user_can( 'edit_post', $post->post_parent ) ) { ?>
                                        <a href="<?php echo get_edit_post_link( $post->post_parent ); ?>">
-                                               <?php echo $title ?></a>
-                               <?php } else {
+                                               <?php echo $title ?></a><?php
+                               } else {
                                        echo $title;
                                } ?></strong>,
                                <?php echo get_the_time( __( 'Y/m/d' ) ); ?>
                                        echo $title;
                                } ?></strong>,
                                <?php echo get_the_time( __( 'Y/m/d' ) ); ?>
@@ -392,5 +392,3 @@ foreach ( $columns as $column_name => $column_display_name ) {
                return $actions;
        }
 }
                return $actions;
        }
 }
-
-?>
index 73ce88989a37a6d93935e677313eb9632a4fd0c2..3d72381c7d60024d3e2afa7d8460da25c96a4032 100644 (file)
@@ -251,7 +251,7 @@ class WP_MS_Sites_List_Table extends WP_List_Table {
                                                                        $actions['deactivate']  = '<span class="activate"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=deactivateblog&amp;id=' . $blog['blog_id'] . '&amp;msg=' . urlencode( sprintf( __( 'You are about to deactivate the site %s' ), $blogname ) ) ), 'confirm') ) . '">' . __( 'Deactivate' ) . '</a></span>';
 
                                                                if ( get_blog_status( $blog['blog_id'], 'archived' ) == '1' )
                                                                        $actions['deactivate']  = '<span class="activate"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=deactivateblog&amp;id=' . $blog['blog_id'] . '&amp;msg=' . urlencode( sprintf( __( 'You are about to deactivate the site %s' ), $blogname ) ) ), 'confirm') ) . '">' . __( 'Deactivate' ) . '</a></span>';
 
                                                                if ( get_blog_status( $blog['blog_id'], 'archived' ) == '1' )
-                                                                       $actions['unarchive']   = '<span class="archive"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=unarchiveblog&amp;id=' .  $blog['blog_id'] . '&amp;msg=' . urlencode( sprintf( __( 'You are about to unarchive the site %s.' ), $blogname ) ) ), 'confirm') ) . '">' . __( 'Unarchive' ) . '</a></span>';
+                                                                       $actions['unarchive']   = '<span class="archive"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=unarchiveblog&amp;id=' . $blog['blog_id'] . '&amp;msg=' . urlencode( sprintf( __( 'You are about to unarchive the site %s.' ), $blogname ) ) ), 'confirm') ) . '">' . __( 'Unarchive' ) . '</a></span>';
                                                                else
                                                                        $actions['archive']     = '<span class="archive"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=archiveblog&amp;id=' . $blog['blog_id'] . '&amp;msg=' . urlencode( sprintf( __( 'You are about to archive the site %s.' ), $blogname ) ) ), 'confirm') ) . '">' . _x( 'Archive', 'verb; site' ) . '</a></span>';
 
                                                                else
                                                                        $actions['archive']     = '<span class="archive"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=archiveblog&amp;id=' . $blog['blog_id'] . '&amp;msg=' . urlencode( sprintf( __( 'You are about to archive the site %s.' ), $blogname ) ) ), 'confirm') ) . '">' . _x( 'Archive', 'verb; site' ) . '</a></span>';
 
@@ -337,5 +337,3 @@ class WP_MS_Sites_List_Table extends WP_List_Table {
                }
        }
 }
                }
        }
 }
-
-?>
index cd9841da08a465cb2070a9dcc549c388026786cd..9fc3251d7098660fb86e23224ed2ef0e205e896e 100644 (file)
@@ -15,14 +15,9 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
        function __construct() {
                global $status, $page;
 
        function __construct() {
                global $status, $page;
 
-               $default_status = get_user_option( 'themes_last_view' );
-               if ( empty( $default_status ) )
-                       $default_status = 'all';
-               $status = isset( $_REQUEST['theme_status'] ) ? $_REQUEST['theme_status'] : $default_status;
-               if ( !in_array( $status, array( 'all', 'enabled', 'disabled', 'upgrade', 'search' ) ) )
+               $status = isset( $_REQUEST['theme_status'] ) ? $_REQUEST['theme_status'] : 'all';
+               if ( !in_array( $status, array( 'all', 'enabled', 'disabled', 'upgrade', 'search', 'broken' ) ) )
                        $status = 'all';
                        $status = 'all';
-               if ( $status != $default_status && 'search' != $status )
-                       update_user_meta( get_current_user_id(), 'themes_last_view', $status );
 
                $page = $this->get_pagenum();
 
 
                $page = $this->get_pagenum();
 
@@ -55,56 +50,47 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
        }
 
        function prepare_items() {
        }
 
        function prepare_items() {
-               global $status, $themes, $totals, $page, $orderby, $order, $s;
+               global $status, $totals, $page, $orderby, $order, $s;
 
                wp_reset_vars( array( 'orderby', 'order', 's' ) );
 
                $themes = array(
 
                wp_reset_vars( array( 'orderby', 'order', 's' ) );
 
                $themes = array(
-                       'all' => apply_filters( 'all_themes', get_themes() ),
+                       'all' => apply_filters( 'all_themes', wp_get_themes() ),
                        'search' => array(),
                        'enabled' => array(),
                        'disabled' => array(),
                        'search' => array(),
                        'enabled' => array(),
                        'disabled' => array(),
-                       'upgrade' => array()
+                       'upgrade' => array(),
+                       'broken' => $this->is_site_themes ? array() : wp_get_themes( array( 'errors' => true ) ),
                );
 
                );
 
-               $site_allowed_themes = get_site_allowed_themes();
-               if ( !$this->is_site_themes ) {
-                       $allowed_themes = $site_allowed_themes;
-                       $themes_per_page = $this->get_items_per_page( 'themes_network_per_page' );
-               } else {
-                       $allowed_themes = wpmu_get_blog_allowedthemes( $this->site_id );
+               if ( $this->is_site_themes ) {
                        $themes_per_page = $this->get_items_per_page( 'site_themes_network_per_page' );
                        $themes_per_page = $this->get_items_per_page( 'site_themes_network_per_page' );
+                       $allowed_where = 'site';
+               } else {
+                       $themes_per_page = $this->get_items_per_page( 'themes_network_per_page' );
+                       $allowed_where = 'network';
                }
 
                }
 
-               $current = get_site_transient( 'update_themes' );
+               $maybe_update = current_user_can( 'update_themes' ) && ! $this->is_site_themes && $current = get_site_transient( 'update_themes' );
 
                foreach ( (array) $themes['all'] as $key => $theme ) {
 
                foreach ( (array) $themes['all'] as $key => $theme ) {
-                       $theme_key = $theme['Stylesheet'];
-
-                       if ( isset( $allowed_themes [ $theme_key ] ) )  {
-                               $themes['all'][$key]['enabled'] = true;
-                               $themes['enabled'][$key] = $themes['all'][$key];
-                       }
-                       else {
-                               $themes['all'][$key]['enabled'] = false;
-                               $themes['disabled'][$key] = $themes['all'][$key];
+                       if ( $this->is_site_themes && $theme->is_allowed( 'network' ) ) {
+                               unset( $themes['all'][ $key ] );
+                               continue;
                        }
                        }
-                       if ( isset( $current->response[ $theme['Template'] ] ) )
-                               $themes['upgrade'][$key] = $themes['all'][$key];
 
 
-                       if ( $this->is_site_themes && isset( $site_allowed_themes[$theme_key] ) ) {
-                               unset( $themes['all'][$key] );
-                               unset( $themes['enabled'][$key] );
-                               unset( $themes['disabled'][$key] );
+                       if ( $maybe_update && isset( $current->response[ $key ] ) ) {
+                               $themes['all'][ $key ]->update = true;
+                               $themes['upgrade'][ $key ] = $themes['all'][ $key ];
                        }
                        }
-               }
 
 
-               if ( !current_user_can( 'update_themes' ) || $this->is_site_themes )
-                       $themes['upgrade'] = array();
+                       $filter = $theme->is_allowed( $allowed_where, $this->site_id ) ? 'enabled' : 'disabled';
+                       $themes[ $filter ][ $key ] = $themes['all'][ $key ];
+               }
 
                if ( $s ) {
                        $status = 'search';
 
                if ( $s ) {
                        $status = 'search';
-                       $themes['search'] = array_filter( $themes['all'], array( &$this, '_search_callback' ) );
+                       $themes['search'] = array_filter( array_merge( $themes['all'], $themes['broken'] ), array( &$this, '_search_callback' ) );
                }
 
                $totals = array();
                }
 
                $totals = array();
@@ -115,19 +101,27 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
                        $status = 'all';
 
                $this->items = $themes[ $status ];
                        $status = 'all';
 
                $this->items = $themes[ $status ];
+               WP_Theme::sort_by_name( $this->items );
+
+               $this->has_items = ! empty( $themes['all'] );
                $total_this_page = $totals[ $status ];
 
                if ( $orderby ) {
                        $orderby = ucfirst( $orderby );
                        $order = strtoupper( $order );
 
                $total_this_page = $totals[ $status ];
 
                if ( $orderby ) {
                        $orderby = ucfirst( $orderby );
                        $order = strtoupper( $order );
 
-                       uasort( $this->items, array( &$this, '_order_callback' ) );
+                       if ( $orderby == 'Name' ) {
+                               if ( 'ASC' == $order )
+                                       $this->items = array_reverse( $this->items );
+                       } else {
+                               uasort( $this->items, array( &$this, '_order_callback' ) );
+                       }
                }
 
                $start = ( $page - 1 ) * $themes_per_page;
 
                if ( $total_this_page > $themes_per_page )
                }
 
                $start = ( $page - 1 ) * $themes_per_page;
 
                if ( $total_this_page > $themes_per_page )
-                       $this->items = array_slice( $this->items, $start, $themes_per_page );
+                       $this->items = array_slice( $this->items, $start, $themes_per_page, true );
 
                $this->set_pagination_args( array(
                        'total_items' => $total_this_page,
 
                $this->set_pagination_args( array(
                        'total_items' => $total_this_page,
@@ -140,19 +134,27 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
                if ( is_null( $term ) )
                        $term = stripslashes( $_REQUEST['s'] );
 
                if ( is_null( $term ) )
                        $term = stripslashes( $_REQUEST['s'] );
 
-               $search_fields = array( 'Name', 'Title', 'Description', 'Author', 'Author Name', 'Author URI', 'Template', 'Stylesheet' );
-               foreach ( $search_fields as $field )
-                       if ( stripos( $theme[ $field ], $term ) !== false )
+               foreach ( array( 'Name', 'Description', 'Author', 'Author', 'AuthorURI' ) as $field ) {
+                       // Don't mark up; Do translate.
+                       if ( false !== stripos( $theme->display( $field, false, true ), $term ) )
                                return true;
                                return true;
+               }
+
+               if ( false !== stripos( $theme->get_stylesheet(), $term ) )
+                       return true;
+
+               if ( false !== stripos( $theme->get_template(), $term ) )
+                       return true;
 
                return false;
        }
 
 
                return false;
        }
 
+       // Not used by any core columns.
        function _order_callback( $theme_a, $theme_b ) {
                global $orderby, $order;
 
        function _order_callback( $theme_a, $theme_b ) {
                global $orderby, $order;
 
-               $a = $theme_a[$orderby];
-               $b = $theme_b[$orderby];
+               $a = $theme_a[ $orderby ];
+               $b = $theme_b[ $orderby ];
 
                if ( $a == $b )
                        return 0;
 
                if ( $a == $b )
                        return 0;
@@ -164,9 +166,7 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
        }
 
        function no_items() {
        }
 
        function no_items() {
-               global $themes;
-
-               if ( !empty( $themes['all'] ) )
+               if ( ! $this->has_items )
                        _e( 'No themes found.' );
                else
                        _e( 'You do not appear to have any themes available at this time.' );
                        _e( 'No themes found.' );
                else
                        _e( 'You do not appear to have any themes available at this time.' );
@@ -209,6 +209,9 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
                                case 'upgrade':
                                        $text = _n( 'Update Available <span class="count">(%s)</span>', 'Update Available <span class="count">(%s)</span>', $count );
                                        break;
                                case 'upgrade':
                                        $text = _n( 'Update Available <span class="count">(%s)</span>', 'Update Available <span class="count">(%s)</span>', $count );
                                        break;
+                               case 'broken' :
+                                       $text = _n( 'Broken <span class="count">(%s)</span>', 'Broken <span class="count">(%s)</span>', $count );
+                                       break;
                        }
 
                        if ( $this->is_site_themes )
                        }
 
                        if ( $this->is_site_themes )
@@ -260,14 +263,17 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
        }
 
        function single_row( $key, $theme ) {
        }
 
        function single_row( $key, $theme ) {
-               global $status, $page, $s;
+               global $status, $page, $s, $totals;
 
                $context = $status;
 
 
                $context = $status;
 
-               if ( $this->is_site_themes )
+               if ( $this->is_site_themes ) {
                        $url = "site-themes.php?id={$this->site_id}&amp;";
                        $url = "site-themes.php?id={$this->site_id}&amp;";
-               else
+                       $allowed = $theme->is_allowed( 'site', $this->site_id );
+               } else {
                        $url = 'themes.php?';
                        $url = 'themes.php?';
+                       $allowed = $theme->is_allowed( 'network' );
+               }
 
                // preorder
                $actions = array(
 
                // preorder
                $actions = array(
@@ -277,30 +283,32 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
                        'delete' => ''
                );
 
                        'delete' => ''
                );
 
-               $theme_key = $theme['Stylesheet'];
+               $theme_key = $theme->get_stylesheet();
 
 
-               if ( empty( $theme['enabled'] ) )
-                       $actions['enable'] = '<a href="' . esc_url( wp_nonce_url($url . 'action=enable&amp;theme=' . $theme_key . '&amp;paged=' . $page . '&amp;s=' . $s, 'enable-theme_' . $theme_key) ) . '" title="' . esc_attr__('Enable this theme') . '" class="edit">' . ( $this->is_site_themes ? __( 'Enable' ) : __( 'Network Enable' ) ) . '</a>';
-               else
+               if ( ! $allowed ) {
+                       if ( ! $theme->errors() )
+                               $actions['enable'] = '<a href="' . esc_url( wp_nonce_url($url . 'action=enable&amp;theme=' . $theme_key . '&amp;paged=' . $page . '&amp;s=' . $s, 'enable-theme_' . $theme_key) ) . '" title="' . esc_attr__('Enable this theme') . '" class="edit">' . ( $this->is_site_themes ? __( 'Enable' ) : __( 'Network Enable' ) ) . '</a>';
+               } else {
                        $actions['disable'] = '<a href="' . esc_url( wp_nonce_url($url . 'action=disable&amp;theme=' . $theme_key . '&amp;paged=' . $page . '&amp;s=' . $s, 'disable-theme_' . $theme_key) ) . '" title="' . esc_attr__('Disable this theme') . '">' . ( $this->is_site_themes ? __( 'Disable' ) : __( 'Network Disable' ) ) . '</a>';
                        $actions['disable'] = '<a href="' . esc_url( wp_nonce_url($url . 'action=disable&amp;theme=' . $theme_key . '&amp;paged=' . $page . '&amp;s=' . $s, 'disable-theme_' . $theme_key) ) . '" title="' . esc_attr__('Disable this theme') . '">' . ( $this->is_site_themes ? __( 'Disable' ) : __( 'Network Disable' ) ) . '</a>';
+               }
 
                if ( current_user_can('edit_themes') )
 
                if ( current_user_can('edit_themes') )
-                       $actions['edit'] = '<a href="' . esc_url('theme-editor.php?theme=' . urlencode( $theme['Name'] )) . '" title="' . esc_attr__('Open this theme in the Theme Editor') . '" class="edit">' . __('Edit') . '</a>';
+                       $actions['edit'] = '<a href="' . esc_url('theme-editor.php?theme=' .  $theme_key ) . '" title="' . esc_attr__('Open this theme in the Theme Editor') . '" class="edit">' . __('Edit') . '</a>';
 
 
-               if ( empty( $theme['enabled'] ) && current_user_can( 'delete_themes' ) && ! $this->is_site_themes && $theme_key != get_option( 'stylesheet' ) && $theme_key != get_option( 'template' ) )
+               if ( ! $allowed && current_user_can( 'delete_themes' ) && ! $this->is_site_themes && $theme_key != get_option( 'stylesheet' ) && $theme_key != get_option( 'template' ) )
                        $actions['delete'] = '<a href="' . esc_url( wp_nonce_url( 'themes.php?action=delete-selected&amp;checked[]=' . $theme_key . '&amp;theme_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'bulk-themes' ) ) . '" title="' . esc_attr__( 'Delete this theme' ) . '" class="delete">' . __( 'Delete' ) . '</a>';
 
                $actions = apply_filters( 'theme_action_links', array_filter( $actions ), $theme_key, $theme, $context );
                $actions = apply_filters( "theme_action_links_$theme_key", $actions, $theme_key, $theme, $context );
 
                        $actions['delete'] = '<a href="' . esc_url( wp_nonce_url( 'themes.php?action=delete-selected&amp;checked[]=' . $theme_key . '&amp;theme_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'bulk-themes' ) ) . '" title="' . esc_attr__( 'Delete this theme' ) . '" class="delete">' . __( 'Delete' ) . '</a>';
 
                $actions = apply_filters( 'theme_action_links', array_filter( $actions ), $theme_key, $theme, $context );
                $actions = apply_filters( "theme_action_links_$theme_key", $actions, $theme_key, $theme, $context );
 
-               $class = empty( $theme['enabled'] ) ? 'inactive' : 'active';
-               $checkbox_id = "checkbox_" . md5($theme['Name']);
-               $checkbox = "<input type='checkbox' name='checked[]' value='" . esc_attr( $theme_key ) . "' id='" . $checkbox_id . "' /><label class='screen-reader-text' for='" . $checkbox_id . "' >" . __('Select') . " " . $theme['Name'] . "</label>";
+               $class = ! $allowed ? 'inactive' : 'active';
+               $checkbox_id = "checkbox_" . md5( $theme->get('Name') );
+               $checkbox = "<input type='checkbox' name='checked[]' value='" . esc_attr( $theme_key ) . "' id='" . $checkbox_id . "' /><label class='screen-reader-text' for='" . $checkbox_id . "' >" . __('Select') . " " . $theme->display('Name') . "</label>";
 
 
-               $description = '<p>' . $theme['Description'] . '</p>';
-               $theme_name = $theme['Name'];
+               $id = sanitize_html_class( $theme->get_stylesheet() );
 
 
-               $id = sanitize_title( $theme_name );
+               if ( ! empty( $totals['upgrade'] ) && ! empty( $theme->update ) )
+                       $class .= ' update';
 
                echo "<tr id='$id' class='$class'>";
 
 
                echo "<tr id='$id' class='$class'>";
 
@@ -316,25 +324,28 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
                                        echo "<th scope='row' class='check-column'>$checkbox</th>";
                                        break;
                                case 'name':
                                        echo "<th scope='row' class='check-column'>$checkbox</th>";
                                        break;
                                case 'name':
-                                       echo "<td class='theme-title'$style><strong>$theme_name</strong>";
+                                       echo "<td class='theme-title'$style><strong>" . $theme->display('Name') . "</strong>";
                                        echo $this->row_actions( $actions, true );
                                        echo "</td>";
                                        break;
                                case 'description':
                                        echo $this->row_actions( $actions, true );
                                        echo "</td>";
                                        break;
                                case 'description':
-                                       echo "<td class='column-description desc'$style>
-                                               <div class='theme-description'>$description</div>
+                                       echo "<td class='column-description desc'$style>";
+                                       if ( $theme->errors() ) {
+                                               $pre = $status == 'broken' ? '' : __( 'Broken Theme:' ) . ' ';
+                                               echo '<p><strong class="attention">' . $pre . $theme->errors()->get_error_message() . '</strong></p>';
+                                       }
+                                       echo "<div class='theme-description'><p>" . $theme->display( 'Description' ) . "</p></div>
                                                <div class='$class second theme-version-author-uri'>";
 
                                        $theme_meta = array();
 
                                                <div class='$class second theme-version-author-uri'>";
 
                                        $theme_meta = array();
 
-                                       if ( !empty( $theme['Version'] ) )
-                                               $theme_meta[] = sprintf( __( 'Version %s' ), $theme['Version'] );
+                                       if ( $theme->get('Version') )
+                                               $theme_meta[] = sprintf( __( 'Version %s' ), $theme->display('Version') );
 
 
-                                       if ( !empty( $theme['Author'] ) )
-                                               $theme_meta[] = sprintf( __( 'By %s' ), $theme['Author'] );
+                                       $theme_meta[] = sprintf( __( 'By %s' ), $theme->display('Author') );
 
 
-                                       if ( !empty( $theme['Theme URI'] ) )
-                                               $theme_meta[] = '<a href="' . $theme['Theme URI'] . '" title="' . esc_attr__( 'Visit theme homepage' ) . '">' . __( 'Visit Theme Site' ) . '</a>';
+                                       if ( $theme->get('ThemeURI') )
+                                               $theme_meta[] = '<a href="' . $theme->display('ThemeURI') . '" title="' . esc_attr__( 'Visit theme homepage' ) . '">' . __( 'Visit Theme Site' ) . '</a>';
 
                                        $theme_meta = apply_filters( 'theme_row_meta', $theme_meta, $theme_key, $theme, $status );
                                        echo implode( ' | ', $theme_meta );
 
                                        $theme_meta = apply_filters( 'theme_row_meta', $theme_meta, $theme_key, $theme, $status );
                                        echo implode( ' | ', $theme_meta );
@@ -357,5 +368,3 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
                do_action( "after_theme_row_$theme_key", $theme_key, $theme, $status );
        }
 }
                do_action( "after_theme_row_$theme_key", $theme_key, $theme, $status );
        }
 }
-
-?>
index 4ebec5e74b0f3619ce0b2c66b32987750873cb45..67564fd65000e65dd76aeeb19273743af0131975 100644 (file)
@@ -162,7 +162,6 @@ class WP_MS_Users_List_Table extends WP_List_Table {
 
                                $attributes = "$class$style";
 
 
                                $attributes = "$class$style";
 
-
                                switch ( $column_name ) {
                                        case 'cb': ?>
                                                <th scope="row" class="check-column">
                                switch ( $column_name ) {
                                        case 'cb': ?>
                                                <th scope="row" class="check-column">
@@ -242,7 +241,7 @@ class WP_MS_Users_List_Table extends WP_List_Table {
                                                                        if ( get_blog_status( $val->userblog_id, 'archived' ) == 1 )
                                                                                $class .= 'site-archived ';
 
                                                                        if ( get_blog_status( $val->userblog_id, 'archived' ) == 1 )
                                                                                $class .= 'site-archived ';
 
-                                                                       $actions['view'] = '<a class="' . $class . '" href="' .  esc_url( get_home_url( $val->userblog_id ) )  . '">' . __( 'View' ) . '</a>';
+                                                                       $actions['view'] = '<a class="' . $class . '" href="' . esc_url( get_home_url( $val->userblog_id ) ) . '">' . __( 'View' ) . '</a>';
 
                                                                        $actions = apply_filters('ms_user_list_site_actions', $actions, $val->userblog_id);
 
 
                                                                        $actions = apply_filters('ms_user_list_site_actions', $actions, $val->userblog_id);
 
@@ -274,5 +273,3 @@ class WP_MS_Users_List_Table extends WP_List_Table {
                }
        }
 }
                }
        }
 }
-
-?>
index 71337eb996a5546a968b24696497db596f841634..3de77c1d802d937c53875adb3bcba32d53458e1d 100644 (file)
@@ -33,7 +33,6 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
                $tabs['featured'] = _x( 'Featured','Plugin Installer' );
                $tabs['popular']  = _x( 'Popular','Plugin Installer' );
                $tabs['new']      = _x( 'Newest','Plugin Installer' );
                $tabs['featured'] = _x( 'Featured','Plugin Installer' );
                $tabs['popular']  = _x( 'Popular','Plugin Installer' );
                $tabs['new']      = _x( 'Newest','Plugin Installer' );
-               $tabs['updated']  = _x( 'Recently Updated','Plugin Installer' );
 
                $nonmenu_tabs = array( 'plugin-information' ); //Valid actions to perform which do not have a Menu item.
 
 
                $nonmenu_tabs = array( 'plugin-information' ); //Valid actions to perform which do not have a Menu item.
 
@@ -48,7 +47,7 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
 
                switch ( $tab ) {
                        case 'search':
 
                switch ( $tab ) {
                        case 'search':
-                               $type = isset( $_REQUEST['type'] ) ? stripslashes( $_REQUEST['type'] ) : '';
+                               $type = isset( $_REQUEST['type'] ) ? stripslashes( $_REQUEST['type'] ) : 'term';
                                $term = isset( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : '';
 
                                switch ( $type ) {
                                $term = isset( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : '';
 
                                switch ( $type ) {
@@ -63,13 +62,12 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
                                                break;
                                }
 
                                                break;
                                }
 
-                               add_action( 'install_plugins_table_header', 'install_search_form' );
+                               add_action( 'install_plugins_table_header', 'install_search_form', 10, 0 );
                                break;
 
                        case 'featured':
                        case 'popular':
                        case 'new':
                                break;
 
                        case 'featured':
                        case 'popular':
                        case 'new':
-                       case 'updated':
                                $args['browse'] = $tab;
                                break;
 
                                $args['browse'] = $tab;
                                break;
 
@@ -205,7 +203,7 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
                                                break;
                                        case 'latest_installed':
                                        case 'newer_installed':
                                                break;
                                        case 'latest_installed':
                                        case 'newer_installed':
-                                               $action_links[] = '<span title="' . esc_attr__( 'This plugin is already installed and is up to date' ) . ' ">' . __( 'Installed' ) . '</span>';
+                                               $action_links[] = '<span title="' . esc_attr__( 'This plugin is already installed and is up to date' ) . ' ">' . _x( 'Installed', 'plugin' ) . '</span>';
                                                break;
                                }
                        }
                                                break;
                                }
                        }
@@ -219,19 +217,7 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
                        <td class="vers column-version"<?php echo $style['version']; ?>><?php echo $version; ?></td>
                        <td class="vers column-rating"<?php echo $style['rating']; ?>>
                                <div class="star-holder" title="<?php printf( _n( '(based on %s rating)', '(based on %s ratings)', $plugin['num_ratings'] ), number_format_i18n( $plugin['num_ratings'] ) ) ?>">
                        <td class="vers column-version"<?php echo $style['version']; ?>><?php echo $version; ?></td>
                        <td class="vers column-rating"<?php echo $style['rating']; ?>>
                                <div class="star-holder" title="<?php printf( _n( '(based on %s rating)', '(based on %s ratings)', $plugin['num_ratings'] ), number_format_i18n( $plugin['num_ratings'] ) ) ?>">
-                                       <div class="star star-rating" style="width: <?php echo esc_attr( $plugin['rating'] ) ?>px"></div>
-                                       <?php
-                                               $color = get_user_option('admin_color');
-                                               if ( empty($color) || 'fresh' == $color )
-                                                       $star_url = admin_url( 'images/gray-star.png?v=20110615' ); // 'Fresh' Gray star for list tables
-                                               else
-                                                       $star_url = admin_url( 'images/star.png?v=20110615' ); // 'Classic' Blue star
-                                       ?>
-                                       <div class="star star5"><img src="<?php echo $star_url; ?>" alt="<?php esc_attr_e( '5 stars' ) ?>" /></div>
-                                       <div class="star star4"><img src="<?php echo $star_url; ?>" alt="<?php esc_attr_e( '4 stars' ) ?>" /></div>
-                                       <div class="star star3"><img src="<?php echo $star_url; ?>" alt="<?php esc_attr_e( '3 stars' ) ?>" /></div>
-                                       <div class="star star2"><img src="<?php echo $star_url; ?>" alt="<?php esc_attr_e( '2 stars' ) ?>" /></div>
-                                       <div class="star star1"><img src="<?php echo $star_url; ?>" alt="<?php esc_attr_e( '1 star' ) ?>" /></div>
+                                       <div class="star star-rating" style="width: <?php echo esc_attr( str_replace( ',', '.', $plugin['rating'] ) ); ?>px"></div>
                                </div>
                        </td>
                        <td class="desc column-description"<?php echo $style['description']; ?>><?php echo $description, $author; ?></td>
                                </div>
                        </td>
                        <td class="desc column-description"<?php echo $style['description']; ?>><?php echo $description, $author; ?></td>
@@ -240,5 +226,3 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
                }
        }
 }
                }
        }
 }
-
-?>
index 577750c98e2f05207ddb280d90a08ff474592bd0..a1ce53abb5102d6b986fc7f1e2eb3b010c6dfe31 100644 (file)
@@ -13,7 +13,7 @@ class WP_Plugins_List_Table extends WP_List_Table {
                global $status, $page;
 
                $status = 'all';
                global $status, $page;
 
                $status = 'all';
-               if ( isset( $_REQUEST['plugin_status'] ) && in_array( $_REQUEST['plugin_status'], array( 'active', 'inactive', 'recently_activated', 'upgrade', 'network', 'mustuse', 'dropins', 'search' ) ) )
+               if ( isset( $_REQUEST['plugin_status'] ) && in_array( $_REQUEST['plugin_status'], array( 'active', 'inactive', 'recently_activated', 'upgrade', 'mustuse', 'dropins', 'search' ) ) )
                        $status = $_REQUEST['plugin_status'];
 
                if ( isset($_REQUEST['s']) )
                        $status = $_REQUEST['plugin_status'];
 
                if ( isset($_REQUEST['s']) )
@@ -65,32 +65,34 @@ class WP_Plugins_List_Table extends WP_List_Table {
                        if ( apply_filters( 'show_advanced_plugins', true, 'dropins' ) )
                                $plugins['dropins'] = get_dropins();
 
                        if ( apply_filters( 'show_advanced_plugins', true, 'dropins' ) )
                                $plugins['dropins'] = get_dropins();
 
-                       $current = get_site_transient( 'update_plugins' );
-                       foreach ( (array) $plugins['all'] as $plugin_file => $plugin_data ) {
-                               if ( isset( $current->response[ $plugin_file ] ) )
-                                       $plugins['upgrade'][ $plugin_file ] = $plugin_data;
+                       if ( current_user_can( 'update_plugins' ) ) {
+                               $current = get_site_transient( 'update_plugins' );
+                               foreach ( (array) $plugins['all'] as $plugin_file => $plugin_data ) {
+                                       if ( isset( $current->response[ $plugin_file ] ) ) {
+                                               $plugins['all'][ $plugin_file ]['update'] = true;
+                                               $plugins['upgrade'][ $plugin_file ] = $plugins['all'][ $plugin_file ];
+                                       }
+                               }
                        }
                }
 
                set_transient( 'plugin_slugs', array_keys( $plugins['all'] ), 86400 );
 
                        }
                }
 
                set_transient( 'plugin_slugs', array_keys( $plugins['all'] ), 86400 );
 
-               $recently_activated = get_option( 'recently_activated', array() );
+               if ( ! $screen->is_network ) {
+                       $recently_activated = get_option( 'recently_activated', array() );
 
 
-               $one_week = 7*24*60*60;
-               foreach ( $recently_activated as $key => $time )
-                       if ( $time + $one_week < time() )
-                               unset( $recently_activated[$key] );
-               update_option( 'recently_activated', $recently_activated );
+                       $one_week = 7*24*60*60;
+                       foreach ( $recently_activated as $key => $time )
+                               if ( $time + $one_week < time() )
+                                       unset( $recently_activated[$key] );
+                       update_option( 'recently_activated', $recently_activated );
+               }
 
                foreach ( (array) $plugins['all'] as $plugin_file => $plugin_data ) {
                        // Filter into individual sections
 
                foreach ( (array) $plugins['all'] as $plugin_file => $plugin_data ) {
                        // Filter into individual sections
-                       if ( is_multisite() && is_network_only_plugin( $plugin_file ) && !$screen->is_network ) {
-                               unset( $plugins['all'][ $plugin_file] );
-                       } elseif ( is_plugin_active_for_network($plugin_file) && !$screen->is_network ) {
+                       if ( ! $screen->is_network && is_plugin_active_for_network( $plugin_file ) ) {
                                unset( $plugins['all'][ $plugin_file ] );
                                unset( $plugins['all'][ $plugin_file ] );
-                       } elseif ( is_multisite() && is_network_only_plugin( $plugin_file ) && !current_user_can( 'manage_network_plugins' ) ) {
-                               $plugins['network'][ $plugin_file ] = $plugin_data;
-                       } elseif ( ( !$screen->is_network && is_plugin_active( $plugin_file ) )
+                       } elseif ( ( ! $screen->is_network && is_plugin_active( $plugin_file ) )
                                || ( $screen->is_network && is_plugin_active_for_network( $plugin_file ) ) ) {
                                $plugins['active'][ $plugin_file ] = $plugin_data;
                        } else {
                                || ( $screen->is_network && is_plugin_active_for_network( $plugin_file ) ) ) {
                                $plugins['active'][ $plugin_file ] = $plugin_data;
                        } else {
@@ -100,9 +102,6 @@ class WP_Plugins_List_Table extends WP_List_Table {
                        }
                }
 
                        }
                }
 
-               if ( !current_user_can( 'update_plugins' ) )
-                       $plugins['upgrade'] = array();
-
                if ( $s ) {
                        $status = 'search';
                        $plugins['search'] = array_filter( $plugins['all'], array( &$this, '_search_callback' ) );
                if ( $s ) {
                        $status = 'search';
                        $plugins['search'] = array_filter( $plugins['all'], array( &$this, '_search_callback' ) );
@@ -214,9 +213,6 @@ class WP_Plugins_List_Table extends WP_List_Table {
                                case 'inactive':
                                        $text = _n( 'Inactive <span class="count">(%s)</span>', 'Inactive <span class="count">(%s)</span>', $count );
                                        break;
                                case 'inactive':
                                        $text = _n( 'Inactive <span class="count">(%s)</span>', 'Inactive <span class="count">(%s)</span>', $count );
                                        break;
-                               case 'network':
-                                       $text = _n( 'Network <span class="count">(%s)</span>', 'Network <span class="count">(%s)</span>', $count );
-                                       break;
                                case 'mustuse':
                                        $text = _n( 'Must-Use <span class="count">(%s)</span>', 'Must-Use <span class="count">(%s)</span>', $count );
                                        break;
                                case 'mustuse':
                                        $text = _n( 'Must-Use <span class="count">(%s)</span>', 'Must-Use <span class="count">(%s)</span>', $count );
                                        break;
@@ -247,13 +243,11 @@ class WP_Plugins_List_Table extends WP_List_Table {
 
                $screen = get_current_screen();
 
 
                $screen = get_current_screen();
 
-               if ( 'active' != $status ) {
-                       $action = $screen->is_network ? 'network-activate-selected' : 'activate-selected';
-                       $actions[ $action ] = __( 'Activate' );
-               }
+               if ( 'active' != $status )
+                       $actions['activate-selected'] = $screen->is_network ? __( 'Network Activate' ) : __( 'Activate' );
 
                if ( 'inactive' != $status && 'recent' != $status )
 
                if ( 'inactive' != $status && 'recent' != $status )
-                       $actions['deactivate-selected'] = __( 'Deactivate' );
+                       $actions['deactivate-selected'] = $screen->is_network ? __( 'Network Deactivate' ) : __( 'Deactivate' );
 
                if ( !is_multisite() || $screen->is_network ) {
                        if ( current_user_can( 'update_plugins' ) )
 
                if ( !is_multisite() || $screen->is_network ) {
                        if ( current_user_can( 'update_plugins' ) )
@@ -282,7 +276,9 @@ class WP_Plugins_List_Table extends WP_List_Table {
 
                echo '<div class="alignleft actions">';
 
 
                echo '<div class="alignleft actions">';
 
-               if ( 'recently_activated' == $status )
+               $screen = get_current_screen();
+
+               if ( ! $screen->is_network && 'recently_activated' == $status )
                        submit_button( __( 'Clear List' ), 'secondary', 'clear-recent-list', false );
                elseif ( 'top' == $which && 'mustuse' == $status )
                        echo '<p>' . sprintf( __( 'Files in the <code>%s</code> directory are executed automatically.' ), str_replace( ABSPATH, '/', WPMU_PLUGIN_DIR ) ) . '</p>';
                        submit_button( __( 'Clear List' ), 'secondary', 'clear-recent-list', false );
                elseif ( 'top' == $which && 'mustuse' == $status )
                        echo '<p>' . sprintf( __( 'Files in the <code>%s</code> directory are executed automatically.' ), str_replace( ABSPATH, '/', WPMU_PLUGIN_DIR ) ) . '</p>';
@@ -312,7 +308,7 @@ class WP_Plugins_List_Table extends WP_List_Table {
        }
 
        function single_row( $plugin_file, $plugin_data ) {
        }
 
        function single_row( $plugin_file, $plugin_data ) {
-               global $status, $page, $s;
+               global $status, $page, $s, $totals;
 
                $context = $status;
 
 
                $context = $status;
 
@@ -320,9 +316,8 @@ class WP_Plugins_List_Table extends WP_List_Table {
 
                // preorder
                $actions = array(
 
                // preorder
                $actions = array(
-                       'network_deactivate' => '', 'deactivate' => '',
-                       'network_only' => '', 'activate' => '',
-                       'network_activate' => '',
+                       'deactivate' => '',
+                       'activate' => '',
                        'edit' => '',
                        'delete' => '',
                );
                        'edit' => '',
                        'delete' => '',
                );
@@ -347,22 +342,18 @@ class WP_Plugins_List_Table extends WP_List_Table {
                        if ( $plugin_data['Description'] )
                                $description .= '<p>' . $plugin_data['Description'] . '</p>';
                } else {
                        if ( $plugin_data['Description'] )
                                $description .= '<p>' . $plugin_data['Description'] . '</p>';
                } else {
-                       $is_active_for_network = is_plugin_active_for_network($plugin_file);
                        if ( $screen->is_network )
                        if ( $screen->is_network )
-                               $is_active = $is_active_for_network;
+                               $is_active = is_plugin_active_for_network( $plugin_file );
                        else
                                $is_active = is_plugin_active( $plugin_file );
 
                        else
                                $is_active = is_plugin_active( $plugin_file );
 
-                       if ( $is_active_for_network && !is_super_admin() && !$screen->is_network )
-                               return;
-
                        if ( $screen->is_network ) {
                        if ( $screen->is_network ) {
-                               if ( $is_active_for_network ) {
+                               if ( $is_active ) {
                                        if ( current_user_can( 'manage_network_plugins' ) )
                                        if ( current_user_can( 'manage_network_plugins' ) )
-                                               $actions['network_deactivate'] = '<a href="' . wp_nonce_url('plugins.php?action=deactivate&amp;networkwide=1&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'deactivate-plugin_' . $plugin_file) . '" title="' . esc_attr__('Deactivate this plugin') . '">' . __('Network Deactivate') . '</a>';
+                                               $actions['deactivate'] = '<a href="' . wp_nonce_url('plugins.php?action=deactivate&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'deactivate-plugin_' . $plugin_file) . '" title="' . esc_attr__('Deactivate this plugin') . '">' . __('Network Deactivate') . '</a>';
                                } else {
                                        if ( current_user_can( 'manage_network_plugins' ) )
                                } else {
                                        if ( current_user_can( 'manage_network_plugins' ) )
-                                               $actions['network_activate'] = '<a href="' . wp_nonce_url('plugins.php?action=activate&amp;networkwide=1&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'activate-plugin_' . $plugin_file) . '" title="' . esc_attr__('Activate this plugin for all sites in this network') . '" class="edit">' . __('Network Activate') . '</a>';
+                                               $actions['activate'] = '<a href="' . wp_nonce_url('plugins.php?action=activate&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'activate-plugin_' . $plugin_file) . '" title="' . esc_attr__('Activate this plugin for all sites in this network') . '" class="edit">' . __('Network Activate') . '</a>';
                                        if ( current_user_can( 'delete_plugins' ) && ! is_plugin_active( $plugin_file ) )
                                                $actions['delete'] = '<a href="' . wp_nonce_url('plugins.php?action=delete-selected&amp;checked[]=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'bulk-plugins') . '" title="' . esc_attr__('Delete this plugin') . '" class="delete">' . __('Delete') . '</a>';
                                }
                                        if ( current_user_can( 'delete_plugins' ) && ! is_plugin_active( $plugin_file ) )
                                                $actions['delete'] = '<a href="' . wp_nonce_url('plugins.php?action=delete-selected&amp;checked[]=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'bulk-plugins') . '" title="' . esc_attr__('Delete this plugin') . '" class="delete">' . __('Delete') . '</a>';
                                }
@@ -394,6 +385,8 @@ class WP_Plugins_List_Table extends WP_List_Table {
                }
 
                $id = sanitize_title( $plugin_name );
                }
 
                $id = sanitize_title( $plugin_name );
+               if ( ! empty( $totals['upgrade'] ) && ! empty( $plugin_data['update'] ) )
+                       $class .= ' update';
 
                echo "<tr id='$id' class='$class'>";
 
 
                echo "<tr id='$id' class='$class'>";
 
@@ -448,5 +441,3 @@ class WP_Plugins_List_Table extends WP_List_Table {
                do_action( "after_plugin_row_$plugin_file", $plugin_file, $plugin_data, $status );
        }
 }
                do_action( "after_plugin_row_$plugin_file", $plugin_file, $plugin_data, $status );
        }
 }
-
-?>
index 290939c23f76b723b850218ffc7e3f44e17dd322..613cff8236016fcd1c00c579356a3962e271e3dc 100644 (file)
@@ -360,7 +360,7 @@ class WP_Posts_List_Table extends WP_List_Table {
                                if ( $page->post_parent == $page->ID ) {
                                        $page->post_parent = 0;
                                        $wpdb->update( $wpdb->posts, array( 'post_parent' => 0 ), array( 'ID' => $page->ID ) );
                                if ( $page->post_parent == $page->ID ) {
                                        $page->post_parent = 0;
                                        $wpdb->update( $wpdb->posts, array( 'post_parent' => 0 ), array( 'ID' => $page->ID ) );
-                                       clean_page_cache( $page->ID );
+                                       clean_post_cache( $page );
                                }
 
                                if ( 0 == $page->post_parent )
                                }
 
                                if ( 0 == $page->post_parent )
@@ -527,9 +527,8 @@ class WP_Posts_List_Table extends WP_List_Table {
 ?>
                        <td <?php echo $attributes ?>><strong><?php if ( $can_edit_post && $post->post_status != 'trash' ) { ?><a class="row-title" href="<?php echo $edit_link; ?>" title="<?php echo esc_attr( sprintf( __( 'Edit &#8220;%s&#8221;' ), $title ) ); ?>"><?php echo $title ?></a><?php } else { echo $title; }; _post_states( $post ); ?></strong>
 <?php
 ?>
                        <td <?php echo $attributes ?>><strong><?php if ( $can_edit_post && $post->post_status != 'trash' ) { ?><a class="row-title" href="<?php echo $edit_link; ?>" title="<?php echo esc_attr( sprintf( __( 'Edit &#8220;%s&#8221;' ), $title ) ); ?>"><?php echo $title ?></a><?php } else { echo $title; }; _post_states( $post ); ?></strong>
 <?php
-                                       if ( 'excerpt' == $mode ) {
+                                       if ( 'excerpt' == $mode && current_user_can( 'read_post', $post->ID ) )
                                                the_excerpt();
                                                the_excerpt();
-                                       }
                                }
 
                                $actions = array();
                                }
 
                                $actions = array();
@@ -609,7 +608,8 @@ class WP_Posts_List_Table extends WP_List_Table {
                                                        esc_html( sanitize_term_field( 'name', $c->name, $c->term_id, 'category', 'display' ) )
                                                );
                                        }
                                                        esc_html( sanitize_term_field( 'name', $c->name, $c->term_id, 'category', 'display' ) )
                                                );
                                        }
-                                       echo join( ', ', $out );
+                                       /* translators: used between list items, there is a space after the comma */
+                                       echo join( __( ', ' ), $out );
                                } else {
                                        _e( 'Uncategorized' );
                                }
                                } else {
                                        _e( 'Uncategorized' );
                                }
@@ -629,7 +629,8 @@ class WP_Posts_List_Table extends WP_List_Table {
                                                        esc_html( sanitize_term_field( 'name', $c->name, $c->term_id, 'tag', 'display' ) )
                                                );
                                        }
                                                        esc_html( sanitize_term_field( 'name', $c->name, $c->term_id, 'tag', 'display' ) )
                                                );
                                        }
-                                       echo join( ', ', $out );
+                                       /* translators: used between list items, there is a space after the comma */
+                                       echo join( __( ', ' ), $out );
                                } else {
                                        _e( 'No Tags' );
                                }
                                } else {
                                        _e( 'No Tags' );
                                }
@@ -995,20 +996,23 @@ class WP_Posts_List_Table extends WP_List_Table {
        <?php if ( post_type_supports( $screen->post_type, 'post-formats' ) && current_theme_supports( 'post-formats' ) ) :
                $post_formats = get_theme_support( 'post-formats' );
                if ( isset( $post_formats[0] ) && is_array( $post_formats[0] ) ) :
        <?php if ( post_type_supports( $screen->post_type, 'post-formats' ) && current_theme_supports( 'post-formats' ) ) :
                $post_formats = get_theme_support( 'post-formats' );
                if ( isset( $post_formats[0] ) && is_array( $post_formats[0] ) ) :
-                       $all_post_formats = get_post_format_strings(); ?>
+                       $all_post_formats = get_post_format_strings();
+                       unset( $all_post_formats['standard'] ); ?>
                        <div class="inline-edit-group">
                                <label class="alignleft" for="post_format">
                        <div class="inline-edit-group">
                                <label class="alignleft" for="post_format">
-                               <span class="title"><?php _e( 'Post Format' ); ?></span>
+                               <span class="title"><?php _ex( 'Format', 'post format' ); ?></span>
                                <select name="post_format">
                                <?php if ( $bulk ) : ?>
                                        <option value="-1"><?php _e( '&mdash; No Change &mdash;' ); ?></option>
                                <?php endif; ?>
                                        <option value="0"><?php _ex( 'Standard', 'Post format' ); ?></option>
                                <select name="post_format">
                                <?php if ( $bulk ) : ?>
                                        <option value="-1"><?php _e( '&mdash; No Change &mdash;' ); ?></option>
                                <?php endif; ?>
                                        <option value="0"><?php _ex( 'Standard', 'Post format' ); ?></option>
-                               <?php foreach ( $all_post_formats as $slug => $format ):
-                                       if ( $slug != 'standard' ) : ?>
-                                       <option value="<?php echo esc_attr( $slug ); ?>"<?php if ( ! in_array( $slug, $post_formats[0] ) ) echo ' class="unsupported"'; ?>><?php echo esc_html( $format ); ?></option>
-                                       <?php endif;
-                               endforeach; ?>
+                               <?php foreach ( $all_post_formats as $slug => $format ) :
+                                       $unsupported = ! in_array( $slug, $post_formats[0] );
+                                       if ( $bulk && $unsupported )
+                                               continue;
+                                       ?>
+                                       <option value="<?php echo esc_attr( $slug ); ?>"<?php if ( $unsupported ) echo ' class="unsupported"'; ?>><?php echo esc_html( $format ); ?></option>
+                               <?php endforeach; ?>
                                </select></label>
                        </div>
                <?php endif; ?>
                                </select></label>
                        </div>
                <?php endif; ?>
@@ -1050,5 +1054,3 @@ class WP_Posts_List_Table extends WP_List_Table {
 <?php
        }
 }
 <?php
        }
 }
-
-?>
index d7cb5261fe303ed981bc9a7061d9a644e16b8321..b398a55c014a95f051ec514aa09a48c9107fd009 100644 (file)
@@ -42,7 +42,7 @@ class WP_Terms_List_Table extends WP_List_Table {
        function prepare_items() {
                global $taxonomy;
 
        function prepare_items() {
                global $taxonomy;
 
-               $tags_per_page = $this->get_items_per_page( 'edit_' .  $taxonomy . '_per_page' );
+               $tags_per_page = $this->get_items_per_page( 'edit_' . $taxonomy . '_per_page' );
 
                if ( 'post_tag' == $taxonomy ) {
                        $tags_per_page = apply_filters( 'edit_tags_per_page', $tags_per_page );
 
                if ( 'post_tag' == $taxonomy ) {
                        $tags_per_page = apply_filters( 'edit_tags_per_page', $tags_per_page );
@@ -378,5 +378,3 @@ class WP_Terms_List_Table extends WP_List_Table {
        <?php
        }
 }
        <?php
        }
 }
-
-?>
index 66f7797caaed9c758b069f09aa6de0675e717a48..47175243585e68a1e2df3bf737d50f7cf62b6490 100644 (file)
@@ -7,19 +7,30 @@
  * @since 3.1.0
  * @access private
  */
  * @since 3.1.0
  * @access private
  */
-class WP_Theme_Install_List_Table extends WP_List_Table {
+class WP_Theme_Install_List_Table extends WP_Themes_List_Table {
+
+       var $features = array();
 
        function ajax_user_can() {
 
        function ajax_user_can() {
-               return current_user_can('install_themes');
+               return current_user_can( 'install_themes' );
        }
 
        function prepare_items() {
                include( ABSPATH . 'wp-admin/includes/theme-install.php' );
 
        }
 
        function prepare_items() {
                include( ABSPATH . 'wp-admin/includes/theme-install.php' );
 
-               global $tabs, $tab, $paged, $type, $term, $theme_field_defaults;
-
+               global $tabs, $tab, $paged, $type, $theme_field_defaults;
                wp_reset_vars( array( 'tab' ) );
 
                wp_reset_vars( array( 'tab' ) );
 
+               $search_terms = array();
+               $search_string = '';
+               if ( ! empty( $_REQUEST['s'] ) ){
+                       $search_string = strtolower( stripslashes( $_REQUEST['s'] ) );
+                       $search_terms = array_unique( array_filter( array_map( 'trim', explode( ',', $search_string ) ) ) );
+               }
+
+               if ( ! empty( $_REQUEST['features'] ) )
+                       $this->features = $_REQUEST['features'];
+
                $paged = $this->get_pagenum();
 
                $per_page = 36;
                $paged = $this->get_pagenum();
 
                $per_page = 36;
@@ -48,34 +59,26 @@ class WP_Theme_Install_List_Table extends WP_List_Table {
 
                switch ( $tab ) {
                        case 'search':
 
                switch ( $tab ) {
                        case 'search':
-                               $type = isset( $_REQUEST['type'] ) ? stripslashes( $_REQUEST['type'] ) : '';
-                               $term = isset( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : '';
-
+                               $type = isset( $_REQUEST['type'] ) ? stripslashes( $_REQUEST['type'] ) : 'term';
                                switch ( $type ) {
                                        case 'tag':
                                switch ( $type ) {
                                        case 'tag':
-                                               $terms = explode( ',', $term );
-                                               $terms = array_map( 'trim', $terms );
-                                               $terms = array_map( 'sanitize_title_with_dashes', $terms );
-                                               $args['tag'] = $terms;
+                                               $args['tag'] = array_map( 'sanitize_key', $search_terms );
                                                break;
                                        case 'term':
                                                break;
                                        case 'term':
-                                               $args['search'] = $term;
+                                               $args['search'] = $search_string;
                                                break;
                                        case 'author':
                                                break;
                                        case 'author':
-                                               $args['author'] = $term;
+                                               $args['author'] = $search_string;
                                                break;
                                }
 
                                                break;
                                }
 
-                               if ( !empty( $_POST['features'] ) ) {
-                                       $terms = $_POST['features'];
-                                       $terms = array_map( 'trim', $terms );
-                                       $terms = array_map( 'sanitize_title_with_dashes', $terms );
-                                       $args['tag'] = $terms;
-                                       $_REQUEST['s'] = implode( ',', $terms );
+                               if ( ! empty( $this->features ) ) {
+                                       $args['tag'] = $this->features;
+                                       $_REQUEST['s'] = implode( ',', $this->features );
                                        $_REQUEST['type'] = 'tag';
                                }
 
                                        $_REQUEST['type'] = 'tag';
                                }
 
-                               add_action( 'install_themes_table_header', 'install_theme_search_form' );
+                               add_action( 'install_themes_table_header', 'install_theme_search_form', 10, 0 );
                                break;
 
                        case 'featured':
                                break;
 
                        case 'featured':
@@ -89,7 +92,7 @@ class WP_Theme_Install_List_Table extends WP_List_Table {
                                $args = false;
                }
 
                                $args = false;
                }
 
-               if ( !$args )
+               if ( ! $args )
                        return;
 
                $api = themes_api( 'query_themes', $args );
                        return;
 
                $api = themes_api( 'query_themes', $args );
@@ -102,6 +105,7 @@ class WP_Theme_Install_List_Table extends WP_List_Table {
                $this->set_pagination_args( array(
                        'total_items' => $api->info['results'],
                        'per_page' => $per_page,
                $this->set_pagination_args( array(
                        'total_items' => $api->info['results'],
                        'per_page' => $per_page,
+                       'infinite_scroll' => true,
                ) );
        }
 
                ) );
        }
 
@@ -122,13 +126,8 @@ class WP_Theme_Install_List_Table extends WP_List_Table {
                return $display_tabs;
        }
 
                return $display_tabs;
        }
 
-       function get_columns() {
-               return array();
-       }
-
        function display() {
        function display() {
-
-               // wp_nonce_field( "fetch-list-" . get_class( $this ), '_ajax_fetch_list_nonce' );
+               wp_nonce_field( "fetch-list-" . get_class( $this ), '_ajax_fetch_list_nonce' );
 ?>
                <div class="tablenav top themes">
                        <div class="alignleft actions">
 ?>
                <div class="tablenav top themes">
                        <div class="alignleft actions">
@@ -143,27 +142,254 @@ class WP_Theme_Install_List_Table extends WP_List_Table {
                        <?php $this->display_rows_or_placeholder(); ?>
                </div>
 
                        <?php $this->display_rows_or_placeholder(); ?>
                </div>
 
-               <div class="tablenav bottom themes">
-                       <?php $this->pagination( 'bottom' ); ?>
-                       <img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" class="ajax-loading list-ajax-loading" alt="" />
-                       <br class="clear" />
-               </div>
-<?php
+               <?php
+               parent::tablenav( 'bottom' );
        }
 
        function display_rows() {
                $themes = $this->items;
        }
 
        function display_rows() {
                $themes = $this->items;
-               $theme_names = array_keys( $themes );
-
-               foreach ( $theme_names as $theme_name ) {
-                               $class = array( 'available-theme' );
+               foreach ( $themes as $theme ) {
                                ?>
                                ?>
-                               <div class="<?php echo join( ' ', $class ); ?>"><?php
-                                       if ( isset( $themes[$theme_name] ) )
-                                               display_theme( $themes[$theme_name] );
+                               <div class="available-theme installable-theme"><?php
+                                       $this->single_row( $theme );
                                ?></div>
                <?php } // end foreach $theme_names
                                ?></div>
                <?php } // end foreach $theme_names
+
+               $this->theme_installer();
        }
        }
-}
 
 
-?>
+       /*
+        * Prints a theme from the WordPress.org API.
+        *
+        * @param object $theme An object that contains theme data returned by the WordPress.org API.
+        *
+        * Example theme data:
+        *   object(stdClass)[59]
+        *     public 'name' => string 'Magazine Basic' (length=14)
+        *     public 'slug' => string 'magazine-basic' (length=14)
+        *     public 'version' => string '1.1' (length=3)
+        *     public 'author' => string 'tinkerpriest' (length=12)
+        *     public 'preview_url' => string 'http://wp-themes.com/?magazine-basic' (length=36)
+        *     public 'screenshot_url' => string 'http://wp-themes.com/wp-content/themes/magazine-basic/screenshot.png' (length=68)
+        *     public 'rating' => float 80
+        *     public 'num_ratings' => int 1
+        *     public 'homepage' => string 'http://wordpress.org/extend/themes/magazine-basic' (length=49)
+        *     public 'description' => string 'A basic magazine style layout with a fully customizable layout through a backend interface. Designed by <a href="http://bavotasan.com">c.bavota</a> of <a href="http://tinkerpriestmedia.com">Tinker Priest Media</a>.' (length=214)
+        *     public 'download_link' => string 'http://wordpress.org/extend/themes/download/magazine-basic.1.1.zip' (length=66)
+        */
+       function single_row( $theme ) {
+               global $themes_allowedtags;
+
+               if ( empty( $theme ) )
+                       return;
+
+               $name   = wp_kses( $theme->name,   $themes_allowedtags );
+               $author = wp_kses( $theme->author, $themes_allowedtags );
+
+               $preview_title = sprintf( __('Preview &#8220;%s&#8221;'), $name );
+               $preview_url   = add_query_arg( array(
+                       'tab'   => 'theme-information',
+                       'theme' => $theme->slug,
+               ) );
+
+               $actions = array();
+
+               $install_url = add_query_arg( array(
+                       'action' => 'install-theme',
+                       'theme'  => $theme->slug,
+               ), self_admin_url( 'update.php' ) );
+
+               $update_url = add_query_arg( array(
+                       'action' => 'upgrade-theme',
+                       'theme'  => $theme->slug,
+               ), self_admin_url( 'update.php' ) );
+
+               $status = $this->_get_theme_status( $theme );
+
+               switch ( $status ) {
+                       default:
+                       case 'install':
+                               $actions[] = '<a class="install-now" href="' . esc_url( wp_nonce_url( $install_url, 'install-theme_' . $theme->slug ) ) . '" title="' . esc_attr( sprintf( __( 'Install %s' ), $name ) ) . '">' . __( 'Install Now' ) . '</a>';
+                               break;
+                       case 'update_available':
+                               $actions[] = '<a class="install-now" href="' . esc_url( wp_nonce_url( $update_url, 'upgrade-theme_' . $theme->slug ) ) . '" title="' . esc_attr( sprintf( __( 'Update to version %s' ), $theme->version ) ) . '">' . __( 'Update' ) . '</a>';
+                               break;
+                       case 'newer_installed':
+                       case 'latest_installed':
+                               $actions[] = '<span class="install-now" title="' . esc_attr__( 'This theme is already installed and is up to date' ) . '">' . _x( 'Installed', 'theme' ) . '</span>';
+                               break;
+               }
+
+               $actions[] = '<a class="install-theme-preview" href="' . esc_url( $preview_url ) . '" title="' . esc_attr( sprintf( __( 'Preview %s' ), $name ) ) . '">' . __( 'Preview' ) . '</a>';
+
+               $actions = apply_filters( 'theme_install_actions', $actions, $theme );
+
+               ?>
+               <a class="screenshot install-theme-preview" href="<?php echo esc_url( $preview_url ); ?>" title="<?php echo esc_attr( $preview_title ); ?>">
+                       <img src='<?php echo esc_url( $theme->screenshot_url ); ?>' width='150' />
+               </a>
+
+               <h3><?php echo $name; ?></h3>
+               <div class="theme-author"><?php printf( __( 'By %s' ), $author ); ?></div>
+
+               <div class="action-links">
+                       <ul>
+                               <?php foreach ( $actions as $action ): ?>
+                                       <li><?php echo $action; ?></li>
+                               <?php endforeach; ?>
+                               <li class="hide-if-no-js"><a href="#" class="theme-detail" tabindex='4'><?php _e('Details') ?></a></li>
+                       </ul>
+               </div>
+
+               <?php
+               $this->install_theme_info( $theme );
+       }
+
+       /*
+        * Prints the wrapper for the theme installer.
+        */
+       function theme_installer() {
+               ?>
+               <div id="theme-installer" class="wp-full-overlay expanded">
+                       <div class="wp-full-overlay-sidebar">
+                               <div class="wp-full-overlay-header">
+                                       <a href="#" class="close-full-overlay"><?php _e( '&larr; Close' ); ?></a>
+                               </div>
+                               <div class="wp-full-overlay-sidebar-content">
+                                       <div class="install-theme-info"></div>
+                               </div>
+                               <div class="wp-full-overlay-footer">
+                                       <a href="#" class="collapse-sidebar button-secondary" title="<?php esc_attr_e('Collapse Sidebar'); ?>">
+                                               <span class="collapse-sidebar-label"><?php _e('Collapse'); ?></span>
+                                               <span class="collapse-sidebar-arrow"></span>
+                                       </a>
+                               </div>
+                       </div>
+                       <div class="wp-full-overlay-main"></div>
+               </div>
+               <?php
+       }
+
+       /*
+        * Prints the wrapper for the theme installer with a provided theme's data.
+        * Used to make the theme installer work for no-js.
+        *
+        * @param object $theme - A WordPress.org Theme API object.
+        */
+       function theme_installer_single( $theme ) {
+               ?>
+               <div id="theme-installer" class="wp-full-overlay single-theme">
+                       <div class="wp-full-overlay-sidebar">
+                               <?php $this->install_theme_info( $theme ); ?>
+                       </div>
+                       <div class="wp-full-overlay-main">
+                               <iframe src="<?php echo esc_url( $theme->preview_url ); ?>"></iframe>
+                       </div>
+               </div>
+               <?php
+       }
+
+       /*
+        * Prints the info for a theme (to be used in the theme installer modal).
+        *
+        * @param object $theme - A WordPress.org Theme API object.
+        */
+       function install_theme_info( $theme ) {
+               global $themes_allowedtags;
+
+               if ( empty( $theme ) )
+                       return;
+
+               $name   = wp_kses( $theme->name,   $themes_allowedtags );
+               $author = wp_kses( $theme->author, $themes_allowedtags );
+
+               $num_ratings = sprintf( _n( '(based on %s rating)', '(based on %s ratings)', $theme->num_ratings ), number_format_i18n( $theme->num_ratings ) );
+
+               $install_url = add_query_arg( array(
+                       'action' => 'install-theme',
+                       'theme'  => $theme->slug,
+               ), self_admin_url( 'update.php' ) );
+
+               $update_url = add_query_arg( array(
+                       'action' => 'upgrade-theme',
+                       'theme'  => $theme->slug,
+               ), self_admin_url( 'update.php' ) );
+
+               $status = $this->_get_theme_status( $theme );
+
+               ?>
+               <div class="install-theme-info"><?php
+                       switch ( $status ) {
+                               default:
+                               case 'install':
+                                       echo '<a class="theme-install button-primary" href="' . esc_url( wp_nonce_url( $install_url, 'install-theme_' . $theme->slug ) ) . '">' . __( 'Install' ) . '</a>';
+                                       break;
+                               case 'update_available':
+                                       echo '<a class="theme-install button-primary" href="' . esc_url( wp_nonce_url( $update_url, 'upgrade-theme_' . $theme->slug ) ) . '" title="' . esc_attr( sprintf( __( 'Update to version %s' ), $theme->version ) ) . '">' . __( 'Update' ) . '</a>';
+                                       break;
+                               case 'newer_installed':
+                               case 'latest_installed':
+                                       echo '<span class="theme-install" title="' . esc_attr__( 'This theme is already installed and is up to date' ) . '">' . _x( 'Installed', 'theme' ) . '</span>';
+                                       break;
+                       } ?>
+                       <h3 class="theme-name"><?php echo $name; ?></h3>
+                       <span class="theme-by"><?php printf( __( 'By %s' ), $author ); ?></span>
+                       <?php if ( isset( $theme->screenshot_url ) ): ?>
+                               <img class="theme-screenshot" src="<?php echo esc_url( $theme->screenshot_url ); ?>" />
+                       <?php endif; ?>
+                       <div class="theme-details">
+                               <div class="star-holder" title="<?php echo esc_attr( $num_ratings ); ?>">
+                                       <div class="star-rating" style="width:<?php echo esc_attr( intval( $theme->rating ) . 'px' ); ?>;"></div>
+                               </div>
+                               <div class="theme-version">
+                                       <strong><?php _e('Version:') ?> </strong>
+                                       <?php echo wp_kses( $theme->version, $themes_allowedtags ); ?>
+                               </div>
+                               <div class="theme-description">
+                                       <?php echo wp_kses( $theme->description, $themes_allowedtags ); ?>
+                               </div>
+                       </div>
+                       <input class="theme-preview-url" type="hidden" value="<?php echo esc_url( $theme->preview_url ); ?>" />
+               </div>
+               <?php
+       }
+
+       /**
+        * Send required variables to JavaScript land
+        *
+        * @since 3.4
+        * @access private
+        *
+        * @uses $tab Global; current tab within Themes->Install screen
+        * @uses $type Global; type of search.
+        */
+       function _js_vars() {
+               global $tab, $type;
+               parent::_js_vars( compact( 'tab', 'type' ) );
+       }
+
+       /**
+        * Check to see if the theme is already installed.
+        *
+        * @since 3.4
+        * @access private
+        *
+        * @param object $theme - A WordPress.org Theme API object.
+        * @return string Theme status.
+        */
+       private function _get_theme_status( $theme ) {
+               $status = 'install';
+
+               $installed_theme = wp_get_theme( $theme->slug );
+               if ( $installed_theme->exists() ) {
+                       if ( version_compare( $installed_theme->get('Version'), $theme->version, '=' ) )
+                               $status = 'latest_installed';
+                       elseif ( version_compare( $installed_theme->get('Version'), $theme->version, '>' ) )
+                               $status = 'newer_installed';
+                       else
+                               $status = 'update_available';
+               }
+
+               return $status;
+       }
+}
index 4839b504e27938e4ec612d4c4727f9edfd6dbac7..003d1ab03d6bc06b87b95ad2a7c7fb89bb5c2461 100644 (file)
@@ -9,59 +9,55 @@
  */
 class WP_Themes_List_Table extends WP_List_Table {
 
  */
 class WP_Themes_List_Table extends WP_List_Table {
 
-       var $search = array();
+       protected $search_terms = array();
        var $features = array();
 
        var $features = array();
 
+       function __construct() {
+               parent::__construct( array(
+                       'ajax' => true,
+               ) );
+       }
+
        function ajax_user_can() {
                // Do not check edit_theme_options here. AJAX calls for available themes require switch_themes.
        function ajax_user_can() {
                // Do not check edit_theme_options here. AJAX calls for available themes require switch_themes.
-               return current_user_can('switch_themes');
+               return current_user_can( 'switch_themes' );
        }
 
        function prepare_items() {
        }
 
        function prepare_items() {
-               global $ct;
-
-               $ct = current_theme_info();
-
-               $themes = get_allowed_themes();
+               $themes = wp_get_themes( array( 'allowed' => true ) );
 
 
-               if ( ! empty( $_REQUEST['s'] ) ) {
-                       $search = strtolower( stripslashes( $_REQUEST['s'] ) );
-                       $this->search = array_merge( $this->search, array_filter( array_map( 'trim', explode( ',', $search ) ) ) );
-                       $this->search = array_unique( $this->search );
-               }
+               if ( ! empty( $_REQUEST['s'] ) )
+                       $this->search_terms = array_unique( array_filter( array_map( 'trim', explode( ',', strtolower( stripslashes( $_REQUEST['s'] ) ) ) ) ) );
 
 
-               if ( !empty( $_REQUEST['features'] ) ) {
+               if ( ! empty( $_REQUEST['features'] ) )
                        $this->features = $_REQUEST['features'];
                        $this->features = $_REQUEST['features'];
-                       $this->features = array_map( 'trim', $this->features );
-                       $this->features = array_map( 'sanitize_title_with_dashes', $this->features );
-                       $this->features = array_unique( $this->features );
-               }
 
 
-               if ( $this->search || $this->features ) {
+               if ( $this->search_terms || $this->features ) {
                        foreach ( $themes as $key => $theme ) {
                        foreach ( $themes as $key => $theme ) {
-                               if ( !$this->search_theme( $theme ) )
+                               if ( ! $this->search_theme( $theme ) )
                                        unset( $themes[ $key ] );
                        }
                }
 
                                        unset( $themes[ $key ] );
                        }
                }
 
-               unset( $themes[$ct->name] );
-               uksort( $themes, "strnatcasecmp" );
+               unset( $themes[ get_option( 'stylesheet' ) ] );
+               WP_Theme::sort_by_name( $themes );
 
 
-               $per_page = 24;
+               $per_page = 999;
                $page = $this->get_pagenum();
 
                $start = ( $page - 1 ) * $per_page;
 
                $page = $this->get_pagenum();
 
                $start = ( $page - 1 ) * $per_page;
 
-               $this->items = array_slice( $themes, $start, $per_page );
+               $this->items = array_slice( $themes, $start, $per_page, true );
 
                $this->set_pagination_args( array(
                        'total_items' => count( $themes ),
                        'per_page' => $per_page,
 
                $this->set_pagination_args( array(
                        'total_items' => count( $themes ),
                        'per_page' => $per_page,
+                       'infinite_scroll' => true,
                ) );
        }
 
        function no_items() {
                ) );
        }
 
        function no_items() {
-               if ( $this->search || $this->features ) {
+               if ( $this->search_terms || $this->features ) {
                        _e( 'No items found.' );
                        return;
                }
                        _e( 'No items found.' );
                        return;
                }
@@ -101,7 +97,7 @@ class WP_Themes_List_Table extends WP_List_Table {
        }
 
        function display() {
        }
 
        function display() {
-               // wp_nonce_field( "fetch-list-" . get_class( $this ), '_ajax_fetch_list_nonce' );
+               wp_nonce_field( "fetch-list-" . get_class( $this ), '_ajax_fetch_list_nonce' );
 ?>
                <?php $this->tablenav( 'top' ); ?>
 
 ?>
                <?php $this->tablenav( 'top' ); ?>
 
@@ -119,104 +115,142 @@ class WP_Themes_List_Table extends WP_List_Table {
 
        function display_rows() {
                $themes = $this->items;
 
        function display_rows() {
                $themes = $this->items;
-               $theme_names = array_keys( $themes );
-               natcasesort( $theme_names );
-
-       foreach ( $theme_names as $theme_name ) {
-               $class = array( 'available-theme' );
-       ?>
-       <div class="<?php echo join( ' ', $class ); ?>">
-       <?php if ( !empty( $theme_name ) ) :
-       $template = $themes[$theme_name]['Template'];
-       $stylesheet = $themes[$theme_name]['Stylesheet'];
-       $title = $themes[$theme_name]['Title'];
-       $version = $themes[$theme_name]['Version'];
-       $description = $themes[$theme_name]['Description'];
-       $author = $themes[$theme_name]['Author'];
-       $screenshot = $themes[$theme_name]['Screenshot'];
-       $stylesheet_dir = $themes[$theme_name]['Stylesheet Dir'];
-       $template_dir = $themes[$theme_name]['Template Dir'];
-       $parent_theme = $themes[$theme_name]['Parent Theme'];
-       $theme_root = $themes[$theme_name]['Theme Root'];
-       $theme_root_uri = $themes[$theme_name]['Theme Root URI'];
-       $preview_link = esc_url( get_option( 'home' ) . '/' );
-       if ( is_ssl() )
-               $preview_link = str_replace( 'http://', 'https://', $preview_link );
-       $preview_link = htmlspecialchars( add_query_arg( array( 'preview' => 1, 'template' => $template, 'stylesheet' => $stylesheet, 'preview_iframe' => true, 'TB_iframe' => 'true' ), $preview_link ) );
-       $preview_text = esc_attr( sprintf( __( 'Preview of &#8220;%s&#8221;' ), $title ) );
-       $tags = $themes[$theme_name]['Tags'];
-       $thickbox_class = 'thickbox thickbox-preview';
-       $activate_link = wp_nonce_url( "themes.php?action=activate&amp;template=".urlencode( $template )."&amp;stylesheet=".urlencode( $stylesheet ), 'switch-theme_' . $template );
-       $activate_text = esc_attr( sprintf( __( 'Activate &#8220;%s&#8221;' ), $title ) );
-       $actions = array();
-       $actions[] = '<a href="' . $activate_link .  '" class="activatelink" title="' . $activate_text . '">' . __( 'Activate' ) . '</a>';
-       $actions[] = '<a href="' . $preview_link . '" class="thickbox thickbox-preview" title="' . esc_attr( sprintf( __( 'Preview &#8220;%s&#8221;' ), $theme_name ) ) . '">' . __( 'Preview' ) . '</a>';
-       if ( ! is_multisite() && current_user_can( 'delete_themes' ) )
-               $actions[] = '<a class="submitdelete deletion" href="' . wp_nonce_url( "themes.php?action=delete&amp;template=$stylesheet", 'delete-theme_' . $stylesheet ) . '" onclick="' . "return confirm( '" . esc_js( sprintf( __( "You are about to delete this theme '%s'\n  'Cancel' to stop, 'OK' to delete." ), $theme_name ) ) . "' );" . '">' . __( 'Delete' ) . '</a>';
-       $actions = apply_filters( 'theme_action_links', $actions, $themes[$theme_name] );
-
-       $actions = implode ( ' | ', $actions );
-?>
-               <a href="<?php echo $preview_link; ?>" class="<?php echo $thickbox_class; ?> screenshot">
-<?php if ( $screenshot ) : ?>
-                       <img src="<?php echo $theme_root_uri . '/' . $stylesheet . '/' . $screenshot; ?>" alt="" />
-<?php endif; ?>
-               </a>
-<h3><?php
-       /* translators: 1: theme title, 2: theme version, 3: theme author */
-       printf( __( '%1$s %2$s by %3$s' ), $title, $version, $author ) ; ?></h3>
-<p class="description"><?php echo $description; ?></p>
-<span class='action-links'><?php echo $actions ?></span>
-       <?php if ( current_user_can( 'edit_themes' ) && $parent_theme ) {
-       /* translators: 1: theme title, 2:  template dir, 3: stylesheet_dir, 4: theme title, 5: parent_theme */ ?>
-       <p><?php printf( __( 'The template files are located in <code>%2$s</code>. The stylesheet files are located in <code>%3$s</code>. <strong>%4$s</strong> uses templates from <strong>%5$s</strong>. Changes made to the templates will affect both themes.' ), $title, str_replace( WP_CONTENT_DIR, '', $template_dir ), str_replace( WP_CONTENT_DIR, '', $stylesheet_dir ), $title, $parent_theme ); ?></p>
-<?php } else { ?>
-       <p><?php printf( __( 'All of this theme&#8217;s files are located in <code>%2$s</code>.' ), $title, str_replace( WP_CONTENT_DIR, '', $template_dir ), str_replace( WP_CONTENT_DIR, '', $stylesheet_dir ) ); ?></p>
-<?php } ?>
-<?php if ( $tags ) : ?>
-<p><?php _e( 'Tags:' ); ?> <?php echo join( ', ', $tags ); ?></p>
-<?php endif; ?>
-               <?php theme_update_available( $themes[$theme_name] ); ?>
-<?php endif; // end if not empty theme_name ?>
-       </div>
-<?php } // end foreach $theme_names
+
+               foreach ( $themes as $theme ):
+                       ?><div class="available-theme"><?php
+
+                       $template   = $theme->get_template();
+                       $stylesheet = $theme->get_stylesheet();
+                       $title      = $theme->display('Name');
+                       $version    = $theme->display('Version');
+                       $author     = $theme->display('Author');
+
+                       $activate_link = wp_nonce_url( "themes.php?action=activate&amp;template=" . urlencode( $template ) . "&amp;stylesheet=" . urlencode( $stylesheet ), 'switch-theme_' . $stylesheet );
+
+                       $preview_link = esc_url( add_query_arg(
+                               array( 'preview' => 1, 'template' => $template, 'stylesheet' => $stylesheet, 'preview_iframe' => true, 'TB_iframe' => 'true' ),
+                               home_url( '/' ) ) );
+
+                       $actions = array();
+                       $actions['activate'] = '<a href="' . $activate_link . '" class="activatelink" title="'
+                               . esc_attr( sprintf( __( 'Activate &#8220;%s&#8221;' ), $title ) ) . '">' . __( 'Activate' ) . '</a>';
+
+                       $actions['preview'] = '<a href="' . $preview_link . '" class="hide-if-customize" title="'
+                               . esc_attr( sprintf( __( 'Preview &#8220;%s&#8221;' ), $title ) ) . '">' . __( 'Preview' ) . '</a>';
+
+                       if ( current_user_can( 'edit_theme_options' ) )
+                               $actions['preview'] .= '<a href="' . wp_customize_url( $stylesheet ) . '" class="load-customize hide-if-no-customize">'
+                                       . __( 'Live Preview' ) . '</a>';
+
+                       if ( ! is_multisite() && current_user_can( 'delete_themes' ) )
+                               $actions['delete'] = '<a class="submitdelete deletion" href="' . wp_nonce_url( "themes.php?action=delete&amp;stylesheet=$stylesheet", 'delete-theme_' . $stylesheet )
+                                       . '" onclick="' . "return confirm( '" . esc_js( sprintf( __( "You are about to delete this theme '%s'\n  'Cancel' to stop, 'OK' to delete." ), $title ) )
+                                       . "' );" . '">' . __( 'Delete' ) . '</a>';
+
+                       $actions       = apply_filters( 'theme_action_links', $actions, $theme );
+                       $delete_action = isset( $actions['delete'] ) ? '<div class="delete-theme">' . $actions['delete'] . '</div>' : '';
+                       unset( $actions['delete'] );
+
+                       ?>
+
+                       <a href="<?php echo $preview_link; ?>" class="screenshot hide-if-customize">
+                               <?php if ( $screenshot = $theme->get_screenshot() ) : ?>
+                                       <img src="<?php echo esc_url( $screenshot ); ?>" alt="" />
+                               <?php endif; ?>
+                       </a>
+                       <a href="<?php echo wp_customize_url( $stylesheet ); ?>" class="screenshot load-customize hide-if-no-customize">
+                               <?php if ( $screenshot = $theme->get_screenshot() ) : ?>
+                                       <img src="<?php echo esc_url( $screenshot ); ?>" alt="" />
+                               <?php endif; ?>
+                       </a>
+
+                       <h3><?php echo $title; ?></h3>
+                       <div class="theme-author"><?php printf( __( 'By %s' ), $author ); ?></div>
+                       <div class="action-links">
+                               <ul>
+                                       <?php foreach ( $actions as $action ): ?>
+                                               <li><?php echo $action; ?></li>
+                                       <?php endforeach; ?>
+                                       <li class="hide-if-no-js"><a href="#" class="theme-detail" tabindex='4'><?php _e('Details') ?></a></li>
+                               </ul>
+                               <?php echo $delete_action; ?>
+
+                               <?php theme_update_available( $theme ); ?>
+                       </div>
+
+                       <div class="themedetaildiv hide-if-js">
+                               <p><strong><?php _e('Version: '); ?></strong><?php echo $version; ?></p>
+                               <p><?php echo $theme->display('Description'); ?></p>
+                               <?php if ( current_user_can( 'edit_themes' ) && $theme->parent() ) :
+                                       /* translators: 1: theme title, 2:  template dir, 3: stylesheet_dir, 4: theme title, 5: parent_theme */ ?>
+                                       <p><?php printf( __( 'The template files are located in <code>%2$s</code>. The stylesheet files are located in <code>%3$s</code>. <strong>%4$s</strong> uses templates from <strong>%5$s</strong>. Changes made to the templates will affect both themes.' ),
+                                               $title, str_replace( WP_CONTENT_DIR, '', $theme->get_template_directory() ), str_replace( WP_CONTENT_DIR, '', $theme->get_stylesheet_directory() ), $title, $theme->parent()->display('Name') ); ?></p>
+                               <?php else :
+                                               /* translators: 1: theme title, 2:  template dir, 3: stylesheet_dir */ ?>
+                                       <p><?php printf( __( 'All of this theme&#8217;s files are located in <code>%2$s</code>.' ),
+                                               $title, str_replace( WP_CONTENT_DIR, '', $theme->get_template_directory() ), str_replace( WP_CONTENT_DIR, '', $theme->get_stylesheet_directory() ) ); ?></p>
+                               <?php endif; ?>
+                       </div>
+
+                       </div>
+               <?php
+               endforeach;
        }
 
        function search_theme( $theme ) {
        }
 
        function search_theme( $theme ) {
-               $matched = 0;
+               // Search the features
+               foreach ( $this->features as $word ) {
+                       if ( ! in_array( $word, $theme->get('Tags') ) )
+                               return false;
+               }
 
                // Match all phrases
 
                // Match all phrases
-               if ( count( $this->search ) > 0 ) {
-                       foreach ( $this->search as $word ) {
-                               $matched = 0;
-
-                               // In a tag?
-                               if ( in_array( $word, array_map( 'sanitize_title_with_dashes', $theme['Tags'] ) ) )
-                                       $matched = 1;
-
-                               // In one of the fields?
-                               foreach ( array( 'Name', 'Title', 'Description', 'Author', 'Template', 'Stylesheet' ) AS $field ) {
-                                       if ( stripos( $theme[$field], $word ) !== false )
-                                               $matched++;
-                               }
-
-                               if ( $matched == 0 )
-                                       return false;
+               foreach ( $this->search_terms as $word ) {
+                       if ( in_array( $word, $theme->get('Tags') ) )
+                               continue;
+
+                       foreach ( array( 'Name', 'Description', 'Author', 'AuthorURI' ) as $header ) {
+                               // Don't mark up; Do translate.
+                               if ( false !== stripos( $theme->display( $header, false, true ), $word ) )
+                                       continue 2;
                        }
                        }
-               }
 
 
-               // Now search the features
-               if ( count( $this->features ) > 0 ) {
-                       foreach ( $this->features as $word ) {
-                               // In a tag?
-                               if ( !in_array( $word, array_map( 'sanitize_title_with_dashes', $theme['Tags'] ) ) )
-                                       return false;
-                       }
+                       if ( false !== stripos( $theme->get_stylesheet(), $word ) )
+                               continue;
+
+                       if ( false !== stripos( $theme->get_template(), $word ) )
+                               continue;
+
+                       return false;
                }
 
                }
 
-               // Only get here if each word exists in the tags or one of the fields
                return true;
        }
                return true;
        }
-}
 
 
-?>
+       /**
+        * Send required variables to JavaScript land
+        *
+        * @since 3.4
+        * @access private
+        *
+        * @uses $this->features Array of all feature search terms.
+        * @uses get_pagenum()
+        * @uses _pagination_args['total_pages']
+        */
+        function _js_vars( $extra_args = array() ) {
+               $search_string = isset( $_REQUEST['s'] ) ? esc_attr( stripslashes( $_REQUEST['s'] ) ) : '';
+
+               $args = array(
+                       'search' => $search_string,
+                       'features' => $this->features,
+                       'paged' => $this->get_pagenum(),
+                       'total_pages' => ! empty( $this->_pagination_args['total_pages'] ) ? $this->_pagination_args['total_pages'] : 1,
+               );
+
+               if ( is_array( $extra_args ) )
+                       $args = array_merge( $args, $extra_args );
+
+               printf( "<script type='text/javascript'>var theme_list_args = %s;</script>\n", json_encode( $args ) );
+               parent::_js_vars();
+       }
+}
index e61e0ef5e45d0d06eec18f81052578d0f4f24ea2..c70ef66bbb732d4797c32ac0a697b1d5332cd010 100644 (file)
@@ -374,7 +374,6 @@ class Plugin_Upgrader extends WP_Upgrader {
                $this->strings['no_package'] = __('Update package not available.');
                $this->strings['downloading_package'] = __('Downloading update from <span class="code">%s</span>&#8230;');
                $this->strings['unpack_package'] = __('Unpacking the update&#8230;');
                $this->strings['no_package'] = __('Update package not available.');
                $this->strings['downloading_package'] = __('Downloading update from <span class="code">%s</span>&#8230;');
                $this->strings['unpack_package'] = __('Unpacking the update&#8230;');
-               $this->strings['deactivate_plugin'] = __('Deactivating the plugin&#8230;');
                $this->strings['remove_old'] = __('Removing the old version of the plugin&#8230;');
                $this->strings['remove_old_failed'] = __('Could not remove the old plugin.');
                $this->strings['process_failed'] = __('Plugin update failed.');
                $this->strings['remove_old'] = __('Removing the old version of the plugin&#8230;');
                $this->strings['remove_old_failed'] = __('Could not remove the old plugin.');
                $this->strings['process_failed'] = __('Plugin update failed.');
@@ -412,6 +411,7 @@ class Plugin_Upgrader extends WP_Upgrader {
 
                // Force refresh of plugin update information
                delete_site_transient('update_plugins');
 
                // Force refresh of plugin update information
                delete_site_transient('update_plugins');
+               wp_cache_delete( 'plugins', 'plugins' );
 
                return true;
        }
 
                return true;
        }
@@ -456,6 +456,7 @@ class Plugin_Upgrader extends WP_Upgrader {
 
                // Force refresh of plugin update information
                delete_site_transient('update_plugins');
 
                // Force refresh of plugin update information
                delete_site_transient('update_plugins');
+               wp_cache_delete( 'plugins', 'plugins' );
        }
 
        function bulk_upgrade($plugins) {
        }
 
        function bulk_upgrade($plugins) {
@@ -537,6 +538,7 @@ class Plugin_Upgrader extends WP_Upgrader {
 
                // Force refresh of plugin update information
                delete_site_transient('update_plugins');
 
                // Force refresh of plugin update information
                delete_site_transient('update_plugins');
+               wp_cache_delete( 'plugins', 'plugins' );
 
                return $results;
        }
 
                return $results;
        }
@@ -594,7 +596,6 @@ class Plugin_Upgrader extends WP_Upgrader {
                        return new WP_Error('bad_request', $this->strings['bad_request']);
 
                if ( is_plugin_active($plugin) ) {
                        return new WP_Error('bad_request', $this->strings['bad_request']);
 
                if ( is_plugin_active($plugin) ) {
-                       $this->skin->feedback('deactivate_plugin');
                        //Deactivate the plugin silently, Prevent deactivation hooks from running.
                        deactivate_plugins($plugin, true);
                }
                        //Deactivate the plugin silently, Prevent deactivation hooks from running.
                        deactivate_plugins($plugin, true);
                }
@@ -662,6 +663,80 @@ class Theme_Upgrader extends WP_Upgrader {
                $this->strings['installing_package'] = __('Installing the theme&#8230;');
                $this->strings['process_failed'] = __('Theme install failed.');
                $this->strings['process_success'] = __('Theme installed successfully.');
                $this->strings['installing_package'] = __('Installing the theme&#8230;');
                $this->strings['process_failed'] = __('Theme install failed.');
                $this->strings['process_success'] = __('Theme installed successfully.');
+               /* translators: 1: theme name, 2: version */
+               $this->strings['process_success_specific'] = __('Successfully installed the theme <strong>%1$s %2$s</strong>.');
+               $this->strings['parent_theme_search'] = __('This theme requires a parent theme. Checking if it is installed&#8230;');
+               /* translators: 1: theme name, 2: version */
+               $this->strings['parent_theme_prepare_install'] = __('Preparing to install <strong>%1$s %2$s</strong>&#8230;');
+               /* translators: 1: theme name, 2: version */
+               $this->strings['parent_theme_currently_installed'] = __('The parent theme, <strong>%1$s %2$s</strong>, is currently installed.');
+               /* translators: 1: theme name, 2: version */
+               $this->strings['parent_theme_install_success'] = __('Successfully installed the parent theme, <strong>%1$s %2$s</strong>.');
+               $this->strings['parent_theme_not_found'] = __('<strong>The parent theme could not be found.</strong> You will need to install the parent theme, <strong>%s</strong>, before you can use this child theme.');
+       }
+
+       function check_parent_theme_filter($install_result, $hook_extra, $child_result) {
+               // Check to see if we need to install a parent theme
+               $theme_info = $this->theme_info();
+
+               if ( ! $theme_info->parent() )
+                       return $install_result;
+
+               $this->skin->feedback( 'parent_theme_search' );
+
+               if ( ! $theme_info->parent()->errors() ) {
+                       $this->skin->feedback( 'parent_theme_currently_installed', $theme_info->parent()->display('Name'), $theme_info->parent()->display('Version') );
+                       // We already have the theme, fall through.
+                       return $install_result;
+               }
+
+               // We don't have the parent theme, lets install it
+               $api = themes_api('theme_information', array('slug' => $theme_info->get('Template'), 'fields' => array('sections' => false, 'tags' => false) ) ); //Save on a bit of bandwidth.
+
+               if ( ! $api || is_wp_error($api) ) {
+                       $this->skin->feedback( 'parent_theme_not_found', $theme_info->get('Template') );
+                       // Don't show activate or preview actions after install
+                       add_filter('install_theme_complete_actions', array(&$this, 'hide_activate_preview_actions') );
+                       return $install_result;
+               }
+
+               // Backup required data we're going to override:
+               $child_api = $this->skin->api;
+               $child_success_message = $this->strings['process_success'];
+
+               // Override them
+               $this->skin->api = $api;
+               $this->strings['process_success_specific'] = $this->strings['parent_theme_install_success'];//, $api->name, $api->version);
+
+               $this->skin->feedback('parent_theme_prepare_install', $api->name, $api->version);
+
+               add_filter('install_theme_complete_actions', '__return_false', 999); // Don't show any actions after installing the theme.
+
+               // Install the parent theme
+               $parent_result = $this->run( array(
+                       'package' => $api->download_link,
+                       'destination' => WP_CONTENT_DIR . '/themes',
+                       'clear_destination' => false, //Do not overwrite files.
+                       'clear_working' => true
+               ) );
+
+               if ( is_wp_error($parent_result) )
+                       add_filter('install_theme_complete_actions', array(&$this, 'hide_activate_preview_actions') );
+
+               // Start cleaning up after the parents installation
+               remove_filter('install_theme_complete_actions', '__return_false', 999);
+
+               // Reset child's result and data
+               $this->result = $child_result;
+               $this->skin->api = $child_api;
+               $this->strings['process_success'] = $child_success_message;
+
+               return $install_result;
+       }
+
+       function hide_activate_preview_actions($actions) {
+               unset($actions['activate'], $actions['preview']);
+               return $actions;
        }
 
        function install($package) {
        }
 
        function install($package) {
@@ -670,6 +745,7 @@ class Theme_Upgrader extends WP_Upgrader {
                $this->install_strings();
 
                add_filter('upgrader_source_selection', array(&$this, 'check_package') );
                $this->install_strings();
 
                add_filter('upgrader_source_selection', array(&$this, 'check_package') );
+               add_filter('upgrader_post_install', array(&$this, 'check_parent_theme_filter'), 10, 3);
 
                $options = array(
                                                'package' => $package,
 
                $options = array(
                                                'package' => $package,
@@ -681,12 +757,16 @@ class Theme_Upgrader extends WP_Upgrader {
                $this->run($options);
 
                remove_filter('upgrader_source_selection', array(&$this, 'check_package') );
                $this->run($options);
 
                remove_filter('upgrader_source_selection', array(&$this, 'check_package') );
+               remove_filter('upgrader_post_install', array(&$this, 'check_parent_theme_filter'), 10, 3);
 
                if ( ! $this->result || is_wp_error($this->result) )
                        return $this->result;
 
                // Force refresh of theme update information
                delete_site_transient('update_themes');
 
                if ( ! $this->result || is_wp_error($this->result) )
                        return $this->result;
 
                // Force refresh of theme update information
                delete_site_transient('update_themes');
+               search_theme_directories( true );
+               foreach ( wp_get_themes() as $theme )
+                       $theme->cache_delete();
 
                return true;
        }
 
                return true;
        }
@@ -733,6 +813,9 @@ class Theme_Upgrader extends WP_Upgrader {
 
                // Force refresh of theme update information
                delete_site_transient('update_themes');
 
                // Force refresh of theme update information
                delete_site_transient('update_themes');
+               search_theme_directories( true );
+               foreach ( wp_get_themes() as $theme )
+                       $theme->cache_delete();
 
                return true;
        }
 
                return true;
        }
@@ -820,6 +903,9 @@ class Theme_Upgrader extends WP_Upgrader {
 
                // Force refresh of theme update information
                delete_site_transient('update_themes');
 
                // Force refresh of theme update information
                delete_site_transient('update_themes');
+               search_theme_directories( true );
+               foreach ( wp_get_themes() as $theme )
+                       $theme->cache_delete();
 
                return $results;
        }
 
                return $results;
        }
@@ -835,14 +921,17 @@ class Theme_Upgrader extends WP_Upgrader {
                if ( ! is_dir($working_directory) ) // Sanity check, if the above fails, lets not prevent installation.
                        return $source;
 
                if ( ! is_dir($working_directory) ) // Sanity check, if the above fails, lets not prevent installation.
                        return $source;
 
-               if ( ! file_exists( $working_directory . 'style.css' ) ) // A proper archive should have a style.css file in the single subdirectory
+               // A proper archive should have a style.css file in the single subdirectory
+               if ( ! file_exists( $working_directory . 'style.css' ) )
                        return new WP_Error( 'incompatible_archive', $this->strings['incompatible_archive'], __('The theme is missing the <code>style.css</code> stylesheet.') );
 
                        return new WP_Error( 'incompatible_archive', $this->strings['incompatible_archive'], __('The theme is missing the <code>style.css</code> stylesheet.') );
 
-               $info = get_theme_data( $working_directory . 'style.css' );
-               if ( empty($info['Name']) )
+               $info = get_file_data( $working_directory . 'style.css', array( 'Name' => 'Theme Name', 'Template' => 'Template' ) );
+
+               if ( empty( $info['Name'] ) )
                        return new WP_Error( 'incompatible_archive', $this->strings['incompatible_archive'], __("The <code>style.css</code> stylesheet doesn't contain a valid theme header.") );
 
                        return new WP_Error( 'incompatible_archive', $this->strings['incompatible_archive'], __("The <code>style.css</code> stylesheet doesn't contain a valid theme header.") );
 
-               if ( empty($info['Template']) && ! file_exists( $working_directory . 'index.php' ) ) // If no template is set, it must have at least an index.php to be legit.
+               // If it's not a child theme, it must have at least an index.php to be legit.
+               if ( empty( $info['Template'] ) && ! file_exists( $working_directory . 'index.php' ) )
                        return new WP_Error( 'incompatible_archive', $this->strings['incompatible_archive'], __('The theme is missing the <code>index.php</code> file.') );
 
                return $source;
                        return new WP_Error( 'incompatible_archive', $this->strings['incompatible_archive'], __('The theme is missing the <code>index.php</code> file.') );
 
                return $source;
@@ -870,15 +959,15 @@ class Theme_Upgrader extends WP_Upgrader {
 
                $theme = isset($theme['theme']) ? $theme['theme'] : '';
 
 
                $theme = isset($theme['theme']) ? $theme['theme'] : '';
 
-               if ( $theme != get_stylesheet() ) //If not current
+               if ( $theme != get_stylesheet() ) // If not current
                        return $return;
 
                        return $return;
 
-               //Ensure stylesheet name hasnt changed after the upgrade:
+               // Ensure stylesheet name hasnt changed after the upgrade:
                // @TODO: Note, This doesn't handle the Template changing, or the Template name changing.
                if ( $theme == get_stylesheet() && $theme != $this->result['destination_name'] ) {
                        $theme_info = $this->theme_info();
                        $stylesheet = $this->result['destination_name'];
                // @TODO: Note, This doesn't handle the Template changing, or the Template name changing.
                if ( $theme == get_stylesheet() && $theme != $this->result['destination_name'] ) {
                        $theme_info = $this->theme_info();
                        $stylesheet = $this->result['destination_name'];
-                       $template = !empty($theme_info['Template']) ? $theme_info['Template'] : $stylesheet;
+                       $template = $theme_info->get_template();
                        switch_theme($template, $stylesheet, true);
                }
 
                        switch_theme($template, $stylesheet, true);
                }
 
@@ -911,7 +1000,7 @@ class Theme_Upgrader extends WP_Upgrader {
                        else
                                return false;
                }
                        else
                                return false;
                }
-               return get_theme_data(WP_CONTENT_DIR . '/themes/' . $theme . '/style.css');
+               return wp_get_theme( $theme, WP_CONTENT_DIR . '/themes/' );
        }
 
 }
        }
 
 }
@@ -933,6 +1022,7 @@ class Core_Upgrader extends WP_Upgrader {
                $this->strings['downloading_package'] = __('Downloading update from <span class="code">%s</span>&#8230;');
                $this->strings['unpack_package'] = __('Unpacking the update&#8230;');
                $this->strings['copy_failed'] = __('Could not copy files.');
                $this->strings['downloading_package'] = __('Downloading update from <span class="code">%s</span>&#8230;');
                $this->strings['unpack_package'] = __('Unpacking the update&#8230;');
                $this->strings['copy_failed'] = __('Could not copy files.');
+               $this->strings['copy_failed_space'] = __('Could not copy files. You may have run out of disk space.' );
        }
 
        function upgrade($current) {
        }
 
        function upgrade($current) {
@@ -985,6 +1075,9 @@ class Core_Upgrader extends WP_Upgrader {
 
                require(ABSPATH . 'wp-admin/includes/update-core.php');
 
 
                require(ABSPATH . 'wp-admin/includes/update-core.php');
 
+               if ( ! function_exists( 'update_core' ) )
+                       return new WP_Error( 'copy_failed_space', $this->strings['copy_failed_space'] );
+
                return update_core($working_dir, $wp_dir);
        }
 
                return update_core($working_dir, $wp_dir);
        }
 
@@ -1106,7 +1199,6 @@ class Plugin_Upgrader_Skin extends WP_Upgrader_Skin {
        function after() {
                $this->plugin = $this->upgrader->plugin_info();
                if ( !empty($this->plugin) && !is_wp_error($this->result) && $this->plugin_active ){
        function after() {
                $this->plugin = $this->upgrader->plugin_info();
                if ( !empty($this->plugin) && !is_wp_error($this->result) && $this->plugin_active ){
-                       show_message(__('Reactivating the plugin&#8230;'));
                        echo '<iframe style="border:0;overflow:hidden" width="100%" height="170px" src="' . wp_nonce_url('update.php?action=activate-plugin&networkwide=' . $this->plugin_network_active . '&plugin=' . $this->plugin, 'activate-plugin_' . $this->plugin) .'"></iframe>';
                }
 
                        echo '<iframe style="border:0;overflow:hidden" width="100%" height="170px" src="' . wp_nonce_url('update.php?action=activate-plugin&networkwide=' . $this->plugin_network_active . '&plugin=' . $this->plugin, 'activate-plugin_' . $this->plugin) .'"></iframe>';
                }
 
@@ -1290,12 +1382,13 @@ class Bulk_Theme_Upgrader_Skin extends Bulk_Upgrader_Skin {
        }
 
        function before() {
        }
 
        function before() {
-               parent::before($this->theme_info['Name']);
+               parent::before( $this->theme_info->display('Name') );
        }
 
        function after() {
        }
 
        function after() {
-               parent::after($this->theme_info['Name']);
+               parent::after( $this->theme_info->display('Name') );
        }
        }
+
        function bulk_footer() {
                parent::bulk_footer();
                $update_actions =  array(
        function bulk_footer() {
                parent::bulk_footer();
                $update_actions =  array(
@@ -1303,7 +1396,7 @@ class Bulk_Theme_Upgrader_Skin extends Bulk_Upgrader_Skin {
                        'updates_page' => '<a href="' . self_admin_url('update-core.php') . '" title="' . esc_attr__('Go to WordPress Updates page') . '" target="_parent">' . __('Return to WordPress Updates') . '</a>'
                );
 
                        'updates_page' => '<a href="' . self_admin_url('update-core.php') . '" title="' . esc_attr__('Go to WordPress Updates page') . '" target="_parent">' . __('Return to WordPress Updates') . '</a>'
                );
 
-               $update_actions = apply_filters('update_bulk_theme_complete_actions', $update_actions, $this->theme_info);
+               $update_actions = apply_filters('update_bulk_theme_complete_actions', $update_actions, $this->theme_info );
                if ( ! empty($update_actions) )
                        $this->feedback(implode(' | ', (array)$update_actions));
        }
                if ( ! empty($update_actions) )
                        $this->feedback(implode(' | ', (array)$update_actions));
        }
@@ -1362,7 +1455,6 @@ class Plugin_Installer_Skin extends WP_Upgrader_Skin {
                else
                        $install_actions['plugins_page'] = '<a href="' . self_admin_url('plugins.php') . '" title="' . esc_attr__('Return to Plugins page') . '" target="_parent">' . __('Return to Plugins page') . '</a>';
 
                else
                        $install_actions['plugins_page'] = '<a href="' . self_admin_url('plugins.php') . '" title="' . esc_attr__('Return to Plugins page') . '" target="_parent">' . __('Return to Plugins page') . '</a>';
 
-
                if ( ! $this->result || is_wp_error($this->result) ) {
                        unset( $install_actions['activate_plugin'] );
                        unset( $install_actions['network_activate'] );
                if ( ! $this->result || is_wp_error($this->result) ) {
                        unset( $install_actions['activate_plugin'] );
                        unset( $install_actions['network_activate'] );
@@ -1397,10 +1489,8 @@ class Theme_Installer_Skin extends WP_Upgrader_Skin {
        }
 
        function before() {
        }
 
        function before() {
-               if ( !empty($this->api) ) {
-                       /* translators: 1: theme name, 2: version */
-                       $this->upgrader->strings['process_success'] = sprintf( __('Successfully installed the theme <strong>%1$s %2$s</strong>.'), $this->api->name, $this->api->version);
-               }
+               if ( !empty($this->api) )
+                       $this->upgrader->strings['process_success'] = sprintf( $this->upgrader->strings['process_success_specific'], $this->api->name, $this->api->version);
        }
 
        function after() {
        }
 
        function after() {
@@ -1408,22 +1498,33 @@ class Theme_Installer_Skin extends WP_Upgrader_Skin {
                        return;
 
                $theme_info = $this->upgrader->theme_info();
                        return;
 
                $theme_info = $this->upgrader->theme_info();
-               if ( empty($theme_info) )
+               if ( empty( $theme_info ) )
                        return;
                        return;
-               $name = $theme_info['Name'];
+
+               $name       = $theme_info->display('Name');
                $stylesheet = $this->upgrader->result['destination_name'];
                $stylesheet = $this->upgrader->result['destination_name'];
-               $template = !empty($theme_info['Template']) ? $theme_info['Template'] : $stylesheet;
+               $template   = $theme_info->get_template();
 
 
-               $preview_link = htmlspecialchars( add_query_arg( array('preview' => 1, 'template' => $template, 'stylesheet' => $stylesheet, 'preview_iframe' => 1, 'TB_iframe' => 'true' ), trailingslashit(esc_url(get_option('home'))) ) );
-               $activate_link = wp_nonce_url("themes.php?action=activate&amp;template=" . urlencode($template) . "&amp;stylesheet=" . urlencode($stylesheet), 'switch-theme_' . $template);
+               $preview_link = add_query_arg( array(
+                       'preview'    => 1,
+                       'template'   => $template,
+                       'stylesheet' => $stylesheet,
+               ), trailingslashit( get_home_url() ) );
 
 
-               $install_actions = array(
-                       'preview' => '<a href="' . $preview_link . '" class="thickbox thickbox-preview" title="' . esc_attr(sprintf(__('Preview &#8220;%s&#8221;'), $name)) . '">' . __('Preview') . '</a>',
-                       'activate' => '<a href="' . $activate_link .  '" class="activatelink" title="' . esc_attr( sprintf( __('Activate &#8220;%s&#8221;'), $name ) ) . '">' . __('Activate') . '</a>'
-                                                       );
+               $activate_link = add_query_arg( array(
+                       'action'     => 'activate',
+                       'template'   => $template,
+                       'stylesheet' => $stylesheet,
+               ), admin_url('themes.php') );
+               $activate_link = wp_nonce_url( $activate_link, 'switch-theme_' . $stylesheet );
+
+               $install_actions = array();
+               $install_actions['preview']  = '<a href="' . esc_url( $preview_link ) . '" class="hide-if-customize" title="' . esc_attr( sprintf( __('Preview &#8220;%s&#8221;'), $name ) ) . '">' . __('Preview') . '</a>';
+               $install_actions['preview'] .= '<a href="' . wp_customize_url( $stylesheet ) . '" class="hide-if-no-customize load-customize" title="' . esc_attr( sprintf( __('Preview &#8220;%s&#8221;'), $name ) ) . '">' . __('Live Preview') . '</a>';
+               $install_actions['activate'] = '<a href="' . esc_url( $activate_link ) . '" class="activatelink" title="' . esc_attr( sprintf( __('Activate &#8220;%s&#8221;'), $name ) ) . '">' . __('Activate') . '</a>';
 
                if ( is_network_admin() && current_user_can( 'manage_network_themes' ) )
 
                if ( is_network_admin() && current_user_can( 'manage_network_themes' ) )
-                       $install_actions['network_enable'] = '<a href="' . esc_url( wp_nonce_url( 'themes.php?action=enable&amp;theme=' . $template, 'enable-theme_' . $template ) ) . '" title="' . esc_attr__( 'Enable this theme for all sites in this network' ) . '" target="_parent">' . __( 'Network Enable' ) . '</a>';
+                       $install_actions['network_enable'] = '<a href="' . esc_url( wp_nonce_url( 'themes.php?action=enable&amp;theme=' . $stylesheet, 'enable-theme_' . $stylesheet ) ) . '" title="' . esc_attr__( 'Enable this theme for all sites in this network' ) . '" target="_parent">' . __( 'Network Enable' ) . '</a>';
 
                if ( $this->type == 'web' )
                        $install_actions['themes_page'] = '<a href="' . self_admin_url('theme-install.php') . '" title="' . esc_attr__('Return to Theme Installer') . '" target="_parent">' . __('Return to Theme Installer') . '</a>';
 
                if ( $this->type == 'web' )
                        $install_actions['themes_page'] = '<a href="' . self_admin_url('theme-install.php') . '" title="' . esc_attr__('Return to Theme Installer') . '" target="_parent">' . __('Return to Theme Installer') . '</a>';
@@ -1463,22 +1564,34 @@ class Theme_Upgrader_Skin extends WP_Upgrader_Skin {
        function after() {
 
                $update_actions = array();
        function after() {
 
                $update_actions = array();
-               if ( !empty($this->upgrader->result['destination_name']) &&
-                       ($theme_info = $this->upgrader->theme_info()) &&
-                       !empty($theme_info) ) {
-
-                       $name = $theme_info['Name'];
+               if ( ! empty( $this->upgrader->result['destination_name'] ) && $theme_info = $this->upgrader->theme_info() ) {
+                       $name       = $theme_info->display('Name');
                        $stylesheet = $this->upgrader->result['destination_name'];
                        $stylesheet = $this->upgrader->result['destination_name'];
-                       $template = !empty($theme_info['Template']) ? $theme_info['Template'] : $stylesheet;
-
-                       $preview_link = htmlspecialchars( add_query_arg( array('preview' => 1, 'template' => $template, 'stylesheet' => $stylesheet, 'TB_iframe' => 'true' ), trailingslashit(esc_url(get_option('home'))) ) );
-                       $activate_link = wp_nonce_url("themes.php?action=activate&amp;template=" . urlencode($template) . "&amp;stylesheet=" . urlencode($stylesheet), 'switch-theme_' . $template);
-
-                       $update_actions['preview'] = '<a href="' . $preview_link . '" class="thickbox thickbox-preview" title="' . esc_attr(sprintf(__('Preview &#8220;%s&#8221;'), $name)) . '">' . __('Preview') . '</a>';
-                       $update_actions['activate'] = '<a href="' . $activate_link .  '" class="activatelink" title="' . esc_attr( sprintf( __('Activate &#8220;%s&#8221;'), $name ) ) . '">' . __('Activate') . '</a>';
+                       $template   = $theme_info->get_template();
+
+                       $preview_link = add_query_arg( array(
+                               'preview'    => 1,
+                               'template'   => $template,
+                               'stylesheet' => $stylesheet,
+                       ), trailingslashit( get_home_url() ) );
+
+                       $activate_link = add_query_arg( array(
+                               'action'     => 'activate',
+                               'template'   => $template,
+                               'stylesheet' => $stylesheet,
+                       ), admin_url('themes.php') );
+                       $activate_link = wp_nonce_url( $activate_link, 'switch-theme_' . $stylesheet );
+
+                       if ( get_stylesheet() == $stylesheet ) {
+                               $update_actions['preview']  = '<a href="' . wp_customize_url( $stylesheet ) . '" class="hide-if-no-customize load-customize" title="' . esc_attr( sprintf( __('Customize &#8220;%s&#8221;'), $name ) ) . '">' . __('Customize') . '</a>';
+                       } else {
+                               $update_actions['preview']  = '<a href="' . esc_url( $preview_link ) . '" class="hide-if-customize" title="' . esc_attr( sprintf( __('Preview &#8220;%s&#8221;'), $name ) ) . '">' . __('Preview') . '</a>';
+                               $update_actions['preview'] .= '<a href="' . wp_customize_url( $stylesheet ) . '" class="hide-if-no-customize load-customize" title="' . esc_attr( sprintf( __('Preview &#8220;%s&#8221;'), $name ) ) . '">' . __('Live Preview') . '</a>';
+                               $update_actions['activate'] = '<a href="' . esc_url( $activate_link ) . '" class="activatelink" title="' . esc_attr( sprintf( __('Activate &#8220;%s&#8221;'), $name ) ) . '">' . __('Activate') . '</a>';
+                       }
 
 
-                       if ( ( ! $this->result || is_wp_error($this->result) ) || $stylesheet == get_stylesheet() )
-                               unset($update_actions['preview'], $update_actions['activate']);
+                       if ( ! $this->result || is_wp_error( $this->result ) || is_network_admin() )
+                               unset( $update_actions['preview'], $update_actions['activate'] );
                }
 
                $update_actions['themes_page'] = '<a href="' . self_admin_url('themes.php') . '" title="' . esc_attr__('Return to Themes page') . '" target="_parent">' . __('Return to Themes page') . '</a>';
                }
 
                $update_actions['themes_page'] = '<a href="' . self_admin_url('themes.php') . '" title="' . esc_attr__('Return to Themes page') . '" target="_parent">' . __('Return to Themes page') . '</a>';
@@ -1563,4 +1676,4 @@ class File_Upload_Upgrader {
 
                return true;
        }
 
                return true;
        }
-}
+}
\ No newline at end of file
index 09cb2156cc85bf455c698d7fcb9ec471cdb83bd8..adb8321475528961f8de6e483acd0322453217dc 100644 (file)
@@ -209,9 +209,9 @@ class WP_Users_List_Table extends WP_List_Table {
         * @since 2.1.0
         *
         * @param object $user_object
         * @since 2.1.0
         *
         * @param object $user_object
-        * @param string $style Optional. Attributes added to the TR element.  Must be sanitized.
+        * @param string $style Optional. Attributes added to the TR element. Must be sanitized.
         * @param string $role Key for the $wp_roles array.
         * @param string $role Key for the $wp_roles array.
-        * @param int $numposts Optional. Post count to display for this user.  Defaults to zero, as in, a new user has made zero posts.
+        * @param int $numposts Optional. Post count to display for this user. Defaults to zero, as in, a new user has made zero posts.
         * @return string
         */
        function single_row( $user_object, $style = '', $role = '', $numposts = 0 ) {
         * @return string
         */
        function single_row( $user_object, $style = '', $role = '', $numposts = 0 ) {
@@ -316,5 +316,3 @@ class WP_Users_List_Table extends WP_List_Table {
                return $r;
        }
 }
                return $r;
        }
 }
-
-?>
index d731130a53836edb66d57e71fc37c5513685157c..8458911575e1a8e68dffcdcd702e29d3e6872e46 100644 (file)
@@ -156,4 +156,3 @@ function enqueue_comment_hotkeys_js() {
        if ( 'true' == get_user_option( 'comment_shortcuts' ) )
                wp_enqueue_script( 'jquery-table-hotkeys' );
 }
        if ( 'true' == get_user_option( 'comment_shortcuts' ) )
                wp_enqueue_script( 'jquery-table-hotkeys' );
 }
-?>
index 008a4fddb72b80b6e1af7b603ed617bc35985878..6e7d5f0d0726e8ff692b902dccf85cb311030e63 100644 (file)
@@ -86,8 +86,8 @@ function wp_dashboard_setup() {
        if ( !isset( $widget_options['dashboard_primary'] ) ) {
                $update = true;
                $widget_options['dashboard_primary'] = array(
        if ( !isset( $widget_options['dashboard_primary'] ) ) {
                $update = true;
                $widget_options['dashboard_primary'] = array(
-                       'link' => apply_filters( 'dashboard_primary_link',  __( 'http://wordpress.org/news/' ) ),
-                       'url' => apply_filters( 'dashboard_primary_feed',  __( 'http://wordpress.org/news/feed/' ) ),
+                       'link' => apply_filters( 'dashboard_primary_link', __( 'http://wordpress.org/news/' ) ),
+                       'url' => apply_filters( 'dashboard_primary_feed', __( 'http://wordpress.org/news/feed/' ) ),
                        'title' => apply_filters( 'dashboard_primary_title', __( 'WordPress Blog' ) ),
                        'items' => 2,
                        'show_summary' => 1,
                        'title' => apply_filters( 'dashboard_primary_title', __( 'WordPress Blog' ) ),
                        'items' => 2,
                        'show_summary' => 1,
@@ -101,8 +101,8 @@ function wp_dashboard_setup() {
        if ( !isset( $widget_options['dashboard_secondary'] ) ) {
                $update = true;
                $widget_options['dashboard_secondary'] = array(
        if ( !isset( $widget_options['dashboard_secondary'] ) ) {
                $update = true;
                $widget_options['dashboard_secondary'] = array(
-                       'link' => apply_filters( 'dashboard_secondary_link',  __( 'http://planet.wordpress.org/' ) ),
-                       'url' => apply_filters( 'dashboard_secondary_feed',  __( 'http://planet.wordpress.org/feed/' ) ),
+                       'link' => apply_filters( 'dashboard_secondary_link', __( 'http://planet.wordpress.org/' ) ),
+                       'url' => apply_filters( 'dashboard_secondary_feed', __( 'http://planet.wordpress.org/feed/' ) ),
                        'title' => apply_filters( 'dashboard_secondary_title', __( 'Other WordPress News' ) ),
                        'items' => 5,
                        'show_summary' => 0,
                        'title' => apply_filters( 'dashboard_secondary_title', __( 'Other WordPress News' ) ),
                        'items' => 5,
                        'show_summary' => 0,
@@ -193,54 +193,29 @@ function _wp_dashboard_control_callback( $dashboard, $meta_box ) {
  * @since 2.5.0
  */
 function wp_dashboard() {
  * @since 2.5.0
  */
 function wp_dashboard() {
-       global $screen_layout_columns;
-
        $screen = get_current_screen();
        $screen = get_current_screen();
+       $class = 'columns-' . get_current_screen()->get_columns();
 
 
-       $hide2 = $hide3 = $hide4 = '';
-       switch ( $screen_layout_columns ) {
-               case 4:
-                       $width = 'width:25%;';
-                       break;
-               case 3:
-                       $width = 'width:33.333333%;';
-                       $hide4 = 'display:none;';
-                       break;
-               case 2:
-                       $width = 'width:50%;';
-                       $hide3 = $hide4 = 'display:none;';
-                       break;
-               default:
-                       $width = 'width:100%;';
-                       $hide2 = $hide3 = $hide4 = 'display:none;';
-       }
-?>
-<div id="dashboard-widgets" class="metabox-holder">
-<?php
-       echo "\t<div id='postbox-container-1' class='postbox-container' style='$width'>\n";
-       do_meta_boxes( $screen->id, 'normal', '' );
-
-       echo "\t</div><div id='postbox-container-2' class='postbox-container' style='{$hide2}$width'>\n";
-       do_meta_boxes( $screen->id, 'side', '' );
-
-       echo "\t</div><div id='postbox-container-3' class='postbox-container' style='{$hide3}$width'>\n";
-       do_meta_boxes( $screen->id, 'column3', '' );
-
-       echo "\t</div><div id='postbox-container-4' class='postbox-container' style='{$hide4}$width'>\n";
-       do_meta_boxes( $screen->id, 'column4', '' );
 ?>
 ?>
-</div></div>
+<div id="dashboard-widgets" class="metabox-holder <?php echo $class; ?>">
+       <div id='postbox-container-1' class='postbox-container'>
+       <?php do_meta_boxes( $screen->id, 'normal', '' ); ?>
+       </div>
+       <div id='postbox-container-2' class='postbox-container'>
+       <?php do_meta_boxes( $screen->id, 'side', '' ); ?>
+       </div>
+       <div id='postbox-container-3' class='postbox-container'>
+       <?php do_meta_boxes( $screen->id, 'column3', '' ); ?>
+       </div>
+       <div id='postbox-container-4' class='postbox-container'>
+       <?php do_meta_boxes( $screen->id, 'column4', '' ); ?>
+       </div>
+</div>
 
 
-<form style="display:none" method="get" action="">
-       <p>
 <?php
        wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
        wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false );
 <?php
        wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
        wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false );
-?>
-       </p>
-</form>
 
 
-<?php
 }
 
 /* Dashboard Widgets */
 }
 
 /* Dashboard Widgets */
@@ -273,7 +248,7 @@ function wp_dashboard_right_now() {
 
        echo '</tr><tr>';
        /* TODO: Show status breakdown on hover
 
        echo '</tr><tr>';
        /* TODO: Show status breakdown on hover
-       if ( $can_edit_pages && !empty($num_pages->publish) ) { // how many pages is not exposed in feeds.  Don't show if !current_user_can
+       if ( $can_edit_pages && !empty($num_pages->publish) ) { // how many pages is not exposed in feeds. Don't show if !current_user_can
                $post_type_texts[] = '<a href="edit-pages.php">'.sprintf( _n( '%s page', '%s pages', $num_pages->publish ), number_format_i18n( $num_pages->publish ) ).'</a>';
        }
        if ( $can_edit_posts && !empty($num_posts->draft) ) {
                $post_type_texts[] = '<a href="edit-pages.php">'.sprintf( _n( '%s page', '%s pages', $num_pages->publish ), number_format_i18n( $num_pages->publish ) ).'</a>';
        }
        if ( $can_edit_posts && !empty($num_posts->draft) ) {
@@ -327,7 +302,6 @@ function wp_dashboard_right_now() {
        do_action('right_now_content_table_end');
        echo "\n\t</table>\n\t</div>";
 
        do_action('right_now_content_table_end');
        echo "\n\t</table>\n\t</div>";
 
-
        echo "\n\t".'<div class="table table_discussion">';
        echo "\n\t".'<p class="sub">' . __('Discussion') . '</p>'."\n\t".'<table>';
        echo "\n\t".'<tr class="first">';
        echo "\n\t".'<div class="table table_discussion">';
        echo "\n\t".'<p class="sub">' . __('Discussion') . '</p>'."\n\t".'<table>';
        echo "\n\t".'<tr class="first">';
@@ -384,11 +358,11 @@ function wp_dashboard_right_now() {
        echo "\n\t</table>\n\t</div>";
 
        echo "\n\t".'<div class="versions">';
        echo "\n\t</table>\n\t</div>";
 
        echo "\n\t".'<div class="versions">';
-       $ct = current_theme_info();
+       $theme = wp_get_theme();
 
        echo "\n\t<p>";
 
 
        echo "\n\t<p>";
 
-       if ( empty( $ct->stylesheet_dir ) ) {
+       if ( $theme->errors() ) {
                if ( ! is_multisite() || is_super_admin() )
                        echo '<span class="error-message">' . __('ERROR: The themes directory is either empty or doesn&#8217;t exist. Please check your installation.') . '</span>';
        } elseif ( ! empty($wp_registered_sidebars) ) {
                if ( ! is_multisite() || is_super_admin() )
                        echo '<span class="error-message">' . __('ERROR: The themes directory is either empty or doesn&#8217;t exist. Please check your installation.') . '</span>';
        } elseif ( ! empty($wp_registered_sidebars) ) {
@@ -402,7 +376,7 @@ function wp_dashboard_right_now() {
                }
                $num = number_format_i18n( $num_widgets );
 
                }
                $num = number_format_i18n( $num_widgets );
 
-               $switch_themes = $ct->title;
+               $switch_themes = $theme->display('Name');
                if ( current_user_can( 'switch_themes') )
                        $switch_themes = '<a href="themes.php">' . $switch_themes . '</a>';
                if ( current_user_can( 'edit_theme_options' ) ) {
                if ( current_user_can( 'switch_themes') )
                        $switch_themes = '<a href="themes.php">' . $switch_themes . '</a>';
                if ( current_user_can( 'edit_theme_options' ) ) {
@@ -412,9 +386,9 @@ function wp_dashboard_right_now() {
                }
        } else {
                if ( current_user_can( 'switch_themes' ) )
                }
        } else {
                if ( current_user_can( 'switch_themes' ) )
-                       printf( __('Theme <span class="b"><a href="themes.php">%1$s</a></span>'), $ct->title );
+                       printf( __('Theme <span class="b"><a href="themes.php">%1$s</a></span>'), $theme->display('Name') );
                else
                else
-                       printf( __('Theme <span class="b">%1$s</span>'), $ct->title );
+                       printf( __('Theme <span class="b">%1$s</span>'), $theme->display('Name') );
        }
        echo '</p>';
 
        }
        echo '</p>';
 
@@ -462,16 +436,16 @@ function wp_network_dashboard_right_now() {
        <p class="youhave"><?php echo $sentence; ?></p>
        <?php do_action( 'wpmuadminresult', '' ); ?>
 
        <p class="youhave"><?php echo $sentence; ?></p>
        <?php do_action( 'wpmuadminresult', '' ); ?>
 
-       <form name="searchform" action="<?php echo network_admin_url('users.php'); ?>" method="get">
+       <form action="<?php echo network_admin_url('users.php'); ?>" method="get">
                <p>
                <p>
-                       <input type="text" name="s" value="" size="17" />
+                       <input type="search" name="s" value="" size="30" autocomplete="off" />
                        <?php submit_button( __( 'Search Users' ), 'button', 'submit', false, array( 'id' => 'submit_users' ) ); ?>
                </p>
        </form>
 
                        <?php submit_button( __( 'Search Users' ), 'button', 'submit', false, array( 'id' => 'submit_users' ) ); ?>
                </p>
        </form>
 
-       <form name="searchform" action="<?php echo network_admin_url('sites.php'); ?>" method="get">
+       <form action="<?php echo network_admin_url('sites.php'); ?>" method="get">
                <p>
                <p>
-                       <input type="text" name="s" value="" size="17" />
+                       <input type="search" name="s" value="" size="30" autocomplete="off" />
                        <?php submit_button( __( 'Search Sites' ), 'button', 'submit', false, array( 'id' => 'submit_sites' ) ); ?>
                </p>
        </form>
                        <?php submit_button( __( 'Search Sites' ), 'button', 'submit', false, array( 'id' => 'submit_sites' ) ); ?>
                </p>
        </form>
@@ -615,11 +589,6 @@ function wp_dashboard_recent_drafts( $drafts = false ) {
 function wp_dashboard_recent_comments() {
        global $wpdb;
 
 function wp_dashboard_recent_comments() {
        global $wpdb;
 
-       if ( current_user_can('edit_posts') )
-               $allowed_states = array('0', '1');
-       else
-               $allowed_states = array('1');
-
        // Select all comment types and filter out spam later for better query performance.
        $comments = array();
        $start = 0;
        // Select all comment types and filter out spam later for better query performance.
        $comments = array();
        $start = 0;
@@ -628,44 +597,36 @@ function wp_dashboard_recent_comments() {
        $total_items = isset( $widgets['dashboard_recent_comments'] ) && isset( $widgets['dashboard_recent_comments']['items'] )
                ? absint( $widgets['dashboard_recent_comments']['items'] ) : 5;
 
        $total_items = isset( $widgets['dashboard_recent_comments'] ) && isset( $widgets['dashboard_recent_comments']['items'] )
                ? absint( $widgets['dashboard_recent_comments']['items'] ) : 5;
 
-       while ( count( $comments ) < $total_items && $possible = $wpdb->get_results( "SELECT * FROM $wpdb->comments c LEFT JOIN $wpdb->posts p ON c.comment_post_ID = p.ID WHERE p.post_status != 'trash' ORDER BY c.comment_date_gmt DESC LIMIT $start, 50" ) ) {
+       $comments_query = array( 'number' => $total_items * 5, 'offset' => 0 );
+       if ( ! current_user_can( 'edit_posts' ) )
+               $comments_query['status'] = 'approve';
 
 
+       while ( count( $comments ) < $total_items && $possible = get_comments( $comments_query ) ) {
                foreach ( $possible as $comment ) {
                foreach ( $possible as $comment ) {
-                       if ( count( $comments ) >= $total_items )
-                               break;
-                       if ( in_array( $comment->comment_approved, $allowed_states ) && current_user_can( 'read_post', $comment->comment_post_ID ) )
-                               $comments[] = $comment;
+                       if ( ! current_user_can( 'read_post', $comment->comment_post_ID ) )
+                               continue;
+                       $comments[] = $comment;
+                       if ( count( $comments ) == $total_items )
+                               break 2;
                }
                }
-
-               $start = $start + 50;
+               $comments_query['offset'] += $comments_query['number'];
+               $comments_query['number'] = $total_items * 10;
        }
 
        }
 
-       if ( $comments ) :
-?>
-
-               <div id="the-comment-list" class="list:comment">
-<?php
+       if ( $comments ) {
+               echo '<div id="the-comment-list" class="list:comment">';
                foreach ( $comments as $comment )
                        _wp_dashboard_recent_comments_row( $comment );
                foreach ( $comments as $comment )
                        _wp_dashboard_recent_comments_row( $comment );
-?>
+               echo '</div>';
 
 
-               </div>
-
-<?php
-               if ( current_user_can('edit_posts') ) { ?>
-                       <?php _get_list_table('WP_Comments_List_Table')->views(); ?>
-<?php  }
+               if ( current_user_can('edit_posts') )
+                       _get_list_table('WP_Comments_List_Table')->views();
 
                wp_comment_reply( -1, false, 'dashboard', false );
                wp_comment_trashnotice();
 
                wp_comment_reply( -1, false, 'dashboard', false );
                wp_comment_trashnotice();
-
-       else :
-?>
-
-       <p><?php _e( 'No comments yet.' ); ?></p>
-
-<?php
-       endif; // $comments;
+       } else {
+               echo '<p>' . __( 'No comments yet.' ) . '</p>';
+       }
 }
 
 function _wp_dashboard_recent_comments_row( &$comment, $show_date = true ) {
 }
 
 function _wp_dashboard_recent_comments_row( &$comment, $show_date = true ) {
@@ -700,7 +661,7 @@ function _wp_dashboard_recent_comments_row( &$comment, $show_date = true ) {
                $actions['unapprove'] = "<a href='$unapprove_url' class='dim:the-comment-list:comment-$comment->comment_ID:unapproved:e7e7d3:e7e7d3:new=unapproved vim-u' title='" . esc_attr__( 'Unapprove this comment' ) . "'>" . __( 'Unapprove' ) . '</a>';
                $actions['edit'] = "<a href='comment.php?action=editcomment&amp;c={$comment->comment_ID}' title='" . esc_attr__('Edit comment') . "'>". __('Edit') . '</a>';
                $actions['reply'] = '<a onclick="commentReply.open(\''.$comment->comment_ID.'\',\''.$comment->comment_post_ID.'\');return false;" class="vim-r hide-if-no-js" title="'.esc_attr__('Reply to this comment').'" href="#">' . __('Reply') . '</a>';
                $actions['unapprove'] = "<a href='$unapprove_url' class='dim:the-comment-list:comment-$comment->comment_ID:unapproved:e7e7d3:e7e7d3:new=unapproved vim-u' title='" . esc_attr__( 'Unapprove this comment' ) . "'>" . __( 'Unapprove' ) . '</a>';
                $actions['edit'] = "<a href='comment.php?action=editcomment&amp;c={$comment->comment_ID}' title='" . esc_attr__('Edit comment') . "'>". __('Edit') . '</a>';
                $actions['reply'] = '<a onclick="commentReply.open(\''.$comment->comment_ID.'\',\''.$comment->comment_post_ID.'\');return false;" class="vim-r hide-if-no-js" title="'.esc_attr__('Reply to this comment').'" href="#">' . __('Reply') . '</a>';
-               $actions['spam'] = "<a href='$spam_url' class='delete:the-comment-list:comment-$comment->comment_ID::spam=1 vim-s vim-destructive' title='" . esc_attr__( 'Mark this comment as spam' ) . "'>" . /* translators: mark as spam link */  _x( 'Spam', 'verb' ) . '</a>';
+               $actions['spam'] = "<a href='$spam_url' class='delete:the-comment-list:comment-$comment->comment_ID::spam=1 vim-s vim-destructive' title='" . esc_attr__( 'Mark this comment as spam' ) . "'>" . /* translators: mark as spam link */ _x( 'Spam', 'verb' ) . '</a>';
                if ( !EMPTY_TRASH_DAYS )
                        $actions['delete'] = "<a href='$delete_url' class='delete:the-comment-list:comment-$comment->comment_ID::trash=1 delete vim-d vim-destructive'>" . __('Delete Permanently') . '</a>';
                else
                if ( !EMPTY_TRASH_DAYS )
                        $actions['delete'] = "<a href='$delete_url' class='delete:the-comment-list:comment-$comment->comment_ID::trash=1 delete vim-d vim-destructive'>" . __('Delete Permanently') . '</a>';
                else
@@ -937,8 +898,7 @@ function wp_dashboard_secondary_output() {
 function wp_dashboard_plugins() {
        wp_dashboard_cached_rss_widget( 'dashboard_plugins', 'wp_dashboard_plugins_output', array(
                'http://wordpress.org/extend/plugins/rss/browse/popular/',
 function wp_dashboard_plugins() {
        wp_dashboard_cached_rss_widget( 'dashboard_plugins', 'wp_dashboard_plugins_output', array(
                'http://wordpress.org/extend/plugins/rss/browse/popular/',
-               'http://wordpress.org/extend/plugins/rss/browse/new/',
-               'http://wordpress.org/extend/plugins/rss/browse/updated/'
+               'http://wordpress.org/extend/plugins/rss/browse/new/'
        ) );
 }
 
        ) );
 }
 
@@ -950,14 +910,13 @@ function wp_dashboard_plugins() {
 function wp_dashboard_plugins_output() {
        $popular = fetch_feed( 'http://wordpress.org/extend/plugins/rss/browse/popular/' );
        $new     = fetch_feed( 'http://wordpress.org/extend/plugins/rss/browse/new/' );
 function wp_dashboard_plugins_output() {
        $popular = fetch_feed( 'http://wordpress.org/extend/plugins/rss/browse/popular/' );
        $new     = fetch_feed( 'http://wordpress.org/extend/plugins/rss/browse/new/' );
-       $updated = fetch_feed( 'http://wordpress.org/extend/plugins/rss/browse/updated/' );
 
        if ( false === $plugin_slugs = get_transient( 'plugin_slugs' ) ) {
                $plugin_slugs = array_keys( get_plugins() );
                set_transient( 'plugin_slugs', $plugin_slugs, 86400 );
        }
 
 
        if ( false === $plugin_slugs = get_transient( 'plugin_slugs' ) ) {
                $plugin_slugs = array_keys( get_plugins() );
                set_transient( 'plugin_slugs', $plugin_slugs, 86400 );
        }
 
-       foreach ( array( 'popular' => __('Most Popular'), 'new' => __('Newest Plugins'), 'updated' => __('Recently Updated') ) as $feed => $label ) {
+       foreach ( array( 'popular' => __('Most Popular'), 'new' => __('Newest Plugins') ) as $feed => $label ) {
                if ( is_wp_error($$feed) || !$$feed->get_item_quantity() )
                        continue;
 
                if ( is_wp_error($$feed) || !$$feed->get_item_quantity() )
                        continue;
 
@@ -1115,7 +1074,7 @@ function wp_dashboard_rss_control( $widget_id, $form_inputs = array() ) {
        if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget-rss'][$number]) ) {
                $_POST['widget-rss'][$number] = stripslashes_deep( $_POST['widget-rss'][$number] );
                $widget_options[$widget_id] = wp_widget_rss_process( $_POST['widget-rss'][$number] );
        if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget-rss'][$number]) ) {
                $_POST['widget-rss'][$number] = stripslashes_deep( $_POST['widget-rss'][$number] );
                $widget_options[$widget_id] = wp_widget_rss_process( $_POST['widget-rss'][$number] );
-               // title is optional.  If black, fill it if possible
+               // title is optional. If black, fill it if possible
                if ( !$widget_options[$widget_id]['title'] && isset($_POST['widget-rss'][$number]['title']) ) {
                        $rss = fetch_feed($widget_options[$widget_id]['url']);
                        if ( is_wp_error($rss) ) {
                if ( !$widget_options[$widget_id]['title'] && isset($_POST['widget-rss'][$number]['title']) ) {
                        $rss = fetch_feed($widget_options[$widget_id]['url']);
                        if ( is_wp_error($rss) ) {
@@ -1193,7 +1152,13 @@ function wp_dashboard_browser_nag() {
                        $browser_nag_class = ' has-browser-icon';
                }
                $notice .= "<p class='browser-update-nag{$browser_nag_class}'>{$msg}</p>";
                        $browser_nag_class = ' has-browser-icon';
                }
                $notice .= "<p class='browser-update-nag{$browser_nag_class}'>{$msg}</p>";
-               $notice .= '<p>' . sprintf( __( '<a href="%1$s" class="update-browser-link">Update %2$s</a> or learn how to <a href="%3$s" class="browse-happy-link">browse happy</a>' ), esc_attr( $response['update_url'] ), esc_html( $response['name'] ), 'http://browsehappy.com/' ) . '</p>';
+
+               $browsehappy = 'http://browsehappy.com/';
+               $locale = get_locale();
+               if ( 'en_US' !== $locale )
+                       $browsehappy = add_query_arg( 'locale', $locale, $browsehappy );
+
+               $notice .= '<p>' . sprintf( __( '<a href="%1$s" class="update-browser-link">Update %2$s</a> or learn how to <a href="%3$s" class="browse-happy-link">browse happy</a>' ), esc_attr( $response['update_url'] ), esc_html( $response['name'] ), esc_url( $browsehappy ) ) . '</p>';
                $notice .= '<p class="hide-if-no-js"><a href="" class="dismiss">' . __( 'Dismiss' ) . '</a></p>';
                $notice .= '<div class="clear"></div>';
        }
                $notice .= '<p class="hide-if-no-js"><a href="" class="dismiss">' . __( 'Dismiss' ) . '</a></p>';
                $notice .= '<div class="clear"></div>';
        }
@@ -1228,7 +1193,7 @@ function wp_check_browser_version() {
 
                $options = array(
                        'body'                  => array( 'useragent' => $_SERVER['HTTP_USER_AGENT'] ),
 
                $options = array(
                        'body'                  => array( 'useragent' => $_SERVER['HTTP_USER_AGENT'] ),
-                       'user-agent'    => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )
+                       'user-agent'    => 'WordPress/' . $wp_version . '; ' . home_url()
                );
 
                $response = wp_remote_post( 'http://api.wordpress.org/core/browse-happy/1.0/', $options );
                );
 
                $response = wp_remote_post( 'http://api.wordpress.org/core/browse-happy/1.0/', $options );
@@ -1247,9 +1212,9 @@ function wp_check_browser_version() {
                 *  'img_src' - string - An image representing the browser
                 *  'img_src_ssl' - string - An image (over SSL) representing the browser
                 */
                 *  'img_src' - string - An image representing the browser
                 *  'img_src_ssl' - string - An image (over SSL) representing the browser
                 */
-               $response = unserialize( wp_remote_retrieve_body( $response ) );
+               $response = maybe_unserialize( wp_remote_retrieve_body( $response ) );
 
 
-               if ( ! $response )
+               if ( ! is_array( $response ) )
                        return false;
 
                set_site_transient( 'browser_' . $key, $response, 604800 ); // cache for 1 week
                        return false;
 
                set_site_transient( 'browser_' . $key, $response, 604800 ); // cache for 1 week
@@ -1266,7 +1231,7 @@ function wp_dashboard_empty() {}
 /**
  * Displays a welcome panel to introduce users to WordPress.
  *
 /**
  * Displays a welcome panel to introduce users to WordPress.
  *
- * @since 3.3
+ * @since 3.3.0
  */
 function wp_welcome_panel() {
        global $wp_version;
  */
 function wp_welcome_panel() {
        global $wp_version;
@@ -1290,7 +1255,7 @@ function wp_welcome_panel() {
        <div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>
 
        <div class="welcome-panel-content">
        <div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>
 
        <div class="welcome-panel-content">
-       <h3><?php _e( 'Welcome to your new WordPress site! ' ); ?></h3>
+       <h3><?php _e( 'Welcome to your new WordPress site!' ); ?></h3>
        <p class="about-description"><?php _e( 'If you need help getting started, check out our documentation on <a href="http://codex.wordpress.org/First_Steps_With_WordPress">First Steps with WordPress</a>. If you&#8217;d rather dive right in, here are a few things most people do first when they set up a new WordPress site. If you need help, use the Help tabs in the upper right corner to get information on how to use your current screen and where to go for more assistance.' ); ?></p>
        <div class="welcome-panel-column-container">
        <div class="welcome-panel-column">
        <p class="about-description"><?php _e( 'If you need help getting started, check out our documentation on <a href="http://codex.wordpress.org/First_Steps_With_WordPress">First Steps with WordPress</a>. If you&#8217;d rather dive right in, here are a few things most people do first when they set up a new WordPress site. If you need help, use the Help tabs in the upper right corner to get information on how to use your current screen and where to go for more assistance.' ); ?></p>
        <div class="welcome-panel-column-container">
        <div class="welcome-panel-column">
@@ -1316,14 +1281,14 @@ function wp_welcome_panel() {
        <div class="welcome-panel-column welcome-panel-last">
                <h4><span class="icon16 icon-appearance"></span> <?php _e( 'Customize Your Site' ); ?></h4>
                <?php
        <div class="welcome-panel-column welcome-panel-last">
                <h4><span class="icon16 icon-appearance"></span> <?php _e( 'Customize Your Site' ); ?></h4>
                <?php
-               $ct = current_theme_info();
-               if ( empty ( $ct->stylesheet_dir ) ) :
+               $theme = wp_get_theme();
+               if ( $theme->errors() ) :
                        echo '<p>';
                        printf( __( '<a href="%s">Install a theme</a> to get started customizing your site.' ), esc_url( admin_url( 'themes.php' ) ) );
                        echo '</p>';
                else:
                        $customize_links = array();
                        echo '<p>';
                        printf( __( '<a href="%s">Install a theme</a> to get started customizing your site.' ), esc_url( admin_url( 'themes.php' ) ) );
                        echo '</p>';
                else:
                        $customize_links = array();
-                       if ( 'twentyeleven' == $ct->stylesheet )
+                       if ( 'twentyeleven' == $theme->get_stylesheet() )
                                $customize_links[] = sprintf( __( '<a href="%s">Choose light or dark</a>' ), esc_url( admin_url( 'themes.php?page=theme_options' ) ) );
 
                        if ( current_theme_supports( 'custom-background' ) )
                                $customize_links[] = sprintf( __( '<a href="%s">Choose light or dark</a>' ), esc_url( admin_url( 'themes.php?page=theme_options' ) ) );
 
                        if ( current_theme_supports( 'custom-background' ) )
@@ -1337,7 +1302,7 @@ function wp_welcome_panel() {
 
                        if ( ! empty( $customize_links ) ) {
                                echo '<p>';
 
                        if ( ! empty( $customize_links ) ) {
                                echo '<p>';
-                               printf( __( 'Use the current theme &mdash; %1$s &mdash; or <a href="%2$s">choose a new one</a>. If you stick with %3$s, here are a few ways to make your site look unique.' ), $ct->title, esc_url( admin_url( 'themes.php' ) ), $ct->title );
+                               printf( __( 'Use the current theme &mdash; %1$s &mdash; or <a href="%2$s">choose a new one</a>. If you stick with %1$s, here are a few ways to make your site look unique.' ), $theme->display('Name'), esc_url( admin_url( 'themes.php' ) ) );
                                echo '</p>';
                        ?>
                        <ul>
                                echo '</p>';
                        ?>
                        <ul>
@@ -1348,7 +1313,7 @@ function wp_welcome_panel() {
                        <?php
                        } else {
                                echo '<p>';
                        <?php
                        } else {
                                echo '<p>';
-                               printf( __( 'Use the current theme &mdash; %1$s &mdash; or <a href="%2$s">choose a new one</a>.' ), $ct->title, esc_url( admin_url( 'themes.php' ) ) );
+                               printf( __( 'Use the current theme &mdash; %1$s &mdash; or <a href="%2$s">choose a new one</a>.' ), $theme->display('Name'), esc_url( admin_url( 'themes.php' ) ) );
                                echo '</p>';
                        }
                endif; ?>
                                echo '</p>';
                        }
                endif; ?>
@@ -1359,5 +1324,3 @@ function wp_welcome_panel() {
        </div>
        <?php
 }
        </div>
        <?php
 }
-
-?>
index f38bafc765b091efb3a9f610d275ff3225c1f74f..747b228d535897b2aa674c412f35371dbaddf966 100644 (file)
@@ -133,7 +133,7 @@ function wp_dropdown_cats( $currentcat = 0, $currentparent = 0, $parent = 0, $le
  * @deprecated Use register_setting()
  * @see register_setting()
  *
  * @deprecated Use register_setting()
  * @see register_setting()
  *
- * @param string $option_group A settings group name.  Should correspond to a whitelisted option key name.
+ * @param string $option_group A settings group name. Should correspond to a whitelisted option key name.
  *     Default whitelisted option key names include "general," "discussion," and "reading," among others.
  * @param string $option_name The name of an option to sanitize and save.
  * @param unknown_type $sanitize_callback A callback function that sanitizes the option's value.
  *     Default whitelisted option key names include "general," "discussion," and "reading," among others.
  * @param string $option_name The name of an option to sanitize and save.
  * @param unknown_type $sanitize_callback A callback function that sanitizes the option's value.
@@ -197,7 +197,6 @@ function use_codepress() {
        return;
 }
 
        return;
 }
 
-
 /**
  * @deprecated 3.1.0
  *
 /**
  * @deprecated 3.1.0
  *
@@ -870,7 +869,7 @@ function type_url_form_file() {
  * @deprecated Use get_current_screen()->add_help_tab()
  * @see WP_Screen
  *
  * @deprecated Use get_current_screen()->add_help_tab()
  * @see WP_Screen
  *
- * @param string    $screen The handle for the screen to add help to.  This is usually the hook name returned by the add_*_page() functions.
+ * @param string    $screen The handle for the screen to add help to. This is usually the hook name returned by the add_*_page() functions.
  * @param string    $help   The content of an 'Overview' help tab.
  */
 function add_contextual_help( $screen, $help ) {
  * @param string    $help   The content of an 'Overview' help tab.
  */
 function add_contextual_help( $screen, $help ) {
@@ -880,4 +879,63 @@ function add_contextual_help( $screen, $help ) {
                $screen = convert_to_screen( $screen );
 
        WP_Screen::add_old_compat_help( $screen, $help );
                $screen = convert_to_screen( $screen );
 
        WP_Screen::add_old_compat_help( $screen, $help );
+}
+
+/**
+ * Get the allowed themes for the current blog.
+ *
+ * @since 3.0.0
+ * @deprecated 3.4.0
+ * @deprecated Use wp_get_themes()
+ * @see wp_get_themes()
+ *
+ * @return array $themes Array of allowed themes.
+ */
+function get_allowed_themes() {
+       _deprecated_function( __FUNCTION__, '3.4', "wp_get_themes( array( 'allowed' => true ) )" );
+
+       $themes = wp_get_themes( array( 'allowed' => true ) );
+
+       $wp_themes = array();
+       foreach ( $themes as $theme ) {
+               $wp_themes[ $theme->get('Name') ] = $theme;
+       }
+
+       return $wp_themes;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since 1.5.0
+ *
+ * @return unknown
+ */
+function get_broken_themes() {
+       _deprecated_function( __FUNCTION__, '3.4', "wp_get_themes( array( 'errors' => true )" );
+
+       $themes = wp_get_themes( array( 'errors' => true ) );
+       $broken = array();
+       foreach ( $themes as $theme ) {
+               $name = $theme->get('Name');
+               $broken[ $name ] = array(
+                       'Name' => $name,
+                       'Title' => $name,
+                       'Description' => $theme->errors()->get_error_message(),
+               );
+       }
+       return $broken;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since 2.0.0
+ *
+ * @return unknown
+ */
+function current_theme_info() {
+       _deprecated_function( __FUNCTION__, '3.4', 'wp_get_theme()' );
+
+       return wp_get_theme();
 }
\ No newline at end of file
 }
\ No newline at end of file
index 6aa85a85a3dc89bcaf6041310493903553259c55..e9c909d621ea3bfa836292a0c3b3e3fb4f2786a8 100644 (file)
@@ -13,7 +13,7 @@
  *
  * @since 2.5.0
  */
  *
  * @since 2.5.0
  */
-define( 'WXR_VERSION', '1.1' );
+define( 'WXR_VERSION', '1.2' );
 
 /**
  * Generates the WXR export file for download
 
 /**
  * Generates the WXR export file for download
@@ -117,13 +117,14 @@ function export_wp( $args = array() ) {
         * @since 2.1.0
         *
         * @param string $str String to wrap in XML CDATA tag.
         * @since 2.1.0
         *
         * @param string $str String to wrap in XML CDATA tag.
+        * @return string
         */
        function wxr_cdata( $str ) {
                if ( seems_utf8( $str ) == false )
                        $str = utf8_encode( $str );
 
                // $str = ent2ncr(esc_html($str));
         */
        function wxr_cdata( $str ) {
                if ( seems_utf8( $str ) == false )
                        $str = utf8_encode( $str );
 
                // $str = ent2ncr(esc_html($str));
-               $str = "<![CDATA[$str" . ( ( substr( $str, -1 ) == ']' ) ? ' ' : '' ) . ']]>';
+               $str = '<![CDATA[' . str_replace( ']]>', ']]]]><![CDATA[>', $str ) . ']]>';
 
                return $str;
        }
 
                return $str;
        }
@@ -331,7 +332,7 @@ function export_wp( $args = array() ) {
        <link><?php bloginfo_rss( 'url' ); ?></link>
        <description><?php bloginfo_rss( 'description' ); ?></description>
        <pubDate><?php echo date( 'D, d M Y H:i:s +0000' ); ?></pubDate>
        <link><?php bloginfo_rss( 'url' ); ?></link>
        <description><?php bloginfo_rss( 'description' ); ?></description>
        <pubDate><?php echo date( 'D, d M Y H:i:s +0000' ); ?></pubDate>
-       <language><?php echo get_option( 'rss_language' ); ?></language>
+       <language><?php bloginfo_rss( 'language' ); ?></language>
        <wp:wxr_version><?php echo WXR_VERSION; ?></wp:wxr_version>
        <wp:base_site_url><?php echo wxr_site_url(); ?></wp:base_site_url>
        <wp:base_blog_url><?php bloginfo_rss( 'url' ); ?></wp:base_blog_url>
        <wp:wxr_version><?php echo WXR_VERSION; ?></wp:wxr_version>
        <wp:base_site_url><?php echo wxr_site_url(); ?></wp:base_site_url>
        <wp:base_blog_url><?php bloginfo_rss( 'url' ); ?></wp:base_blog_url>
index bf4ac85dc62deeeeb6122f2cee9feb6ab25c620b..9ff24384ccd5682c0361789d8819f373da65f56f 100644 (file)
@@ -65,7 +65,7 @@ function get_file_description( $file ) {
                        return sprintf( __( '%s Page Template' ), _cleanup_header_comment($name[1]) );
        }
 
                        return sprintf( __( '%s Page Template' ), _cleanup_header_comment($name[1]) );
        }
 
-       return basename( $file );
+       return trim( basename( $file ) );
 }
 
 /**
 }
 
 /**
@@ -81,7 +81,7 @@ function get_home_path() {
        $siteurl = get_option( 'siteurl' );
        if ( $home != '' && $home != $siteurl ) {
                $wp_path_rel_to_home = str_replace($home, '', $siteurl); /* $siteurl - $home */
        $siteurl = get_option( 'siteurl' );
        if ( $home != '' && $home != $siteurl ) {
                $wp_path_rel_to_home = str_replace($home, '', $siteurl); /* $siteurl - $home */
-               $pos = strpos($_SERVER["SCRIPT_FILENAME"], $wp_path_rel_to_home);
+               $pos = strrpos($_SERVER["SCRIPT_FILENAME"], $wp_path_rel_to_home);
                $home_path = substr($_SERVER["SCRIPT_FILENAME"], 0, $pos);
                $home_path = trailingslashit( $home_path );
        } else {
                $home_path = substr($_SERVER["SCRIPT_FILENAME"], 0, $pos);
                $home_path = trailingslashit( $home_path );
        } else {
@@ -157,7 +157,7 @@ function list_files( $folder = '', $levels = 100 ) {
  * Please note that the calling function must unlink() this itself.
  *
  * The filename is based off the passed parameter or defaults to the current unix timestamp,
  * Please note that the calling function must unlink() this itself.
  *
  * The filename is based off the passed parameter or defaults to the current unix timestamp,
- * while the directory can either be passed as well, or by leaving  it blank, default to a writable temporary directory.
+ * while the directory can either be passed as well, or by leaving it blank, default to a writable temporary directory.
  *
  * @since 2.6.0
  *
  *
  * @since 2.6.0
  *
@@ -240,7 +240,7 @@ function wp_handle_upload( &$file, $overrides = false, $time = null ) {
        // You may define your own function and pass the name in $overrides['upload_error_handler']
        $upload_error_handler = 'wp_handle_upload_error';
 
        // You may define your own function and pass the name in $overrides['upload_error_handler']
        $upload_error_handler = 'wp_handle_upload_error';
 
-       // You may have had one or more 'wp_handle_upload_prefilter' functions error out the file.  Handle that gracefully.
+       // You may have had one or more 'wp_handle_upload_prefilter' functions error out the file. Handle that gracefully.
        if ( isset( $file['error'] ) && !is_numeric( $file['error'] ) && $file['error'] )
                return $upload_error_handler( $file, $file['error'] );
 
        if ( isset( $file['error'] ) && !is_numeric( $file['error'] ) && $file['error'] )
                return $upload_error_handler( $file, $file['error'] );
 
@@ -323,30 +323,10 @@ function wp_handle_upload( &$file, $overrides = false, $time = null ) {
 
        $filename = wp_unique_filename( $uploads['path'], $file['name'], $unique_filename_callback );
 
 
        $filename = wp_unique_filename( $uploads['path'], $file['name'], $unique_filename_callback );
 
-       $tmp_file = wp_tempnam($filename);
-
        // Move the file to the uploads dir
        // Move the file to the uploads dir
-       if ( false === @ move_uploaded_file( $file['tmp_name'], $tmp_file ) )
-               return $upload_error_handler( $file, sprintf( __('The uploaded file could not be moved to %s.' ), $uploads['path'] ) );
-
-       // If a resize was requested, perform the resize.
-       $image_resize = isset( $_POST['image_resize'] ) && 'true' == $_POST['image_resize'];
-       $do_resize = apply_filters( 'wp_upload_resize', $image_resize );
-       $size = @getimagesize( $tmp_file );
-       if ( $do_resize && $size ) {
-               $old_temp = $tmp_file;
-               $tmp_file = image_resize( $tmp_file, (int) get_option('large_size_w'), (int) get_option('large_size_h'), 0, 'resized');
-               if ( ! is_wp_error($tmp_file) ) {
-                       unlink($old_temp);
-               } else {
-                       $tmp_file = $old_temp;
-               }
-       }
-
-       // Copy the temporary file into its destination
        $new_file = $uploads['path'] . "/$filename";
        $new_file = $uploads['path'] . "/$filename";
-       copy( $tmp_file, $new_file );
-       unlink($tmp_file);
+       if ( false === @ move_uploaded_file( $file['tmp_name'], $new_file ) )
+               return $upload_error_handler( $file, sprintf( __('The uploaded file could not be moved to %s.' ), $uploads['path'] ) );
 
        // Set correct file permissions
        $stat = stat( dirname( $new_file ));
 
        // Set correct file permissions
        $stat = stat( dirname( $new_file ));
@@ -364,7 +344,7 @@ function wp_handle_upload( &$file, $overrides = false, $time = null ) {
 
 /**
  * Handle sideloads, which is the process of retrieving a media item from another server instead of
 
 /**
  * Handle sideloads, which is the process of retrieving a media item from another server instead of
- * a traditional media upload.  This process involves sanitizing the filename, checking extensions
+ * a traditional media upload. This process involves sanitizing the filename, checking extensions
  * for mime type, and moving the file to the appropriate directory within the uploads directory.
  *
  * @since 2.6.0
  * for mime type, and moving the file to the appropriate directory within the uploads directory.
  *
  * @since 2.6.0
@@ -486,7 +466,7 @@ function wp_handle_sideload( &$file, $overrides = false ) {
 
 /**
  * Downloads a url to a local temporary file using the WordPress HTTP Class.
 
 /**
  * Downloads a url to a local temporary file using the WordPress HTTP Class.
- * Please note, That the calling function must unlink() the  file.
+ * Please note, That the calling function must unlink() the file.
  *
  * @since 2.5.0
  *
  *
  * @since 2.5.0
  *
@@ -648,7 +628,7 @@ function _unzip_file_ziparchive($file, $to, $needed_dirs = array() ) {
                        return new WP_Error('extract_failed', __('Could not extract file from archive.'), $info['name']);
 
                if ( ! $wp_filesystem->put_contents( $to . $info['name'], $contents, FS_CHMOD_FILE) )
                        return new WP_Error('extract_failed', __('Could not extract file from archive.'), $info['name']);
 
                if ( ! $wp_filesystem->put_contents( $to . $info['name'], $contents, FS_CHMOD_FILE) )
-                       return new WP_Error('copy_failed', __('Could not copy file.'), $to . $info['filename']);
+                       return new WP_Error('copy_failed', __('Could not copy file.'), $to . $info['name']);
        }
 
        $z->close();
        }
 
        $z->close();
@@ -884,7 +864,7 @@ function get_filesystem_method($args = array(), $context = false) {
 }
 
 /**
 }
 
 /**
- * Displays a form to the user to request for their FTP/SSH details in order to  connect to the filesystem.
+ * Displays a form to the user to request for their FTP/SSH details in order to connect to the filesystem.
  * All chosen/entered details are saved, Excluding the Password.
  *
  * Hostnames may be in the form of hostname:portnumber (eg: wordpress.org:2467) to specify an alternate FTP/SSH port.
  * All chosen/entered details are saved, Excluding the Password.
  *
  * Hostnames may be in the form of hostname:portnumber (eg: wordpress.org:2467) to specify an alternate FTP/SSH port.
@@ -896,7 +876,7 @@ function get_filesystem_method($args = array(), $context = false) {
  * @param string $form_post the URL to post the form to
  * @param string $type the chosen Filesystem method in use
  * @param boolean $error if the current request has failed to connect
  * @param string $form_post the URL to post the form to
  * @param string $type the chosen Filesystem method in use
  * @param boolean $error if the current request has failed to connect
- * @param string $context The directory which is needed access to, The write-test will be performed on  this directory by get_filesystem_method()
+ * @param string $context The directory which is needed access to, The write-test will be performed on this directory by get_filesystem_method()
  * @param string $extra_fields Extra POST fields which should be checked for to be included in the post.
  * @return boolean False on failure. True on success.
  */
  * @param string $extra_fields Extra POST fields which should be checked for to be included in the post.
  * @return boolean False on failure. True on success.
  */
@@ -1075,5 +1055,3 @@ submit_button( __( 'Proceed' ), 'button', 'upgrade' );
 <?php
        return false;
 }
 <?php
        return false;
 }
-
-?>
index 0e2027a1eac7106a566b3559116f41ab651599b8..d2d6dc2cf30f411a6dd977fdf107fb6aa11b852a 100644 (file)
@@ -67,7 +67,7 @@ function wp_image_editor($post_id, $msg = false) {
        <input type="hidden" id="imgedit-y-<?php echo $post_id; ?>" value="<?php echo $meta['height']; ?>" />
 
        <div id="imgedit-crop-<?php echo $post_id; ?>" class="imgedit-crop-wrap">
        <input type="hidden" id="imgedit-y-<?php echo $post_id; ?>" value="<?php echo $meta['height']; ?>" />
 
        <div id="imgedit-crop-<?php echo $post_id; ?>" class="imgedit-crop-wrap">
-       <img id="image-preview-<?php echo $post_id; ?>" onload="imageEdit.imgLoaded('<?php echo $post_id; ?>')" src="<?php echo admin_url('admin-ajax.php'); ?>?action=imgedit-preview&amp;_ajax_nonce=<?php echo $nonce; ?>&amp;postid=<?php echo $post_id; ?>&amp;rand=<?php echo rand(1, 99999); ?>" />
+       <img id="image-preview-<?php echo $post_id; ?>" onload="imageEdit.imgLoaded('<?php echo $post_id; ?>')" src="<?php echo admin_url( 'admin-ajax.php', 'relative' ); ?>?action=imgedit-preview&amp;_ajax_nonce=<?php echo $nonce; ?>&amp;postid=<?php echo $post_id; ?>&amp;rand=<?php echo rand(1, 99999); ?>" />
        </div>
 
        <div class="imgedit-submit">
        </div>
 
        <div class="imgedit-submit">
@@ -192,50 +192,11 @@ function wp_image_editor($post_id, $msg = false) {
        </tbody></table>
        <div class="imgedit-wait" id="imgedit-wait-<?php echo $post_id; ?>"></div>
        <script type="text/javascript">imageEdit.init(<?php echo $post_id; ?>);</script>
        </tbody></table>
        <div class="imgedit-wait" id="imgedit-wait-<?php echo $post_id; ?>"></div>
        <script type="text/javascript">imageEdit.init(<?php echo $post_id; ?>);</script>
-       <div class="hidden" id="imgedit-leaving-<?php echo $post_id; ?>"><?php _e("There are unsaved changes that will be lost.  'OK' to continue, 'Cancel' to return to the Image Editor."); ?></div>
+       <div class="hidden" id="imgedit-leaving-<?php echo $post_id; ?>"><?php _e("There are unsaved changes that will be lost. 'OK' to continue, 'Cancel' to return to the Image Editor."); ?></div>
        </div>
 <?php
 }
 
        </div>
 <?php
 }
 
-function load_image_to_edit($post_id, $mime_type, $size = 'full') {
-       $filepath = get_attached_file($post_id);
-
-       if ( $filepath && file_exists($filepath) ) {
-               if ( 'full' != $size && ( $data = image_get_intermediate_size($post_id, $size) ) ) {
-                       $filepath = apply_filters('load_image_to_edit_filesystempath', path_join( dirname($filepath), $data['file'] ), $post_id, $size);
-               }
-       } elseif ( function_exists('fopen') && function_exists('ini_get') && true == ini_get('allow_url_fopen') ) {
-               $filepath = apply_filters('load_image_to_edit_attachmenturl', wp_get_attachment_url($post_id) , $post_id, $size);
-       }
-
-       $filepath = apply_filters('load_image_to_edit_path', $filepath, $post_id, $size);
-       if ( empty($filepath) )
-               return false;
-
-       switch ( $mime_type ) {
-               case 'image/jpeg':
-                       $image = imagecreatefromjpeg($filepath);
-                       break;
-               case 'image/png':
-                       $image = imagecreatefrompng($filepath);
-                       break;
-               case 'image/gif':
-                       $image = imagecreatefromgif($filepath);
-                       break;
-               default:
-                       $image = false;
-                       break;
-       }
-       if ( is_resource($image) ) {
-               $image = apply_filters('load_image_to_edit', $image, $post_id, $size);
-               if ( function_exists('imagealphablending') && function_exists('imagesavealpha') ) {
-                       imagealphablending($image, false);
-                       imagesavealpha($image, true);
-               }
-       }
-       return $image;
-}
-
 function wp_stream_image($image, $mime_type, $post_id) {
        $image = apply_filters('image_save_pre', $image, $post_id);
 
 function wp_stream_image($image, $mime_type, $post_id) {
        $image = apply_filters('image_save_pre', $image, $post_id);
 
@@ -288,7 +249,6 @@ function _rotate_image_resource($img, $angle) {
        return $img;
 }
 
        return $img;
 }
 
-
 function _flip_image_resource($img, $horz, $vert) {
        $w = imagesx($img);
        $h = imagesy($img);
 function _flip_image_resource($img, $horz, $vert) {
        $w = imagesx($img);
        $h = imagesy($img);
@@ -665,4 +625,3 @@ function wp_save_image($post_id) {
        $return->msg = esc_js( __('Image saved') );
        return $return;
 }
        $return->msg = esc_js( __('Image saved') );
        return $return;
 }
-
index 98dd0ef5e20877abf189ef90b7575ca77a3ca68e..80483876778125750c0136dedfadbfb0290c55c0 100644 (file)
@@ -32,7 +32,7 @@ function wp_create_thumbnail( $file, $max_side, $deprecated = '' ) {
  *
  * @since 2.1.0
  *
  *
  * @since 2.1.0
  *
- * @param string|int $src_file The source file or Attachment ID.
+ * @param string|int $src The source file or Attachment ID.
  * @param int $src_x The start x position to crop from.
  * @param int $src_y The start y position to crop from.
  * @param int $src_w The width to crop.
  * @param int $src_x The start x position to crop from.
  * @param int $src_y The start y position to crop from.
  * @param int $src_w The width to crop.
@@ -43,13 +43,27 @@ function wp_create_thumbnail( $file, $max_side, $deprecated = '' ) {
  * @param string $dst_file Optional. The destination file to write to.
  * @return string|WP_Error|false New filepath on success, WP_Error or false on failure.
  */
  * @param string $dst_file Optional. The destination file to write to.
  * @return string|WP_Error|false New filepath on success, WP_Error or false on failure.
  */
-function wp_crop_image( $src_file, $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h, $src_abs = false, $dst_file = false ) {
-       if ( is_numeric( $src_file ) ) // Handle int as attachment ID
-               $src_file = get_attached_file( $src_file );
-
-       $src = wp_load_image( $src_file );
+function wp_crop_image( $src, $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h, $src_abs = false, $dst_file = false ) {
+       if ( is_numeric( $src ) ) { // Handle int as attachment ID
+               $src_file = get_attached_file( $src );
+               if ( ! file_exists( $src_file ) ) {
+                       // If the file doesn't exist, attempt a url fopen on the src link.
+                       // This can occur with certain file replication plugins.
+                       $post = get_post( $src );
+                       $image_type = $post->post_mime_type;
+                       $src = load_image_to_edit( $src, $post->post_mime_type, 'full' );
+               } else {
+                       $size = @getimagesize( $src_file );
+                       $image_type = ( $size ) ? $size['mime'] : '';
+                       $src = wp_load_image( $src_file );
+               }
+       } else {
+               $size = @getimagesize( $src );
+               $image_type = ( $size ) ? $size['mime'] : '';
+               $src = wp_load_image( $src );
+       }
 
 
-       if ( !is_resource( $src ) )
+       if ( ! is_resource( $src ) )
                return new WP_Error( 'error_loading_image', $src, $src_file );
 
        $dst = wp_imagecreatetruecolor( $dst_w, $dst_h );
                return new WP_Error( 'error_loading_image', $src, $src_file );
 
        $dst = wp_imagecreatetruecolor( $dst_w, $dst_h );
@@ -59,7 +73,7 @@ function wp_crop_image( $src_file, $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_
                $src_h -= $src_y;
        }
 
                $src_h -= $src_y;
        }
 
-       if (function_exists('imageantialias'))
+       if ( function_exists( 'imageantialias' ) )
                imageantialias( $dst, true );
 
        imagecopyresampled( $dst, $src, 0, 0, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h );
                imageantialias( $dst, true );
 
        imagecopyresampled( $dst, $src, 0, 0, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h );
@@ -69,9 +83,18 @@ function wp_crop_image( $src_file, $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_
        if ( ! $dst_file )
                $dst_file = str_replace( basename( $src_file ), 'cropped-' . basename( $src_file ), $src_file );
 
        if ( ! $dst_file )
                $dst_file = str_replace( basename( $src_file ), 'cropped-' . basename( $src_file ), $src_file );
 
-       $dst_file = preg_replace( '/\\.[^\\.]+$/', '.jpg', $dst_file );
+       if ( 'image/png' != $image_type )
+               $dst_file = preg_replace( '/\\.[^\\.]+$/', '.jpg', $dst_file );
+
+       // The directory containing the original file may no longer exist when
+       // using a replication plugin.
+       wp_mkdir_p( dirname( $dst_file ) );
+
+       $dst_file = dirname( $dst_file ) . '/' . wp_unique_filename( dirname( $dst_file ), basename( $dst_file ) );
 
 
-       if ( imagejpeg( $dst, $dst_file, apply_filters( 'jpeg_quality', 90, 'wp_crop_image' ) ) )
+       if ( 'image/png' == $image_type && imagepng( $dst, $dst_file ) )
+               return $dst_file;
+       elseif ( imagejpeg( $dst, $dst_file, apply_filters( 'jpeg_quality', 90, 'wp_crop_image' ) ) )
                return $dst_file;
        else
                return false;
                return $dst_file;
        else
                return false;
@@ -104,7 +127,7 @@ function wp_generate_attachment_metadata( $attachment_id, $file ) {
                global $_wp_additional_image_sizes;
 
                foreach ( get_intermediate_image_sizes() as $s ) {
                global $_wp_additional_image_sizes;
 
                foreach ( get_intermediate_image_sizes() as $s ) {
-                       $sizes[$s] = array( 'width' => '', 'height' => '', 'crop' => FALSE );
+                       $sizes[$s] = array( 'width' => '', 'height' => '', 'crop' => false );
                        if ( isset( $_wp_additional_image_sizes[$s]['width'] ) )
                                $sizes[$s]['width'] = intval( $_wp_additional_image_sizes[$s]['width'] ); // For theme-added sizes
                        else
                        if ( isset( $_wp_additional_image_sizes[$s]['width'] ) )
                                $sizes[$s]['width'] = intval( $_wp_additional_image_sizes[$s]['width'] ); // For theme-added sizes
                        else
@@ -205,7 +228,7 @@ function wp_read_image_metadata( $file ) {
 
        // exif contains a bunch of data we'll probably never need formatted in ways
        // that are difficult to use. We'll normalize it and just extract the fields
 
        // exif contains a bunch of data we'll probably never need formatted in ways
        // that are difficult to use. We'll normalize it and just extract the fields
-       // that are likely to be useful.  Fractions and numbers are converted to
+       // that are likely to be useful. Fractions and numbers are converted to
        // floats, dates to unix timestamps, and everything else to strings.
        $meta = array(
                'aperture' => 0,
        // floats, dates to unix timestamps, and everything else to strings.
        $meta = array(
                'aperture' => 0,
@@ -296,8 +319,10 @@ function wp_read_image_metadata( $file ) {
                        $meta['created_timestamp'] = wp_exif_date2ts($exif['DateTimeDigitized'] );
                if ( ! empty($exif['FocalLength'] ) )
                        $meta['focal_length'] = wp_exif_frac2dec( $exif['FocalLength'] );
                        $meta['created_timestamp'] = wp_exif_date2ts($exif['DateTimeDigitized'] );
                if ( ! empty($exif['FocalLength'] ) )
                        $meta['focal_length'] = wp_exif_frac2dec( $exif['FocalLength'] );
-               if ( ! empty($exif['ISOSpeedRatings'] ) )
-                       $meta['iso'] = utf8_encode( trim( $exif['ISOSpeedRatings'] ) );
+               if ( ! empty($exif['ISOSpeedRatings'] ) ) {
+                       $meta['iso'] = is_array( $exif['ISOSpeedRatings'] ) ? reset( $exif['ISOSpeedRatings'] ) : $exif['ISOSpeedRatings'];
+                       $meta['iso'] = utf8_encode( trim( $meta['iso'] ) );
+               }
                if ( ! empty($exif['ExposureTime'] ) )
                        $meta['shutter_speed'] = wp_exif_frac2dec( $exif['ExposureTime'] );
        }
                if ( ! empty($exif['ExposureTime'] ) )
                        $meta['shutter_speed'] = wp_exif_frac2dec( $exif['ExposureTime'] );
        }
@@ -339,3 +364,100 @@ function file_is_displayable_image($path) {
 
        return apply_filters('file_is_displayable_image', $result, $path);
 }
 
        return apply_filters('file_is_displayable_image', $result, $path);
 }
+
+/**
+ * Load an image resource for editing.
+ *
+ * @since 2.9.0
+ *
+ * @param string $attachment_id Attachment ID.
+ * @param string $mime_type Image mime type.
+ * @param string $size Optional. Image size, defaults to 'full'.
+ * @return resource|false The resulting image resource on success, false on failure.
+ */
+function load_image_to_edit( $attachment_id, $mime_type, $size = 'full' ) {
+       $filepath = _load_image_to_edit_path( $attachment_id, $size );
+       if ( empty( $filepath ) )
+               return false;
+
+       switch ( $mime_type ) {
+               case 'image/jpeg':
+                       $image = imagecreatefromjpeg($filepath);
+                       break;
+               case 'image/png':
+                       $image = imagecreatefrompng($filepath);
+                       break;
+               case 'image/gif':
+                       $image = imagecreatefromgif($filepath);
+                       break;
+               default:
+                       $image = false;
+                       break;
+       }
+       if ( is_resource($image) ) {
+               $image = apply_filters('load_image_to_edit', $image, $attachment_id, $size);
+               if ( function_exists('imagealphablending') && function_exists('imagesavealpha') ) {
+                       imagealphablending($image, false);
+                       imagesavealpha($image, true);
+               }
+       }
+       return $image;
+}
+
+/**
+ * Retrieve the path or url of an attachment's attached file.
+ *
+ * If the attached file is not present on the local filesystem (usually due to replication plugins),
+ * then the url of the file is returned if url fopen is supported.
+ *
+ * @since 3.4.0
+ * @access private
+ *
+ * @param string $attachment_id Attachment ID.
+ * @param string $size Optional. Image size, defaults to 'full'.
+ * @return string|false File path or url on success, false on failure.
+ */
+function _load_image_to_edit_path( $attachment_id, $size = 'full' ) {
+       $filepath = get_attached_file( $attachment_id );
+
+       if ( $filepath && file_exists( $filepath ) ) {
+               if ( 'full' != $size && ( $data = image_get_intermediate_size( $attachment_id, $size ) ) ) {
+                       $filepath = apply_filters( 'load_image_to_edit_filesystempath', path_join( dirname( $filepath ), $data['file'] ), $attachment_id, $size );
+               }
+       } elseif ( function_exists( 'fopen' ) && function_exists( 'ini_get' ) && true == ini_get( 'allow_url_fopen' ) ) {
+               $filepath = apply_filters( 'load_image_to_edit_attachmenturl', wp_get_attachment_url( $attachment_id ), $attachment_id, $size );
+       }
+
+       return apply_filters( 'load_image_to_edit_path', $filepath, $attachment_id, $size );
+}
+
+/**
+ * Copy an existing image file.
+ *
+ * @since 3.4.0
+ * @access private
+ *
+ * @param string $attachment_id Attachment ID.
+ * @return string|false New file path on success, false on failure.
+ */
+function _copy_image_file( $attachment_id ) {
+       $dst_file = $src_file = get_attached_file( $attachment_id );
+       if ( ! file_exists( $src_file ) )
+               $src_file = _load_image_to_edit_path( $attachment_id );
+
+       if ( $src_file ) {
+               $dst_file = str_replace( basename( $dst_file ), 'copy-' . basename( $dst_file ), $dst_file );
+               $dst_file = dirname( $dst_file ) . '/' . wp_unique_filename( dirname( $dst_file ), basename( $dst_file ) );
+
+               // The directory containing the original file may no longer exist when
+               // using a replication plugin.
+               wp_mkdir_p( dirname( $dst_file ) );
+
+               if ( ! @copy( $src_file, $dst_file ) )
+                       $dst_file = false;
+       } else {
+               $dst_file = false;
+       }
+
+       return $dst_file;
+}
index f57be766c09a5a277df341aab01c6e20dbbbfeb8..3713f18b401103b8307b5642d273897587787293 100644 (file)
@@ -93,5 +93,3 @@ function wp_import_handle_upload() {
 
        return array( 'file' => $file, 'id' => $id );
 }
 
        return array( 'file' => $file, 'id' => $id );
 }
-
-?>
index 716e80aca9b939b576abb349415283f4303f5672..2dff578e0db2bf85a5cf67471d6102fe85721dc0 100644 (file)
@@ -28,7 +28,7 @@ function _get_list_table( $class ) {
                'WP_Links_List_Table' => 'links',
                'WP_Plugin_Install_List_Table' => 'plugin-install',
                'WP_Themes_List_Table' => 'themes',
                'WP_Links_List_Table' => 'links',
                'WP_Plugin_Install_List_Table' => 'plugin-install',
                'WP_Themes_List_Table' => 'themes',
-               'WP_Theme_Install_List_Table' => 'theme-install',
+               'WP_Theme_Install_List_Table' => array( 'themes', 'theme-install' ),
                'WP_Plugins_List_Table' => 'plugins',
                // Network Admin
                'WP_MS_Sites_List_Table' => 'ms-sites',
                'WP_Plugins_List_Table' => 'plugins',
                // Network Admin
                'WP_MS_Sites_List_Table' => 'ms-sites',
@@ -37,7 +37,8 @@ function _get_list_table( $class ) {
        );
 
        if ( isset( $core_classes[ $class ] ) ) {
        );
 
        if ( isset( $core_classes[ $class ] ) ) {
-               require_once( ABSPATH . 'wp-admin/includes/class-wp-' . $core_classes[ $class ] . '-list-table.php' );
+               foreach ( (array) $core_classes[ $class ] as $required )
+                       require_once( ABSPATH . 'wp-admin/includes/class-wp-' . $required . '-list-table.php' );
                return new $class;
        }
 
                return new $class;
        }
 
@@ -101,4 +102,3 @@ class _WP_List_Table_Compat extends WP_List_Table {
                return $this->_columns;
        }
 }
                return $this->_columns;
        }
 }
-?>
\ No newline at end of file
index 6f050c6013c8d4ca7ec251e0587c7b5e9d6b47ac..99b477481721e0d127fe98012cb3771772792de6 100644 (file)
@@ -43,7 +43,6 @@ function &get_manifest() {
                array('images/wpspin_dark.gif'),
                array('images/logo.gif'),
                array('images/logo-ghost.png'),
                array('images/wpspin_dark.gif'),
                array('images/logo.gif'),
                array('images/logo-ghost.png'),
-               array('images/logo-login.gif'),
                array('images/media-button-image.gif'),
                array('images/media-button-music.gif'),
                array('images/media-button-other.gif'),
                array('images/media-button-image.gif'),
                array('images/media-button-music.gif'),
                array('images/media-button-other.gif'),
index ff77e6c0a611f96b70dfdca299ccacceef3d2f00..179bfb8fc597cb1ff52b5466b017a36629ffe2b7 100644 (file)
@@ -62,15 +62,9 @@ add_filter('media_upload_tabs', 'update_gallery_tab');
  * @since 2.5.0
  */
 function the_media_upload_tabs() {
  * @since 2.5.0
  */
 function the_media_upload_tabs() {
-       global $redir_tab, $is_iphone;
+       global $redir_tab;
        $tabs = media_upload_tabs();
        $tabs = media_upload_tabs();
-
-       if ( $is_iphone ) {
-               unset($tabs['type']);
-               $default = 'type_url';
-       } else {
-               $default = 'type';
-       }
+       $default = 'type';
 
        if ( !empty($tabs) ) {
                echo "<ul id='sidemenu'>\n";
 
        if ( !empty($tabs) ) {
                echo "<ul id='sidemenu'>\n";
@@ -144,27 +138,37 @@ function image_add_caption( $html, $id, $caption, $title, $align, $url, $size, $
 
        $id = ( 0 < (int) $id ) ? 'attachment_' . $id : '';
 
 
        $id = ( 0 < (int) $id ) ? 'attachment_' . $id : '';
 
-       if ( ! preg_match( '/width="([0-9]+)/', $html, $matches ) )
+       if ( ! preg_match( '/width=["\']([0-9]+)/', $html, $matches ) )
                return $html;
 
        $width = $matches[1];
 
                return $html;
 
        $width = $matches[1];
 
-       $caption = str_replace( array( '>',    '<',    '"',      "'" ),
-                                                       array( '&gt;', '&lt;', '&quot;', '&#039;' ),
-                                                       $caption
-                                                 );
+       $caption = str_replace( array("\r\n", "\r"), "\n", $caption);
+       $caption = preg_replace_callback( '/<[a-zA-Z0-9]+(?: [^<>]+>)*/', '_cleanup_image_add_caption', $caption );
+       // convert any remaining line breaks to <br>
+       $caption = preg_replace( '/[ \n\t]*\n[ \t]*/', '<br />', $caption );
 
        $html = preg_replace( '/(class=["\'][^\'"]*)align(none|left|right|center)\s?/', '$1', $html );
        if ( empty($align) )
                $align = 'none';
 
 
        $html = preg_replace( '/(class=["\'][^\'"]*)align(none|left|right|center)\s?/', '$1', $html );
        if ( empty($align) )
                $align = 'none';
 
-       $shcode = '[caption id="' . $id . '" align="align' . $align
-       . '" width="' . $width . '" caption="' . addslashes($caption) . '"]' . $html . '[/caption]';
+       $shcode = '[caption id="' . $id . '" align="align' . $align     . '" width="' . $width . '"]' . $html . ' ' . $caption . '[/caption]';
 
        return apply_filters( 'image_add_caption_shortcode', $shcode, $html );
 }
 add_filter( 'image_send_to_editor', 'image_add_caption', 20, 8 );
 
 
        return apply_filters( 'image_add_caption_shortcode', $shcode, $html );
 }
 add_filter( 'image_send_to_editor', 'image_add_caption', 20, 8 );
 
+/**
+ * Private preg_replace callback used in image_add_caption()
+ *
+ * @access private
+ * @since 3.4.0
+ */
+function _cleanup_image_add_caption( $matches ) {
+       // remove any line breaks from inside the tags
+       return preg_replace( '/[\r\n\t]+/', ' ', $matches[0] );
+}
+
 /**
  * {@internal Missing Short Description}}
  *
 /**
  * {@internal Missing Short Description}}
  *
@@ -334,7 +338,7 @@ wp_enqueue_style( 'ie' );
 //<![CDATA[
 addLoadEvent = function(func){if(typeof jQuery!="undefined")jQuery(document).ready(func);else if(typeof wpOnload!='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}};
 var userSettings = {'url':'<?php echo SITECOOKIEPATH; ?>','uid':'<?php if ( ! isset($current_user) ) $current_user = wp_get_current_user(); echo $current_user->ID; ?>','time':'<?php echo time(); ?>'};
 //<![CDATA[
 addLoadEvent = function(func){if(typeof jQuery!="undefined")jQuery(document).ready(func);else if(typeof wpOnload!='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}};
 var userSettings = {'url':'<?php echo SITECOOKIEPATH; ?>','uid':'<?php if ( ! isset($current_user) ) $current_user = wp_get_current_user(); echo $current_user->ID; ?>','time':'<?php echo time(); ?>'};
-var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>', pagenow = 'media-upload-popup', adminpage = 'media-upload-popup',
+var ajaxurl = '<?php echo admin_url( 'admin-ajax.php', 'relative' ); ?>', pagenow = 'media-upload-popup', adminpage = 'media-upload-popup',
 isRtl = <?php echo (int) is_rtl(); ?>;
 //]]>
 </script>
 isRtl = <?php echo (int) is_rtl(); ?>;
 //]]>
 </script>
@@ -386,15 +390,20 @@ function _media_button($title, $icon, $type, $id) {
        return "<a href='" . esc_url( get_upload_iframe_src($type) ) . "' id='{$id}-add_{$type}' class='thickbox add_$type' title='" . esc_attr( $title ) . "'><img src='" . esc_url( admin_url( $icon ) ) . "' alt='$title' onclick='return false;' /></a>";
 }
 
        return "<a href='" . esc_url( get_upload_iframe_src($type) ) . "' id='{$id}-add_{$type}' class='thickbox add_$type' title='" . esc_attr( $title ) . "'><img src='" . esc_url( admin_url( $icon ) ) . "' alt='$title' onclick='return false;' /></a>";
 }
 
-function get_upload_iframe_src( $type = null ) {
+function get_upload_iframe_src( $type = null, $post_id = null, $tab = null ) {
        global $post_ID;
 
        global $post_ID;
 
-       $uploading_iframe_ID = (int) $post_ID;
-       $upload_iframe_src = add_query_arg( 'post_id', $uploading_iframe_ID, admin_url('media-upload.php') );
+       if ( empty( $post_id ) )
+               $post_id = $post_ID;
+
+       $upload_iframe_src = add_query_arg( 'post_id', (int) $post_id, admin_url('media-upload.php') );
 
        if ( $type && 'media' != $type )
                $upload_iframe_src = add_query_arg('type', $type, $upload_iframe_src);
 
 
        if ( $type && 'media' != $type )
                $upload_iframe_src = add_query_arg('type', $type, $upload_iframe_src);
 
+       if ( ! empty( $tab ) )
+               $upload_iframe_src = add_query_arg('tab', $tab, $upload_iframe_src);
+
        $upload_iframe_src = apply_filters($type . '_upload_iframe_src', $upload_iframe_src);
 
        return add_query_arg('TB_iframe', true, $upload_iframe_src);
        $upload_iframe_src = apply_filters($type . '_upload_iframe_src', $upload_iframe_src);
 
        return add_query_arg('TB_iframe', true, $upload_iframe_src);
@@ -477,7 +486,7 @@ function media_upload_form_handler() {
        if ( isset($send_id) ) {
                $attachment = stripslashes_deep( $_POST['attachments'][$send_id] );
 
        if ( isset($send_id) ) {
                $attachment = stripslashes_deep( $_POST['attachments'][$send_id] );
 
-               $html = $attachment['post_title'];
+               $html = isset( $attachment['post_title'] ) ? $attachment['post_title'] : '';
                if ( !empty($attachment['url']) ) {
                        $rel = '';
                        if ( strpos($attachment['url'], 'attachment_id') || get_attachment_link($send_id) == $attachment['url'] )
                if ( !empty($attachment['url']) ) {
                        $rel = '';
                        if ( strpos($attachment['url'], 'attachment_id') || get_attachment_link($send_id) == $attachment['url'] )
@@ -500,8 +509,6 @@ function media_upload_form_handler() {
  * @return unknown
  */
 function wp_media_upload_handler() {
  * @return unknown
  */
 function wp_media_upload_handler() {
-       global $is_iphone;
-
        $errors = array();
        $id = 0;
 
        $errors = array();
        $id = 0;
 
@@ -572,10 +579,7 @@ function wp_media_upload_handler() {
                return wp_iframe( 'media_upload_type_url_form', $type, $errors, $id );
        }
 
                return wp_iframe( 'media_upload_type_url_form', $type, $errors, $id );
        }
 
-       if ( $is_iphone )
-               return wp_iframe( 'media_upload_type_url_form', 'image', $errors, $id );
-       else
-               return wp_iframe( 'media_upload_type_form', 'image', $errors, $id );
+       return wp_iframe( 'media_upload_type_form', 'image', $errors, $id );
 }
 
 /**
 }
 
 /**
@@ -776,12 +780,19 @@ function image_link_input_fields($post, $url_type = '') {
 
        return "
        <input type='text' class='text urlfield' name='attachments[$post->ID][url]' value='" . esc_attr($url) . "' /><br />
 
        return "
        <input type='text' class='text urlfield' name='attachments[$post->ID][url]' value='" . esc_attr($url) . "' /><br />
-       <button type='button' class='button urlnone' title=''>" . __('None') . "</button>
-       <button type='button' class='button urlfile' title='" . esc_attr($file) . "'>" . __('File URL') . "</button>
-       <button type='button' class='button urlpost' title='" . esc_attr($link) . "'>" . __('Attachment Post URL') . "</button>
+       <button type='button' class='button urlnone' data-link-url=''>" . __('None') . "</button>
+       <button type='button' class='button urlfile' data-link-url='" . esc_attr($file) . "'>" . __('File URL') . "</button>
+       <button type='button' class='button urlpost' data-link-url='" . esc_attr($link) . "'>" . __('Attachment Post URL') . "</button>
 ";
 }
 
 ";
 }
 
+function wp_caption_input_textarea($edit_post) {
+       // post data is already escaped
+       $name = "attachments[{$edit_post->ID}][post_excerpt]";
+
+       return '<textarea name="' . $name . '" id="' . $name . '">' . $edit_post->post_excerpt . '</textarea>';
+}
+
 /**
  * {@internal Missing Short Description}}
  *
 /**
  * {@internal Missing Short Description}}
  *
@@ -917,8 +928,6 @@ function get_attachment_fields_to_edit($post, $errors = null) {
 
        $edit_post = sanitize_post($post, 'edit');
 
 
        $edit_post = sanitize_post($post, 'edit');
 
-
-
        $form_fields = array(
                'post_title'   => array(
                        'label'      => __('Title'),
        $form_fields = array(
                'post_title'   => array(
                        'label'      => __('Title'),
@@ -927,7 +936,8 @@ function get_attachment_fields_to_edit($post, $errors = null) {
                'image_alt'   => array(),
                'post_excerpt' => array(
                        'label'      => __('Caption'),
                'image_alt'   => array(),
                'post_excerpt' => array(
                        'label'      => __('Caption'),
-                       'value'      => $edit_post->post_excerpt
+                       'input'      => 'html',
+                       'html'       => wp_caption_input_textarea($edit_post)
                ),
                'post_content' => array(
                        'label'      => __('Description'),
                ),
                'post_content' => array(
                        'label'      => __('Description'),
@@ -1129,8 +1139,6 @@ function get_media_item( $attachment_id, $args = null ) {
 
                        $item .= "</td></tr>\n";
 
 
                        $item .= "</td></tr>\n";
 
-
-
        $item .= "
                </thead>
                <tbody>
        $item .= "
                </thead>
                <tbody>
@@ -1151,7 +1159,7 @@ function get_media_item( $attachment_id, $args = null ) {
                        $delete = "<a href='" . wp_nonce_url( "post.php?action=delete&amp;post=$attachment_id", 'delete-attachment_' . $attachment_id ) . "' id='del[$attachment_id]' class='delete'>" . __( 'Delete Permanently' ) . '</a>';
                } elseif ( !MEDIA_TRASH ) {
                        $delete = "<a href='#' class='del-link' onclick=\"document.getElementById('del_attachment_$attachment_id').style.display='block';return false;\">" . __( 'Delete' ) . "</a>
                        $delete = "<a href='" . wp_nonce_url( "post.php?action=delete&amp;post=$attachment_id", 'delete-attachment_' . $attachment_id ) . "' id='del[$attachment_id]' class='delete'>" . __( 'Delete Permanently' ) . '</a>';
                } elseif ( !MEDIA_TRASH ) {
                        $delete = "<a href='#' class='del-link' onclick=\"document.getElementById('del_attachment_$attachment_id').style.display='block';return false;\">" . __( 'Delete' ) . "</a>
-                        <div id='del_attachment_$attachment_id' class='del-attachment' style='display:none;'>" . sprintf( __( 'You are about to delete <strong>%s</strong>.' ), $filename ) . "
+                        <div id='del_attachment_$attachment_id' class='del-attachment' style='display:none;'><p>" . sprintf( __( 'You are about to delete <strong>%s</strong>.' ), $filename ) . "</p>
                         <a href='" . wp_nonce_url( "post.php?action=delete&amp;post=$attachment_id", 'delete-attachment_' . $attachment_id ) . "' id='del[$attachment_id]' class='button'>" . __( 'Continue' ) . "</a>
                         <a href='#' class='button' onclick=\"this.parentNode.style.display='none';return false;\">" . __( 'Cancel' ) . "</a>
                         </div>";
                         <a href='" . wp_nonce_url( "post.php?action=delete&amp;post=$attachment_id", 'delete-attachment_' . $attachment_id ) . "' id='del[$attachment_id]' class='button'>" . __( 'Continue' ) . "</a>
                         <a href='#' class='button' onclick=\"this.parentNode.style.display='none';return false;\">" . __( 'Cancel' ) . "</a>
                         </div>";
@@ -1206,9 +1214,11 @@ function get_media_item( $attachment_id, $args = null ) {
                if ( !empty( $field[ $field['input'] ] ) )
                        $item .= $field[ $field['input'] ];
                elseif ( $field['input'] == 'textarea' ) {
                if ( !empty( $field[ $field['input'] ] ) )
                        $item .= $field[ $field['input'] ];
                elseif ( $field['input'] == 'textarea' ) {
-                       if ( user_can_richedit() ) { // textarea_escaped when user_can_richedit() = false
-                               $field['value'] = esc_textarea( $field['value'] );
+                       if ( 'post_content' == $id && user_can_richedit() ) {
+                               // sanitize_post() skips the post_content when user_can_richedit
+                               $field['value'] = htmlspecialchars( $field['value'], ENT_QUOTES );
                        }
                        }
+                       // post_excerpt is already escaped by sanitize_post() in get_attachment_fields_to_edit()
                        $item .= "<textarea id='$name' name='$name' $aria_required>" . $field['value'] . '</textarea>';
                } else {
                        $item .= "<input type='text' class='text' id='$name' name='$name' value='" . esc_attr( $field['value'] ) . "' $aria_required />";
                        $item .= "<textarea id='$name' name='$name' $aria_required>" . $field['value'] . '</textarea>';
                } else {
                        $item .= "<input type='text' class='text' id='$name' name='$name' value='" . esc_attr( $field['value'] ) . "' $aria_required />";
@@ -1272,10 +1282,12 @@ function media_upload_header() {
  * @param unknown_type $errors
  */
 function media_upload_form( $errors = null ) {
  * @param unknown_type $errors
  */
 function media_upload_form( $errors = null ) {
-       global $type, $tab, $pagenow, $is_IE, $is_opera, $is_iphone;
+       global $type, $tab, $pagenow, $is_IE, $is_opera;
 
 
-       if ( $is_iphone )
+       if ( ! _device_can_upload() ) {
+               echo '<p>' . __('The web browser on your device cannot be used to upload files. You may be able to use the <a href="http://wordpress.org/extend/mobile/">native app for your device</a> instead.') . '</p>';
                return;
                return;
+       }
 
        $upload_action_url = admin_url('async-upload.php');
        $post_id = isset($_REQUEST['post_id']) ? intval($_REQUEST['post_id']) : 0;
 
        $upload_action_url = admin_url('async-upload.php');
        $post_id = isset($_REQUEST['post_id']) ? intval($_REQUEST['post_id']) : 0;
@@ -1406,10 +1418,6 @@ if ( ($is_IE || $is_opera) && $max_upload_size > 100 * 1024 * 1024 ) { ?>
  * @param unknown_type $id
  */
 function media_upload_type_form($type = 'file', $errors = null, $id = null) {
  * @param unknown_type $id
  */
 function media_upload_type_form($type = 'file', $errors = null, $id = null) {
-       global $is_iphone;
-
-       if ( $is_iphone )
-               return;
 
        media_upload_header();
 
 
        media_upload_header();
 
@@ -1517,8 +1525,14 @@ var addExtImage = {
                        alt = f.alt.value.replace(/'/g, '&#039;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
 
 <?php if ( ! apply_filters( 'disable_captions', '' ) ) { ?>
                        alt = f.alt.value.replace(/'/g, '&#039;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
 
 <?php if ( ! apply_filters( 'disable_captions', '' ) ) { ?>
-               if ( f.caption.value )
-                       caption = f.caption.value.replace(/'/g, '&#039;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+               if ( f.caption.value ) {
+                       caption = f.caption.value.replace(/\r\n|\r/g, '\n');
+                       caption = caption.replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g, function(a){
+                               return a.replace(/[\r\n\t]+/, ' ');
+                       });
+
+                       caption = caption.replace(/\s*\n\s*/g, '<br />');
+               }
 <?php } ?>
 
                cls = caption ? '' : ' class="'+t.align+'"';
 <?php } ?>
 
                cls = caption ? '' : ' class="'+t.align+'"';
@@ -1531,7 +1545,7 @@ var addExtImage = {
                }
 
                if ( caption )
                }
 
                if ( caption )
-                       html = '[caption id="" align="'+t.align+'" width="'+t.width+'" caption="'+caption+'"]'+html+'[/caption]';
+                       html = '[caption id="" align="'+t.align+'" width="'+t.width+'"]'+html+caption+'[/caption]';
 
                var win = window.dialogArguments || opener || parent || top;
                win.send_to_editor(html);
 
                var win = window.dialogArguments || opener || parent || top;
                win.send_to_editor(html);
@@ -1778,10 +1792,11 @@ function media_upload_library_form($errors) {
 <input type="hidden" name="tab" value="<?php echo esc_attr( $tab ); ?>" />
 <input type="hidden" name="post_id" value="<?php echo (int) $post_id; ?>" />
 <input type="hidden" name="post_mime_type" value="<?php echo isset( $_GET['post_mime_type'] ) ? esc_attr( $_GET['post_mime_type'] ) : ''; ?>" />
 <input type="hidden" name="tab" value="<?php echo esc_attr( $tab ); ?>" />
 <input type="hidden" name="post_id" value="<?php echo (int) $post_id; ?>" />
 <input type="hidden" name="post_mime_type" value="<?php echo isset( $_GET['post_mime_type'] ) ? esc_attr( $_GET['post_mime_type'] ) : ''; ?>" />
+<input type="hidden" name="context" value="<?php echo isset( $_GET['context'] ) ? esc_attr( $_GET['context'] ) : ''; ?>" />
 
 <p id="media-search" class="search-box">
        <label class="screen-reader-text" for="media-search-input"><?php _e('Search Media');?>:</label>
 
 <p id="media-search" class="search-box">
        <label class="screen-reader-text" for="media-search-input"><?php _e('Search Media');?>:</label>
-       <input type="text" id="media-search-input" name="s" value="<?php the_search_query(); ?>" />
+       <input type="search" id="media-search-input" name="s" value="<?php the_search_query(); ?>" />
        <?php submit_button( __( 'Search Media' ), 'button', '', false ); ?>
 </p>
 
        <?php submit_button( __( 'Search Media' ), 'button', '', false ); ?>
 </p>
 
@@ -1920,7 +1935,7 @@ function wp_media_insert_url_form( $default_view = 'image' ) {
                        <th valign="top" scope="row" class="label">
                                <span class="alignleft"><label for="caption">' . __('Image Caption') . '</label></span>
                        </th>
                        <th valign="top" scope="row" class="label">
                                <span class="alignleft"><label for="caption">' . __('Image Caption') . '</label></span>
                        </th>
-                       <td class="field"><input id="caption" name="caption" value="" type="text" /></td>
+                       <td class="field"><textarea id="caption" name="caption"></textarea></td>
                </tr>
 ';
        } else {
                </tr>
 ';
        } else {
@@ -2054,7 +2069,7 @@ add_action('post-plupload-upload-ui', 'media_upload_flash_bypass');
 function media_upload_html_bypass() {
        ?>
        <p class="upload-html-bypass hide-if-no-js">
 function media_upload_html_bypass() {
        ?>
        <p class="upload-html-bypass hide-if-no-js">
-       <?php _e('You are using the browser&#8217;s built-in file uploader. The new WordPress uploader includes multiple file selection and drag and drop capability. <a href="#">Switch to the new uploader</a>.'); ?>
+       <?php _e('You are using the browser&#8217;s built-in file uploader. The WordPress uploader includes multiple file selection and drag and drop capability. <a href="#">Switch to the multi-file uploader</a>.'); ?>
        </p>
        <?php
 }
        </p>
        <?php
 }
index 1eae8576c721b53f111115330b8e6da0849bbff3..14cadfa6f7afe8064537be69a3fdf0fb640a4cfe 100644 (file)
@@ -227,5 +227,3 @@ if ( !user_can_access_admin_page() ) {
 }
 
 $menu = add_menu_classes($menu);
 }
 
 $menu = add_menu_classes($menu);
-
-?>
\ No newline at end of file
index ddb3e9d4f5286c1dd9b2205c2b9cfb730c44cc7c..7dc455286b371cb7c7a016664371338ce5123ae7 100644 (file)
@@ -27,14 +27,14 @@ function post_submit_meta_box($post) {
 
 <div id="minor-publishing-actions">
 <div id="save-action">
 
 <div id="minor-publishing-actions">
 <div id="save-action">
-<?php if ( 'publish' != $post->post_status && 'future' != $post->post_status && 'pending' != $post->post_status )  { ?>
+<?php if ( 'publish' != $post->post_status && 'future' != $post->post_status && 'pending' != $post->post_status ) { ?>
 <input <?php if ( 'private' == $post->post_status ) { ?>style="display:none"<?php } ?> type="submit" name="save" id="save-post" value="<?php esc_attr_e('Save Draft'); ?>" tabindex="4" class="button button-highlighted" />
 <?php } elseif ( 'pending' == $post->post_status && $can_publish ) { ?>
 <input type="submit" name="save" id="save-post" value="<?php esc_attr_e('Save as Pending'); ?>" tabindex="4" class="button button-highlighted" />
 <?php } ?>
 <img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" class="ajax-loading" id="draft-ajax-loading" alt="" />
 </div>
 <input <?php if ( 'private' == $post->post_status ) { ?>style="display:none"<?php } ?> type="submit" name="save" id="save-post" value="<?php esc_attr_e('Save Draft'); ?>" tabindex="4" class="button button-highlighted" />
 <?php } elseif ( 'pending' == $post->post_status && $can_publish ) { ?>
 <input type="submit" name="save" id="save-post" value="<?php esc_attr_e('Save as Pending'); ?>" tabindex="4" class="button button-highlighted" />
 <?php } ?>
 <img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" class="ajax-loading" id="draft-ajax-loading" alt="" />
 </div>
-
+<?php if ( $post_type_object->public ) : ?>
 <div id="preview-action">
 <?php
 if ( 'publish' == $post->post_status ) {
 <div id="preview-action">
 <?php
 if ( 'publish' == $post->post_status ) {
@@ -51,13 +51,13 @@ if ( 'publish' == $post->post_status ) {
 <a class="preview button" href="<?php echo $preview_link; ?>" target="wp-preview" id="post-preview" tabindex="4"><?php echo $preview_button; ?></a>
 <input type="hidden" name="wp-preview" id="wp-preview" value="" />
 </div>
 <a class="preview button" href="<?php echo $preview_link; ?>" target="wp-preview" id="post-preview" tabindex="4"><?php echo $preview_button; ?></a>
 <input type="hidden" name="wp-preview" id="wp-preview" value="" />
 </div>
-
+<?php endif; // public post type ?>
 <div class="clear"></div>
 </div><?php // /minor-publishing-actions ?>
 
 <div id="misc-publishing-actions">
 
 <div class="clear"></div>
 </div><?php // /minor-publishing-actions ?>
 
 <div id="misc-publishing-actions">
 
-<div class="misc-pub-section<?php if ( !$can_publish ) { echo ' misc-pub-section-last'; } ?>"><label for="post_status"><?php _e('Status:') ?></label>
+<div class="misc-pub-section"><label for="post_status"><?php _e('Status:') ?></label>
 <span id="post-status-display">
 <?php
 switch ( $post->post_status ) {
 <span id="post-status-display">
 <?php
 switch ( $post->post_status ) {
@@ -107,7 +107,7 @@ switch ( $post->post_status ) {
 <?php } ?>
 </div><?php // /misc-pub-section ?>
 
 <?php } ?>
 </div><?php // /misc-pub-section ?>
 
-<div class="misc-pub-section " id="visibility">
+<div class="misc-pub-section" id="visibility">
 <?php _e('Visibility:'); ?> <span id="post-visibility-display"><?php
 
 if ( 'private' == $post->post_status ) {
 <?php _e('Visibility:'); ?> <span id="post-visibility-display"><?php
 
 if ( 'private' == $post->post_status ) {
@@ -135,8 +135,6 @@ echo esc_html( $visibility_trans ); ?></span>
 <input type="checkbox" style="display:none" name="hidden_post_sticky" id="hidden-post-sticky" value="sticky" <?php checked(is_sticky($post->ID)); ?> />
 <?php endif; ?>
 <input type="hidden" name="hidden_post_visibility" id="hidden-post-visibility" value="<?php echo esc_attr( $visibility ); ?>" />
 <input type="checkbox" style="display:none" name="hidden_post_sticky" id="hidden-post-sticky" value="sticky" <?php checked(is_sticky($post->ID)); ?> />
 <?php endif; ?>
 <input type="hidden" name="hidden_post_visibility" id="hidden-post-visibility" value="<?php echo esc_attr( $visibility ); ?>" />
-
-
 <input type="radio" name="visibility" id="visibility-radio-public" value="public" <?php checked( $visibility, 'public' ); ?> /> <label for="visibility-radio-public" class="selectit"><?php _e('Public'); ?></label><br />
 <?php if ( $post_type == 'post' && current_user_can( 'edit_others_posts' ) ) : ?>
 <span id="sticky-span"><input id="sticky" name="sticky" type="checkbox" value="sticky" <?php checked( is_sticky( $post->ID ) ); ?> tabindex="4" /> <label for="sticky" class="selectit"><?php _e( 'Stick this post to the front page' ); ?></label><br /></span>
 <input type="radio" name="visibility" id="visibility-radio-public" value="public" <?php checked( $visibility, 'public' ); ?> /> <label for="visibility-radio-public" class="selectit"><?php _e('Public'); ?></label><br />
 <?php if ( $post_type == 'post' && current_user_can( 'edit_others_posts' ) ) : ?>
 <span id="sticky-span"><input id="sticky" name="sticky" type="checkbox" value="sticky" <?php checked( is_sticky( $post->ID ) ); ?> tabindex="4" /> <label for="sticky" class="selectit"><?php _e( 'Stick this post to the front page' ); ?></label><br /></span>
@@ -176,7 +174,7 @@ if ( 0 != $post->ID ) {
 }
 
 if ( $can_publish ) : // Contributors don't get to choose the date of publish ?>
 }
 
 if ( $can_publish ) : // Contributors don't get to choose the date of publish ?>
-<div class="misc-pub-section curtime misc-pub-section-last">
+<div class="misc-pub-section curtime">
        <span id="timestamp">
        <?php printf($stamp, $date); ?></span>
        <a href="#edit_timestamp" class="edit-timestamp hide-if-no-js" tabindex='4'><?php _e('Edit') ?></a>
        <span id="timestamp">
        <?php printf($stamp, $date); ?></span>
        <a href="#edit_timestamp" class="edit-timestamp hide-if-no-js" tabindex='4'><?php _e('Edit') ?></a>
@@ -261,7 +259,6 @@ function post_format_meta_box( $post, $box ) {
        <?php endif; endif;
 }
 
        <?php endif; endif;
 }
 
-
 /**
  * Display post tags form fields.
  *
 /**
  * Display post tags form fields.
  *
@@ -279,12 +276,13 @@ function post_tags_meta_box($post, $box) {
        $tax_name = esc_attr($taxonomy);
        $taxonomy = get_taxonomy($taxonomy);
        $disabled = !current_user_can($taxonomy->cap->assign_terms) ? 'disabled="disabled"' : '';
        $tax_name = esc_attr($taxonomy);
        $taxonomy = get_taxonomy($taxonomy);
        $disabled = !current_user_can($taxonomy->cap->assign_terms) ? 'disabled="disabled"' : '';
+       $comma = _x( ',', 'tag delimiter' );
 ?>
 <div class="tagsdiv" id="<?php echo $tax_name; ?>">
        <div class="jaxtag">
        <div class="nojs-tags hide-if-js">
        <p><?php echo $taxonomy->labels->add_or_remove_items; ?></p>
 ?>
 <div class="tagsdiv" id="<?php echo $tax_name; ?>">
        <div class="jaxtag">
        <div class="nojs-tags hide-if-js">
        <p><?php echo $taxonomy->labels->add_or_remove_items; ?></p>
-       <textarea name="<?php echo "tax_input[$tax_name]"; ?>" rows="3" cols="20" class="the-tags" id="tax-input-<?php echo $tax_name; ?>" <?php echo $disabled; ?>><?php echo get_terms_to_edit( $post->ID, $tax_name ); // textarea_escaped by esc_attr() ?></textarea></div>
+       <textarea name="<?php echo "tax_input[$tax_name]"; ?>" rows="3" cols="20" class="the-tags" id="tax-input-<?php echo $tax_name; ?>" <?php echo $disabled; ?>><?php echo str_replace( ',', $comma . ' ', get_terms_to_edit( $post->ID, $tax_name ) ); // textarea_escaped by esc_attr() ?></textarea></div>
        <?php if ( current_user_can($taxonomy->cap->assign_terms) ) : ?>
        <div class="ajaxtag hide-if-no-js">
                <label class="screen-reader-text" for="new-tag-<?php echo $tax_name; ?>"><?php echo $box['title']; ?></label>
        <?php if ( current_user_can($taxonomy->cap->assign_terms) ) : ?>
        <div class="ajaxtag hide-if-no-js">
                <label class="screen-reader-text" for="new-tag-<?php echo $tax_name; ?>"><?php echo $box['title']; ?></label>
@@ -303,7 +301,6 @@ function post_tags_meta_box($post, $box) {
 <?php
 }
 
 <?php
 }
 
-
 /**
  * Display post categories form fields.
  *
 /**
  * Display post categories form fields.
  *
@@ -359,7 +356,7 @@ function post_categories_meta_box( $post, $box ) {
                                                <?php echo $tax->labels->parent_item_colon; ?>
                                        </label>
                                        <?php wp_dropdown_categories( array( 'taxonomy' => $taxonomy, 'hide_empty' => 0, 'name' => 'new'.$taxonomy.'_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '&mdash; ' . $tax->labels->parent_item . ' &mdash;', 'tab_index' => 3 ) ); ?>
                                                <?php echo $tax->labels->parent_item_colon; ?>
                                        </label>
                                        <?php wp_dropdown_categories( array( 'taxonomy' => $taxonomy, 'hide_empty' => 0, 'name' => 'new'.$taxonomy.'_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '&mdash; ' . $tax->labels->parent_item . ' &mdash;', 'tab_index' => 3 ) ); ?>
-                                       <input type="button" id="<?php echo $taxonomy; ?>-add-submit" class="add:<?php echo $taxonomy ?>checklist:<?php echo $taxonomy ?>-add button category-add-sumbit" value="<?php echo esc_attr( $tax->labels->add_new_item ); ?>" tabindex="3" />
+                                       <input type="button" id="<?php echo $taxonomy; ?>-add-submit" class="add:<?php echo $taxonomy ?>checklist:<?php echo $taxonomy ?>-add button category-add-submit" value="<?php echo esc_attr( $tax->labels->add_new_item ); ?>" tabindex="3" />
                                        <?php wp_nonce_field( 'add-'.$taxonomy, '_ajax_nonce-add-'.$taxonomy, false ); ?>
                                        <span id="<?php echo $taxonomy; ?>-ajax-response"></span>
                                </p>
                                        <?php wp_nonce_field( 'add-'.$taxonomy, '_ajax_nonce-add-'.$taxonomy, false ); ?>
                                        <span id="<?php echo $taxonomy; ?>-ajax-response"></span>
                                </p>
@@ -369,7 +366,6 @@ function post_categories_meta_box( $post, $box ) {
        <?php
 }
 
        <?php
 }
 
-
 /**
  * Display post excerpt form fields.
  *
 /**
  * Display post excerpt form fields.
  *
@@ -384,7 +380,6 @@ function post_excerpt_meta_box($post) {
 <?php
 }
 
 <?php
 }
 
-
 /**
  * Display trackback links form fields.
  *
 /**
  * Display trackback links form fields.
  *
@@ -411,7 +406,6 @@ if ( ! empty($pings) )
        echo $pings;
 }
 
        echo $pings;
 }
 
-
 /**
  * Display custom fields form fields.
  *
 /**
  * Display custom fields form fields.
  *
@@ -436,7 +430,6 @@ meta_form(); ?>
 <?php
 }
 
 <?php
 }
 
-
 /**
  * Display comments status form fields.
  *
 /**
  * Display comments status form fields.
  *
@@ -478,29 +471,33 @@ function post_comment_meta_box_thead($result) {
 function post_comment_meta_box($post) {
        global $wpdb, $post_ID;
 
 function post_comment_meta_box($post) {
        global $wpdb, $post_ID;
 
+       wp_nonce_field( 'get-comments', 'add_comment_nonce', false );
+       ?>
+       <p class="hide-if-no-js" id="add-new-comment"><a href="#commentstatusdiv" onclick="commentReply.addcomment(<?php echo $post_ID; ?>);return false;"><?php _e('Add comment'); ?></a></p>
+       <?php
+
        $total = $wpdb->get_var($wpdb->prepare("SELECT count(1) FROM $wpdb->comments WHERE comment_post_ID = '%d' AND ( comment_approved = '0' OR comment_approved = '1')", $post_ID));
        $total = $wpdb->get_var($wpdb->prepare("SELECT count(1) FROM $wpdb->comments WHERE comment_post_ID = '%d' AND ( comment_approved = '0' OR comment_approved = '1')", $post_ID));
+       $wp_list_table = _get_list_table('WP_Post_Comments_List_Table');
+       $wp_list_table->display( true );
 
        if ( 1 > $total ) {
 
        if ( 1 > $total ) {
-               echo '<p>' . __('No comments yet.') . '</p>';
-               return;
+               echo '<p id="no-comments">' . __('No comments yet.') . '</p>';
+       } else {
+               $hidden = get_hidden_meta_boxes('post');
+               if ( ! in_array('commentsdiv', $hidden) ) {
+                       ?>
+                       <script type="text/javascript">jQuery(document).ready(function(){commentsBox.get(<?php echo $total; ?>, 10);});</script>
+                       <?php
+               }
        }
 
        }
 
-       wp_nonce_field( 'get-comments', 'add_comment_nonce', false );
+       ?>
+       <p class="hide-if-no-js hidden" id="show-comments"><a href="#commentstatusdiv" onclick="commentsBox.get(<?php echo $total; ?>);return false;"><?php _e('Show comments'); ?></a> <img class="waiting" style="display:none;" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" /></p>
+       <?php
 
 
-       $wp_list_table = _get_list_table('WP_Post_Comments_List_Table');
-       $wp_list_table->display( true );
-?>
-<p class="hide-if-no-js"><a href="#commentstatusdiv" id="show-comments" onclick="commentsBox.get(<?php echo $total; ?>);return false;"><?php _e('Show comments'); ?></a> <img class="waiting" style="display:none;" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" /></p>
-<?php
-       $hidden = get_hidden_meta_boxes('post');
-       if ( ! in_array('commentsdiv', $hidden) ) { ?>
-               <script type="text/javascript">jQuery(document).ready(function(){commentsBox.get(<?php echo $total; ?>, 10);});</script>
-<?php
-       }
        wp_comment_trashnotice();
 }
 
        wp_comment_trashnotice();
 }
 
-
 /**
  * Display slug form fields.
  *
 /**
  * Display slug form fields.
  *
@@ -514,7 +511,6 @@ function post_slug_meta_box($post) {
 <?php
 }
 
 <?php
 }
 
-
 /**
  * Display form field with list of authors.
  *
 /**
  * Display form field with list of authors.
  *
@@ -535,7 +531,6 @@ function post_author_meta_box($post) {
        ) );
 }
 
        ) );
 }
 
-
 /**
  * Display list of revisions.
  *
 /**
  * Display list of revisions.
  *
@@ -547,7 +542,6 @@ function post_revisions_meta_box($post) {
        wp_list_post_revisions();
 }
 
        wp_list_post_revisions();
 }
 
-
 // -- Page related Meta Boxes
 
 /**
 // -- Page related Meta Boxes
 
 /**
@@ -596,7 +590,6 @@ function page_attributes_meta_box($post) {
 <?php
 }
 
 <?php
 }
 
-
 // -- Link related Meta Boxes
 
 /**
 // -- Link related Meta Boxes
 
 /**
@@ -627,7 +620,7 @@ function link_submit_meta_box($link) {
 </div>
 
 <div id="misc-publishing-actions">
 </div>
 
 <div id="misc-publishing-actions">
-<div class="misc-pub-section misc-pub-section-last">
+<div class="misc-pub-section">
        <label for="link_private" class="selectit"><input id="link_private" name="link_visible" type="checkbox" value="N" <?php checked($link->link_visible, 'N'); ?> /> <?php _e('Keep this link private') ?></label>
 </div>
 </div>
        <label for="link_private" class="selectit"><input id="link_private" name="link_visible" type="checkbox" value="N" <?php checked($link->link_visible, 'N'); ?> /> <?php _e('Keep this link private') ?></label>
 </div>
 </div>
@@ -639,7 +632,7 @@ function link_submit_meta_box($link) {
 <div id="delete-action">
 <?php
 if ( !empty($_GET['action']) && 'edit' == $_GET['action'] && current_user_can('manage_links') ) { ?>
 <div id="delete-action">
 <?php
 if ( !empty($_GET['action']) && 'edit' == $_GET['action'] && current_user_can('manage_links') ) { ?>
-       <a class="submitdelete deletion" href="<?php echo wp_nonce_url("link.php?action=delete&amp;link_id=$link->link_id", 'delete-bookmark_' . $link->link_id); ?>" onclick="if ( confirm('<?php echo esc_js(sprintf(__("You are about to delete this link '%s'\n  'Cancel' to stop, 'OK' to delete."), $link->link_name )); ?>') ) {return true;}return false;"><?php _e('Delete'); ?></a>
+       <a class="submitdelete deletion" href="<?php echo wp_nonce_url("link.php?action=delete&amp;link_id=$link->link_id", 'delete-bookmark_' . $link->link_id); ?>" onclick="if ( confirm('<?php echo esc_js(sprintf(__("You are about to delete this link '%s'\n 'Cancel' to stop, 'OK' to delete."), $link->link_name )); ?>') ) {return true;}return false;"><?php _e('Delete'); ?></a>
 <?php } ?>
 </div>
 
 <?php } ?>
 </div>
 
@@ -658,7 +651,6 @@ if ( !empty($_GET['action']) && 'edit' == $_GET['action'] && current_user_can('m
 <?php
 }
 
 <?php
 }
 
-
 /**
  * Display link categories form fields.
  *
 /**
  * Display link categories form fields.
  *
@@ -666,43 +658,45 @@ if ( !empty($_GET['action']) && 'edit' == $_GET['action'] && current_user_can('m
  *
  * @param object $link
  */
  *
  * @param object $link
  */
-function link_categories_meta_box($link) { ?>
-<ul id="category-tabs" class="category-tabs">
-       <li class="tabs"><a href="#categories-all"><?php _e( 'All Categories' ); ?></a></li>
-       <li class="hide-if-no-js"><a href="#categories-pop"><?php _e( 'Most Used' ); ?></a></li>
-</ul>
-
-<div id="categories-all" class="tabs-panel">
-       <ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
-               <?php
-               if ( isset($link->link_id) )
-                       wp_link_category_checklist($link->link_id);
-               else
-                       wp_link_category_checklist();
-               ?>
+function link_categories_meta_box($link) {
+?>
+<div id="taxonomy-linkcategory" class="categorydiv">
+       <ul id="category-tabs" class="category-tabs">
+               <li class="tabs"><a href="#categories-all"><?php _e( 'All Categories' ); ?></a></li>
+               <li class="hide-if-no-js"><a href="#categories-pop"><?php _e( 'Most Used' ); ?></a></li>
        </ul>
        </ul>
-</div>
 
 
-<div id="categories-pop" class="tabs-panel" style="display: none;">
-       <ul id="categorychecklist-pop" class="categorychecklist form-no-clear">
-               <?php wp_popular_terms_checklist('link_category'); ?>
-       </ul>
-</div>
+       <div id="categories-all" class="tabs-panel">
+               <ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
+                       <?php
+                       if ( isset($link->link_id) )
+                               wp_link_category_checklist($link->link_id);
+                       else
+                               wp_link_category_checklist();
+                       ?>
+               </ul>
+       </div>
 
 
-<div id="category-adder" class="wp-hidden-children">
-       <h4><a id="category-add-toggle" href="#category-add"><?php _e( '+ Add New Category' ); ?></a></h4>
-       <p id="link-category-add" class="wp-hidden-child">
-               <label class="screen-reader-text" for="newcat"><?php _e( '+ Add New Category' ); ?></label>
-               <input type="text" name="newcat" id="newcat" class="form-required form-input-tip" value="<?php esc_attr_e( 'New category name' ); ?>" aria-required="true" />
-               <input type="button" id="category-add-submit" class="add:categorychecklist:linkcategorydiv button" value="<?php esc_attr_e( 'Add' ); ?>" />
-               <?php wp_nonce_field( 'add-link-category', '_ajax_nonce', false ); ?>
-               <span id="category-ajax-response"></span>
-       </p>
+       <div id="categories-pop" class="tabs-panel" style="display: none;">
+               <ul id="categorychecklist-pop" class="categorychecklist form-no-clear">
+                       <?php wp_popular_terms_checklist('link_category'); ?>
+               </ul>
+       </div>
+
+       <div id="category-adder" class="wp-hidden-children">
+               <h4><a id="category-add-toggle" href="#category-add"><?php _e( '+ Add New Category' ); ?></a></h4>
+               <p id="link-category-add" class="wp-hidden-child">
+                       <label class="screen-reader-text" for="newcat"><?php _e( '+ Add New Category' ); ?></label>
+                       <input type="text" name="newcat" id="newcat" class="form-required form-input-tip" value="<?php esc_attr_e( 'New category name' ); ?>" aria-required="true" />
+                       <input type="button" id="category-add-submit" class="add:categorychecklist:linkcategorydiv button" value="<?php esc_attr_e( 'Add' ); ?>" />
+                       <?php wp_nonce_field( 'add-link-category', '_ajax_nonce', false ); ?>
+                       <span id="category-ajax-response"></span>
+               </p>
+       </div>
 </div>
 <?php
 }
 
 </div>
 <?php
 }
 
-
 /**
  * Display form fields for changing link target.
  *
 /**
  * Display form fields for changing link target.
  *
@@ -726,7 +720,6 @@ function link_target_meta_box($link) { ?>
 <?php
 }
 
 <?php
 }
 
-
 /**
  * Display checked checkboxes attribute for xfn microformat options.
  *
 /**
  * Display checked checkboxes attribute for xfn microformat options.
  *
@@ -757,7 +750,6 @@ function xfn_check( $class, $value = '', $deprecated = '' ) {
        }
 }
 
        }
 }
 
-
 /**
  * Display xfn form fields.
  *
 /**
  * Display xfn form fields.
  *
@@ -767,117 +759,115 @@ function xfn_check( $class, $value = '', $deprecated = '' ) {
  */
 function link_xfn_meta_box($link) {
 ?>
  */
 function link_xfn_meta_box($link) {
 ?>
-<table class="editform" style="width: 100%;" cellspacing="2" cellpadding="5">
+<table class="links-table" cellspacing="0">
        <tr>
        <tr>
-               <th style="width: 20%;" scope="row"><label for="link_rel"><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('rel:') ?></label></th>
-               <td style="width: 80%;"><input type="text" name="link_rel" id="link_rel" size="50" value="<?php echo ( isset( $link->link_rel ) ? esc_attr($link->link_rel) : ''); ?>" /></td>
+               <th scope="row"><label for="link_rel"><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('rel:') ?></label></th>
+               <td><input type="text" name="link_rel" id="link_rel" value="<?php echo ( isset( $link->link_rel ) ? esc_attr($link->link_rel) : ''); ?>" /></td>
        </tr>
        <tr>
        </tr>
        <tr>
-               <td colspan="2">
-                       <table cellpadding="3" cellspacing="5" class="form-table">
-                               <tr>
-                                       <th scope="row"> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('identity') ?> </th>
-                                       <td><fieldset><legend class="screen-reader-text"><span> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('identity') ?> </span></legend>
-                                               <label for="me">
-                                               <input type="checkbox" name="identity" value="me" id="me" <?php xfn_check('identity', 'me'); ?> />
-                                               <?php _e('another web address of mine') ?></label>
-                                       </fieldset></td>
-                               </tr>
-                               <tr>
-                                       <th scope="row"> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('friendship') ?> </th>
-                                       <td><fieldset><legend class="screen-reader-text"><span> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('friendship') ?> </span></legend>
-                                               <label for="contact">
-                                               <input class="valinp" type="radio" name="friendship" value="contact" id="contact" <?php xfn_check('friendship', 'contact'); ?> /> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('contact') ?></label>
-                                               <label for="acquaintance">
-                                               <input class="valinp" type="radio" name="friendship" value="acquaintance" id="acquaintance" <?php xfn_check('friendship', 'acquaintance'); ?> />  <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('acquaintance') ?></label>
-                                               <label for="friend">
-                                               <input class="valinp" type="radio" name="friendship" value="friend" id="friend" <?php xfn_check('friendship', 'friend'); ?> /> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('friend') ?></label>
-                                               <label for="friendship">
-                                               <input name="friendship" type="radio" class="valinp" value="" id="friendship" <?php xfn_check('friendship'); ?> /> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('none') ?></label>
-                                       </fieldset></td>
-                               </tr>
-                               <tr>
-                                       <th scope="row"> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('physical') ?> </th>
-                                       <td><fieldset><legend class="screen-reader-text"><span> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('physical') ?> </span></legend>
-                                               <label for="met">
-                                               <input class="valinp" type="checkbox" name="physical" value="met" id="met" <?php xfn_check('physical', 'met'); ?> />
-                                               <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('met') ?></label>
-                                       </fieldset></td>
-                               </tr>
-                               <tr>
-                                       <th scope="row"> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('professional') ?> </th>
-                                       <td><fieldset><legend class="screen-reader-text"><span> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('professional') ?> </span></legend>
-                                               <label for="co-worker">
-                                               <input class="valinp" type="checkbox" name="professional" value="co-worker" id="co-worker" <?php xfn_check('professional', 'co-worker'); ?> />
-                                               <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('co-worker') ?></label>
-                                               <label for="colleague">
-                                               <input class="valinp" type="checkbox" name="professional" value="colleague" id="colleague" <?php xfn_check('professional', 'colleague'); ?> />
-                                               <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('colleague') ?></label>
-                                       </fieldset></td>
-                               </tr>
-                               <tr>
-                                       <th scope="row"> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('geographical') ?> </th>
-                                       <td><fieldset><legend class="screen-reader-text"><span> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('geographical') ?> </span></legend>
-                                               <label for="co-resident">
-                                               <input class="valinp" type="radio" name="geographical" value="co-resident" id="co-resident" <?php xfn_check('geographical', 'co-resident'); ?> />
-                                               <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('co-resident') ?></label>
-                                               <label for="neighbor">
-                                               <input class="valinp" type="radio" name="geographical" value="neighbor" id="neighbor" <?php xfn_check('geographical', 'neighbor'); ?> />
-                                               <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('neighbor') ?></label>
-                                               <label for="geographical">
-                                               <input class="valinp" type="radio" name="geographical" value="" id="geographical" <?php xfn_check('geographical'); ?> />
-                                               <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('none') ?></label>
-                                       </fieldset></td>
-                               </tr>
-                               <tr>
-                                       <th scope="row"> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('family') ?> </th>
-                                       <td><fieldset><legend class="screen-reader-text"><span> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('family') ?> </span></legend>
-                                               <label for="child">
-                                               <input class="valinp" type="radio" name="family" value="child" id="child" <?php xfn_check('family', 'child'); ?>  />
-                                               <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('child') ?></label>
-                                               <label for="kin">
-                                               <input class="valinp" type="radio" name="family" value="kin" id="kin" <?php xfn_check('family', 'kin'); ?>  />
-                                               <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('kin') ?></label>
-                                               <label for="parent">
-                                               <input class="valinp" type="radio" name="family" value="parent" id="parent" <?php xfn_check('family', 'parent'); ?> />
-                                               <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('parent') ?></label>
-                                               <label for="sibling">
-                                               <input class="valinp" type="radio" name="family" value="sibling" id="sibling" <?php xfn_check('family', 'sibling'); ?> />
-                                               <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('sibling') ?></label>
-                                               <label for="spouse">
-                                               <input class="valinp" type="radio" name="family" value="spouse" id="spouse" <?php xfn_check('family', 'spouse'); ?> />
-                                               <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('spouse') ?></label>
-                                               <label for="family">
-                                               <input class="valinp" type="radio" name="family" value="" id="family" <?php xfn_check('family'); ?> />
-                                               <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('none') ?></label>
-                                       </fieldset></td>
-                               </tr>
-                               <tr>
-                                       <th scope="row"> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('romantic') ?> </th>
-                                       <td><fieldset><legend class="screen-reader-text"><span> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('romantic') ?> </span></legend>
-                                               <label for="muse">
-                                               <input class="valinp" type="checkbox" name="romantic" value="muse" id="muse" <?php xfn_check('romantic', 'muse'); ?> />
-                                               <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('muse') ?></label>
-                                               <label for="crush">
-                                               <input class="valinp" type="checkbox" name="romantic" value="crush" id="crush" <?php xfn_check('romantic', 'crush'); ?> />
-                                               <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('crush') ?></label>
-                                               <label for="date">
-                                               <input class="valinp" type="checkbox" name="romantic" value="date" id="date" <?php xfn_check('romantic', 'date'); ?> />
-                                               <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('date') ?></label>
-                                               <label for="romantic">
-                                               <input class="valinp" type="checkbox" name="romantic" value="sweetheart" id="romantic" <?php xfn_check('romantic', 'sweetheart'); ?> />
-                                               <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('sweetheart') ?></label>
-                                       </fieldset></td>
-                               </tr>
-                       </table>
-               </td>
+               <th scope="row"><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('identity') ?></th>
+               <td><fieldset><legend class="screen-reader-text"><span><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('identity') ?></span></legend>
+                       <label for="me">
+                       <input type="checkbox" name="identity" value="me" id="me" <?php xfn_check('identity', 'me'); ?> />
+                       <?php _e('another web address of mine') ?></label>
+               </fieldset></td>
+       </tr>
+       <tr>
+               <th scope="row"><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('friendship') ?></th>
+               <td><fieldset><legend class="screen-reader-text"><span><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('friendship') ?></span></legend>
+                       <label for="contact">
+                       <input class="valinp" type="radio" name="friendship" value="contact" id="contact" <?php xfn_check('friendship', 'contact'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('contact') ?>
+                       </label>
+                       <label for="acquaintance">
+                       <input class="valinp" type="radio" name="friendship" value="acquaintance" id="acquaintance" <?php xfn_check('friendship', 'acquaintance'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('acquaintance') ?>
+                       </label>
+                       <label for="friend">
+                       <input class="valinp" type="radio" name="friendship" value="friend" id="friend" <?php xfn_check('friendship', 'friend'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('friend') ?>
+                       </label>
+                       <label for="friendship">
+                       <input name="friendship" type="radio" class="valinp" value="" id="friendship" <?php xfn_check('friendship'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('none') ?>
+                       </label>
+               </fieldset></td>
+       </tr>
+       <tr>
+               <th scope="row"> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('physical') ?> </th>
+               <td><fieldset><legend class="screen-reader-text"><span><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('physical') ?></span></legend>
+                       <label for="met">
+                       <input class="valinp" type="checkbox" name="physical" value="met" id="met" <?php xfn_check('physical', 'met'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('met') ?>
+                       </label>
+               </fieldset></td>
+       </tr>
+       <tr>
+               <th scope="row"> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('professional') ?> </th>
+               <td><fieldset><legend class="screen-reader-text"><span><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('professional') ?></span></legend>
+                       <label for="co-worker">
+                       <input class="valinp" type="checkbox" name="professional" value="co-worker" id="co-worker" <?php xfn_check('professional', 'co-worker'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('co-worker') ?>
+                       </label>
+                       <label for="colleague">
+                       <input class="valinp" type="checkbox" name="professional" value="colleague" id="colleague" <?php xfn_check('professional', 'colleague'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('colleague') ?>
+                       </label>
+               </fieldset></td>
+       </tr>
+       <tr>
+               <th scope="row"><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('geographical') ?></th>
+               <td><fieldset><legend class="screen-reader-text"><span> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('geographical') ?> </span></legend>
+                       <label for="co-resident">
+                       <input class="valinp" type="radio" name="geographical" value="co-resident" id="co-resident" <?php xfn_check('geographical', 'co-resident'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('co-resident') ?>
+                       </label>
+                       <label for="neighbor">
+                       <input class="valinp" type="radio" name="geographical" value="neighbor" id="neighbor" <?php xfn_check('geographical', 'neighbor'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('neighbor') ?>
+                       </label>
+                       <label for="geographical">
+                       <input class="valinp" type="radio" name="geographical" value="" id="geographical" <?php xfn_check('geographical'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('none') ?>
+                       </label>
+               </fieldset></td>
+       </tr>
+       <tr>
+               <th scope="row"><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('family') ?></th>
+               <td><fieldset><legend class="screen-reader-text"><span> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('family') ?> </span></legend>
+                       <label for="child">
+                       <input class="valinp" type="radio" name="family" value="child" id="child" <?php xfn_check('family', 'child'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('child') ?>
+                       </label>
+                       <label for="kin">
+                       <input class="valinp" type="radio" name="family" value="kin" id="kin" <?php xfn_check('family', 'kin'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('kin') ?>
+                       </label>
+                       <label for="parent">
+                       <input class="valinp" type="radio" name="family" value="parent" id="parent" <?php xfn_check('family', 'parent'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('parent') ?>
+                       </label>
+                       <label for="sibling">
+                       <input class="valinp" type="radio" name="family" value="sibling" id="sibling" <?php xfn_check('family', 'sibling'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('sibling') ?>
+                       </label>
+                       <label for="spouse">
+                       <input class="valinp" type="radio" name="family" value="spouse" id="spouse" <?php xfn_check('family', 'spouse'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('spouse') ?>
+                       </label>
+                       <label for="family">
+                       <input class="valinp" type="radio" name="family" value="" id="family" <?php xfn_check('family'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('none') ?>
+                       </label>
+               </fieldset></td>
        </tr>
        </tr>
+       <tr>
+               <th scope="row"><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('romantic') ?></th>
+               <td><fieldset><legend class="screen-reader-text"><span> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('romantic') ?> </span></legend>
+                       <label for="muse">
+                       <input class="valinp" type="checkbox" name="romantic" value="muse" id="muse" <?php xfn_check('romantic', 'muse'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('muse') ?>
+                       </label>
+                       <label for="crush">
+                       <input class="valinp" type="checkbox" name="romantic" value="crush" id="crush" <?php xfn_check('romantic', 'crush'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('crush') ?>
+                       </label>
+                       <label for="date">
+                       <input class="valinp" type="checkbox" name="romantic" value="date" id="date" <?php xfn_check('romantic', 'date'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('date') ?>
+                       </label>
+                       <label for="romantic">
+                       <input class="valinp" type="checkbox" name="romantic" value="sweetheart" id="romantic" <?php xfn_check('romantic', 'sweetheart'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('sweetheart') ?>
+                       </label>
+               </fieldset></td>
+       </tr>
+
 </table>
 <p><?php _e('If the link is to a person, you can specify your relationship with them using the above form. If you would like to learn more about the idea check out <a href="http://gmpg.org/xfn/">XFN</a>.'); ?></p>
 <?php
 }
 
 </table>
 <p><?php _e('If the link is to a person, you can specify your relationship with them using the above form. If you would like to learn more about the idea check out <a href="http://gmpg.org/xfn/">XFN</a>.'); ?></p>
 <?php
 }
 
-
 /**
  * Display advanced link options form fields.
  *
 /**
  * Display advanced link options form fields.
  *
@@ -887,28 +877,28 @@ function link_xfn_meta_box($link) {
  */
 function link_advanced_meta_box($link) {
 ?>
  */
 function link_advanced_meta_box($link) {
 ?>
-<table class="form-table" style="width: 100%;" cellspacing="2" cellpadding="5">
-       <tr class="form-field">
-               <th valign="top"  scope="row"><label for="link_image"><?php _e('Image Address') ?></label></th>
-               <td><input type="text" name="link_image" class="code" id="link_image" size="50" value="<?php echo ( isset( $link->link_image ) ? esc_attr($link->link_image) : ''); ?>" style="width: 95%" /></td>
+<table class="links-table" cellpadding="0">
+       <tr>
+               <th scope="row"><label for="link_image"><?php _e('Image Address') ?></label></th>
+               <td><input type="text" name="link_image" class="code" id="link_image" value="<?php echo ( isset( $link->link_image ) ? esc_attr($link->link_image) : ''); ?>" /></td>
        </tr>
        </tr>
-       <tr class="form-field">
-               <th valign="top"  scope="row"><label for="rss_uri"><?php _e('RSS Address') ?></label></th>
-               <td><input name="link_rss" class="code" type="text" id="rss_uri" value="<?php echo  ( isset( $link->link_rss ) ? esc_attr($link->link_rss) : ''); ?>" size="50" style="width: 95%" /></td>
+       <tr>
+               <th scope="row"><label for="rss_uri"><?php _e('RSS Address') ?></label></th>
+               <td><input name="link_rss" class="code" type="text" id="rss_uri" value="<?php echo ( isset( $link->link_rss ) ? esc_attr($link->link_rss) : ''); ?>" /></td>
        </tr>
        </tr>
-       <tr class="form-field">
-               <th valign="top"  scope="row"><label for="link_notes"><?php _e('Notes') ?></label></th>
-               <td><textarea name="link_notes" id="link_notes" cols="50" rows="10" style="width: 95%"><?php echo ( isset( $link->link_notes ) ? $link->link_notes : ''); // textarea_escaped ?></textarea></td>
+       <tr>
+               <th scope="row"><label for="link_notes"><?php _e('Notes') ?></label></th>
+               <td><textarea name="link_notes" id="link_notes" rows="10"><?php echo ( isset( $link->link_notes ) ? $link->link_notes : ''); // textarea_escaped ?></textarea></td>
        </tr>
        </tr>
-       <tr class="form-field">
-               <th valign="top"  scope="row"><label for="link_rating"><?php _e('Rating') ?></label></th>
+       <tr>
+               <th scope="row"><label for="link_rating"><?php _e('Rating') ?></label></th>
                <td><select name="link_rating" id="link_rating" size="1">
                <?php
                <td><select name="link_rating" id="link_rating" size="1">
                <?php
-                       for ($r = 0; $r <= 10; $r++) {
-                               echo('            <option value="'. esc_attr($r) .'" ');
-                               if ( isset($link->link_rating) && $link->link_rating == $r)
-                                       echo 'selected="selected"';
-                               echo('>'.$r.'</option>');
+                       for ( $r = 0; $r <= 10; $r++ ) {
+                               echo '<option value="' . $r . '"';
+                               if ( isset($link->link_rating) && $link->link_rating == $r )
+                                       echo ' selected="selected"';
+                               echo('>' . $r . '</option>');
                        }
                ?></select>&nbsp;<?php _e('(Leave at 0 for no rating.)') ?>
                </td>
                        }
                ?></select>&nbsp;<?php _e('(Leave at 0 for no rating.)') ?>
                </td>
index 594ec7a7fd547d5e251993ff6fd477c53bb36412..14f94fbed7c863d98df9c59e0ceec408607b917e 100644 (file)
@@ -196,17 +196,15 @@ function update_recently_edited( $file ) {
  *
  * @since 2.1.0
  *
  *
  * @since 2.1.0
  *
- * @param unknown_type $old_value
- * @param unknown_type $value
+ * @param string $old_value
+ * @param string $value
  */
 function update_home_siteurl( $old_value, $value ) {
  */
 function update_home_siteurl( $old_value, $value ) {
-       global $wp_rewrite;
-
        if ( defined( "WP_INSTALLING" ) )
                return;
 
        // If home changed, write rewrite rules to new location.
        if ( defined( "WP_INSTALLING" ) )
                return;
 
        // If home changed, write rewrite rules to new location.
-       $wp_rewrite->flush_rules();
+       flush_rewrite_rules();
 }
 
 add_action( 'update_option_home', 'update_home_siteurl', 10, 2 );
 }
 
 add_action( 'update_option_home', 'update_home_siteurl', 10, 2 );
@@ -340,7 +338,6 @@ function set_screen_options() {
                if ( in_array( $type, get_taxonomies()) )
                        $map_option = 'edit_tags_per_page';
 
                if ( in_array( $type, get_taxonomies()) )
                        $map_option = 'edit_tags_per_page';
 
-
                switch ( $map_option ) {
                        case 'edit_per_page':
                        case 'users_per_page':
                switch ( $map_option ) {
                        case 'edit_per_page':
                        case 'users_per_page':
@@ -586,10 +583,10 @@ foreach ( $_wp_admin_css_colors as $color => $color_info ): ?>
 }
 
 function _ipad_meta() {
 }
 
 function _ipad_meta() {
-       if ( strpos($_SERVER['HTTP_USER_AGENT'], 'iPad') !== false ) { ?>
-               <meta name="viewport" id="ipad-viewportmeta" content="width=device-width, initial-scale=1">
-       <?php
+       if ( wp_is_mobile() ) {
+               ?>
+               <meta name="viewport" id="viewport-meta" content="width=device-width, initial-scale=1">
+               <?php
        }
 }
 add_action('admin_head', '_ipad_meta');
        }
 }
 add_action('admin_head', '_ipad_meta');
-
index e7b017bebe2f9af2915bced7ae7eff1317bbd48b..7119018b1fe6e7d6881355ff48a34032367133e4 100644 (file)
@@ -65,4 +65,12 @@ function is_wpmu_sitewide_plugin( $file ) {
        return is_network_only_plugin( $file );
 }
 
        return is_network_only_plugin( $file );
 }
 
-?>
\ No newline at end of file
+function get_site_allowed_themes() {
+       _deprecated_function( __FUNCTION__, '3.4', 'WP_Theme::get_allowed_on_network()' );
+       return array_map( 'intval', WP_Theme::get_allowed_on_network() );
+}
+
+function wpmu_get_blog_allowedthemes( $blog_id = 0 ) {
+       _deprecated_function( __FUNCTION__, '3.4', 'WP_Theme::get_allowed_on_site()' );
+       return array_map( 'intval', WP_Theme::get_allowed_on_site( $blog_id ) );
+}
\ No newline at end of file
index 2c275dfca301568267454359679a85b9b2275245..a6828b2dedfdcc35716b805314a970fad612080e 100644 (file)
@@ -49,7 +49,7 @@ add_filter( 'wp_handle_upload_prefilter', 'check_upload_size' );
  * @since 3.0.0
  *
  * @param int $blog_id Blog ID
  * @since 3.0.0
  *
  * @param int $blog_id Blog ID
- * @param bool $drop True if blog's table should be dropped.  Default is false.
+ * @param bool $drop True if blog's table should be dropped. Default is false.
  * @return void
  */
 function wpmu_delete_blog( $blog_id, $drop = false ) {
  * @return void
  */
 function wpmu_delete_blog( $blog_id, $drop = false ) {
@@ -89,7 +89,8 @@ function wpmu_delete_blog( $blog_id, $drop = false ) {
                        $wpdb->query( "DROP TABLE IF EXISTS `$table`" );
                }
 
                        $wpdb->query( "DROP TABLE IF EXISTS `$table`" );
                }
 
-               $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->blogs WHERE blog_id = %d", $blog_id ) );
+               $wpdb->delete( $wpdb->blogs, array( 'blog_id' => $blog_id ) );
+
                $dir = apply_filters( 'wpmu_delete_blog_upload_dir', WP_CONTENT_DIR . "/blogs.dir/{$blog_id}/files/", $blog_id );
                $dir = rtrim( $dir, DIRECTORY_SEPARATOR );
                $top_dir = $dir;
                $dir = apply_filters( 'wpmu_delete_blog_upload_dir', WP_CONTENT_DIR . "/blogs.dir/{$blog_id}/files/", $blog_id );
                $dir = rtrim( $dir, DIRECTORY_SEPARATOR );
                $top_dir = $dir;
@@ -115,7 +116,7 @@ function wpmu_delete_blog( $blog_id, $drop = false ) {
                        $index++;
                }
 
                        $index++;
                }
 
-               $stack = array_reverse( $stack );  // Last added dirs are deepest
+               $stack = array_reverse( $stack ); // Last added dirs are deepest
                foreach( (array) $stack as $dir ) {
                        if ( $dir != $top_dir)
                        @rmdir( $dir );
                foreach( (array) $stack as $dir ) {
                        if ( $dir != $top_dir)
                        @rmdir( $dir );
@@ -131,6 +132,7 @@ function wpmu_delete_user( $id ) {
        global $wpdb;
 
        $id = (int) $id;
        global $wpdb;
 
        $id = (int) $id;
+       $user = new WP_User( $id );
 
        do_action( 'wpmu_delete_user', $id );
 
 
        do_action( 'wpmu_delete_user', $id );
 
@@ -158,10 +160,13 @@ function wpmu_delete_user( $id ) {
                }
        }
 
                }
        }
 
-       $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->users WHERE ID = %d", $id ) );
-       $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->usermeta WHERE user_id = %d", $id ) );
+       $meta = $wpdb->get_col( $wpdb->prepare( "SELECT umeta_id FROM $wpdb->usermeta WHERE user_id = %d", $id ) );
+       foreach ( $meta as $mid )
+               delete_metadata_by_mid( 'user', $mid );
+
+       $wpdb->delete( $wpdb->users, array( 'ID' => $id ) );
 
 
-       clean_user_cache( $id );
+       clean_user_cache( $user );
 
        // allow for commit transaction
        do_action( 'deleted_user', $id );
 
        // allow for commit transaction
        do_action( 'deleted_user', $id );
@@ -169,35 +174,6 @@ function wpmu_delete_user( $id ) {
        return true;
 }
 
        return true;
 }
 
-function wpmu_get_blog_allowedthemes( $blog_id = 0 ) {
-       $themes = get_themes();
-
-       if ( $blog_id != 0 )
-               switch_to_blog( $blog_id );
-
-       $blog_allowed_themes = get_option( 'allowedthemes' );
-       if ( !is_array( $blog_allowed_themes ) || empty( $blog_allowed_themes ) ) { // convert old allowed_themes to new allowedthemes
-               $blog_allowed_themes = get_option( 'allowed_themes' );
-
-               if ( is_array( $blog_allowed_themes ) ) {
-                       foreach( (array) $themes as $key => $theme ) {
-                               $theme_key = esc_html( $theme['Stylesheet'] );
-                               if ( isset( $blog_allowed_themes[$key] ) == true ) {
-                                       $blog_allowedthemes[$theme_key] = 1;
-                               }
-                       }
-                       $blog_allowed_themes = $blog_allowedthemes;
-                       add_option( 'allowedthemes', $blog_allowed_themes );
-                       delete_option( 'allowed_themes' );
-               }
-       }
-
-       if ( $blog_id != 0 )
-               restore_current_blog();
-
-       return $blog_allowed_themes;
-}
-
 function update_option_new_admin_email( $old_value, $value ) {
        $email = get_option( 'admin_email' );
        if ( $value == get_option( 'admin_email' ) || !is_email( $value ) )
 function update_option_new_admin_email( $old_value, $value ) {
        $email = get_option( 'admin_email' );
        if ( $value == get_option( 'admin_email' ) || !is_email( $value ) )
@@ -296,26 +272,6 @@ function new_user_email_admin_notice() {
 }
 add_action( 'admin_notices', 'new_user_email_admin_notice' );
 
 }
 add_action( 'admin_notices', 'new_user_email_admin_notice' );
 
-function get_site_allowed_themes() {
-       $themes = get_themes();
-       $allowed_themes = get_site_option( 'allowedthemes' );
-       if ( !is_array( $allowed_themes ) || empty( $allowed_themes ) ) {
-               $allowed_themes = get_site_option( 'allowed_themes' ); // convert old allowed_themes format
-               if ( !is_array( $allowed_themes ) ) {
-                       $allowed_themes = array();
-               } else {
-                       foreach( (array) $themes as $key => $theme ) {
-                               $theme_key = esc_html( $theme['Stylesheet'] );
-                               if ( isset( $allowed_themes[ $key ] ) == true ) {
-                                       $allowedthemes[ $theme_key ] = 1;
-                               }
-                       }
-                       $allowed_themes = $allowedthemes;
-               }
-       }
-       return $allowed_themes;
-}
-
 /**
  * Determines if there is any upload space left in the current blog's quota.
  *
 /**
  * Determines if there is any upload space left in the current blog's quota.
  *
@@ -423,7 +379,7 @@ function upload_space_setting( $id ) {
        ?>
        <tr>
                <th><?php _e( 'Site Upload Space Quota '); ?></th>
        ?>
        <tr>
                <th><?php _e( 'Site Upload Space Quota '); ?></th>
-               <td><input type="text" size="3" name="option[blog_upload_space]" value="<?php echo $quota; ?>" /> <?php _e( 'MB (Leave blank for network default)' ); ?></td>
+               <td><input type="number" step="1" min="0" style="width: 100px" name="option[blog_upload_space]" value="<?php echo $quota; ?>" /> <?php _e( 'MB (Leave blank for network default)' ); ?></td>
        </tr>
        <?php
 }
        </tr>
        <?php
 }
@@ -432,12 +388,13 @@ add_action( 'wpmueditblogaction', 'upload_space_setting' );
 function update_user_status( $id, $pref, $value, $deprecated = null ) {
        global $wpdb;
 
 function update_user_status( $id, $pref, $value, $deprecated = null ) {
        global $wpdb;
 
-       if ( null !== $deprecated  )
+       if ( null !== $deprecated )
                _deprecated_argument( __FUNCTION__, '3.1' );
 
        $wpdb->update( $wpdb->users, array( $pref => $value ), array( 'ID' => $id ) );
 
                _deprecated_argument( __FUNCTION__, '3.1' );
 
        $wpdb->update( $wpdb->users, array( $pref => $value ), array( 'ID' => $id ) );
 
-       clean_user_cache( $id );
+       $user = new WP_User( $id );
+       clean_user_cache( $user );
 
        if ( $pref == 'spam' ) {
                if ( $value == 1 )
 
        if ( $pref == 'spam' ) {
                if ( $value == 1 )
@@ -455,7 +412,7 @@ function refresh_user_details( $id ) {
        if ( !$user = get_userdata( $id ) )
                return false;
 
        if ( !$user = get_userdata( $id ) )
                return false;
 
-       clean_user_cache( $id );
+       clean_user_cache( $user );
 
        return $id;
 }
 
        return $id;
 }
@@ -551,7 +508,7 @@ function mu_dropdown_languages( $lang_files = array(), $current = '' ) {
                        $output[$be] = '<option value="' . esc_attr( $code_lang ) . '"' . selected( $current, $code_lang, false ) . '> ' . $be . '</option>';
                } else {
                        $translated = format_code_lang( $code_lang );
                        $output[$be] = '<option value="' . esc_attr( $code_lang ) . '"' . selected( $current, $code_lang, false ) . '> ' . $be . '</option>';
                } else {
                        $translated = format_code_lang( $code_lang );
-                       $output[$translated] =  '<option value="' . esc_attr( $code_lang ) . '"' . selected( $current, $code_lang, false ) . '> ' . esc_html ( $translated ) . '</option>';
+                       $output[$translated] = '<option value="' . esc_attr( $code_lang ) . '"' . selected( $current, $code_lang, false ) . '> ' . esc_html ( $translated ) . '</option>';
                }
 
        }
                }
 
        }
@@ -636,7 +593,7 @@ function choose_primary_blog() {
                                <?php foreach( (array) $all_blogs as $blog ) {
                                        if ( $primary_blog == $blog->userblog_id )
                                                $found = true;
                                <?php foreach( (array) $all_blogs as $blog ) {
                                        if ( $primary_blog == $blog->userblog_id )
                                                $found = true;
-                                       ?><option value="<?php echo $blog->userblog_id ?>"<?php selected( $primary_blog,  $blog->userblog_id ); ?>><?php echo esc_url( get_home_url( $blog->userblog_id ) ) ?></option><?php
+                                       ?><option value="<?php echo $blog->userblog_id ?>"<?php selected( $primary_blog, $blog->userblog_id ); ?>><?php echo esc_url( get_home_url( $blog->userblog_id ) ) ?></option><?php
                                } ?>
                        </select>
                        <?php
                                } ?>
                        </select>
                        <?php
@@ -773,10 +730,10 @@ var tb_closeImage = "../../wp-includes/js/thickbox/tb-close.png";
  * Whether or not we have a large network.
  *
  * The default criteria for a large network is either more than 10,000 users or more than 10,000 sites.
  * Whether or not we have a large network.
  *
  * The default criteria for a large network is either more than 10,000 users or more than 10,000 sites.
- * Plugins can alter this criteria  using the 'wp_is_large_network' filter.
+ * Plugins can alter this criteria using the 'wp_is_large_network' filter.
  *
  * @since 3.3.0
  *
  * @since 3.3.0
- * @param string $using 'sites or 'users'.  Default is 'sites'.
+ * @param string $using 'sites or 'users'. Default is 'sites'.
  * @return bool True if the network meets the criteria for large. False otherwise.
  */
 function wp_is_large_network( $using = 'sites' ) {
  * @return bool True if the network meets the criteria for large. False otherwise.
  */
 function wp_is_large_network( $using = 'sites' ) {
@@ -788,4 +745,3 @@ function wp_is_large_network( $using = 'sites' ) {
        $count = get_blog_count();
        return apply_filters( 'wp_is_large_network', $count > 10000, 'sites', $count );
 }
        $count = get_blog_count();
        return apply_filters( 'wp_is_large_network', $count > 10000, 'sites', $count );
 }
-?>
index 7c3380275fcadec882aaf407cc758d49ad8e984c..5fc73fcbbf8c65df2b8383f3d2e23aa57bcbffac 100644 (file)
@@ -7,7 +7,7 @@
  * @since 3.0.0
  * @uses Walker_Nav_Menu
  */
  * @since 3.0.0
  * @uses Walker_Nav_Menu
  */
-class Walker_Nav_Menu_Edit extends Walker_Nav_Menu  {
+class Walker_Nav_Menu_Edit extends Walker_Nav_Menu {
        /**
         * @see Walker_Nav_Menu::start_lvl()
         * @since 3.0.0
        /**
         * @see Walker_Nav_Menu::start_lvl()
         * @since 3.0.0
@@ -209,7 +209,7 @@ class Walker_Nav_Menu_Edit extends Walker_Nav_Menu  {
  * @since 3.0.0
  * @uses Walker_Nav_Menu
  */
  * @since 3.0.0
  * @uses Walker_Nav_Menu
  */
-class Walker_Nav_Menu_Checklist extends Walker_Nav_Menu  {
+class Walker_Nav_Menu_Checklist extends Walker_Nav_Menu {
        function __construct( $fields = false ) {
                if ( $fields ) {
                        $this->db_fields = $fields;
        function __construct( $fields = false ) {
                if ( $fields ) {
                        $this->db_fields = $fields;
@@ -324,7 +324,6 @@ function _wp_ajax_menu_quick_search( $request = array() ) {
 
                }
 
 
                }
 
-
        } elseif ( preg_match('/quick-search-(posttype|taxonomy)-([a-zA-Z_-]*\b)/', $type, $matches) ) {
                if ( 'posttype' == $matches[1] && get_post_type_object( $matches[2] ) ) {
                        query_posts(array(
        } elseif ( preg_match('/quick-search-(posttype|taxonomy)-([a-zA-Z_-]*\b)/', $type, $matches) ) {
                if ( 'posttype' == $matches[1] && get_post_type_object( $matches[2] ) ) {
                        query_posts(array(
@@ -692,7 +691,7 @@ function wp_nav_menu_item_post_type_meta_box( $object, $post_type ) {
                        }
                        ?>
                        <p class="quick-search-wrap">
                        }
                        ?>
                        <p class="quick-search-wrap">
-                               <input type="text" class="quick-search input-with-default-title" title="<?php esc_attr_e('Search'); ?>" value="<?php echo $searched; ?>" name="quick-search-posttype-<?php echo $post_type_name; ?>" />
+                               <input type="search" class="quick-search input-with-default-title" title="<?php esc_attr_e('Search'); ?>" value="<?php echo $searched; ?>" name="quick-search-posttype-<?php echo $post_type_name; ?>" />
                                <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
                                <?php submit_button( __( 'Search' ), 'quick-search-submit button-secondary hide-if-js', 'submit', false, array( 'id' => 'submit-quick-search-posttype-' . $post_type_name ) ); ?>
                        </p>
                                <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
                                <?php submit_button( __( 'Search' ), 'quick-search-submit button-secondary hide-if-js', 'submit', false, array( 'id' => 'submit-quick-search-posttype-' . $post_type_name ) ); ?>
                        </p>
@@ -711,7 +710,6 @@ function wp_nav_menu_item_post_type_meta_box( $object, $post_type ) {
                        </ul>
                </div><!-- /.tabs-panel -->
 
                        </ul>
                </div><!-- /.tabs-panel -->
 
-
                <div id="<?php echo $post_type_name; ?>-all" class="tabs-panel tabs-panel-view-all <?php
                        echo ( 'all' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' );
                ?>">
                <div id="<?php echo $post_type_name; ?>-all" class="tabs-panel tabs-panel-view-all <?php
                        echo ( 'all' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' );
                ?>">
@@ -767,7 +765,6 @@ function wp_nav_menu_item_post_type_meta_box( $object, $post_type ) {
                        <?php endif; ?>
                </div><!-- /.tabs-panel -->
 
                        <?php endif; ?>
                </div><!-- /.tabs-panel -->
 
-
                <p class="button-controls">
                        <span class="list-controls">
                                <a href="<?php
                <p class="button-controls">
                        <span class="list-controls">
                                <a href="<?php
@@ -814,7 +811,6 @@ function wp_nav_menu_item_taxonomy_meta_box( $object, $taxonomy ) {
                'hide_empty' => false,
                'hierarchical' => 1,
                'include' => '',
                'hide_empty' => false,
                'hierarchical' => 1,
                'include' => '',
-               'include_last_update_time' => false,
                'number' => $per_page,
                'offset' => $offset,
                'order' => 'ASC',
                'number' => $per_page,
                'offset' => $offset,
                'order' => 'ASC',
@@ -926,7 +922,7 @@ function wp_nav_menu_item_taxonomy_meta_box( $object, $taxonomy ) {
                        }
                        ?>
                        <p class="quick-search-wrap">
                        }
                        ?>
                        <p class="quick-search-wrap">
-                               <input type="text" class="quick-search input-with-default-title" title="<?php esc_attr_e('Search'); ?>" value="<?php echo $searched; ?>" name="quick-search-taxonomy-<?php echo $taxonomy_name; ?>" />
+                               <input type="search" class="quick-search input-with-default-title" title="<?php esc_attr_e('Search'); ?>" value="<?php echo $searched; ?>" name="quick-search-taxonomy-<?php echo $taxonomy_name; ?>" />
                                <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
                                <?php submit_button( __( 'Search' ), 'quick-search-submit button-secondary hide-if-js', 'submit', false, array( 'id' => 'submit-quick-search-taxonomy-' . $taxonomy_name ) ); ?>
                        </p>
                                <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
                                <?php submit_button( __( 'Search' ), 'quick-search-submit button-secondary hide-if-js', 'submit', false, array( 'id' => 'submit-quick-search-taxonomy-' . $taxonomy_name ) ); ?>
                        </p>
@@ -990,7 +986,7 @@ function wp_save_nav_menu_items( $menu_id = 0, $menu_data = array() ) {
                                (
                                        ! isset( $_item_object_data['menu-item-type'] ) || // and item type either isn't set
                                        in_array( $_item_object_data['menu-item-url'], array( 'http://', '' ) ) || // or URL is the default
                                (
                                        ! isset( $_item_object_data['menu-item-type'] ) || // and item type either isn't set
                                        in_array( $_item_object_data['menu-item-url'], array( 'http://', '' ) ) || // or URL is the default
-                                       ! ( 'custom' == $_item_object_data['menu-item-type'] && ! isset( $_item_object_data['menu-item-db-id'] ) ) ||  // or it's not a custom menu item (but not the custom home page)
+                                       ! ( 'custom' == $_item_object_data['menu-item-type'] && ! isset( $_item_object_data['menu-item-db-id'] ) ) || // or it's not a custom menu item (but not the custom home page)
                                        ! empty( $_item_object_data['menu-item-db-id'] ) // or it *is* a custom menu item that already exists
                                )
                        ) {
                                        ! empty( $_item_object_data['menu-item-db-id'] ) // or it *is* a custom menu item that already exists
                                )
                        ) {
@@ -1125,7 +1121,6 @@ function wp_get_nav_menu_to_edit( $menu_id = 0 ) {
                return $menu;
        }
 
                return $menu;
        }
 
-
 }
 
 /**
 }
 
 /**
@@ -1165,5 +1160,3 @@ function _wp_delete_orphaned_draft_menu_items() {
 }
 
 add_action('admin_head-nav-menus.php', '_wp_delete_orphaned_draft_menu_items');
 }
 
 add_action('admin_head-nav-menus.php', '_wp_delete_orphaned_draft_menu_items');
-
-?>
index 71cc36dc6bd8871a1ed06ff9f0dd08acc38a6d24..f0d7cbdebe379a7da89b8b51dbb56e659c12345e 100644 (file)
@@ -43,11 +43,11 @@ function plugins_api($action, $args = null) {
        if ( false === $res ) {
                $request = wp_remote_post('http://api.wordpress.org/plugins/info/1.0/', array( 'timeout' => 15, 'body' => array('action' => $action, 'request' => serialize($args))) );
                if ( is_wp_error($request) ) {
        if ( false === $res ) {
                $request = wp_remote_post('http://api.wordpress.org/plugins/info/1.0/', array( 'timeout' => 15, 'body' => array('action' => $action, 'request' => serialize($args))) );
                if ( is_wp_error($request) ) {
-                       $res = new WP_Error('plugins_api_failed', __('An Unexpected HTTP Error occurred during the API request.'), $request->get_error_message() );
+                       $res = new WP_Error('plugins_api_failed', __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server&#8217;s configuration. If you continue to have problems, please try the <a href="http://wordpress.org/support/">support forums</a>.' ), $request->get_error_message() );
                } else {
                } else {
-                       $res = unserialize( wp_remote_retrieve_body( $request ) );
-                       if ( false === $res )
-                               $res = new WP_Error('plugins_api_failed', __('An unknown error occurred.'), wp_remote_retrieve_body( $request ) );
+                       $res = maybe_unserialize( wp_remote_retrieve_body( $request ) );
+                       if ( ! is_object( $res ) && ! is_array( $res ) )
+                               $res = new WP_Error('plugins_api_failed', __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server&#8217;s configuration. If you continue to have problems, please try the <a href="http://wordpress.org/support/">support forums</a>.' ), wp_remote_retrieve_body( $request ) );
                }
        } elseif ( !is_wp_error($res) ) {
                $res->external = true;
                }
        } elseif ( !is_wp_error($res) ) {
                $res->external = true;
@@ -84,8 +84,7 @@ function install_dashboard() {
        <p><?php printf( __( 'Plugins extend and expand the functionality of WordPress. You may automatically install plugins from the <a href="http://wordpress.org/extend/plugins/">WordPress Plugin Directory</a> or upload a plugin in .zip format via <a href="%s">this page</a>.' ), self_admin_url( 'plugin-install.php?tab=upload' ) ); ?></p>
 
        <h4><?php _e('Search') ?></h4>
        <p><?php printf( __( 'Plugins extend and expand the functionality of WordPress. You may automatically install plugins from the <a href="http://wordpress.org/extend/plugins/">WordPress Plugin Directory</a> or upload a plugin in .zip format via <a href="%s">this page</a>.' ), self_admin_url( 'plugin-install.php?tab=upload' ) ); ?></p>
 
        <h4><?php _e('Search') ?></h4>
-       <p class="install-help"><?php _e('Search for plugins by keyword, author, or tag.') ?></p>
-       <?php install_search_form(); ?>
+       <?php install_search_form( false ); ?>
 
        <h4><?php _e('Popular tags') ?></h4>
        <p class="install-help"><?php _e('You may also browse based on the most popular tags in the Plugin Directory:') ?></p>
 
        <h4><?php _e('Popular tags') ?></h4>
        <p class="install-help"><?php _e('You may also browse based on the most popular tags in the Plugin Directory:') ?></p>
@@ -116,18 +115,20 @@ add_action('install_plugins_dashboard', 'install_dashboard');
  *
  * @since 2.7.0
  */
  *
  * @since 2.7.0
  */
-function install_search_form(){
-       $type = isset($_REQUEST['type']) ? stripslashes( $_REQUEST['type'] ) : '';
+function install_search_form( $type_selector = true ) {
+       $type = isset($_REQUEST['type']) ? stripslashes( $_REQUEST['type'] ) : 'term';
        $term = isset($_REQUEST['s']) ? stripslashes( $_REQUEST['s'] ) : '';
 
        ?><form id="search-plugins" method="get" action="">
                <input type="hidden" name="tab" value="search" />
        $term = isset($_REQUEST['s']) ? stripslashes( $_REQUEST['s'] ) : '';
 
        ?><form id="search-plugins" method="get" action="">
                <input type="hidden" name="tab" value="search" />
+               <?php if ( $type_selector ) : ?>
                <select name="type" id="typeselector">
                <select name="type" id="typeselector">
-                       <option value="term"<?php selected('term', $type) ?>><?php _e('Term'); ?></option>
+                       <option value="term"<?php selected('term', $type) ?>><?php _e('Keyword'); ?></option>
                        <option value="author"<?php selected('author', $type) ?>><?php _e('Author'); ?></option>
                        <option value="tag"<?php selected('tag', $type) ?>><?php _ex('Tag', 'Plugin Installer'); ?></option>
                </select>
                        <option value="author"<?php selected('author', $type) ?>><?php _e('Author'); ?></option>
                        <option value="tag"<?php selected('tag', $type) ?>><?php _ex('Tag', 'Plugin Installer'); ?></option>
                </select>
-               <input type="text" name="s" value="<?php echo esc_attr($term) ?>" />
+               <?php endif; ?>
+               <input type="search" name="s" value="<?php echo esc_attr($term) ?>" />
                <label class="screen-reader-text" for="plugin-search-input"><?php _e('Search Plugins'); ?></label>
                <?php submit_button( __( 'Search Plugins' ), 'button', 'plugin-search-input', false ); ?>
        </form><?php
                <label class="screen-reader-text" for="plugin-search-input"><?php _e('Search Plugins'); ?></label>
                <?php submit_button( __( 'Search Plugins' ), 'button', 'plugin-search-input', false ); ?>
        </form><?php
@@ -167,7 +168,6 @@ add_action('install_plugins_search', 'display_plugins_table');
 add_action('install_plugins_featured', 'display_plugins_table');
 add_action('install_plugins_popular', 'display_plugins_table');
 add_action('install_plugins_new', 'display_plugins_table');
 add_action('install_plugins_featured', 'display_plugins_table');
 add_action('install_plugins_popular', 'display_plugins_table');
 add_action('install_plugins_new', 'display_plugins_table');
-add_action('install_plugins_updated', 'display_plugins_table');
 
 /**
  * Determine the status we can perform on a plugin.
 
 /**
  * Determine the status we can perform on a plugin.
@@ -185,7 +185,7 @@ function install_plugin_install_status($api, $loop = false) {
 
        //Check to see if this plugin is known to be installed, and has an update awaiting it.
        $update_plugins = get_site_transient('update_plugins');
 
        //Check to see if this plugin is known to be installed, and has an update awaiting it.
        $update_plugins = get_site_transient('update_plugins');
-       if ( is_object( $update_plugins ) ) {
+       if ( isset( $update_plugins->response ) ) {
                foreach ( (array)$update_plugins->response as $file => $plugin ) {
                        if ( $plugin->slug === $api->slug ) {
                                $status = 'update_available';
                foreach ( (array)$update_plugins->response as $file => $plugin ) {
                        if ( $plugin->slug === $api->slug ) {
                                $status = 'update_available';
@@ -199,7 +199,7 @@ function install_plugin_install_status($api, $loop = false) {
        }
 
        if ( 'install' == $status ) {
        }
 
        if ( 'install' == $status ) {
-               if ( is_dir( WP_PLUGIN_DIR  . '/' . $api->slug ) ) {
+               if ( is_dir( WP_PLUGIN_DIR . '/' . $api->slug ) ) {
                        $installed_plugin = get_plugins('/' . $api->slug);
                        if ( empty($installed_plugin) ) {
                                if ( current_user_can('install_plugins') )
                        $installed_plugin = get_plugins('/' . $api->slug);
                        if ( empty($installed_plugin) ) {
                                if ( current_user_can('install_plugins') )
@@ -245,12 +245,24 @@ function install_plugin_information() {
        if ( is_wp_error($api) )
                wp_die($api);
 
        if ( is_wp_error($api) )
                wp_die($api);
 
-       $plugins_allowedtags = array('a' => array('href' => array(), 'title' => array(), 'target' => array()),
-                                                               'abbr' => array('title' => array()), 'acronym' => array('title' => array()),
-                                                               'code' => array(), 'pre' => array(), 'em' => array(), 'strong' => array(),
-                                                               'div' => array(), 'p' => array(), 'ul' => array(), 'ol' => array(), 'li' => array(),
-                                                               'h1' => array(), 'h2' => array(), 'h3' => array(), 'h4' => array(), 'h5' => array(), 'h6' => array(),
-                                                               'img' => array('src' => array(), 'class' => array(), 'alt' => array()));
+       $plugins_allowedtags = array(
+               'a' => array( 'href' => array(), 'title' => array(), 'target' => array() ),
+               'abbr' => array( 'title' => array() ), 'acronym' => array( 'title' => array() ),
+               'code' => array(), 'pre' => array(), 'em' => array(), 'strong' => array(),
+               'div' => array(), 'p' => array(), 'ul' => array(), 'ol' => array(), 'li' => array(),
+               'h1' => array(), 'h2' => array(), 'h3' => array(), 'h4' => array(), 'h5' => array(), 'h6' => array(),
+               'img' => array( 'src' => array(), 'class' => array(), 'alt' => array() )
+       );
+
+       $plugins_section_titles = array(
+               'description'  => _x('Description',  'Plugin installer section title'),
+               'installation' => _x('Installation', 'Plugin installer section title'),
+               'faq'          => _x('FAQ',          'Plugin installer section title'),
+               'screenshots'  => _x('Screenshots',  'Plugin installer section title'),
+               'changelog'    => _x('Changelog',    'Plugin installer section title'),
+               'other_notes'  => _x('Other Notes',  'Plugin installer section title')
+       );
+
        //Sanitize HTML
        foreach ( (array)$api->sections as $section_name => $content )
                $api->sections[$section_name] = wp_kses($content, $plugins_allowedtags);
        //Sanitize HTML
        foreach ( (array)$api->sections as $section_name => $content )
                $api->sections[$section_name] = wp_kses($content, $plugins_allowedtags);
@@ -268,14 +280,16 @@ function install_plugin_information() {
        echo "<ul id='sidemenu'>\n";
        foreach ( (array)$api->sections as $section_name => $content ) {
 
        echo "<ul id='sidemenu'>\n";
        foreach ( (array)$api->sections as $section_name => $content ) {
 
-               $title = $section_name;
-               $title = ucwords(str_replace('_', ' ', $title));
+               if ( isset( $plugins_section_titles[ $section_name ] ) )
+                       $title = $plugins_section_titles[ $section_name ];
+               else
+                       $title = ucwords( str_replace( '_', ' ', $section_name ) );
 
                $class = ( $section_name == $section ) ? ' class="current"' : '';
                $href = add_query_arg( array('tab' => $tab, 'section' => $section_name) );
                $href = esc_url($href);
 
                $class = ( $section_name == $section ) ? ' class="current"' : '';
                $href = add_query_arg( array('tab' => $tab, 'section' => $section_name) );
                $href = esc_url($href);
-               $san_title = esc_attr(sanitize_title_with_dashes($title));
-               echo "\t<li><a name='$san_title' target='' href='$href'$class>$title</a></li>\n";
+               $san_section = esc_attr( $section_name );
+               echo "\t<li><a name='$san_section' href='$href' $class>$title</a></li>\n";
        }
        echo "</ul>\n";
        echo "</div>\n";
        }
        echo "</ul>\n";
        echo "</div>\n";
@@ -322,18 +336,13 @@ function install_plugin_information() {
 <?php endif; if ( ! empty($api->slug) && empty($api->external) ) : ?>
                        <li><a target="_blank" href="http://wordpress.org/extend/plugins/<?php echo $api->slug ?>/"><?php _e('WordPress.org Plugin Page &#187;') ?></a></li>
 <?php endif; if ( ! empty($api->homepage) ) : ?>
 <?php endif; if ( ! empty($api->slug) && empty($api->external) ) : ?>
                        <li><a target="_blank" href="http://wordpress.org/extend/plugins/<?php echo $api->slug ?>/"><?php _e('WordPress.org Plugin Page &#187;') ?></a></li>
 <?php endif; if ( ! empty($api->homepage) ) : ?>
-                       <li><a target="_blank" href="<?php echo $api->homepage ?>"><?php _e('Plugin Homepage  &#187;') ?></a></li>
+                       <li><a target="_blank" href="<?php echo $api->homepage ?>"><?php _e('Plugin Homepage &#187;') ?></a></li>
 <?php endif; ?>
                </ul>
                <?php if ( ! empty($api->rating) ) : ?>
                <h2><?php _e('Average Rating') ?></h2>
                <div class="star-holder" title="<?php printf(_n('(based on %s rating)', '(based on %s ratings)', $api->num_ratings), number_format_i18n($api->num_ratings)); ?>">
 <?php endif; ?>
                </ul>
                <?php if ( ! empty($api->rating) ) : ?>
                <h2><?php _e('Average Rating') ?></h2>
                <div class="star-holder" title="<?php printf(_n('(based on %s rating)', '(based on %s ratings)', $api->num_ratings), number_format_i18n($api->num_ratings)); ?>">
-                       <div class="star star-rating" style="width: <?php echo esc_attr($api->rating) ?>px"></div>
-                       <div class="star star5"><img src="<?php echo admin_url('images/star.png?v=20110615'); ?>" alt="<?php esc_attr_e('5 stars') ?>" /></div>
-                       <div class="star star4"><img src="<?php echo admin_url('images/star.png?v=20110615'); ?>" alt="<?php esc_attr_e('4 stars') ?>" /></div>
-                       <div class="star star3"><img src="<?php echo admin_url('images/star.png?v=20110615'); ?>" alt="<?php esc_attr_e('3 stars') ?>" /></div>
-                       <div class="star star2"><img src="<?php echo admin_url('images/star.png?v=20110615'); ?>" alt="<?php esc_attr_e('2 stars') ?>" /></div>
-                       <div class="star star1"><img src="<?php echo admin_url('images/star.png?v=20110615'); ?>" alt="<?php esc_attr_e('1 star') ?>" /></div>
+                       <div class="star star-rating" style="width: <?php echo esc_attr( str_replace( ',', '.', $api->rating ) ); ?>px"></div>
                </div>
                <small><?php printf(_n('(based on %s rating)', '(based on %s ratings)', $api->num_ratings), number_format_i18n($api->num_ratings)); ?></small>
                <?php endif; ?>
                </div>
                <small><?php printf(_n('(based on %s rating)', '(based on %s ratings)', $api->num_ratings), number_format_i18n($api->num_ratings)); ?></small>
                <?php endif; ?>
@@ -347,18 +356,20 @@ function install_plugin_information() {
                        echo '<div class="updated"><p>' . __('<strong>Warning:</strong> This plugin has <strong>not been marked as compatible</strong> with your version of WordPress.') . '</p></div>';
 
                foreach ( (array)$api->sections as $section_name => $content ) {
                        echo '<div class="updated"><p>' . __('<strong>Warning:</strong> This plugin has <strong>not been marked as compatible</strong> with your version of WordPress.') . '</p></div>';
 
                foreach ( (array)$api->sections as $section_name => $content ) {
-                       $title = $section_name;
-                       $title[0] = strtoupper($title[0]);
-                       $title = str_replace('_', ' ', $title);
+
+                       if ( isset( $plugins_section_titles[ $section_name ] ) )
+                               $title = $plugins_section_titles[ $section_name ];
+                       else
+                               $title = ucwords( str_replace( '_', ' ', $section_name ) );
 
                        $content = links_add_base_url($content, 'http://wordpress.org/extend/plugins/' . $api->slug . '/');
                        $content = links_add_target($content, '_blank');
 
 
                        $content = links_add_base_url($content, 'http://wordpress.org/extend/plugins/' . $api->slug . '/');
                        $content = links_add_target($content, '_blank');
 
-                       $san_title = esc_attr(sanitize_title_with_dashes($title));
+                       $san_section = esc_attr( $section_name );
 
                        $display = ( $section_name == $section ) ? 'block' : 'none';
 
 
                        $display = ( $section_name == $section ) ? 'block' : 'none';
 
-                       echo "\t<div id='section-{$san_title}' class='section' style='display: {$display};'>\n";
+                       echo "\t<div id='section-{$san_section}' class='section' style='display: {$display};'>\n";
                        echo "\t\t<h2 class='long-header'>$title</h2>";
                        echo $content;
                        echo "\t</div>\n";
                        echo "\t\t<h2 class='long-header'>$title</h2>";
                        echo $content;
                        echo "\t</div>\n";
index be97e8c381cf8de11f3910de7b846a6879c6eb3d..89ebdea83d4efdfb6525cb5dc650f7624449d60a 100644 (file)
@@ -65,8 +65,8 @@
  * @since 1.5.0
  *
  * @param string $plugin_file Path to the plugin file
  * @since 1.5.0
  *
  * @param string $plugin_file Path to the plugin file
- * @param bool $markup If the returned data should have HTML markup applied
- * @param bool $translate If the returned data should be translated
+ * @param bool $markup Optional. If the returned data should have HTML markup applied. Defaults to true.
+ * @param bool $translate Optional. If the returned data should be translated. Defaults to true.
  * @return array See above for description.
  */
 function get_plugin_data( $plugin_file, $markup = true, $translate = true ) {
  * @return array See above for description.
  */
 function get_plugin_data( $plugin_file, $markup = true, $translate = true ) {
@@ -88,68 +88,85 @@ function get_plugin_data( $plugin_file, $markup = true, $translate = true ) {
        $plugin_data = get_file_data( $plugin_file, $default_headers, 'plugin' );
 
        // Site Wide Only is the old header for Network
        $plugin_data = get_file_data( $plugin_file, $default_headers, 'plugin' );
 
        // Site Wide Only is the old header for Network
-       if ( empty( $plugin_data['Network'] ) && ! empty( $plugin_data['_sitewide'] ) ) {
+       if ( ! $plugin_data['Network'] && $plugin_data['_sitewide'] ) {
                _deprecated_argument( __FUNCTION__, '3.0', sprintf( __( 'The <code>%1$s</code> plugin header is deprecated. Use <code>%2$s</code> instead.' ), 'Site Wide Only: true', 'Network: true' ) );
                $plugin_data['Network'] = $plugin_data['_sitewide'];
        }
        $plugin_data['Network'] = ( 'true' == strtolower( $plugin_data['Network'] ) );
        unset( $plugin_data['_sitewide'] );
 
                _deprecated_argument( __FUNCTION__, '3.0', sprintf( __( 'The <code>%1$s</code> plugin header is deprecated. Use <code>%2$s</code> instead.' ), 'Site Wide Only: true', 'Network: true' ) );
                $plugin_data['Network'] = $plugin_data['_sitewide'];
        }
        $plugin_data['Network'] = ( 'true' == strtolower( $plugin_data['Network'] ) );
        unset( $plugin_data['_sitewide'] );
 
-       //For backward compatibility by default Title is the same as Name.
-       $plugin_data['Title'] = $plugin_data['Name'];
-
-       if ( $markup || $translate )
+       if ( $markup || $translate ) {
                $plugin_data = _get_plugin_data_markup_translate( $plugin_file, $plugin_data, $markup, $translate );
                $plugin_data = _get_plugin_data_markup_translate( $plugin_file, $plugin_data, $markup, $translate );
-       else
+       } else {
+               $plugin_data['Title']      = $plugin_data['Name'];
                $plugin_data['AuthorName'] = $plugin_data['Author'];
                $plugin_data['AuthorName'] = $plugin_data['Author'];
+       }
 
        return $plugin_data;
 }
 
 
        return $plugin_data;
 }
 
-function _get_plugin_data_markup_translate($plugin_file, $plugin_data, $markup = true, $translate = true) {
-
-       //Translate fields
-       if ( $translate && ! empty($plugin_data['TextDomain']) ) {
-               if ( ! empty( $plugin_data['DomainPath'] ) )
-                       load_plugin_textdomain($plugin_data['TextDomain'], false, dirname($plugin_file). $plugin_data['DomainPath']);
-               else
-                       load_plugin_textdomain($plugin_data['TextDomain'], false, dirname($plugin_file));
+/**
+ * Sanitizes plugin data, optionally adds markup, optionally translates.
+ *
+ * @since 2.7.0
+ * @access private
+ * @see get_plugin_data()
+ */
+function _get_plugin_data_markup_translate( $plugin_file, $plugin_data, $markup = true, $translate = true ) {
 
 
-               foreach ( array('Name', 'PluginURI', 'Description', 'Author', 'AuthorURI', 'Version') as $field )
-                       $plugin_data[ $field ] = translate($plugin_data[ $field ], $plugin_data['TextDomain']);
+       // Translate fields
+       if ( $translate ) {
+               if ( $textdomain = $plugin_data['TextDomain'] ) {
+                       if ( $plugin_data['DomainPath'] )
+                               load_plugin_textdomain( $textdomain, false, dirname( $plugin_file ) . $plugin_data['DomainPath'] );
+                       else
+                               load_plugin_textdomain( $textdomain, false, dirname( $plugin_file ) );
+               } elseif ( in_array( basename( $plugin_file ), array( 'hello.php', 'akismet.php' ) ) ) {
+                       $textdomain = 'default';
+               }
+               if ( $textdomain ) {
+                       foreach ( array( 'Name', 'PluginURI', 'Description', 'Author', 'AuthorURI', 'Version' ) as $field )
+                               $plugin_data[ $field ] = translate( $plugin_data[ $field ], $textdomain );
+               }
        }
 
        }
 
-       $plugins_allowedtags = array(
-               'a'       => array( 'href' => array(), 'title' => array() ),
-               'abbr'    => array( 'title' => array() ),
-               'acronym' => array( 'title' => array() ),
-               'code'    => array(),
-               'em'      => array(),
-               'strong'  => array(),
+       // Sanitize fields
+       $allowed_tags = $allowed_tags_in_links = array(
+               'abbr'    => array( 'title' => true ),
+               'acronym' => array( 'title' => true ),
+               'code'    => true,
+               'em'      => true,
+               'strong'  => true,
        );
        );
+       $allowed_tags['a'] = array( 'href' => true, 'title' => true );
 
 
-       $plugin_data['AuthorName'] = $plugin_data['Author'] = wp_kses( $plugin_data['Author'], $plugins_allowedtags );
+       // Name is marked up inside <a> tags. Don't allow these.
+       // Author is too, but some plugins have used <a> here (omitting Author URI).
+       $plugin_data['Name']        = wp_kses( $plugin_data['Name'],        $allowed_tags_in_links );
+       $plugin_data['Author']      = wp_kses( $plugin_data['Author'],      $allowed_tags );
 
 
-       //Apply Markup
+       $plugin_data['Description'] = wp_kses( $plugin_data['Description'], $allowed_tags );
+       $plugin_data['Version']     = wp_kses( $plugin_data['Version'],     $allowed_tags );
+
+       $plugin_data['PluginURI']   = esc_url( $plugin_data['PluginURI'] );
+       $plugin_data['AuthorURI']   = esc_url( $plugin_data['AuthorURI'] );
+
+       $plugin_data['Title']      = $plugin_data['Name'];
+       $plugin_data['AuthorName'] = $plugin_data['Author'];
+
+       // Apply markup
        if ( $markup ) {
        if ( $markup ) {
-               if ( ! empty($plugin_data['PluginURI']) && ! empty($plugin_data['Name']) )
+               if ( $plugin_data['PluginURI'] && $plugin_data['Name'] )
                        $plugin_data['Title'] = '<a href="' . $plugin_data['PluginURI'] . '" title="' . esc_attr__( 'Visit plugin homepage' ) . '">' . $plugin_data['Name'] . '</a>';
                        $plugin_data['Title'] = '<a href="' . $plugin_data['PluginURI'] . '" title="' . esc_attr__( 'Visit plugin homepage' ) . '">' . $plugin_data['Name'] . '</a>';
-               else
-                       $plugin_data['Title'] = $plugin_data['Name'];
 
 
-               if ( ! empty($plugin_data['AuthorURI']) && ! empty($plugin_data['Author']) )
+               if ( $plugin_data['AuthorURI'] && $plugin_data['Author'] )
                        $plugin_data['Author'] = '<a href="' . $plugin_data['AuthorURI'] . '" title="' . esc_attr__( 'Visit author homepage' ) . '">' . $plugin_data['Author'] . '</a>';
 
                $plugin_data['Description'] = wptexturize( $plugin_data['Description'] );
                        $plugin_data['Author'] = '<a href="' . $plugin_data['AuthorURI'] . '" title="' . esc_attr__( 'Visit author homepage' ) . '">' . $plugin_data['Author'] . '</a>';
 
                $plugin_data['Description'] = wptexturize( $plugin_data['Description'] );
-               if ( ! empty($plugin_data['Author']) )
-                       $plugin_data['Description'] .= ' <cite>' . sprintf( __('By %s'), $plugin_data['Author'] ) . '.</cite>';
-       }
 
 
-       // Sanitize all displayed data. Author and AuthorName sanitized above.
-       $plugin_data['Title']       = wp_kses( $plugin_data['Title'],       $plugins_allowedtags );
-       $plugin_data['Version']     = wp_kses( $plugin_data['Version'],     $plugins_allowedtags );
-       $plugin_data['Description'] = wp_kses( $plugin_data['Description'], $plugins_allowedtags );
-       $plugin_data['Name']        = wp_kses( $plugin_data['Name'],        $plugins_allowedtags );
+               if ( $plugin_data['Author'] )
+                       $plugin_data['Description'] .= ' <cite>' . sprintf( __('By %s.'), $plugin_data['Author'] ) . '</cite>';
+       }
 
        return $plugin_data;
 }
 
        return $plugin_data;
 }
@@ -555,9 +572,11 @@ function activate_plugin( $plugin, $redirect = '', $network_wide = false, $silen
  * @since 2.5.0
  *
  * @param string|array $plugins Single plugin or list of plugins to deactivate.
  * @since 2.5.0
  *
  * @param string|array $plugins Single plugin or list of plugins to deactivate.
+ * @param mixed $network_wide Whether to deactivate the plugin for all sites in the network.
+ *     A value of null (the default) will deactivate plugins for both the site and the network.
  * @param bool $silent Prevent calling deactivation hooks. Default is false.
  */
  * @param bool $silent Prevent calling deactivation hooks. Default is false.
  */
-function deactivate_plugins( $plugins, $silent = false ) {
+function deactivate_plugins( $plugins, $silent = false, $network_wide = null ) {
        if ( is_multisite() )
                $network_current = get_site_option( 'active_sitewide_plugins', array() );
        $current = get_option( 'active_plugins', array() );
        if ( is_multisite() )
                $network_current = get_site_option( 'active_sitewide_plugins', array() );
        $current = get_option( 'active_plugins', array() );
@@ -568,15 +587,21 @@ function deactivate_plugins( $plugins, $silent = false ) {
                if ( ! is_plugin_active($plugin) )
                        continue;
 
                if ( ! is_plugin_active($plugin) )
                        continue;
 
-               $network_wide = is_plugin_active_for_network( $plugin );
+               $network_deactivating = false !== $network_wide && is_plugin_active_for_network( $plugin );
 
                if ( ! $silent )
 
                if ( ! $silent )
-                       do_action( 'deactivate_plugin', $plugin, $network_wide );
+                       do_action( 'deactivate_plugin', $plugin, $network_deactivating );
 
 
-               if ( $network_wide ) {
-                       $do_network = true;
-                       unset( $network_current[ $plugin ] );
-               } else {
+               if ( false !== $network_wide ) {
+                       if ( is_plugin_active_for_network( $plugin ) ) {
+                               $do_network = true;
+                               unset( $network_current[ $plugin ] );
+                       } elseif ( $network_wide ) {
+                               continue;
+                       }
+               }
+
+               if ( true !== $network_wide ) {
                        $key = array_search( $plugin, $current );
                        if ( false !== $key ) {
                                $do_blog = true;
                        $key = array_search( $plugin, $current );
                        if ( false !== $key ) {
                                $do_blog = true;
@@ -585,8 +610,8 @@ function deactivate_plugins( $plugins, $silent = false ) {
                }
 
                if ( ! $silent ) {
                }
 
                if ( ! $silent ) {
-                       do_action( 'deactivate_' . $plugin, $network_wide );
-                       do_action( 'deactivated_plugin', $plugin, $network_wide );
+                       do_action( 'deactivate_' . $plugin, $network_deactivating );
+                       do_action( 'deactivated_plugin', $plugin, $network_deactivating );
                }
        }
 
                }
        }
 
@@ -863,7 +888,7 @@ function uninstall_plugin($plugin) {
  *
  * @return string The resulting page's hook_suffix
  */
  *
  * @return string The resulting page's hook_suffix
  */
-function add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function = '', $icon_url = '', $position = NULL ) {
+function add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function = '', $icon_url = '', $position = null ) {
        global $menu, $admin_page_hooks, $_registered_pages, $_parent_pages;
 
        $menu_slug = plugin_basename( $menu_slug );
        global $menu, $admin_page_hooks, $_registered_pages, $_parent_pages;
 
        $menu_slug = plugin_basename( $menu_slug );
@@ -882,7 +907,7 @@ function add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $func
 
        $new_menu = array( $menu_title, $capability, $menu_slug, $page_title, 'menu-top ' . $hookname, $hookname, $icon_url );
 
 
        $new_menu = array( $menu_title, $capability, $menu_slug, $page_title, 'menu-top ' . $hookname, $hookname, $icon_url );
 
-       if ( null === $position  )
+       if ( null === $position )
                $menu[] = $new_menu;
        else
                $menu[$position] = $new_menu;
                $menu[] = $new_menu;
        else
                $menu[$position] = $new_menu;
@@ -985,10 +1010,10 @@ function add_submenu_page( $parent_slug, $page_title, $menu_title, $capability,
        }
 
        // If the parent doesn't already have a submenu, add a link to the parent
        }
 
        // If the parent doesn't already have a submenu, add a link to the parent
-       // as the first item in the submenu.  If the submenu file is the same as the
-       // parent file someone is trying to link back to the parent manually.  In
+       // as the first item in the submenu. If the submenu file is the same as the
+       // parent file someone is trying to link back to the parent manually. In
        // this case, don't automatically add a link back to avoid duplication.
        // this case, don't automatically add a link back to avoid duplication.
-       if (!isset( $submenu[$parent_slug] ) && $menu_slug != $parent_slug  ) {
+       if (!isset( $submenu[$parent_slug] ) && $menu_slug != $parent_slug ) {
                foreach ( (array)$menu as $parent_menu ) {
                        if ( $parent_menu[2] == $parent_slug && current_user_can( $parent_menu[1] ) )
                                $submenu[$parent_slug][] = $parent_menu;
                foreach ( (array)$menu as $parent_menu ) {
                        if ( $parent_menu[2] == $parent_slug && current_user_can( $parent_menu[1] ) )
                                $submenu[$parent_slug][] = $parent_menu;
@@ -1002,7 +1027,7 @@ function add_submenu_page( $parent_slug, $page_title, $menu_title, $capability,
                add_action( $hookname, $function );
 
        $_registered_pages[$hookname] = true;
                add_action( $hookname, $function );
 
        $_registered_pages[$hookname] = true;
-       // backwards-compatibility for plugins using add_management page.  See wp-admin/admin.php for redirect from edit.php to tools.php
+       // backwards-compatibility for plugins using add_management page. See wp-admin/admin.php for redirect from edit.php to tools.php
        if ( 'tools.php' == $parent_slug )
                $_registered_pages[get_plugin_page_hookname( $menu_slug, 'edit.php')] = true;
 
        if ( 'tools.php' == $parent_slug )
                $_registered_pages[get_plugin_page_hookname( $menu_slug, 'edit.php')] = true;
 
@@ -1246,7 +1271,6 @@ function add_comments_page( $page_title, $menu_title, $capability, $menu_slug, $
        return add_submenu_page( 'edit-comments.php', $page_title, $menu_title, $capability, $menu_slug, $function );
 }
 
        return add_submenu_page( 'edit-comments.php', $page_title, $menu_title, $capability, $menu_slug, $function );
 }
 
-
 /**
  * Remove a top level admin menu
  *
 /**
  * Remove a top level admin menu
  *
@@ -1589,7 +1613,7 @@ function user_can_access_admin_page() {
  *
  * @since 2.7.0
  *
  *
  * @since 2.7.0
  *
- * @param string $option_group A settings group name.  Should correspond to a whitelisted option key name.
+ * @param string $option_group A settings group name. Should correspond to a whitelisted option key name.
  *     Default whitelisted option key names include "general," "discussion," and "reading," among others.
  * @param string $option_name The name of an option to sanitize and save.
  * @param unknown_type $sanitize_callback A callback function that sanitizes the option's value.
  *     Default whitelisted option key names include "general," "discussion," and "reading," among others.
  * @param string $option_name The name of an option to sanitize and save.
  * @param unknown_type $sanitize_callback A callback function that sanitizes the option's value.
@@ -1715,12 +1739,10 @@ function remove_option_whitelist( $del_options, $options = '' ) {
  *
  * @since 2.7.0
  *
  *
  * @since 2.7.0
  *
- * @param string $option_group A settings group name.  This should match the group name used in register_setting().
+ * @param string $option_group A settings group name. This should match the group name used in register_setting().
  */
 function settings_fields($option_group) {
        echo "<input type='hidden' name='option_page' value='" . esc_attr($option_group) . "' />";
        echo '<input type="hidden" name="action" value="update" />';
        wp_nonce_field("$option_group-options");
 }
  */
 function settings_fields($option_group) {
        echo "<input type='hidden' name='option_page' value='" . esc_attr($option_group) . "' />";
        echo '<input type="hidden" name="action" value="update" />';
        wp_nonce_field("$option_group-options");
 }
-
-?>
index 831c7025edeab1ad40a0d8df8f23fc844e617cd3..3bfea5741fa3a241707b3487e493c754870b0eed 100644 (file)
@@ -171,7 +171,7 @@ function edit_post( $post_data = null ) {
        $post_data = _wp_translate_postdata( true, $post_data );
        if ( is_wp_error($post_data) )
                wp_die( $post_data->get_error_message() );
        $post_data = _wp_translate_postdata( true, $post_data );
        if ( is_wp_error($post_data) )
                wp_die( $post_data->get_error_message() );
-       if ( 'autosave' != $post_data['action']  && 'auto-draft' == $post_data['post_status'] )
+       if ( 'autosave' != $post_data['action'] && 'auto-draft' == $post_data['post_status'] )
                $post_data['post_status'] = 'draft';
 
        if ( isset($post_data['visibility']) ) {
                $post_data['post_status'] = 'draft';
 
        if ( isset($post_data['visibility']) ) {
@@ -302,10 +302,12 @@ function bulk_edit_posts( $post_data = null ) {
                        if ( empty($terms) )
                                continue;
                        if ( is_taxonomy_hierarchical( $tax_name ) ) {
                        if ( empty($terms) )
                                continue;
                        if ( is_taxonomy_hierarchical( $tax_name ) ) {
-                               $tax_input[$tax_name] = array_map( 'absint', $terms );
+                               $tax_input[ $tax_name ] = array_map( 'absint', $terms );
                        } else {
                        } else {
-                               $tax_input[$tax_name] = preg_replace( '/\s*,\s*/', ',', rtrim( trim($terms), ' ,' ) );
-                               $tax_input[$tax_name] = explode(',', $tax_input[$tax_name]);
+                               $comma = _x( ',', 'tag delimiter' );
+                               if ( ',' !== $comma )
+                                       $terms = str_replace( $comma, ',', $terms );
+                               $tax_input[ $tax_name ] = explode( ',', trim( $terms, " \n\t\r\0\x0B," ) );
                        }
                }
        }
                        }
                }
        }
@@ -352,7 +354,7 @@ function bulk_edit_posts( $post_data = null ) {
                $tax_names = get_object_taxonomies( $post );
                foreach ( $tax_names as $tax_name ) {
                        $taxonomy_obj = get_taxonomy($tax_name);
                $tax_names = get_object_taxonomies( $post );
                foreach ( $tax_names as $tax_name ) {
                        $taxonomy_obj = get_taxonomy($tax_name);
-                       if (  isset( $tax_input[$tax_name]) && current_user_can( $taxonomy_obj->cap->assign_terms ) )
+                       if ( isset( $tax_input[$tax_name]) && current_user_can( $taxonomy_obj->cap->assign_terms ) )
                                $new_terms = $tax_input[$tax_name];
                        else
                                $new_terms = array();
                                $new_terms = $tax_input[$tax_name];
                        else
                                $new_terms = array();
@@ -415,10 +417,6 @@ function get_default_post_to_edit( $post_type = 'post', $create_in_db = false )
                $post_excerpt = esc_html( stripslashes( $_REQUEST['excerpt'] ));
 
        if ( $create_in_db ) {
                $post_excerpt = esc_html( stripslashes( $_REQUEST['excerpt'] ));
 
        if ( $create_in_db ) {
-               // Cleanup old auto-drafts more than 7 days old
-               $old_posts = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_status = 'auto-draft' AND DATE_SUB( NOW(), INTERVAL 7 DAY ) > post_date" );
-               foreach ( (array) $old_posts as $delete )
-                       wp_delete_post( $delete, true ); // Force delete
                $post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) );
                $post = get_post( $post_id );
                if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post->post_type, 'post-formats' ) && get_option( 'default_post_format' ) )
                $post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) );
                $post = get_post( $post_id );
                if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post->post_type, 'post-formats' ) && get_option( 'default_post_format' ) )
@@ -747,50 +745,47 @@ function update_meta( $meta_id, $meta_key, $meta_value ) {
  * @return unknown
  */
 function _fix_attachment_links( $post_ID ) {
  * @return unknown
  */
 function _fix_attachment_links( $post_ID ) {
-       global $_fix_attachment_link_id;
-
        $post = & get_post( $post_ID, ARRAY_A );
        $post = & get_post( $post_ID, ARRAY_A );
+       $content = $post['post_content'];
 
 
-       $search = "#<a[^>]+rel=('|\")[^'\"]*attachment[^>]*>#ie";
+       // quick sanity check, don't run if no pretty permalinks or post is not published
+       if ( !get_option('permalink_structure') || $post['post_status'] != 'publish' )
+               return;
 
 
-       // See if we have any rel="attachment" links
-       if ( 0 == preg_match_all( $search, $post['post_content'], $anchor_matches, PREG_PATTERN_ORDER ) )
+       // Short if there aren't any links or no '?attachment_id=' strings (strpos cannot be zero)
+       if ( !strpos($content, '?attachment_id=') || !preg_match_all( '/<a ([^>]+)>[\s\S]+?<\/a>/', $content, $link_matches ) )
                return;
 
                return;
 
-       $i = 0;
-       $search = "#[\s]+rel=(\"|')(.*?)wp-att-(\d+)\\1#i";
-       foreach ( $anchor_matches[0] as $anchor ) {
-               if ( 0 == preg_match( $search, $anchor, $id_matches ) )
-                       continue;
+       $site_url = get_bloginfo('url');
+       $site_url = substr( $site_url, (int) strpos($site_url, '://') ); // remove the http(s)
+       $replace = '';
 
 
-               $id = (int) $id_matches[3];
+       foreach ( $link_matches[1] as $key => $value ) {
+               if ( !strpos($value, '?attachment_id=') || !strpos($value, 'wp-att-')
+                       || !preg_match( '/href=(["\'])[^"\']*\?attachment_id=(\d+)[^"\']*\\1/', $value, $url_match )
+                       || !preg_match( '/rel=["\'][^"\']*wp-att-(\d+)/', $value, $rel_match ) )
+                               continue;
 
 
-               // While we have the attachment ID, let's adopt any orphans.
-               $attachment = & get_post( $id, ARRAY_A );
-               if ( ! empty( $attachment) && ! is_object( get_post( $attachment['post_parent'] ) ) ) {
-                       $attachment['post_parent'] = $post_ID;
-                       // Escape data pulled from DB.
-                       $attachment = add_magic_quotes( $attachment );
-                       wp_update_post( $attachment );
-               }
+               $quote = $url_match[1]; // the quote (single or double)
+               $url_id = (int) $url_match[2];
+               $rel_id = (int) $rel_match[1];
 
 
-               $post_search[$i] = $anchor;
-                $_fix_attachment_link_id = $id;
-               $post_replace[$i] = preg_replace_callback( "#href=(\"|')[^'\"]*\\1#", '_fix_attachment_links_replace_cb', $anchor );
-               ++$i;
-       }
+               if ( !$url_id || !$rel_id || $url_id != $rel_id || strpos($url_match[0], $site_url) === false )
+                       continue;
 
 
-       $post['post_content'] = str_replace( $post_search, $post_replace, $post['post_content'] );
+               $link = $link_matches[0][$key];
+               $replace = str_replace( $url_match[0], 'href=' . $quote . get_attachment_link( $url_id ) . $quote, $link );
 
 
-       // Escape data pulled from DB.
-       $post = add_magic_quotes( $post);
+               $content = str_replace( $link, $replace, $content );
+       }
 
 
-       return wp_update_post( $post);
-}
+       if ( $replace ) {
+               $post['post_content'] = $content;
+               // Escape data pulled from DB.
+               $post = add_magic_quotes($post);
 
 
-function _fix_attachment_links_replace_cb($match) {
-        global $_fix_attachment_link_id;
-        return stripslashes( 'href='.$match[1] ).get_attachment_link( $_fix_attachment_link_id ).stripslashes( $match[1] );
+               return wp_update_post($post);
+       }
 }
 
 /**
 }
 
 /**
@@ -973,7 +968,8 @@ function wp_edit_attachments_query( $q = false ) {
 }
 
 function _edit_attachments_query_helper($where) {
 }
 
 function _edit_attachments_query_helper($where) {
-       return $where .= ' AND post_parent < 1';
+       global $wpdb;
+       return $where .= " AND {$wpdb->posts}.post_parent < 1";
 }
 
 /**
 }
 
 /**
@@ -1140,12 +1136,18 @@ function get_sample_permalink_html( $id, $new_title = null, $new_slug = null ) {
  * @since 2.9.0
  *
  * @param int $thumbnail_id ID of the attachment used for thumbnail
  * @since 2.9.0
  *
  * @param int $thumbnail_id ID of the attachment used for thumbnail
+ * @param int $post_id ID of the post associated with the thumbnail, defaults to global $post_ID
  * @return string html
  */
  * @return string html
  */
-function _wp_post_thumbnail_html( $thumbnail_id = NULL ) {
+function _wp_post_thumbnail_html( $thumbnail_id = null, $post_id = null ) {
        global $content_width, $_wp_additional_image_sizes, $post_ID;
        global $content_width, $_wp_additional_image_sizes, $post_ID;
-       $set_thumbnail_link = '<p class="hide-if-no-js"><a title="' . esc_attr__( 'Set featured image' ) . '" href="' . esc_url( get_upload_iframe_src('image') ) . '" id="set-post-thumbnail" class="thickbox">%s</a></p>';
-       $content = sprintf($set_thumbnail_link, esc_html__( 'Set featured image' ));
+
+       if ( empty( $post_id ) )
+               $post_id = $post_ID;
+
+       $upload_iframe_src = esc_url( get_upload_iframe_src('image', $post_id) );
+       $set_thumbnail_link = '<p class="hide-if-no-js"><a title="' . esc_attr__( 'Set featured image' ) . '" href="%s" id="set-post-thumbnail" class="thickbox">%s</a></p>';
+       $content = sprintf( $set_thumbnail_link, $upload_iframe_src, esc_html__( 'Set featured image' ) );
 
        if ( $thumbnail_id && get_post( $thumbnail_id ) ) {
                $old_content_width = $content_width;
 
        if ( $thumbnail_id && get_post( $thumbnail_id ) ) {
                $old_content_width = $content_width;
@@ -1155,8 +1157,8 @@ function _wp_post_thumbnail_html( $thumbnail_id = NULL ) {
                else
                        $thumbnail_html = wp_get_attachment_image( $thumbnail_id, 'post-thumbnail' );
                if ( !empty( $thumbnail_html ) ) {
                else
                        $thumbnail_html = wp_get_attachment_image( $thumbnail_id, 'post-thumbnail' );
                if ( !empty( $thumbnail_html ) ) {
-                       $ajax_nonce = wp_create_nonce( "set_post_thumbnail-$post_ID" );
-                       $content = sprintf($set_thumbnail_link, $thumbnail_html);
+                       $ajax_nonce = wp_create_nonce( "set_post_thumbnail-$post_id" );
+                       $content = sprintf( $set_thumbnail_link, $upload_iframe_src, $thumbnail_html );
                        $content .= '<p class="hide-if-no-js"><a href="#" id="remove-post-thumbnail" onclick="WPRemoveThumbnail(\'' . $ajax_nonce . '\');return false;">' . esc_html__( 'Remove featured image' ) . '</a></p>';
                }
                $content_width = $old_content_width;
                        $content .= '<p class="hide-if-no-js"><a href="#" id="remove-post-thumbnail" onclick="WPRemoveThumbnail(\'' . $ajax_nonce . '\');return false;">' . esc_html__( 'Remove featured image' ) . '</a></p>';
                }
                $content_width = $old_content_width;
@@ -1259,7 +1261,7 @@ function wp_create_post_autosave( $post_id ) {
        if ( is_wp_error( $translated ) )
                return $translated;
 
        if ( is_wp_error( $translated ) )
                return $translated;
 
-       // Only store one autosave.  If there is already an autosave, overwrite it.
+       // Only store one autosave. If there is already an autosave, overwrite it.
        if ( $old_autosave = wp_get_post_autosave( $post_id ) ) {
                $new_autosave = _wp_post_revision_fields( $_POST, true );
                $new_autosave['ID'] = $old_autosave->ID;
        if ( $old_autosave = wp_get_post_autosave( $post_id ) ) {
                $new_autosave = _wp_post_revision_fields( $_POST, true );
                $new_autosave['ID'] = $old_autosave->ID;
@@ -1320,7 +1322,7 @@ function post_preview() {
 
        if ( 'draft' == $post->post_status ) {
                $id = edit_post();
 
        if ( 'draft' == $post->post_status ) {
                $id = edit_post();
-       } else { // Non drafts are not overwritten.  The autosave is stored in a special post revision.
+       } else { // Non drafts are not overwritten. The autosave is stored in a special post revision.
                $id = wp_create_post_autosave( $post->ID );
                if ( ! is_wp_error($id) )
                        $id = $post->ID;
                $id = wp_create_post_autosave( $post->ID );
                if ( ! is_wp_error($id) )
                        $id = $post->ID;
index 687b8fd302a2fd9bb5591904696ea798be9705a1..bba0871d6353dc62f105c757978d224f8c224c03 100644 (file)
@@ -30,7 +30,7 @@ if ( ! empty( $wpdb->collate ) )
  * @since 3.3.0
  *
  * @param string $scope Optional. The tables for which to retrieve SQL. Can be all, global, ms_global, or blog tables. Defaults to all.
  * @since 3.3.0
  *
  * @param string $scope Optional. The tables for which to retrieve SQL. Can be all, global, ms_global, or blog tables. Defaults to all.
- * @param int $blog_id Optional. The blog ID for which to retrieve SQL.  Default is the current blog ID.
+ * @param int $blog_id Optional. The blog ID for which to retrieve SQL. Default is the current blog ID.
  * @return string The SQL needed to create the requested tables.
  */
 function wp_get_db_schema( $scope = 'all', $blog_id = null ) {
  * @return string The SQL needed to create the requested tables.
  */
 function wp_get_db_schema( $scope = 'all', $blog_id = null ) {
@@ -103,7 +103,6 @@ CREATE TABLE $wpdb->comments (
   comment_parent bigint(20) unsigned NOT NULL default '0',
   user_id bigint(20) unsigned NOT NULL default '0',
   PRIMARY KEY  (comment_ID),
   comment_parent bigint(20) unsigned NOT NULL default '0',
   user_id bigint(20) unsigned NOT NULL default '0',
   PRIMARY KEY  (comment_ID),
-  KEY comment_approved (comment_approved),
   KEY comment_post_ID (comment_post_ID),
   KEY comment_approved_date_gmt (comment_approved,comment_date_gmt),
   KEY comment_date_gmt (comment_date_gmt),
   KEY comment_post_ID (comment_post_ID),
   KEY comment_approved_date_gmt (comment_approved,comment_date_gmt),
   KEY comment_date_gmt (comment_date_gmt),
@@ -128,7 +127,6 @@ CREATE TABLE $wpdb->links (
 ) $charset_collate;
 CREATE TABLE $wpdb->options (
   option_id bigint(20) unsigned NOT NULL auto_increment,
 ) $charset_collate;
 CREATE TABLE $wpdb->options (
   option_id bigint(20) unsigned NOT NULL auto_increment,
-  blog_id int(11) NOT NULL default '0',
   option_name varchar(64) NOT NULL default '',
   option_value longtext NOT NULL,
   autoload varchar(20) NOT NULL default 'yes',
   option_name varchar(64) NOT NULL default '',
   option_value longtext NOT NULL,
   autoload varchar(20) NOT NULL default 'yes',
@@ -161,7 +159,7 @@ CREATE TABLE $wpdb->posts (
   pinged text NOT NULL,
   post_modified datetime NOT NULL default '0000-00-00 00:00:00',
   post_modified_gmt datetime NOT NULL default '0000-00-00 00:00:00',
   pinged text NOT NULL,
   post_modified datetime NOT NULL default '0000-00-00 00:00:00',
   post_modified_gmt datetime NOT NULL default '0000-00-00 00:00:00',
-  post_content_filtered text NOT NULL,
+  post_content_filtered longtext NOT NULL,
   post_parent bigint(20) unsigned NOT NULL default '0',
   guid varchar(255) NOT NULL default '',
   menu_order int(11) NOT NULL default '0',
   post_parent bigint(20) unsigned NOT NULL default '0',
   guid varchar(255) NOT NULL default '',
   menu_order int(11) NOT NULL default '0',
@@ -345,12 +343,21 @@ function populate_options() {
 
        $template = WP_DEFAULT_THEME;
        // If default theme is a child theme, we need to get its template
 
        $template = WP_DEFAULT_THEME;
        // If default theme is a child theme, we need to get its template
-       foreach ( (array) get_themes() as $theme ) {
-               if ( WP_DEFAULT_THEME == $theme['Stylesheet'] ) {
-                       $template = $theme['Template'];
-                       break;
-               }
-       }
+       $theme = wp_get_theme( $template );
+       if ( ! $theme->errors() )
+               $template = $theme->get_template();
+
+       $timezone_string = '';
+       $gmt_offset = 0;
+       /* translators: default GMT offset or timezone string. Must be either a valid offset (-12 to 14)
+          or a valid timezone string (America/New_York). See http://us3.php.net/manual/en/timezones.php
+          for all timezone strings supported by PHP.
+       */
+       $offset_or_tz = _x( '0', 'default GMT offset or timezone string' );
+       if ( is_numeric( $offset_or_tz ) )
+               $gmt_offset = $offset_or_tz;
+       elseif ( $offset_or_tz && in_array( $offset_or_tz, timezone_identifiers_list() ) )
+                       $timezone_string = $offset_or_tz;
 
        $options = array(
        'siteurl' => $guessurl,
 
        $options = array(
        'siteurl' => $guessurl,
@@ -359,7 +366,8 @@ function populate_options() {
        'blogdescription' => __('Just another WordPress site'),
        'users_can_register' => 0,
        'admin_email' => 'you@example.com',
        'blogdescription' => __('Just another WordPress site'),
        'users_can_register' => 0,
        'admin_email' => 'you@example.com',
-       'start_of_week' => 1,
+       /* translators: default start of the week. 0 = Sunday, 1 = Monday */
+       'start_of_week' => _x( '1', 'start of week' ),
        'use_balanceTags' => 0,
        'use_smilies' => 1,
        'require_name_email' => 1,
        'use_balanceTags' => 0,
        'use_smilies' => 1,
        'require_name_email' => 1,
@@ -398,7 +406,7 @@ function populate_options() {
        'ping_sites' => 'http://rpc.pingomatic.com/',
        'advanced_edit' => 0,
        'comment_max_links' => 2,
        'ping_sites' => 'http://rpc.pingomatic.com/',
        'advanced_edit' => 0,
        'comment_max_links' => 2,
-       'gmt_offset' => date('Z') / 3600,
+       'gmt_offset' => $gmt_offset,
 
        // 1.5
        'default_email_category' => 1,
 
        // 1.5
        'default_email_category' => 1,
@@ -408,7 +416,6 @@ function populate_options() {
        'comment_whitelist' => 1,
        'blacklist_keys' => '',
        'comment_registration' => 0,
        'comment_whitelist' => 1,
        'blacklist_keys' => '',
        'comment_registration' => 0,
-       'rss_language' => 'en',
        'html_type' => 'text/html',
 
        // 1.5.1
        'html_type' => 'text/html',
 
        // 1.5.1
@@ -463,9 +470,10 @@ function populate_options() {
        'widget_categories' => array(),
        'widget_text' => array(),
        'widget_rss' => array(),
        'widget_categories' => array(),
        'widget_text' => array(),
        'widget_rss' => array(),
+       'uninstall_plugins' => array(),
 
        // 2.8
 
        // 2.8
-       'timezone_string' => '',
+       'timezone_string' => $timezone_string,
 
        // 2.9
        'embed_autourls' => 1,
 
        // 2.9
        'embed_autourls' => 1,
@@ -494,7 +502,7 @@ function populate_options() {
        }
 
        // Set autoload to no for these options
        }
 
        // Set autoload to no for these options
-       $fat_options = array( 'moderation_keys', 'recently_edited', 'blacklist_keys' );
+       $fat_options = array( 'moderation_keys', 'recently_edited', 'blacklist_keys', 'uninstall_plugins' );
 
        $existing_options = $wpdb->get_col("SELECT option_name FROM $wpdb->options");
 
 
        $existing_options = $wpdb->get_col("SELECT option_name FROM $wpdb->options");
 
@@ -523,7 +531,7 @@ function populate_options() {
        if ( !__get_option('home') ) update_option('home', $guessurl);
 
        // Delete unused options
        if ( !__get_option('home') ) update_option('home', $guessurl);
 
        // Delete unused options
-       $unusedoptions = array ('blodotgsping_url', 'bodyterminator', 'emailtestonly', 'phoneemail_separator', 'smilies_directory', 'subjectprefix', 'use_bbcode', 'use_blodotgsping', 'use_phoneemail', 'use_quicktags', 'use_weblogsping', 'weblogs_cache_file', 'use_preview', 'use_htmltrans', 'smilies_directory', 'fileupload_allowedusers', 'use_phoneemail', 'default_post_status', 'default_post_category', 'archive_mode', 'time_difference', 'links_minadminlevel', 'links_use_adminlevels', 'links_rating_type', 'links_rating_char', 'links_rating_ignore_zero', 'links_rating_single_image', 'links_rating_image0', 'links_rating_image1', 'links_rating_image2', 'links_rating_image3', 'links_rating_image4', 'links_rating_image5', 'links_rating_image6', 'links_rating_image7', 'links_rating_image8', 'links_rating_image9', 'weblogs_cacheminutes', 'comment_allowed_tags', 'search_engine_friendly_urls', 'default_geourl_lat', 'default_geourl_lon', 'use_default_geourl', 'weblogs_xml_url', 'new_users_can_blog', '_wpnonce', '_wp_http_referer', 'Update', 'action', 'rich_editing', 'autosave_interval', 'deactivated_plugins', 'can_compress_scripts', 'page_uris', 'update_core', 'update_plugins', 'update_themes', 'doing_cron', 'random_seed', 'rss_excerpt_length', 'secret', 'use_linksupdate', 'default_comment_status_page', 'wporg_popular_tags', 'what_to_show');
+       $unusedoptions = array ('blodotgsping_url', 'bodyterminator', 'emailtestonly', 'phoneemail_separator', 'smilies_directory', 'subjectprefix', 'use_bbcode', 'use_blodotgsping', 'use_phoneemail', 'use_quicktags', 'use_weblogsping', 'weblogs_cache_file', 'use_preview', 'use_htmltrans', 'smilies_directory', 'fileupload_allowedusers', 'use_phoneemail', 'default_post_status', 'default_post_category', 'archive_mode', 'time_difference', 'links_minadminlevel', 'links_use_adminlevels', 'links_rating_type', 'links_rating_char', 'links_rating_ignore_zero', 'links_rating_single_image', 'links_rating_image0', 'links_rating_image1', 'links_rating_image2', 'links_rating_image3', 'links_rating_image4', 'links_rating_image5', 'links_rating_image6', 'links_rating_image7', 'links_rating_image8', 'links_rating_image9', 'weblogs_cacheminutes', 'comment_allowed_tags', 'search_engine_friendly_urls', 'default_geourl_lat', 'default_geourl_lon', 'use_default_geourl', 'weblogs_xml_url', 'new_users_can_blog', '_wpnonce', '_wp_http_referer', 'Update', 'action', 'rich_editing', 'autosave_interval', 'deactivated_plugins', 'can_compress_scripts', 'page_uris', 'update_core', 'update_plugins', 'update_themes', 'doing_cron', 'random_seed', 'rss_excerpt_length', 'secret', 'use_linksupdate', 'default_comment_status_page', 'wporg_popular_tags', 'what_to_show', 'rss_language');
        foreach ( $unusedoptions as $option )
                delete_option($option);
 
        foreach ( $unusedoptions as $option )
                delete_option($option);
 
@@ -879,7 +887,7 @@ We hope you enjoy your new site. Thanks!
                'admin_user_id' => $site_user->ID,
                'registration' => 'none',
                'upload_filetypes' => 'jpg jpeg png gif mp3 mov avi wmv midi mid pdf',
                'admin_user_id' => $site_user->ID,
                'registration' => 'none',
                'upload_filetypes' => 'jpg jpeg png gif mp3 mov avi wmv midi mid pdf',
-               'blog_upload_space' => 10,
+               'blog_upload_space' => 100,
                'fileupload_maxk' => 1500,
                'site_admins' => $site_admins,
                'allowedthemes' => $allowed_themes,
                'fileupload_maxk' => 1500,
                'site_admins' => $site_admins,
                'allowedthemes' => $allowed_themes,
@@ -928,11 +936,11 @@ We hope you enjoy your new site. Thanks!
        }
 
        if ( $subdomain_install )
        }
 
        if ( $subdomain_install )
-               update_option( 'permalink_structure', '/%year%/%monthnum%/%day%/%postname%/');
+               $wp_rewrite->set_permalink_structure( '/%year%/%monthnum%/%day%/%postname%/' );
        else
        else
-               update_option( 'permalink_structure', '/blog/%year%/%monthnum%/%day%/%postname%/');
+               $wp_rewrite->set_permalink_structure( '/blog/%year%/%monthnum%/%day%/%postname%/' );
 
 
-       $wp_rewrite->flush_rules();
+       flush_rewrite_rules();
 
        if ( $subdomain_install ) {
                $vhost_ok = false;
 
        if ( $subdomain_install ) {
                $vhost_ok = false;
@@ -958,5 +966,3 @@ We hope you enjoy your new site. Thanks!
 
        return true;
 }
 
        return true;
 }
-
-?>
index a182b7453db0859f42d21412ded80cac68b350fc..2fe318d9a6305702a7555859acedcec549371534 100644 (file)
@@ -114,7 +114,6 @@ function get_hidden_meta_boxes( $screen ) {
  *
  * @param string $option An option name.
  * @param mixed $args Option-dependent arguments.
  *
  * @param string $option An option name.
  * @param mixed $args Option-dependent arguments.
- * @return void
  */
 function add_screen_option( $option, $args = array() ) {
        $current_screen = get_current_screen();
  */
 function add_screen_option( $option, $args = array() ) {
        $current_screen = get_current_screen();
@@ -176,7 +175,7 @@ function get_screen_icon( $screen = '' ) {
  *
  * @since 3.1.0
  *
  *
  * @since 3.1.0
  *
- * @return object Current screen object
+ * @return WP_Screen Current screen object
  */
 function get_current_screen() {
        global $current_screen;
  */
 function get_current_screen() {
        global $current_screen;
@@ -196,7 +195,7 @@ function get_current_screen() {
  * @param mixed $hook_name Optional. The hook name (also known as the hook suffix) used to determine the screen,
  *     or an existing screen object.
  */
  * @param mixed $hook_name Optional. The hook name (also known as the hook suffix) used to determine the screen,
  *     or an existing screen object.
  */
-function set_current_screen( $hook_name =  '' ) {
+function set_current_screen( $hook_name = '' ) {
        WP_Screen::get( $hook_name )->set_current_screen();
 }
 
        WP_Screen::get( $hook_name )->set_current_screen();
 }
 
@@ -208,7 +207,7 @@ function set_current_screen( $hook_name =  '' ) {
  */
 final class WP_Screen {
        /**
  */
 final class WP_Screen {
        /**
-        * Any action associated with the screen. 'add' for *-add.php and *-new.php screens.  Empty otherwise.
+        * Any action associated with the screen. 'add' for *-add.php and *-new.php screens. Empty otherwise.
         *
         * @since 3.3.0
         * @var string
         *
         * @since 3.3.0
         * @var string
@@ -217,7 +216,7 @@ final class WP_Screen {
        public $action;
 
        /**
        public $action;
 
        /**
-        * The base type of the screen.  This is typically the same as $id but with any post types and taxonomies stripped.
+        * The base type of the screen. This is typically the same as $id but with any post types and taxonomies stripped.
         * For example, for an $id of 'edit-post' the base is 'edit'.
         *
         * @since 3.3.0
         * For example, for an $id of 'edit-post' the base is 'edit'.
         *
         * @since 3.3.0
@@ -226,6 +225,15 @@ final class WP_Screen {
         */
        public $base;
 
         */
        public $base;
 
+       /**
+        * The number of columns to display. Access with get_columns().
+        *
+        * @since 3.4.0
+        * @var int
+        * @access private
+        */
+       private $columns = 0;
+
        /**
         * The unique ID of the screen.
         *
        /**
         * The unique ID of the screen.
         *
@@ -539,7 +547,7 @@ final class WP_Screen {
         *
         * @since 3.3.0
         *
         *
         * @since 3.3.0
         *
-        * @param string $parent_file The parent file of the screen.  Typically the $parent_file global.
+        * @param string $parent_file The parent file of the screen. Typically the $parent_file global.
         */
        function set_parentage( $parent_file ) {
                $this->parent_file = $parent_file;
         */
        function set_parentage( $parent_file ) {
                $this->parent_file = $parent_file;
@@ -565,7 +573,8 @@ final class WP_Screen {
         *
         * @since 3.3.0
         *
         *
         * @since 3.3.0
         *
-        * @param string
+        * @param string $option Option ID.
+        * @param mixed $key Optional. Specific array key for when the option is an array.
         */
        public function get_option( $option, $key = false ) {
                if ( ! isset( $this->_options[ $option ] ) )
         */
        public function get_option( $option, $key = false ) {
                if ( ! isset( $this->_options[ $option ] ) )
@@ -578,6 +587,31 @@ final class WP_Screen {
                return $this->_options[ $option ];
        }
 
                return $this->_options[ $option ];
        }
 
+       /**
+        * Gets the help tabs registered for the screen.
+        *
+        * @since 3.4.0
+        *
+        * @return array Help tabs with arguments.
+        */
+       public function get_help_tabs() {
+               return $this->_help_tabs;
+       }
+
+       /**
+        * Gets the arguments for a help tab.
+        *
+        * @since 3.4.0
+        *
+        * @param string $id Help Tab ID.
+        * @return array Help tab arguments.
+        */
+       public function get_help_tab( $id ) {
+               if ( ! isset( $this->_help_tabs[ $id ] ) )
+                       return null;
+               return $this->_help_tabs[ $id ];
+       }
+
        /**
         * Add a help tab to the contextual help for the screen.
         * Call this on the load-$pagenow hook for the relevant screen.
        /**
         * Add a help tab to the contextual help for the screen.
         * Call this on the load-$pagenow hook for the relevant screen.
@@ -606,7 +640,8 @@ final class WP_Screen {
                if ( ! $args['id'] || ! $args['title'] )
                        return;
 
                if ( ! $args['id'] || ! $args['title'] )
                        return;
 
-               $this->_help_tabs[] = $args;
+               // Allows for overriding an existing tab with that ID.
+               $this->_help_tabs[ $args['id'] ] = $args;
        }
 
        /**
        }
 
        /**
@@ -629,6 +664,17 @@ final class WP_Screen {
                $this->_help_tabs = array();
        }
 
                $this->_help_tabs = array();
        }
 
+       /**
+        * Gets the content from a contextual help sidebar.
+        *
+        * @since 3.4.0
+        *
+        * @return string Contents of the help sidebar.
+        */
+       public function get_help_sidebar() {
+               return $this->_help_sidebar;
+       }
+
        /**
         * Add a sidebar to the contextual help for the screen.
         * Call this in template files after admin.php is loaded and before admin-header.php is loaded to add a sidebar to the contextual help.
        /**
         * Add a sidebar to the contextual help for the screen.
         * Call this in template files after admin.php is loaded and before admin-header.php is loaded to add a sidebar to the contextual help.
@@ -641,6 +687,23 @@ final class WP_Screen {
                $this->_help_sidebar = $content;
        }
 
                $this->_help_sidebar = $content;
        }
 
+       /**
+        * Gets the number of layout columns the user has selected.
+        *
+        * The layout_columns option controls the max number and default number of
+        * columns. This method returns the number of columns within that range selected
+        * by the user via Screen Options. If no selection has been made, the default
+        * provisioned in layout_columns is returned. If the screen does not support
+        * selecting the number of layout columns, 0 is returned.
+        *
+        * @since 3.4.0
+        *
+        * @return int Number of columns to display.
+        */
+       public function get_columns() {
+               return $this->columns;
+       }
+
        /**
         * Render the screen's help section.
         *
        /**
         * Render the screen's help section.
         *
@@ -657,7 +720,7 @@ final class WP_Screen {
                $old_help = apply_filters( 'contextual_help', $old_help, $this->id, $this );
 
                // Default help only if there is no old-style block of text and no new-style help tabs.
                $old_help = apply_filters( 'contextual_help', $old_help, $this->id, $this );
 
                // Default help only if there is no old-style block of text and no new-style help tabs.
-               if ( empty( $old_help ) && empty( $this->_help_tabs ) ) {
+               if ( empty( $old_help ) && ! $this->get_help_tabs() ) {
                        $default_help = apply_filters( 'default_contextual_help', '' );
                        if ( $default_help )
                                $old_help = '<p>' . $default_help . '</p>';
                        $default_help = apply_filters( 'default_contextual_help', '' );
                        if ( $default_help )
                                $old_help = '<p>' . $default_help . '</p>';
@@ -671,10 +734,10 @@ final class WP_Screen {
                        ) );
                }
 
                        ) );
                }
 
-               $has_sidebar = ! empty( $this->_help_sidebar );
+               $help_sidebar = $this->get_help_sidebar();
 
                $help_class = 'hidden';
 
                $help_class = 'hidden';
-               if ( ! $has_sidebar )
+               if ( ! $help_sidebar )
                        $help_class .= ' no-sidebar';
 
                // Time to render!
                        $help_class .= ' no-sidebar';
 
                // Time to render!
@@ -686,35 +749,39 @@ final class WP_Screen {
                                <div id="contextual-help-columns">
                                        <div class="contextual-help-tabs">
                                                <ul>
                                <div id="contextual-help-columns">
                                        <div class="contextual-help-tabs">
                                                <ul>
-                                               <?php foreach ( $this->_help_tabs as $i => $tab ):
+                                               <?php
+                                               $class = ' class="active"';
+                                               foreach ( $this->get_help_tabs() as $tab ) :
                                                        $link_id  = "tab-link-{$tab['id']}";
                                                        $panel_id = "tab-panel-{$tab['id']}";
                                                        $link_id  = "tab-link-{$tab['id']}";
                                                        $panel_id = "tab-panel-{$tab['id']}";
-                                                       $classes  = ( $i == 0 ) ? 'active' : '';
                                                        ?>
 
                                                        ?>
 
-                                                       <li id="<?php echo esc_attr( $link_id ); ?>" class="<?php echo esc_attr( $classes ); ?>">
+                                                       <li id="<?php echo esc_attr( $link_id ); ?>"<?php echo $class; ?>>
                                                                <a href="<?php echo esc_url( "#$panel_id" ); ?>">
                                                                        <?php echo esc_html( $tab['title'] ); ?>
                                                                </a>
                                                        </li>
                                                                <a href="<?php echo esc_url( "#$panel_id" ); ?>">
                                                                        <?php echo esc_html( $tab['title'] ); ?>
                                                                </a>
                                                        </li>
-                                               <?php endforeach; ?>
+                                               <?php
+                                                       $class = '';
+                                               endforeach;
+                                               ?>
                                                </ul>
                                        </div>
 
                                                </ul>
                                        </div>
 
-                                       <?php if ( $has_sidebar ) : ?>
+                                       <?php if ( $help_sidebar ) : ?>
                                        <div class="contextual-help-sidebar">
                                        <div class="contextual-help-sidebar">
-                                               <?php echo self::$this->_help_sidebar; ?>
+                                               <?php echo $help_sidebar; ?>
                                        </div>
                                        <?php endif; ?>
 
                                        <div class="contextual-help-tabs-wrap">
                                        </div>
                                        <?php endif; ?>
 
                                        <div class="contextual-help-tabs-wrap">
-                                               <?php foreach ( $this->_help_tabs as $i => $tab ):
+                                               <?php
+                                               $classes = 'help-tab-content active';
+                                               foreach ( $this->get_help_tabs() as $tab ):
                                                        $panel_id = "tab-panel-{$tab['id']}";
                                                        $panel_id = "tab-panel-{$tab['id']}";
-                                                       $classes  = ( $i == 0 ) ? 'active' : '';
-                                                       $classes .= ' help-tab-content';
                                                        ?>
 
                                                        ?>
 
-                                                       <div id="<?php echo esc_attr( $panel_id ); ?>" class="<?php echo esc_attr( $classes ); ?>">
+                                                       <div id="<?php echo esc_attr( $panel_id ); ?>" class="<?php echo $classes; ?>">
                                                                <?php
                                                                // Print tab content.
                                                                echo $tab['content'];
                                                                <?php
                                                                // Print tab content.
                                                                echo $tab['content'];
@@ -724,22 +791,41 @@ final class WP_Screen {
                                                                        call_user_func_array( $tab['callback'], array( $this, $tab ) );
                                                                ?>
                                                        </div>
                                                                        call_user_func_array( $tab['callback'], array( $this, $tab ) );
                                                                ?>
                                                        </div>
-                                               <?php endforeach; ?>
+                                               <?php
+                                                       $classes = 'help-tab-content';
+                                               endforeach;
+                                               ?>
                                        </div>
                                </div>
                        </div>
                <?php
                                        </div>
                                </div>
                        </div>
                <?php
+               // Setup layout columns
+
+               // Back compat for plugins using the filter instead of add_screen_option()
+               $columns = apply_filters( 'screen_layout_columns', array(), $this->id, $this );
+
+               if ( ! empty( $columns ) && isset( $columns[ $this->id ] ) )
+                       $this->add_option( 'layout_columns', array('max' => $columns[ $this->id ] ) );
+
+               if ( $this->get_option( 'layout_columns' ) ) {
+                       $this->columns = (int) get_user_option("screen_layout_$this->id");
+
+                       if ( ! $this->columns && $this->get_option( 'layout_columns', 'default' ) )
+                               $this->columns = $this->get_option( 'layout_columns', 'default' );
+               }
+               $GLOBALS[ 'screen_layout_columns' ] = $this->columns; // Set the global for back-compat.
+
                // Add screen options
                if ( $this->show_screen_options() )
                        $this->render_screen_options();
                ?>
                </div>
                <?php
                // Add screen options
                if ( $this->show_screen_options() )
                        $this->render_screen_options();
                ?>
                </div>
                <?php
-               if ( ! $this->_help_tabs && ! $this->show_screen_options() )
+               if ( ! $this->get_help_tabs() && ! $this->show_screen_options() )
                        return;
                ?>
                <div id="screen-meta-links">
                        return;
                ?>
                <div id="screen-meta-links">
-               <?php if ( $this->_help_tabs ) : ?>
+               <?php if ( $this->get_help_tabs() ) : ?>
                        <div id="contextual-help-link-wrap" class="hide-if-no-js screen-meta-toggle">
                        <a href="#contextual-help-wrap" id="contextual-help-link" class="show-settings"><?php _e( 'Help' ); ?></a>
                        </div>
                        <div id="contextual-help-link-wrap" class="hide-if-no-js screen-meta-toggle">
                        <a href="#contextual-help-wrap" id="contextual-help-link" class="show-settings"><?php _e( 'Help' ); ?></a>
                        </div>
@@ -792,9 +878,12 @@ final class WP_Screen {
                ?>
                <div id="screen-options-wrap" class="hidden">
                <form id="adv-settings" action="" method="post">
                ?>
                <div id="screen-options-wrap" class="hidden">
                <form id="adv-settings" action="" method="post">
+               <?php if ( isset( $wp_meta_boxes[ $this->id ] ) || $this->get_option( 'per_page' ) || ( $columns && empty( $columns['_title'] ) ) ) : ?>
+                       <h5><?php _e( 'Show on screen' ); ?></h5>
                <?php
                <?php
+               endif;
+
                if ( isset( $wp_meta_boxes[ $this->id ] ) ) : ?>
                if ( isset( $wp_meta_boxes[ $this->id ] ) ) : ?>
-                       <h5><?php _ex('Show on screen', 'Metaboxes') ?></h5>
                        <div class="metabox-prefs">
                                <?php
                                        meta_box_prefs( $this );
                        <div class="metabox-prefs">
                                <?php
                                        meta_box_prefs( $this );
@@ -809,15 +898,17 @@ final class WP_Screen {
                                                                $welcome_checked = false;
                                                }
                                                echo '<label for="wp_welcome_panel-hide">';
                                                                $welcome_checked = false;
                                                }
                                                echo '<label for="wp_welcome_panel-hide">';
-                                               echo '<input type="checkbox" id="wp_welcome_panel-hide"' . checked( (bool) $welcome_checked, true, false )  . ' />';
-                                               echo __( 'Welcome' ) . "</label>\n";
+                                               echo '<input type="checkbox" id="wp_welcome_panel-hide"' . checked( (bool) $welcome_checked, true, false ) . ' />';
+                                               echo _x( 'Welcome', 'Welcome panel' ) . "</label>\n";
                                        }
                                ?>
                                <br class="clear" />
                        </div>
                        <?php endif;
                                        }
                                ?>
                                <br class="clear" />
                        </div>
                        <?php endif;
-                       if ( ! empty( $columns ) ) : ?>
-                       <h5><?php echo ( isset( $columns['_title'] ) ?  $columns['_title'] :  _x('Show on screen', 'Columns') ) ?></h5>
+                       if ( $columns ) :
+                               if ( ! empty( $columns['_title'] ) ) : ?>
+                       <h5><?php echo $columns['_title']; ?></h5>
+                       <?php endif; ?>
                        <div class="metabox-prefs">
                                <?php
                                $special = array('_title', 'cb', 'comment', 'media', 'name', 'title', 'username', 'blogname');
                        <div class="metabox-prefs">
                                <?php
                                $special = array('_title', 'cb', 'comment', 'media', 'name', 'title', 'username', 'blogname');
@@ -858,34 +949,19 @@ final class WP_Screen {
         * @since 3.3.0
         */
        function render_screen_layout() {
         * @since 3.3.0
         */
        function render_screen_layout() {
-               global $screen_layout_columns;
-
-               // Back compat for plugins using the filter instead of add_screen_option()
-               $columns = apply_filters( 'screen_layout_columns', array(), $this->id, $this );
-
-               if ( ! empty( $columns ) && isset( $columns[ $this->id ] ) )
-                       $this->add_option( 'layout_columns', array('max' => $columns[ $this->id ] ) );
-
-               if ( ! $this->get_option('layout_columns') ) {
-                       $screen_layout_columns = 0;
+               if ( ! $this->get_option('layout_columns') )
                        return;
                        return;
-               }
 
 
-               $screen_layout_columns = get_user_option("screen_layout_$this->id");
+               $screen_layout_columns = $this->get_columns();
                $num = $this->get_option( 'layout_columns', 'max' );
 
                $num = $this->get_option( 'layout_columns', 'max' );
 
-               if ( ! $screen_layout_columns || 'auto' == $screen_layout_columns ) {
-                       if ( $this->get_option( 'layout_columns', 'default' ) )
-                               $screen_layout_columns = $this->get_option( 'layout_columns', 'default' );
-               }
-
                ?>
                ?>
-               <h5><?php _e('Screen Layout'); ?></h5>
+               <h5 class="screen-layout"><?php _e('Screen Layout'); ?></h5>
                <div class='columns-prefs'><?php
                        _e('Number of Columns:');
                        for ( $i = 1; $i <= $num; ++$i ):
                                ?>
                <div class='columns-prefs'><?php
                        _e('Number of Columns:');
                        for ( $i = 1; $i <= $num; ++$i ):
                                ?>
-                               <label>
+                               <label class="columns-prefs-<?php echo $i; ?>">
                                        <input type='radio' name='screen_columns' value='<?php echo esc_attr( $i ); ?>'
                                                <?php checked( $screen_layout_columns, $i ); ?> />
                                        <?php echo esc_html( $i ); ?>
                                        <input type='radio' name='screen_columns' value='<?php echo esc_attr( $i ); ?>'
                                                <?php checked( $screen_layout_columns, $i ); ?> />
                                        <?php echo esc_html( $i ); ?>
@@ -932,13 +1008,12 @@ final class WP_Screen {
                        $per_page = apply_filters( 'edit_posts_per_page', $per_page, $this->post_type );
 
                ?>
                        $per_page = apply_filters( 'edit_posts_per_page', $per_page, $this->post_type );
 
                ?>
-               <h5><?php _ex('Show on screen', 'Screen Options') ?></h5>
-               <div class='screen-options'>
-                       <?php if ( !empty($per_page_label) ): ?>
-                               <input type='text' class='screen-per-page' name='wp_screen_options[value]'
-                                       id='<?php echo esc_attr( $option ); ?>' maxlength='3'
-                                       value='<?php echo esc_attr( $per_page ); ?>' />
-                               <label for='<?php echo esc_attr( $option ); ?>'>
+               <div class="screen-options">
+                       <?php if ( $per_page_label ) : ?>
+                               <input type="number" step="1" min="1" max="999" class="screen-per-page" name="wp_screen_options[value]"
+                                       id="<?php echo esc_attr( $option ); ?>" maxlength="3"
+                                       value="<?php echo esc_attr( $per_page ); ?>" />
+                               <label for="<?php echo esc_attr( $option ); ?>">
                                        <?php echo esc_html( $per_page_label ); ?>
                                </label>
                        <?php endif;
                                        <?php echo esc_html( $per_page_label ); ?>
                                </label>
                        <?php endif;
index 12e231a8179a4f2e8c62efc83c4fd0fbc1336e60..7423cf9214919c186fba6b08634ef701a2c80118 100644 (file)
@@ -86,7 +86,7 @@ function wp_create_categories($categories, $post_id = '') {
  *
  * @param mixed $catarr See defaults below. Set 'cat_ID' to a non-zero value to update an existing category. The 'taxonomy' key was added in 3.0.0.
  * @param bool $wp_error Optional, since 2.5.0. Set this to true if the caller handles WP_Error return values.
  *
  * @param mixed $catarr See defaults below. Set 'cat_ID' to a non-zero value to update an existing category. The 'taxonomy' key was added in 3.0.0.
  * @param bool $wp_error Optional, since 2.5.0. Set this to true if the caller handles WP_Error return values.
- * @return int|object The ID number of the new or updated Category on success.  Zero or a WP_Error on failure, depending on param $wp_error.
+ * @return int|object The ID number of the new or updated Category on success. Zero or a WP_Error on failure, depending on param $wp_error.
  */
 function wp_insert_category($catarr, $wp_error = false) {
        $cat_defaults = array('cat_ID' => 0, 'taxonomy' => 'category', 'cat_name' => '', 'category_description' => '', 'category_nicename' => '', 'category_parent' => '');
  */
 function wp_insert_category($catarr, $wp_error = false) {
        $cat_defaults = array('cat_ID' => 0, 'taxonomy' => 'category', 'cat_name' => '', 'category_description' => '', 'category_nicename' => '', 'category_parent' => '');
@@ -117,7 +117,7 @@ function wp_insert_category($catarr, $wp_error = false) {
        if ( $parent < 0 )
                $parent = 0;
 
        if ( $parent < 0 )
                $parent = 0;
 
-       if ( empty($parent) || !category_exists( $parent ) || ($cat_ID && cat_is_ancestor_of($cat_ID, $parent) ) )
+       if ( empty( $parent ) || ! term_exists( $parent, $taxonomy ) || ( $cat_ID && term_is_ancestor_of( $cat_ID, $parent, $taxonomy ) ) )
                $parent = 0;
 
        $args = compact('name', 'slug', 'parent', 'description');
                $parent = 0;
 
        $args = compact('name', 'slug', 'parent', 'description');
@@ -145,7 +145,7 @@ function wp_insert_category($catarr, $wp_error = false) {
  *
  * @since 2.0.0
  *
  *
  * @since 2.0.0
  *
- * @param array $catarr The 'cat_ID' value is required.  All other keys are optional.
+ * @param array $catarr The 'cat_ID' value is required. All other keys are optional.
  * @return int|bool The ID number of the new or updated Category on success. Zero or FALSE on failure.
  */
 function wp_update_category($catarr) {
  * @return int|bool The ID number of the new or updated Category on success. Zero or FALSE on failure.
  */
 function wp_update_category($catarr) {
index 3d0c1162cd5e63b2dcc557258ca0cd0a2c4ba541..383487458a9bd63b0f10fe323967f87fb50546fd 100644 (file)
@@ -8,31 +8,33 @@
  * @subpackage Administration
  */
 
  * @subpackage Administration
  */
 
-
 //
 // Category Checklists
 //
 
 /**
 //
 // Category Checklists
 //
 
 /**
- * {@internal Missing Short Description}}
+ * Walker to output an unordered list of category checkbox <input> elements.
  *
  *
+ * @see Walker
+ * @see wp_category_checklist()
+ * @see wp_terms_checklist()
  * @since 2.5.1
  */
 class Walker_Category_Checklist extends Walker {
        var $tree_type = 'category';
        var $db_fields = array ('parent' => 'parent', 'id' => 'term_id'); //TODO: decouple this
 
  * @since 2.5.1
  */
 class Walker_Category_Checklist extends Walker {
        var $tree_type = 'category';
        var $db_fields = array ('parent' => 'parent', 'id' => 'term_id'); //TODO: decouple this
 
-       function start_lvl(&$output, $depth, $args) {
+       function start_lvl( &$output, $depth = 0, $args = array() ) {
                $indent = str_repeat("\t", $depth);
                $output .= "$indent<ul class='children'>\n";
        }
 
                $indent = str_repeat("\t", $depth);
                $output .= "$indent<ul class='children'>\n";
        }
 
-       function end_lvl(&$output, $depth, $args) {
+       function end_lvl( &$output, $depth = 0, $args = array() ) {
                $indent = str_repeat("\t", $depth);
                $output .= "$indent</ul>\n";
        }
 
                $indent = str_repeat("\t", $depth);
                $output .= "$indent</ul>\n";
        }
 
-       function start_el(&$output, $category, $depth, $args) {
+       function start_el( &$output, $category, $depth, $args, $id = 0 ) {
                extract($args);
                if ( empty($taxonomy) )
                        $taxonomy = 'category';
                extract($args);
                if ( empty($taxonomy) )
                        $taxonomy = 'category';
@@ -46,35 +48,39 @@ class Walker_Category_Checklist extends Walker {
                $output .= "\n<li id='{$taxonomy}-{$category->term_id}'$class>" . '<label class="selectit"><input value="' . $category->term_id . '" type="checkbox" name="'.$name.'[]" id="in-'.$taxonomy.'-' . $category->term_id . '"' . checked( in_array( $category->term_id, $selected_cats ), true, false ) . disabled( empty( $args['disabled'] ), false, false ) . ' /> ' . esc_html( apply_filters('the_category', $category->name )) . '</label>';
        }
 
                $output .= "\n<li id='{$taxonomy}-{$category->term_id}'$class>" . '<label class="selectit"><input value="' . $category->term_id . '" type="checkbox" name="'.$name.'[]" id="in-'.$taxonomy.'-' . $category->term_id . '"' . checked( in_array( $category->term_id, $selected_cats ), true, false ) . disabled( empty( $args['disabled'] ), false, false ) . ' /> ' . esc_html( apply_filters('the_category', $category->name )) . '</label>';
        }
 
-       function end_el(&$output, $category, $depth, $args) {
+       function end_el( &$output, $category, $depth = 0, $args = array() ) {
                $output .= "</li>\n";
        }
 }
 
 /**
                $output .= "</li>\n";
        }
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Output an unordered list of checkbox <input> elements labelled
+ * with category names.
  *
  *
+ * @see wp_terms_checklist()
  * @since 2.5.1
  *
  * @since 2.5.1
  *
- * @param unknown_type $post_id
- * @param unknown_type $descendants_and_self
- * @param unknown_type $selected_cats
- * @param unknown_type $popular_cats
+ * @param int $post_id Mark categories associated with this post as checked. $selected_cats must not be an array.
+ * @param int $descendants_and_self ID of the category to output along with its descendents.
+ * @param bool|array $selected_cats List of categories to mark as checked.
+ * @param bool|array $popular_cats Override the list of categories that receive the "popular-category" class.
+ * @param object $walker Walker object to use to build the output.
+ * @param bool $checked_ontop Move checked items out of the hierarchy and to the top of the list.
  */
 function wp_category_checklist( $post_id = 0, $descendants_and_self = 0, $selected_cats = false, $popular_cats = false, $walker = null, $checked_ontop = true ) {
  */
 function wp_category_checklist( $post_id = 0, $descendants_and_self = 0, $selected_cats = false, $popular_cats = false, $walker = null, $checked_ontop = true ) {
-       wp_terms_checklist($post_id,
-               array(
-                       'taxonomy' => 'category',
-                       'descendants_and_self' => $descendants_and_self,
-                       'selected_cats' => $selected_cats,
-                       'popular_cats' => $popular_cats,
-                       'walker' => $walker,
-                       'checked_ontop' => $checked_ontop
-  ));
+       wp_terms_checklist( $post_id, array(
+               'taxonomy' => 'category',
+               'descendants_and_self' => $descendants_and_self,
+               'selected_cats' => $selected_cats,
+               'popular_cats' => $popular_cats,
+               'walker' => $walker,
+               'checked_ontop' => $checked_ontop
+       ) );
 }
 
 /**
 }
 
 /**
- * Taxonomy independent version of wp_category_checklist
+ * Output an unordered list of checkbox <input> elements labelled
+ * with term names. Taxonomy independent version of wp_category_checklist().
  *
  * @since 3.0.0
  *
  *
  * @since 3.0.0
  *
@@ -90,6 +96,8 @@ function wp_terms_checklist($post_id = 0, $args = array()) {
                'taxonomy' => 'category',
                'checked_ontop' => true
        );
                'taxonomy' => 'category',
                'checked_ontop' => true
        );
+       $args = apply_filters( 'wp_terms_checklist_args', $args, $post_id );
+
        extract( wp_parse_args($args, $defaults), EXTR_SKIP );
 
        if ( empty($walker) || !is_a($walker, 'Walker') )
        extract( wp_parse_args($args, $defaults), EXTR_SKIP );
 
        if ( empty($walker) || !is_a($walker, 'Walker') )
@@ -142,15 +150,20 @@ function wp_terms_checklist($post_id = 0, $args = array()) {
 }
 
 /**
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Retrieve a list of the most popular terms from the specified taxonomy.
+ *
+ * If the $echo argument is true then the elements for a list of checkbox
+ * <input> elements labelled with the names of the selected terms is output.
+ * If the $post_ID global isn't empty then the terms associated with that
+ * post will be marked as checked.
  *
  * @since 2.5.0
  *
  *
  * @since 2.5.0
  *
- * @param unknown_type $taxonomy
- * @param unknown_type $default
- * @param unknown_type $number
- * @param unknown_type $echo
- * @return unknown
+ * @param string $taxonomy Taxonomy to retrieve terms from.
+ * @param int $default Unused.
+ * @param int $number Number of terms to retrieve. Defaults to 10.
+ * @param bool $echo Optionally output the list as well. Defaults to true.
+ * @return array List of popular term IDs.
  */
 function wp_popular_terms_checklist( $taxonomy, $default = 0, $number = 10, $echo = true ) {
        global $post_ID;
  */
 function wp_popular_terms_checklist( $taxonomy, $default = 0, $number = 10, $echo = true ) {
        global $post_ID;
@@ -258,17 +271,20 @@ function get_inline_data($post) {
        if ( $post->post_type == 'page' )
                echo '<div class="page_template">' . esc_html( get_post_meta( $post->ID, '_wp_page_template', true ) ) . '</div>';
 
        if ( $post->post_type == 'page' )
                echo '<div class="page_template">' . esc_html( get_post_meta( $post->ID, '_wp_page_template', true ) ) . '</div>';
 
-       if ( $post_type_object->hierarchical )
+       if ( post_type_supports( $post->post_type, 'page-attributes' ) )
                echo '<div class="menu_order">' . $post->menu_order . '</div>';
 
        $taxonomy_names = get_object_taxonomies( $post->post_type );
        foreach ( $taxonomy_names as $taxonomy_name) {
                $taxonomy = get_taxonomy( $taxonomy_name );
 
                echo '<div class="menu_order">' . $post->menu_order . '</div>';
 
        $taxonomy_names = get_object_taxonomies( $post->post_type );
        foreach ( $taxonomy_names as $taxonomy_name) {
                $taxonomy = get_taxonomy( $taxonomy_name );
 
-               if ( $taxonomy->hierarchical && $taxonomy->show_ui )
-                               echo '<div class="post_category" id="'.$taxonomy_name.'_'.$post->ID.'">' . implode( ',', wp_get_object_terms( $post->ID, $taxonomy_name, array('fields'=>'ids')) ) . '</div>';
-               elseif ( $taxonomy->show_ui )
-                       echo '<div class="tags_input" id="'.$taxonomy_name.'_'.$post->ID.'">' . esc_html( str_replace( ',', ', ', get_terms_to_edit($post->ID, $taxonomy_name) ) ) . '</div>';
+               if ( $taxonomy->hierarchical && $taxonomy->show_ui ) {
+                               echo '<div class="post_category" id="' . $taxonomy_name . '_' . $post->ID . '">'
+                                       . implode( ',', wp_get_object_terms( $post->ID, $taxonomy_name, array( 'fields' => 'ids' ) ) ) . '</div>';
+               } elseif ( $taxonomy->show_ui ) {
+                       echo '<div class="tags_input" id="'.$taxonomy_name.'_'.$post->ID.'">'
+                               . esc_html( str_replace( ',', ', ', get_terms_to_edit( $post->ID, $taxonomy_name ) ) ) . '</div>';
+               }
        }
 
        if ( !$post_type_object->hierarchical )
        }
 
        if ( !$post_type_object->hierarchical )
@@ -312,7 +328,7 @@ function wp_comment_reply($position = '1', $checkbox = false, $mode = 'single',
 <div id="com-reply" style="display:none;"><div id="replyrow" style="display:none;">
 <?php endif; ?>
        <div id="replyhead" style="display:none;"><h5><?php _e( 'Reply to Comment' ); ?></h5></div>
 <div id="com-reply" style="display:none;"><div id="replyrow" style="display:none;">
 <?php endif; ?>
        <div id="replyhead" style="display:none;"><h5><?php _e( 'Reply to Comment' ); ?></h5></div>
-
+       <div id="addhead" style="display:none;"><h5><?php _e('Add new Comment'); ?></h5></div>
        <div id="edithead" style="display:none;">
                <div class="inside">
                <label for="author"><?php _e('Name') ?></label>
        <div id="edithead" style="display:none;">
                <div class="inside">
                <label for="author"><?php _e('Name') ?></label>
@@ -341,6 +357,7 @@ function wp_comment_reply($position = '1', $checkbox = false, $mode = 'single',
        <p id="replysubmit" class="submit">
        <a href="#comments-form" class="cancel button-secondary alignleft" tabindex="106"><?php _e('Cancel'); ?></a>
        <a href="#comments-form" class="save button-primary alignright" tabindex="104">
        <p id="replysubmit" class="submit">
        <a href="#comments-form" class="cancel button-secondary alignleft" tabindex="106"><?php _e('Cancel'); ?></a>
        <a href="#comments-form" class="save button-primary alignright" tabindex="104">
+       <span id="addbtn" style="display:none;"><?php _e('Add Comment'); ?></span>
        <span id="savebtn" style="display:none;"><?php _e('Update Comment'); ?></span>
        <span id="replybtn" style="display:none;"><?php _e('Submit Reply'); ?></span></a>
        <img class="waiting" style="display:none;" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
        <span id="savebtn" style="display:none;"><?php _e('Update Comment'); ?></span>
        <span id="replybtn" style="display:none;"><?php _e('Submit Reply'); ?></span></a>
        <img class="waiting" style="display:none;" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
@@ -590,7 +607,8 @@ function touch_time( $edit = 1, $for_post = 1, $tab_index = 0, $multi = 0 ) {
                $month .= "\t\t\t" . '<option value="' . $monthnum . '"';
                if ( $i == $mm )
                        $month .= ' selected="selected"';
                $month .= "\t\t\t" . '<option value="' . $monthnum . '"';
                if ( $i == $mm )
                        $month .= ' selected="selected"';
-               $month .= '>' . $monthnum . '-' . $wp_locale->get_month_abbrev( $wp_locale->get_month( $i ) ) . "</option>\n";
+               /* translators: 1: month number (01, 02, etc.), 2: month abbreviation */
+               $month .= '>' . sprintf( __( '%1$s-%2$s' ), $monthnum, $wp_locale->get_month_abbrev( $wp_locale->get_month( $i ) ) ) . "</option>\n";
        }
        $month .= '</select>';
 
        }
        $month .= '</select>';
 
@@ -728,7 +746,6 @@ function the_attachment_links( $id = false ) {
 <?php
 }
 
 <?php
 }
 
-
 /**
  * Print out <option> html elements for role selectors
  *
 /**
  * Print out <option> html elements for role selectors
  *
@@ -1200,7 +1217,7 @@ function add_settings_error( $setting, $code, $message, $type = 'error' ) {
  * @param boolean $sanitize Whether to re-sanitize the setting value before returning errors.
  * @return array Array of settings errors
  */
  * @param boolean $sanitize Whether to re-sanitize the setting value before returning errors.
  * @return array Array of settings errors
  */
-function get_settings_errors( $setting = '', $sanitize = FALSE ) {
+function get_settings_errors( $setting = '', $sanitize = false ) {
        global $wp_settings_errors;
 
        // If $sanitize is true, manually re-run the sanitizisation for this option
        global $wp_settings_errors;
 
        // If $sanitize is true, manually re-run the sanitizisation for this option
@@ -1252,13 +1269,15 @@ function get_settings_errors( $setting = '', $sanitize = FALSE ) {
  * @param boolean $sanitize Whether to re-sanitize the setting value before returning errors.
  * @param boolean $hide_on_update If set to true errors will not be shown if the settings page has already been submitted.
  */
  * @param boolean $sanitize Whether to re-sanitize the setting value before returning errors.
  * @param boolean $hide_on_update If set to true errors will not be shown if the settings page has already been submitted.
  */
-function settings_errors( $setting = '', $sanitize = FALSE, $hide_on_update = FALSE ) {
+function settings_errors( $setting = '', $sanitize = false, $hide_on_update = false ) {
 
 
-       if ($hide_on_update AND $_GET['settings-updated']) return;
+       if ( $hide_on_update && ! empty( $_GET['settings-updated'] ) )
+               return;
 
        $settings_errors = get_settings_errors( $setting, $sanitize );
 
 
        $settings_errors = get_settings_errors( $setting, $sanitize );
 
-       if ( !is_array($settings_errors) ) return;
+       if ( ! is_array( $settings_errors ) )
+               return;
 
        $output = '';
        foreach ( $settings_errors as $key => $details ) {
 
        $output = '';
        foreach ( $settings_errors as $key => $details ) {
@@ -1300,7 +1319,7 @@ function find_posts_div($found_action = '') {
                                        if ( 'attachment' == $post->name )
                                                continue;
                                ?>
                                        if ( 'attachment' == $post->name )
                                                continue;
                                ?>
-                               <input type="radio" name="find-posts-what" id="find-posts-<?php echo esc_attr($post->name); ?>" value="<?php echo esc_attr($post->name); ?>" <?php checked($post->name,  'post'); ?> />
+                               <input type="radio" name="find-posts-what" id="find-posts-<?php echo esc_attr($post->name); ?>" value="<?php echo esc_attr($post->name); ?>" <?php checked($post->name, 'post'); ?> />
                                <label for="find-posts-<?php echo esc_attr($post->name); ?>"><?php echo $post->label; ?></label>
                                <?php
                                } ?>
                                <label for="find-posts-<?php echo esc_attr($post->name); ?>"><?php echo $post->label; ?></label>
                                <?php
                                } ?>
@@ -1390,7 +1409,7 @@ var userSettings = {
                'uid': '<?php if ( ! isset($current_user) ) $current_user = wp_get_current_user(); echo $current_user->ID; ?>',
                'time':'<?php echo time() ?>'
        },
                'uid': '<?php if ( ! isset($current_user) ) $current_user = wp_get_current_user(); echo $current_user->ID; ?>',
                'time':'<?php echo time() ?>'
        },
-       ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>',
+       ajaxurl = '<?php echo admin_url( 'admin-ajax.php', 'relative' ); ?>',
        pagenow = '<?php echo $current_screen->id; ?>',
        typenow = '<?php echo $current_screen->post_type; ?>',
        adminpage = '<?php echo $admin_body_class; ?>',
        pagenow = '<?php echo $current_screen->id; ?>',
        typenow = '<?php echo $current_screen->post_type; ?>',
        adminpage = '<?php echo $admin_body_class; ?>',
@@ -1407,9 +1426,11 @@ do_action("admin_print_scripts-$hook_suffix");
 do_action('admin_print_scripts');
 do_action("admin_head-$hook_suffix");
 do_action('admin_head');
 do_action('admin_print_scripts');
 do_action("admin_head-$hook_suffix");
 do_action('admin_head');
+
+$admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace( '_', '-', get_locale() ) ) );
 ?>
 </head>
 ?>
 </head>
-<body<?php if ( isset($GLOBALS['body_id']) ) echo ' id="' . $GLOBALS['body_id'] . '"'; ?>  class="wp-admin no-js iframe <?php echo apply_filters( 'admin_body_class', '' ) . ' ' . $admin_body_class; ?>">
+<body<?php if ( isset($GLOBALS['body_id']) ) echo ' id="' . $GLOBALS['body_id'] . '"'; ?> class="wp-admin no-js iframe <?php echo apply_filters( 'admin_body_class', '' ) . ' ' . $admin_body_class; ?>">
 <script type="text/javascript">
 //<![CDATA[
 (function(){
 <script type="text/javascript">
 //<![CDATA[
 (function(){
@@ -1589,7 +1610,7 @@ function compression_test() {
  *                     Defaults to no other attributes. Other attributes can also be provided as a
  *                     string such as 'tabindex="1"', though the array format is typically cleaner.
  */
  *                     Defaults to no other attributes. Other attributes can also be provided as a
  *                     string such as 'tabindex="1"', though the array format is typically cleaner.
  */
-function submit_button( $text = NULL, $type = 'primary', $name = 'submit', $wrap = true, $other_attributes = NULL ) {
+function submit_button( $text = null, $type = 'primary', $name = 'submit', $wrap = true, $other_attributes = null ) {
        echo get_submit_button( $text, $type, $name, $wrap, $other_attributes );
 }
 
        echo get_submit_button( $text, $type, $name, $wrap, $other_attributes );
 }
 
@@ -1610,7 +1631,7 @@ function submit_button( $text = NULL, $type = 'primary', $name = 'submit', $wrap
  *                     Defaults to no other attributes. Other attributes can also be provided as a
  *                     string such as 'tabindex="1"', though the array format is typically cleaner.
  */
  *                     Defaults to no other attributes. Other attributes can also be provided as a
  *                     string such as 'tabindex="1"', though the array format is typically cleaner.
  */
-function get_submit_button( $text = NULL, $type = 'primary', $name = 'submit', $wrap = true, $other_attributes = NULL ) {
+function get_submit_button( $text = null, $type = 'primary', $name = 'submit', $wrap = true, $other_attributes = null ) {
        switch ( $type ) :
                case 'primary' :
                case 'secondary' :
        switch ( $type ) :
                case 'primary' :
                case 'secondary' :
@@ -1622,7 +1643,7 @@ function get_submit_button( $text = NULL, $type = 'primary', $name = 'submit', $
                default :
                        $class = $type; // Custom cases can just pass in the classes they want to be used
        endswitch;
                default :
                        $class = $type; // Custom cases can just pass in the classes they want to be used
        endswitch;
-       $text = ( NULL == $text ) ? __( 'Save Changes' ) : $text;
+       $text = ( null == $text ) ? __( 'Save Changes' ) : $text;
 
        // Default the id attribute to $name unless an id was specifically provided in $other_attributes
        $id = $name;
 
        // Default the id attribute to $name unless an id was specifically provided in $other_attributes
        $id = $name;
@@ -1651,13 +1672,14 @@ function get_submit_button( $text = NULL, $type = 'primary', $name = 'submit', $
 }
 
 function _wp_admin_html_begin() {
 }
 
 function _wp_admin_html_begin() {
+       $admin_html_class = ( is_admin_bar_showing() ) ? 'wp-toolbar' : '';
 ?>
 <!DOCTYPE html>
 <!--[if IE 8]>
 ?>
 <!DOCTYPE html>
 <!--[if IE 8]>
-<html xmlns="http://www.w3.org/1999/xhtml" class="ie8" <?php do_action('admin_xml_ns'); ?> <?php language_attributes(); ?>>
+<html xmlns="http://www.w3.org/1999/xhtml" class="ie8 <?php echo $admin_html_class; ?>" <?php do_action('admin_xml_ns'); ?> <?php language_attributes(); ?>>
 <![endif]-->
 <!--[if !(IE 8) ]><!-->
 <![endif]-->
 <!--[if !(IE 8) ]><!-->
-<html xmlns="http://www.w3.org/1999/xhtml" <?php do_action('admin_xml_ns'); ?> <?php language_attributes(); ?>>
+<html xmlns="http://www.w3.org/1999/xhtml" class="<?php echo $admin_html_class; ?>" <?php do_action('admin_xml_ns'); ?> <?php language_attributes(); ?>>
 <!--<![endif]-->
 <head>
 <meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?>" />
 <!--<![endif]-->
 <head>
 <meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?>" />
@@ -1686,36 +1708,43 @@ final class WP_Internal_Pointers {
                        'index.php'    => 'wp330_toolbar',
                        'post-new.php' => 'wp330_media_uploader',
                        'post.php'     => 'wp330_media_uploader',
                        'index.php'    => 'wp330_toolbar',
                        'post-new.php' => 'wp330_media_uploader',
                        'post.php'     => 'wp330_media_uploader',
-                       'themes.php'   => 'wp330_saving_widgets',
+                       'themes.php'   => array( 'wp330_saving_widgets', 'wp340_customize_current_theme_link' ),
+                       'appearance_page_custom-header' => 'wp340_choose_image_from_library',
+                       'appearance_page_custom-background' => 'wp340_choose_image_from_library',
                );
 
                // Check if screen related pointer is registered
                if ( empty( $registered_pointers[ $hook_suffix ] ) )
                        return;
 
                );
 
                // Check if screen related pointer is registered
                if ( empty( $registered_pointers[ $hook_suffix ] ) )
                        return;
 
-               $pointer = $registered_pointers[ $hook_suffix ];
+               $pointers = (array) $registered_pointers[ $hook_suffix ];
 
                $caps_required = array(
                        'wp330_media_uploader' => array( 'upload_files' ),
                        'wp330_saving_widgets' => array( 'edit_theme_options', 'switch_themes' ),
 
                $caps_required = array(
                        'wp330_media_uploader' => array( 'upload_files' ),
                        'wp330_saving_widgets' => array( 'edit_theme_options', 'switch_themes' ),
+                       'wp340_customize_current_theme_link' => array( 'edit_theme_options' ),
+                       'wp340_choose_image_from_library' => array( 'edit_theme_options' ),
                );
 
                );
 
-               if ( isset( $caps_required[ $pointer ] ) ) {
-                       foreach ( $caps_required[ $pointer ] as $cap ) {
-                               if ( ! current_user_can( $cap ) )
-                                       return;
-                       }
-               }
-
                // Get dismissed pointers
                $dismissed = explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
 
                // Get dismissed pointers
                $dismissed = explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
 
-               // Pointer has been dismissed
-               if ( in_array( $pointer, $dismissed ) )
-                       return;
+               $got_pointers = false;
+               foreach ( array_diff( $pointers, $dismissed ) as $pointer ) {
+                       if ( isset( $caps_required[ $pointer ] ) ) {
+                               foreach ( $caps_required[ $pointer ] as $cap ) {
+                                       if ( ! current_user_can( $cap ) )
+                                               continue 2;
+                               }
+                       }
 
 
-               // Bind pointer print function
-               add_action( 'admin_print_footer_scripts', array( 'WP_Internal_Pointers', 'pointer_' . $pointer ) );
+                       // Bind pointer print function
+                       add_action( 'admin_print_footer_scripts', array( 'WP_Internal_Pointers', 'pointer_' . $pointer ) );
+                       $got_pointers = true;
+               }
+
+               if ( ! $got_pointers )
+                       return;
 
                // Add pointers script and style to queue
                wp_enqueue_style( 'wp-pointer' );
 
                // Add pointers script and style to queue
                wp_enqueue_style( 'wp-pointer' );
@@ -1738,8 +1767,8 @@ final class WP_Internal_Pointers {
                ?>
                <script type="text/javascript">
                //<![CDATA[
                ?>
                <script type="text/javascript">
                //<![CDATA[
-               jQuery(document).ready( function($) {
-                       var options = <?php echo json_encode( $args ); ?>;
+               (function($){
+                       var options = <?php echo json_encode( $args ); ?>, setup;
 
                        if ( ! options )
                                return;
 
                        if ( ! options )
                                return;
@@ -1753,8 +1782,16 @@ final class WP_Internal_Pointers {
                                }
                        });
 
                                }
                        });
 
-                       $('<?php echo $selector; ?>').pointer( options ).pointer('open');
-               });
+                       setup = function() {
+                               $('<?php echo $selector; ?>').pointer( options ).pointer('open');
+                       };
+
+                       if ( options.position && options.position.defer_loading )
+                               $(window).bind( 'load.wp-pointers', setup );
+                       else
+                               $(document).ready( setup );
+
+               })( jQuery );
                //]]>
                </script>
                <?php
                //]]>
                </script>
                <?php
@@ -1795,7 +1832,7 @@ final class WP_Internal_Pointers {
         */
        public static function pointer_wp330_saving_widgets() {
                $content  = '<h3>' . __( 'New Feature: Saving Widgets' ) . '</h3>';
         */
        public static function pointer_wp330_saving_widgets() {
                $content  = '<h3>' . __( 'New Feature: Saving Widgets' ) . '</h3>';
-               $content .= '<p>' . __( 'If you change your mind and revert to your previous theme, we&#8217;ll put the widgets back the way you had them.' ). '</p>';
+               $content .= '<p>' . __( 'If you change your mind and revert to your previous theme, we&#8217;ll put the widgets back the way you had them.' ) . '</p>';
 
                WP_Internal_Pointers::print_js( 'wp330_saving_widgets', '#message2', array(
                        'content'  => $content,
 
                WP_Internal_Pointers::print_js( 'wp330_saving_widgets', '#message2', array(
                        'content'  => $content,
@@ -1803,13 +1840,44 @@ final class WP_Internal_Pointers {
                ) );
        }
 
                ) );
        }
 
+       /**
+        * Print 'New Feature: Current Theme Customize Link' for 3.4.0.
+        *
+        * @since 3.4.0
+        */
+       public static function pointer_wp340_customize_current_theme_link() {
+               $content  = '<h3>' . __( 'New Feature: Customizer' ) . '</h3>';
+               $content .= '<p>' . __( 'Click Customize to change the header, background, title and menus of the current theme, all in one place.' ) . '</p>';
+               $content .= '<p>' . __( 'Click the Live Preview links in the Available Themes list below to customize and preview another theme before activating it.' ) . '</p>';
+
+               WP_Internal_Pointers::print_js( 'wp340_customize_current_theme_link', '#customize-current-theme-link', array(
+                       'content'  => $content,
+                       'position' => array( 'edge' => 'top', 'align' => is_rtl() ? 'right' : 'left', 'offset' => is_rtl() ? '32 0' : '-32 0' ),
+               ) );
+       }
+
+       /**
+        * Print 'New Feature: Choose Image from Library' for 3.4.0.
+        *
+        * @since 3.4.0
+        */
+       public static function pointer_wp340_choose_image_from_library() {
+               $content  = '<h3>' . __( 'New Feature: Choose Image from Library' ) . '</h3>';
+               $content .= '<p>' . __( 'Want to use an image you uploaded earlier? Select it from your media library instead of uploading it again.' ) . '</p>';
+
+               WP_Internal_Pointers::print_js( 'wp340_choose_image_from_library', '#choose-from-library-link', array(
+                       'content'  => $content,
+                       'position' => array( 'edge' => 'top', 'align' => is_rtl() ? 'right' : 'left', 'defer_loading' => true ),
+               ) );
+       }
+
        /**
         * Prevents new users from seeing existing 'new feature' pointers.
         *
         * @since 3.3.0
         */
        public static function dismiss_pointers_for_new_users( $user_id ) {
        /**
         * Prevents new users from seeing existing 'new feature' pointers.
         *
         * @since 3.3.0
         */
        public static function dismiss_pointers_for_new_users( $user_id ) {
-               add_user_meta( $user_id, 'dismissed_wp_pointers', 'wp330_toolbar,wp330_media_uploader,wp330_saving_widgets' );
+               add_user_meta( $user_id, 'dismissed_wp_pointers', 'wp330_toolbar,wp330_media_uploader,wp330_saving_widgets,wp340_choose_image_from_library,wp340_customize_current_theme_link' );
        }
 }
 
        }
 }
 
@@ -1831,4 +1899,4 @@ function convert_to_screen( $hook_name ) {
        }
 
        return WP_Screen::get( $hook_name );
        }
 
        return WP_Screen::get( $hook_name );
-}
\ No newline at end of file
+}
index 9171daba441795cc82e7f3d1b055bdd73dc0689f..1fdafec831cf01c33d65edbf70c58dd54d4a3ff2 100644 (file)
@@ -24,15 +24,15 @@ $theme_field_defaults = array( 'description' => true, 'sections' => false, 'test
  *
  * @since 2.8.0
  *
  *
  * @since 2.8.0
  *
- * @deprecated since 3.1.0  Use get_theme_feature_list() instead.
+ * @deprecated since 3.1.0 Use get_theme_feature_list() instead.
  *
  * @return array
  */
 function install_themes_feature_list( ) {
        if ( !$cache = get_transient( 'wporg_theme_feature_list' ) )
  *
  * @return array
  */
 function install_themes_feature_list( ) {
        if ( !$cache = get_transient( 'wporg_theme_feature_list' ) )
-               set_transient( 'wporg_theme_feature_list', array( ),  10800);
+               set_transient( 'wporg_theme_feature_list', array( ), 10800);
 
 
-       if ( $cache  )
+       if ( $cache )
                return $cache;
 
        $feature_list = themes_api( 'feature_list', array( ) );
                return $cache;
 
        $feature_list = themes_api( 'feature_list', array( ) );
@@ -49,20 +49,22 @@ function install_themes_feature_list( ) {
  *
  * @since 2.8.0
  */
  *
  * @since 2.8.0
  */
-function install_theme_search_form() {
-       $type = isset( $_REQUEST['type'] ) ? stripslashes( $_REQUEST['type'] ) : '';
+function install_theme_search_form( $type_selector = true ) {
+       $type = isset( $_REQUEST['type'] ) ? stripslashes( $_REQUEST['type'] ) : 'term';
        $term = isset( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : '';
        $term = isset( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : '';
+       if ( ! $type_selector )
+               echo '<p class="install-help">' . __( 'Search for themes by keyword.' ) . '</p>';
        ?>
        ?>
-<p class="install-help"><?php _e('Search for themes by keyword, author, or tag.') ?></p>
-
 <form id="search-themes" method="get" action="">
        <input type="hidden" name="tab" value="search" />
 <form id="search-themes" method="get" action="">
        <input type="hidden" name="tab" value="search" />
+       <?php if ( $type_selector ) : ?>
        <select name="type" id="typeselector">
        <select name="type" id="typeselector">
-       <option value="term" <?php selected('term', $type) ?>><?php _e('Term'); ?></option>
+       <option value="term" <?php selected('term', $type) ?>><?php _e('Keyword'); ?></option>
        <option value="author" <?php selected('author', $type) ?>><?php _e('Author'); ?></option>
        <option value="tag" <?php selected('tag', $type) ?>><?php _ex('Tag', 'Theme Installer'); ?></option>
        </select>
        <option value="author" <?php selected('author', $type) ?>><?php _e('Author'); ?></option>
        <option value="tag" <?php selected('tag', $type) ?>><?php _ex('Tag', 'Theme Installer'); ?></option>
        </select>
-       <input type="text" name="s" size="30" value="<?php echo esc_attr($term) ?>" />
+       <?php endif; ?>
+       <input type="search" name="s" size="30" value="<?php echo esc_attr($term) ?>" />
        <?php submit_button( __( 'Search' ), 'button', 'search', false ); ?>
 </form>
 <?php
        <?php submit_button( __( 'Search' ), 'button', 'search', false ); ?>
 </form>
 <?php
@@ -74,11 +76,13 @@ function install_theme_search_form() {
  * @since 2.8.0
  */
 function install_themes_dashboard() {
  * @since 2.8.0
  */
 function install_themes_dashboard() {
-       install_theme_search_form();
+       install_theme_search_form( false );
 ?>
 <h4><?php _e('Feature Filter') ?></h4>
 ?>
 <h4><?php _e('Feature Filter') ?></h4>
-<form method="post" action="<?php echo self_admin_url( 'theme-install.php?tab=search' ); ?>">
-<p class="install-help"><?php _e('Find a theme based on specific features') ?></p>
+<p class="install-help"><?php _e( 'Find a theme based on specific features.' ); ?></p>
+
+<form method="get" action="">
+       <input type="hidden" name="tab" value="search" />
        <?php
        $feature_list = get_theme_feature_list( );
        echo '<div class="feature-filter">';
        <?php
        $feature_list = get_theme_feature_list( );
        echo '<div class="feature-filter">';
@@ -94,7 +98,7 @@ function install_themes_dashboard() {
 ?>
 
 <li>
 ?>
 
 <li>
-       <input type="checkbox" name="features[<?php echo $feature; ?>]" id="feature-id-<?php echo $feature; ?>" value="<?php echo $feature; ?>" />
+       <input type="checkbox" name="features[]" id="feature-id-<?php echo $feature; ?>" value="<?php echo $feature; ?>" />
        <label for="feature-id-<?php echo $feature; ?>"><?php echo $feature_name; ?></label>
 </li>
 
        <label for="feature-id-<?php echo $feature; ?>"><?php echo $feature_name; ?></label>
 </li>
 
@@ -125,75 +129,15 @@ function install_themes_upload($page = 1) {
 }
 add_action('install_themes_upload', 'install_themes_upload', 10, 1);
 
 }
 add_action('install_themes_upload', 'install_themes_upload', 10, 1);
 
-function display_theme($theme, $actions = null, $show_details = true) {
-       global $themes_allowedtags;
-
-       if ( empty($theme) )
-               return;
-
-       $name = wp_kses($theme->name, $themes_allowedtags);
-       $desc = wp_kses($theme->description, $themes_allowedtags);
-       //if ( strlen($desc) > 30 )
-       //      $desc =  substr($desc, 0, 15) . '<span class="dots">...</span><span>' . substr($desc, -15) . '</span>';
-
-       $preview_link = $theme->preview_url . '?TB_iframe=true&amp;width=600&amp;height=400';
-       if ( !is_array($actions) ) {
-               $actions = array();
-               $actions[] = '<a href="' . self_admin_url('theme-install.php?tab=theme-information&amp;theme=' . $theme->slug .
-                                                                               '&amp;TB_iframe=true&amp;tbWidth=500&amp;tbHeight=385') . '" class="thickbox thickbox-preview onclick" title="' . esc_attr(sprintf(__('Install &#8220;%s&#8221;'), $name)) . '">' . __('Install') . '</a>';
-               if ( !is_network_admin() )
-                       $actions[] = '<a href="' . $preview_link . '" class="thickbox thickbox-preview onclick previewlink" title="' . esc_attr(sprintf(__('Preview &#8220;%s&#8221;'), $name)) . '">' . __('Preview') . '</a>';
-               $actions = apply_filters('theme_install_action_links', $actions, $theme);
-       }
-
-       $actions = implode ( ' | ', $actions );
-       ?>
-<a class='thickbox thickbox-preview screenshot'
-       href='<?php echo esc_url($preview_link); ?>'
-       title='<?php echo esc_attr(sprintf(__('Preview &#8220;%s&#8221;'), $name)); ?>'>
-<img src='<?php echo esc_url($theme->screenshot_url); ?>' width='150' />
-</a>
-<h3><?php echo $name ?></h3>
-<span class='action-links'><?php echo $actions ?></span>
-<p><?php echo $desc ?></p>
-<?php if ( $show_details ) { ?>
-<a href="#theme_detail" class="theme-detail hide-if-no-js" tabindex='4'><?php _e('Details') ?></a>
-<div class="themedetaildiv hide-if-js">
-<p><strong><?php _e('Version:') ?></strong> <?php echo wp_kses($theme->version, $themes_allowedtags) ?></p>
-<p><strong><?php _e('Author:') ?></strong> <?php echo wp_kses($theme->author, $themes_allowedtags) ?></p>
-<?php if ( ! empty($theme->last_updated) ) : ?>
-<p><strong><?php _e('Last Updated:') ?></strong> <span title="<?php echo $theme->last_updated ?>"><?php printf( __('%s ago'), human_time_diff(strtotime($theme->last_updated)) ) ?></span></p>
-<?php endif; if ( ! empty($theme->requires) ) : ?>
-<p><strong><?php _e('Requires WordPress Version:') ?></strong> <?php printf(__('%s or higher'), $theme->requires) ?></p>
-<?php endif; if ( ! empty($theme->tested) ) : ?>
-<p><strong><?php _e('Compatible up to:') ?></strong> <?php echo $theme->tested ?></p>
-<?php endif; if ( !empty($theme->downloaded) ) : ?>
-<p><strong><?php _e('Downloaded:') ?></strong> <?php printf(_n('%s time', '%s times', $theme->downloaded), number_format_i18n($theme->downloaded)) ?></p>
-<?php endif; ?>
-<div class="star-holder" title="<?php printf(_n('(based on %s rating)', '(based on %s ratings)', $theme->num_ratings), number_format_i18n($theme->num_ratings)) ?>">
-       <div class="star star-rating" style="width: <?php echo esc_attr($theme->rating) ?>px"></div>
-       <div class="star star5"><img src="<?php echo admin_url('images/star.png?v=20110615'); ?>" alt="<?php esc_attr_e('5 stars') ?>" /></div>
-       <div class="star star4"><img src="<?php echo admin_url('images/star.png?v=20110615'); ?>" alt="<?php esc_attr_e('4 stars') ?>" /></div>
-       <div class="star star3"><img src="<?php echo admin_url('images/star.png?v=20110615'); ?>" alt="<?php esc_attr_e('3 stars') ?>" /></div>
-       <div class="star star2"><img src="<?php echo admin_url('images/star.png?v=20110615'); ?>" alt="<?php esc_attr_e('2 stars') ?>" /></div>
-       <div class="star star1"><img src="<?php echo admin_url('images/star.png?v=20110615'); ?>" alt="<?php esc_attr_e('1 star') ?>" /></div>
-</div>
-</div>
-<?php }
-       /*
-        object(stdClass)[59]
-        public 'name' => string 'Magazine Basic' (length=14)
-        public 'slug' => string 'magazine-basic' (length=14)
-        public 'version' => string '1.1' (length=3)
-        public 'author' => string 'tinkerpriest' (length=12)
-        public 'preview_url' => string 'http://wp-themes.com/?magazine-basic' (length=36)
-        public 'screenshot_url' => string 'http://wp-themes.com/wp-content/themes/magazine-basic/screenshot.png' (length=68)
-        public 'rating' => float 80
-        public 'num_ratings' => int 1
-        public 'homepage' => string 'http://wordpress.org/extend/themes/magazine-basic' (length=49)
-        public 'description' => string 'A basic magazine style layout with a fully customizable layout through a backend interface. Designed by <a href="http://bavotasan.com">c.bavota</a> of <a href="http://tinkerpriestmedia.com">Tinker Priest Media</a>.' (length=214)
-        public 'download_link' => string 'http://wordpress.org/extend/themes/download/magazine-basic.1.1.zip' (length=66)
-        */
+/**
+ * Prints a theme on the Install Themes pages.
+ *
+ * @deprecated 3.4.0
+ */
+function display_theme( $theme ) {
+       _deprecated_function( __FUNCTION__, '3.4' );
+       global $wp_list_table;
+       return $wp_list_table->single_row( $theme );
 }
 
 /**
 }
 
 /**
@@ -217,107 +161,16 @@ add_action('install_themes_updated', 'display_themes');
  * @since 2.8.0
  */
 function install_theme_information() {
  * @since 2.8.0
  */
 function install_theme_information() {
-       //TODO: This function needs a LOT of UI work :)
-       global $tab, $themes_allowedtags;
-
-       $api = themes_api('theme_information', array('slug' => stripslashes( $_REQUEST['theme'] ) ));
-
-       if ( is_wp_error($api) )
-               wp_die($api);
+       global $tab, $themes_allowedtags, $wp_list_table;
 
 
-       // Sanitize HTML
-       foreach ( (array)$api->sections as $section_name => $content )
-               $api->sections[$section_name] = wp_kses($content, $themes_allowedtags);
+       $theme = themes_api( 'theme_information', array( 'slug' => stripslashes( $_REQUEST['theme'] ) ) );
 
 
-       foreach ( array('version', 'author', 'requires', 'tested', 'homepage', 'downloaded', 'slug') as $key ) {
-               if ( isset($api->$key) )
-                       $api->$key = wp_kses($api->$key, $themes_allowedtags);
-       }
+       if ( is_wp_error( $theme ) )
+               wp_die( $theme );
 
        iframe_header( __('Theme Install') );
 
        iframe_header( __('Theme Install') );
-
-       if ( empty($api->download_link) ) {
-               echo '<div id="message" class="error"><p>' . __('<strong>ERROR:</strong> This theme is currently not available. Please try again later.') . '</p></div>';
-               iframe_footer();
-               exit;
-       }
-
-       if ( !empty($api->tested) && version_compare($GLOBALS['wp_version'], $api->tested, '>') )
-               echo '<div class="updated"><p>' . __('<strong>Warning:</strong> This theme has <strong>not been tested</strong> with your current version of WordPress.') . '</p></div>';
-       else if ( !empty($api->requires) && version_compare($GLOBALS['wp_version'], $api->requires, '<') )
-               echo '<div class="updated"><p>' . __('<strong>Warning:</strong> This theme has not been marked as <strong>compatible</strong> with your version of WordPress.') . '</p></div>';
-
-       // Default to a "new" theme
-       $type = 'install';
-       // Check to see if this theme is known to be installed, and has an update awaiting it.
-       $update_themes = get_site_transient('update_themes');
-       if ( is_object($update_themes) && isset($update_themes->response) ) {
-               foreach ( (array)$update_themes->response as $theme_slug => $theme_info ) {
-                       if ( $theme_slug === $api->slug ) {
-                               $type = 'update_available';
-                               $update_file = $theme_slug;
-                               break;
-                       }
-               }
-       }
-
-       $themes = get_themes();
-       foreach ( (array) $themes as $this_theme ) {
-               if ( is_array($this_theme) && $this_theme['Stylesheet'] == $api->slug ) {
-                       if ( $this_theme['Version'] == $api->version ) {
-                               $type = 'latest_installed';
-                       } elseif ( $this_theme['Version'] > $api->version ) {
-                               $type = 'newer_installed';
-                               $newer_version = $this_theme['Version'];
-                       }
-                       break;
-               }
-       }
-?>
-
-<div class='available-theme'>
-<img src='<?php echo esc_url($api->screenshot_url) ?>' width='300' class="theme-preview-img" />
-<h3><?php echo $api->name; ?></h3>
-<p><?php printf(__('by %s'), $api->author); ?></p>
-<p><?php printf(__('Version: %s'), $api->version); ?></p>
-
-<?php
-$buttons = '<a class="button" id="cancel" href="#" onclick="tb_close();return false;">' . __('Cancel') . '</a> ';
-
-switch ( $type ) {
-default:
-case 'install':
-       if ( current_user_can('install_themes') ) :
-       $buttons .= '<a class="button-primary" id="install" href="' . wp_nonce_url(self_admin_url('update.php?action=install-theme&theme=' . $api->slug), 'install-theme_' . $api->slug) . '" target="_parent">' . __('Install Now') . '</a>';
-       endif;
-       break;
-case 'update_available':
-       if ( current_user_can('update_themes') ) :
-       $buttons .= '<a class="button-primary" id="install"     href="' . wp_nonce_url(self_admin_url('update.php?action=upgrade-theme&theme=' . $update_file), 'upgrade-theme_' . $update_file) . '" target="_parent">' . __('Install Update Now') . '</a>';
-       endif;
-       break;
-case 'newer_installed':
-       if ( current_user_can('install_themes') || current_user_can('update_themes') ) :
-       ?><p><?php printf(__('Newer version (%s) is installed.'), $newer_version); ?></p><?php
-       endif;
-       break;
-case 'latest_installed':
-       if ( current_user_can('install_themes') || current_user_can('update_themes') ) :
-       ?><p><?php _e('This version is already installed.'); ?></p><?php
-       endif;
-       break;
-} ?>
-<br class="clear" />
-</div>
-
-<p class="action-button">
-<?php echo $buttons; ?>
-<br class="clear" />
-</p>
-
-<?php
+       $wp_list_table->theme_installer_single( $theme );
        iframe_footer();
        exit;
 }
 add_action('install_themes_pre_theme-information', 'install_theme_information');
        iframe_footer();
        exit;
 }
 add_action('install_themes_pre_theme-information', 'install_theme_information');
-
index 7cb5dc4a355cb0ec9e6a95614e17c4e2ca006336..af1960e478d2e05cddd8c8dbfc399257c04ea925 100644 (file)
@@ -6,64 +6,24 @@
  * @subpackage Administration
  */
 
  * @subpackage Administration
  */
 
-/**
- * {@internal Missing Short Description}}
- *
- * @since 2.0.0
- *
- * @return unknown
- */
-function current_theme_info() {
-       $themes = get_themes();
-       $current_theme = get_current_theme();
-
-       if ( ! $themes ) {
-               $ct = new stdClass;
-               $ct->name = $current_theme;
-               return $ct;
-       }
-
-       if ( ! isset( $themes[$current_theme] ) ) {
-               delete_option( 'current_theme' );
-               $current_theme = get_current_theme();
-       }
-
-       $ct = new stdClass;
-       $ct->name = $current_theme;
-       $ct->title = $themes[$current_theme]['Title'];
-       $ct->version = $themes[$current_theme]['Version'];
-       $ct->parent_theme = $themes[$current_theme]['Parent Theme'];
-       $ct->template_dir = $themes[$current_theme]['Template Dir'];
-       $ct->stylesheet_dir = $themes[$current_theme]['Stylesheet Dir'];
-       $ct->template = $themes[$current_theme]['Template'];
-       $ct->stylesheet = $themes[$current_theme]['Stylesheet'];
-       $ct->screenshot = $themes[$current_theme]['Screenshot'];
-       $ct->description = $themes[$current_theme]['Description'];
-       $ct->author = $themes[$current_theme]['Author'];
-       $ct->tags = $themes[$current_theme]['Tags'];
-       $ct->theme_root = $themes[$current_theme]['Theme Root'];
-       $ct->theme_root_uri = $themes[$current_theme]['Theme Root URI'];
-       return $ct;
-}
-
 /**
  * Remove a theme
  *
  * @since 2.8.0
  *
 /**
  * Remove a theme
  *
  * @since 2.8.0
  *
- * @param string $template Template directory of the theme to delete
+ * @param string $stylesheet Stylesheet of the theme to delete
  * @param string $redirect Redirect to page when complete.
  * @return mixed
  */
  * @param string $redirect Redirect to page when complete.
  * @return mixed
  */
-function delete_theme($template, $redirect = '') {
+function delete_theme($stylesheet, $redirect = '') {
        global $wp_filesystem;
 
        global $wp_filesystem;
 
-       if ( empty($template) )
+       if ( empty($stylesheet) )
                return false;
 
        ob_start();
        if ( empty( $redirect ) )
                return false;
 
        ob_start();
        if ( empty( $redirect ) )
-               $redirect = wp_nonce_url('themes.php?action=delete&template=' . $template, 'delete-theme_' . $template);
+               $redirect = wp_nonce_url('themes.php?action=delete&stylesheet=' . $stylesheet, 'delete-theme_' . $stylesheet);
        if ( false === ($credentials = request_filesystem_credentials($redirect)) ) {
                $data = ob_get_contents();
                ob_end_clean();
        if ( false === ($credentials = request_filesystem_credentials($redirect)) ) {
                $data = ob_get_contents();
                ob_end_clean();
@@ -89,7 +49,6 @@ function delete_theme($template, $redirect = '') {
                return;
        }
 
                return;
        }
 
-
        if ( ! is_object($wp_filesystem) )
                return new WP_Error('fs_unavailable', __('Could not access filesystem.'));
 
        if ( ! is_object($wp_filesystem) )
                return new WP_Error('fs_unavailable', __('Could not access filesystem.'));
 
@@ -102,11 +61,11 @@ function delete_theme($template, $redirect = '') {
                return new WP_Error('fs_no_themes_dir', __('Unable to locate WordPress theme directory.'));
 
        $themes_dir = trailingslashit( $themes_dir );
                return new WP_Error('fs_no_themes_dir', __('Unable to locate WordPress theme directory.'));
 
        $themes_dir = trailingslashit( $themes_dir );
-       $theme_dir = trailingslashit($themes_dir . $template);
+       $theme_dir = trailingslashit($themes_dir . $stylesheet);
        $deleted = $wp_filesystem->delete($theme_dir, true);
 
        if ( ! $deleted )
        $deleted = $wp_filesystem->delete($theme_dir, true);
 
        if ( ! $deleted )
-               return new WP_Error('could_not_remove_theme', sprintf(__('Could not fully remove the theme %s.'), $template) );
+               return new WP_Error('could_not_remove_theme', sprintf(__('Could not fully remove the theme %s.'), $stylesheet) );
 
        // Force refresh of theme update information
        delete_site_transient('update_themes');
 
        // Force refresh of theme update information
        delete_site_transient('update_themes');
@@ -114,59 +73,6 @@ function delete_theme($template, $redirect = '') {
        return true;
 }
 
        return true;
 }
 
-/**
- * {@internal Missing Short Description}}
- *
- * @since 1.5.0
- *
- * @return unknown
- */
-function get_broken_themes() {
-       global $wp_broken_themes;
-
-       get_themes();
-       return $wp_broken_themes;
-}
-
-/**
- * Get the allowed themes for the current blog.
- *
- * @since 3.0.0
- *
- * @uses get_themes()
- * @uses current_theme_info()
- * @uses get_site_allowed_themes()
- * @uses wpmu_get_blog_allowedthemes
- *
- * @return array $themes Array of allowed themes.
- */
-function get_allowed_themes() {
-       if ( !is_multisite() )
-               return get_themes();
-
-       $themes = get_themes();
-       $ct = current_theme_info();
-       $allowed_themes = apply_filters("allowed_themes", get_site_allowed_themes() );
-       if ( $allowed_themes == false )
-               $allowed_themes = array();
-
-       $blog_allowed_themes = wpmu_get_blog_allowedthemes();
-       if ( is_array( $blog_allowed_themes ) )
-               $allowed_themes = array_merge( $allowed_themes, $blog_allowed_themes );
-
-       if ( isset( $allowed_themes[ esc_html( $ct->stylesheet ) ] ) == false )
-               $allowed_themes[ esc_html( $ct->stylesheet ) ] = true;
-
-       reset( $themes );
-       foreach ( $themes as $key => $theme ) {
-               if ( isset( $allowed_themes[ esc_html( $theme[ 'Stylesheet' ] ) ] ) == false )
-                       unset( $themes[ $key ] );
-       }
-       reset( $themes );
-
-       return $themes;
-}
-
 /**
  * Get the Page Templates available in this theme
  *
 /**
  * Get the Page Templates available in this theme
  *
@@ -175,37 +81,7 @@ function get_allowed_themes() {
  * @return array Key is the template name, value is the filename of the template
  */
 function get_page_templates() {
  * @return array Key is the template name, value is the filename of the template
  */
 function get_page_templates() {
-       $themes = get_themes();
-       $theme = get_current_theme();
-       $templates = $themes[$theme]['Template Files'];
-       $page_templates = array();
-
-       if ( is_array( $templates ) ) {
-               $base = array( trailingslashit(get_template_directory()), trailingslashit(get_stylesheet_directory()) );
-
-               foreach ( $templates as $template ) {
-                       $basename = str_replace($base, '', $template);
-
-                       // don't allow template files in subdirectories
-                       if ( false !== strpos($basename, '/') )
-                               continue;
-
-                       if ( 'functions.php' == $basename )
-                               continue;
-
-                       $template_data = implode( '', file( $template ));
-
-                       $name = '';
-                       if ( preg_match( '|Template Name:(.*)$|mi', $template_data, $name ) )
-                               $name = _cleanup_header_comment($name[1]);
-
-                       if ( !empty( $name ) ) {
-                               $page_templates[trim( $name )] = $basename;
-                       }
-               }
-       }
-
-       return $page_templates;
+       return array_flip( wp_get_theme()->get_page_templates() );
 }
 
 /**
 }
 
 /**
@@ -241,19 +117,17 @@ function theme_update_available( $theme ) {
        if ( !isset($themes_update) )
                $themes_update = get_site_transient('update_themes');
 
        if ( !isset($themes_update) )
                $themes_update = get_site_transient('update_themes');
 
-       if ( is_object($theme) && isset($theme->stylesheet) )
-               $stylesheet = $theme->stylesheet;
-       elseif ( is_array($theme) && isset($theme['Stylesheet']) )
-               $stylesheet = $theme['Stylesheet'];
-       else
-               return false; //No valid info passed.
+       if ( ! is_a( $theme, 'WP_Theme' ) )
+               return;
+
+       $stylesheet = $theme->get_stylesheet();
 
        if ( isset($themes_update->response[ $stylesheet ]) ) {
                $update = $themes_update->response[ $stylesheet ];
 
        if ( isset($themes_update->response[ $stylesheet ]) ) {
                $update = $themes_update->response[ $stylesheet ];
-               $theme_name = is_object($theme) ? $theme->name : (is_array($theme) ? $theme['Name'] : '');
+               $theme_name = $theme->display('Name');
                $details_url = add_query_arg(array('TB_iframe' => 'true', 'width' => 1024, 'height' => 800), $update['url']); //Theme browser inside WP? replace this, Also, theme preview JS will override this on the available list.
                $update_url = wp_nonce_url('update.php?action=upgrade-theme&amp;theme=' . urlencode($stylesheet), 'upgrade-theme_' . $stylesheet);
                $details_url = add_query_arg(array('TB_iframe' => 'true', 'width' => 1024, 'height' => 800), $update['url']); //Theme browser inside WP? replace this, Also, theme preview JS will override this on the available list.
                $update_url = wp_nonce_url('update.php?action=upgrade-theme&amp;theme=' . urlencode($stylesheet), 'upgrade-theme_' . $stylesheet);
-               $update_onclick = 'onclick="if ( confirm(\'' . esc_js( __("Updating this theme will lose any customizations you have made.  'Cancel' to stop, 'OK' to update.") ) . '\') ) {return true;}return false;"';
+               $update_onclick = 'onclick="if ( confirm(\'' . esc_js( __("Updating this theme will lose any customizations you have made. 'Cancel' to stop, 'OK' to update.") ) . '\') ) {return true;}return false;"';
 
                if ( !is_multisite() ) {
                        if ( ! current_user_can('update_themes') )
 
                if ( !is_multisite() ) {
                        if ( ! current_user_can('update_themes') )
@@ -261,7 +135,7 @@ function theme_update_available( $theme ) {
                        else if ( empty($update['package']) )
                                printf( '<p><strong>' . __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%1$s">View version %3$s details</a>. <em>Automatic update is unavailable for this theme.</em>') . '</strong></p>', $theme_name, $details_url, $update['new_version']);
                        else
                        else if ( empty($update['package']) )
                                printf( '<p><strong>' . __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%1$s">View version %3$s details</a>. <em>Automatic update is unavailable for this theme.</em>') . '</strong></p>', $theme_name, $details_url, $update['new_version']);
                        else
-                               printf( '<p><strong>' . __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%1$s">View version %3$s details</a> or <a href="%4$s" %5$s>update automatically</a>.') . '</strong></p>', $theme_name, $details_url, $update['new_version'], $update_url, $update_onclick );
+                               printf( '<p><strong>' . __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%1$s">View version %3$s details</a> or <a href="%4$s" %5$s>update now</a>.') . '</strong></p>', $theme_name, $details_url, $update['new_version'], $update_url, $update_onclick );
                }
        }
 }
                }
        }
 }
@@ -271,9 +145,10 @@ function theme_update_available( $theme ) {
  *
  * @since 3.1.0
  *
  *
  * @since 3.1.0
  *
- * @return array  Array of features keyed by category with translations keyed by slug.
+ * @param bool $api Optional. Whether try to fetch tags from the WP.org API. Defaults to true.
+ * @return array Array of features keyed by category with translations keyed by slug.
  */
  */
-function get_theme_feature_list() {
+function get_theme_feature_list( $api = true ) {
        // Hard-coded list is used if api not accessible.
        $features = array(
                        __('Colors') => array(
        // Hard-coded list is used if api not accessible.
        $features = array(
                        __('Colors') => array(
@@ -291,7 +166,7 @@ function get_theme_feature_list() {
                                'white'   => __( 'White' ),
                                'yellow'  => __( 'Yellow' ),
                                'dark'    => __( 'Dark' ),
                                'white'   => __( 'White' ),
                                'yellow'  => __( 'Yellow' ),
                                'dark'    => __( 'Dark' ),
-                               'light'   => __( 'Light ')
+                               'light'   => __( 'Light' ),
                        ),
 
                __('Columns') => array(
                        ),
 
                __('Columns') => array(
@@ -300,12 +175,12 @@ function get_theme_feature_list() {
                        'three-columns' => __( 'Three Columns' ),
                        'four-columns'  => __( 'Four Columns' ),
                        'left-sidebar'  => __( 'Left Sidebar' ),
                        'three-columns' => __( 'Three Columns' ),
                        'four-columns'  => __( 'Four Columns' ),
                        'left-sidebar'  => __( 'Left Sidebar' ),
-                       'right-sidebar' => __( 'Right Sidebar' )
+                       'right-sidebar' => __( 'Right Sidebar' ),
                ),
 
                __('Width') => array(
                        'fixed-width'    => __( 'Fixed Width' ),
                ),
 
                __('Width') => array(
                        'fixed-width'    => __( 'Fixed Width' ),
-                       'flexible-width' => __( 'Flexible Width' )
+                       'flexible-width' => __( 'Flexible Width' ),
                ),
 
                __( 'Features' ) => array(
                ),
 
                __( 'Features' ) => array(
@@ -326,21 +201,21 @@ function get_theme_feature_list() {
                        'sticky-post'           => __( 'Sticky Post' ),
                        'theme-options'         => __( 'Theme Options' ),
                        'threaded-comments'     => __( 'Threaded Comments' ),
                        'sticky-post'           => __( 'Sticky Post' ),
                        'theme-options'         => __( 'Theme Options' ),
                        'threaded-comments'     => __( 'Threaded Comments' ),
-                       'translation-ready'     => __( 'Translation Ready' )
+                       'translation-ready'     => __( 'Translation Ready' ),
                ),
 
                __( 'Subject' )  => array(
                        'holiday'       => __( 'Holiday' ),
                        'photoblogging' => __( 'Photoblogging' ),
                ),
 
                __( 'Subject' )  => array(
                        'holiday'       => __( 'Holiday' ),
                        'photoblogging' => __( 'Photoblogging' ),
-                       'seasonal'      => __( 'Seasonal' )
+                       'seasonal'      => __( 'Seasonal' ),
                )
        );
 
                )
        );
 
-       if ( !current_user_can('install_themes') )
+       if ( ! $api || ! current_user_can( 'install_themes' ) )
                return $features;
 
        if ( !$feature_list = get_site_transient( 'wporg_theme_feature_list' ) )
                return $features;
 
        if ( !$feature_list = get_site_transient( 'wporg_theme_feature_list' ) )
-               set_site_transient( 'wporg_theme_feature_list', array( ),  10800);
+               set_site_transient( 'wporg_theme_feature_list', array( ), 10800);
 
        if ( !$feature_list ) {
                $feature_list = themes_api( 'feature_list', array( ) );
 
        if ( !$feature_list ) {
                $feature_list = themes_api( 'feature_list', array( ) );
@@ -408,15 +283,13 @@ function themes_api($action, $args = null) {
        if ( ! $res ) {
                $request = wp_remote_post('http://api.wordpress.org/themes/info/1.0/', array( 'body' => array('action' => $action, 'request' => serialize($args))) );
                if ( is_wp_error($request) ) {
        if ( ! $res ) {
                $request = wp_remote_post('http://api.wordpress.org/themes/info/1.0/', array( 'body' => array('action' => $action, 'request' => serialize($args))) );
                if ( is_wp_error($request) ) {
-                       $res = new WP_Error('themes_api_failed', __('An Unexpected HTTP Error occurred during the API request.'), $request->get_error_message() );
+                       $res = new WP_Error('themes_api_failed', __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server&#8217;s configuration. If you continue to have problems, please try the <a href="http://wordpress.org/support/">support forums</a>.' ), $request->get_error_message() );
                } else {
                } else {
-                       $res = unserialize( wp_remote_retrieve_body( $request ) );
-                       if ( ! $res )
-                       $res = new WP_Error('themes_api_failed', __('An unknown error occurred.'), wp_remote_retrieve_body( $request ) );
+                       $res = maybe_unserialize( wp_remote_retrieve_body( $request ) );
+                       if ( ! is_object( $res ) && ! is_array( $res ) )
+                               $res = new WP_Error('themes_api_failed', __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server&#8217;s configuration. If you continue to have problems, please try the <a href="http://wordpress.org/support/">support forums</a>.' ), wp_remote_retrieve_body( $request ) );
                }
        }
                }
        }
-       //var_dump(array($args, $res));
+
        return apply_filters('themes_api_result', $res, $action, $args);
 }
        return apply_filters('themes_api_result', $res, $action, $args);
 }
-
-?>
index 185e0258a887158635943f8ace45fe88790439b1..bf9ef276636b3ec49fc79560900efa48ee275884 100644 (file)
 global $_old_files;
 
 $_old_files = array(
 global $_old_files;
 
 $_old_files = array(
-'wp-admin/bookmarklet.php',
+// 2.0
+'wp-admin/import-b2.php',
+'wp-admin/import-blogger.php',
+'wp-admin/import-greymatter.php',
+'wp-admin/import-livejournal.php',
+'wp-admin/import-mt.php',
+'wp-admin/import-rss.php',
+'wp-admin/import-textpattern.php',
+'wp-admin/quicktags.js',
+'wp-images/fade-butt.png',
+'wp-images/get-firefox.png',
+'wp-images/header-shadow.png',
+'wp-images/smilies',
+'wp-images/wp-small.png',
+'wp-images/wpminilogo.png',
+'wp.php',
+// 2.0.8
+'wp-includes/js/tinymce/plugins/inlinepopups/readme.txt',
+// 2.1
+'wp-admin/edit-form-ajax-cat.php',
+'wp-admin/execute-pings.php',
+'wp-admin/inline-uploading.php',
+'wp-admin/link-categories.php',
+'wp-admin/list-manipulation.js',
+'wp-admin/list-manipulation.php',
+'wp-includes/comment-functions.php',
+'wp-includes/feed-functions.php',
+'wp-includes/functions-compat.php',
+'wp-includes/functions-formatting.php',
+'wp-includes/functions-post.php',
+'wp-includes/js/dbx-key.js',
+'wp-includes/js/tinymce/plugins/autosave/langs/cs.js',
+'wp-includes/js/tinymce/plugins/autosave/langs/sv.js',
+'wp-includes/links.php',
+'wp-includes/pluggable-functions.php',
+'wp-includes/template-functions-author.php',
+'wp-includes/template-functions-category.php',
+'wp-includes/template-functions-general.php',
+'wp-includes/template-functions-links.php',
+'wp-includes/template-functions-post.php',
+'wp-includes/wp-l10n.php',
+// 2.2
+'wp-admin/cat-js.php',
+'wp-admin/import/b2.php',
+'wp-includes/js/autosave-js.php',
+'wp-includes/js/list-manipulation-js.php',
+'wp-includes/js/wp-ajax-js.php',
+// 2.3
+'wp-admin/admin-db.php',
+'wp-admin/cat.js',
+'wp-admin/categories.js',
+'wp-admin/custom-fields.js',
+'wp-admin/dbx-admin-key.js',
+'wp-admin/edit-comments.js',
+'wp-admin/install-rtl.css',
+'wp-admin/install.css',
+'wp-admin/upgrade-schema.php',
+'wp-admin/upload-functions.php',
+'wp-admin/upload-rtl.css',
+'wp-admin/upload.css',
+'wp-admin/upload.js',
+'wp-admin/users.js',
+'wp-admin/widgets-rtl.css',
+'wp-admin/widgets.css',
+'wp-admin/xfn.js',
+'wp-includes/js/tinymce/license.html',
+// 2.5
 'wp-admin/css/upload.css',
 'wp-admin/css/upload.css',
-'wp-admin/css/upload-rtl.css',
-'wp-admin/css/press-this-ie.css',
-'wp-admin/css/press-this-ie-rtl.css',
-'wp-admin/edit-form.php',
-'wp-admin/link-import.php',
 'wp-admin/images/box-bg-left.gif',
 'wp-admin/images/box-bg-right.gif',
 'wp-admin/images/box-bg.gif',
 'wp-admin/images/box-bg-left.gif',
 'wp-admin/images/box-bg-right.gif',
 'wp-admin/images/box-bg.gif',
@@ -39,47 +100,17 @@ $_old_files = array(
 'wp-admin/images/login-bkg-tile.gif',
 'wp-admin/images/notice.gif',
 'wp-admin/images/toggle.gif',
 'wp-admin/images/login-bkg-tile.gif',
 'wp-admin/images/notice.gif',
 'wp-admin/images/toggle.gif',
-'wp-admin/images/comment-stalk-classic.gif',
-'wp-admin/images/comment-stalk-fresh.gif',
-'wp-admin/images/comment-stalk-rtl.gif',
-'wp-admin/images/comment-pill.gif',
-'wp-admin/images/del.png',
-'wp-admin/images/media-button-gallery.gif',
-'wp-admin/images/media-buttons.gif',
-'wp-admin/images/tail.gif',
-'wp-admin/images/gear.png',
-'wp-admin/images/tab.png',
-'wp-admin/images/postbox-bg.gif',
 'wp-admin/includes/upload.php',
 'wp-admin/js/dbx-admin-key.js',
 'wp-admin/js/link-cat.js',
 'wp-admin/includes/upload.php',
 'wp-admin/js/dbx-admin-key.js',
 'wp-admin/js/link-cat.js',
-'wp-admin/js/forms.js',
-'wp-admin/js/upload.js',
-'wp-admin/js/set-post-thumbnail-handler.js',
-'wp-admin/js/set-post-thumbnail-handler.dev.js',
-'wp-admin/js/page.js',
-'wp-admin/js/page.dev.js',
-'wp-admin/js/slug.js',
-'wp-admin/js/slug.dev.js',
 'wp-admin/profile-update.php',
 'wp-admin/templates.php',
 'wp-admin/profile-update.php',
 'wp-admin/templates.php',
-'wp-includes/images/audio.png',
-'wp-includes/images/css.png',
-'wp-includes/images/default.png',
-'wp-includes/images/doc.png',
-'wp-includes/images/exe.png',
-'wp-includes/images/html.png',
-'wp-includes/images/js.png',
-'wp-includes/images/pdf.png',
-'wp-includes/images/swf.png',
-'wp-includes/images/tar.png',
-'wp-includes/images/text.png',
-'wp-includes/images/video.png',
-'wp-includes/images/zip.png',
+'wp-includes/images/wlw/WpComments.png',
+'wp-includes/images/wlw/WpIcon.png',
+'wp-includes/images/wlw/WpWatermark.png',
 'wp-includes/js/dbx.js',
 'wp-includes/js/fat.js',
 'wp-includes/js/list-manipulation.js',
 'wp-includes/js/dbx.js',
 'wp-includes/js/fat.js',
 'wp-includes/js/list-manipulation.js',
-'wp-includes/js/jquery/jquery.dimensions.min.js',
 'wp-includes/js/tinymce/langs/en.js',
 'wp-includes/js/tinymce/plugins/autosave/editor_plugin_src.js',
 'wp-includes/js/tinymce/plugins/autosave/langs',
 'wp-includes/js/tinymce/langs/en.js',
 'wp-includes/js/tinymce/plugins/autosave/editor_plugin_src.js',
 'wp-includes/js/tinymce/plugins/autosave/langs',
@@ -101,78 +132,83 @@ $_old_files = array(
 'wp-includes/js/tinymce/plugins/spellchecker/tinyspell.php',
 'wp-includes/js/tinymce/plugins/wordpress/images',
 'wp-includes/js/tinymce/plugins/wordpress/langs',
 'wp-includes/js/tinymce/plugins/spellchecker/tinyspell.php',
 'wp-includes/js/tinymce/plugins/wordpress/images',
 'wp-includes/js/tinymce/plugins/wordpress/langs',
-'wp-includes/js/tinymce/plugins/wordpress/popups.css',
 'wp-includes/js/tinymce/plugins/wordpress/wordpress.css',
 'wp-includes/js/tinymce/plugins/wphelp',
 'wp-includes/js/tinymce/themes/advanced/css',
 'wp-includes/js/tinymce/themes/advanced/images',
 'wp-includes/js/tinymce/themes/advanced/jscripts',
 'wp-includes/js/tinymce/themes/advanced/langs',
 'wp-includes/js/tinymce/plugins/wordpress/wordpress.css',
 'wp-includes/js/tinymce/plugins/wphelp',
 'wp-includes/js/tinymce/themes/advanced/css',
 'wp-includes/js/tinymce/themes/advanced/images',
 'wp-includes/js/tinymce/themes/advanced/jscripts',
 'wp-includes/js/tinymce/themes/advanced/langs',
+// 2.5.1
 'wp-includes/js/tinymce/tiny_mce_gzip.php',
 'wp-includes/js/tinymce/tiny_mce_gzip.php',
+// 2.6
+'wp-admin/bookmarklet.php',
+'wp-includes/js/jquery/jquery.dimensions.min.js',
+'wp-includes/js/tinymce/plugins/wordpress/popups.css',
 'wp-includes/js/wp-ajax.js',
 'wp-includes/js/wp-ajax.js',
-'wp-admin/admin-db.php',
-'wp-admin/cat.js',
-'wp-admin/categories.js',
-'wp-admin/custom-fields.js',
-'wp-admin/dbx-admin-key.js',
-'wp-admin/edit-comments.js',
-'wp-admin/install-rtl.css',
-'wp-admin/install.css',
-'wp-admin/upgrade-schema.php',
-'wp-admin/upload-functions.php',
-'wp-admin/upload-rtl.css',
-'wp-admin/upload.css',
-'wp-admin/upload.js',
-'wp-admin/users.js',
-'wp-admin/widgets-rtl.css',
-'wp-admin/widgets.css',
-'wp-admin/xfn.js',
-'wp-includes/js/tinymce/license.html',
-'wp-admin/cat-js.php',
-'wp-admin/edit-form-ajax-cat.php',
-'wp-admin/execute-pings.php',
-'wp-admin/import/b2.php',
+// 2.7
+'wp-admin/css/press-this-ie-rtl.css',
+'wp-admin/css/press-this-ie.css',
+'wp-admin/css/upload-rtl.css',
+'wp-admin/edit-form.php',
+'wp-admin/images/comment-pill.gif',
+'wp-admin/images/comment-stalk-classic.gif',
+'wp-admin/images/comment-stalk-fresh.gif',
+'wp-admin/images/comment-stalk-rtl.gif',
+'wp-admin/images/del.png',
+'wp-admin/images/gear.png',
+'wp-admin/images/media-button-gallery.gif',
+'wp-admin/images/media-buttons.gif',
+'wp-admin/images/postbox-bg.gif',
+'wp-admin/images/tab.png',
+'wp-admin/images/tail.gif',
+'wp-admin/js/forms.js',
+'wp-admin/js/upload.js',
+'wp-admin/link-import.php',
+'wp-includes/images/audio.png',
+'wp-includes/images/css.png',
+'wp-includes/images/default.png',
+'wp-includes/images/doc.png',
+'wp-includes/images/exe.png',
+'wp-includes/images/html.png',
+'wp-includes/images/js.png',
+'wp-includes/images/pdf.png',
+'wp-includes/images/swf.png',
+'wp-includes/images/tar.png',
+'wp-includes/images/text.png',
+'wp-includes/images/video.png',
+'wp-includes/images/zip.png',
+'wp-includes/js/tinymce/tiny_mce_config.php',
+'wp-includes/js/tinymce/tiny_mce_ext.js',
+// 2.8
+'wp-admin/js/users.js',
+'wp-includes/js/swfupload/plugins/swfupload.documentready.js',
+'wp-includes/js/swfupload/plugins/swfupload.graceful_degradation.js',
+'wp-includes/js/swfupload/swfupload_f9.swf',
+'wp-includes/js/tinymce/plugins/autosave',
+'wp-includes/js/tinymce/plugins/paste/css',
+'wp-includes/js/tinymce/utils/mclayer.js',
+'wp-includes/js/tinymce/wordpress.css',
+// 2.8.5
 'wp-admin/import/btt.php',
 'wp-admin/import/jkw.php',
 'wp-admin/import/btt.php',
 'wp-admin/import/jkw.php',
-'wp-admin/inline-uploading.php',
-'wp-admin/link-categories.php',
-'wp-admin/list-manipulation.js',
-'wp-admin/list-manipulation.php',
-'wp-includes/comment-functions.php',
-'wp-includes/feed-functions.php',
-'wp-includes/functions-compat.php',
-'wp-includes/functions-formatting.php',
-'wp-includes/functions-post.php',
-'wp-includes/js/dbx-key.js',
-'wp-includes/js/tinymce/plugins/autosave/langs/cs.js',
-'wp-includes/js/tinymce/plugins/autosave/langs/sv.js',
-'wp-includes/js/tinymce/themes/advanced/editor_template_src.js',
-'wp-includes/links.php',
-'wp-includes/pluggable-functions.php',
-'wp-includes/template-functions-author.php',
-'wp-includes/template-functions-category.php',
-'wp-includes/template-functions-general.php',
-'wp-includes/template-functions-links.php',
-'wp-includes/template-functions-post.php',
-'wp-includes/wp-l10n.php',
-'wp-admin/import-b2.php',
-'wp-admin/import-blogger.php',
-'wp-admin/import-greymatter.php',
-'wp-admin/import-livejournal.php',
-'wp-admin/import-mt.php',
-'wp-admin/import-rss.php',
-'wp-admin/import-textpattern.php',
-'wp-admin/quicktags.js',
-'wp-images/fade-butt.png',
-'wp-images/get-firefox.png',
-'wp-images/header-shadow.png',
-'wp-images/smilies',
-'wp-images/wp-small.png',
-'wp-images/wpminilogo.png',
-'wp.php',
+// 2.9
+'wp-admin/js/page.dev.js',
+'wp-admin/js/page.js',
+'wp-admin/js/set-post-thumbnail-handler.dev.js',
+'wp-admin/js/set-post-thumbnail-handler.js',
+'wp-admin/js/slug.dev.js',
+'wp-admin/js/slug.js',
 'wp-includes/gettext.php',
 'wp-includes/gettext.php',
+'wp-includes/js/tinymce/plugins/wordpress/js',
 'wp-includes/streams.php',
 // MU
 'wp-includes/streams.php',
 // MU
+'README.txt',
+'htaccess.dist',
+'index-install.php',
+'wp-admin/css/mu-rtl.css',
+'wp-admin/css/mu.css',
+'wp-admin/images/site-admin.png',
+'wp-admin/includes/mu.php',
 'wp-admin/wpmu-admin.php',
 'wp-admin/wpmu-blogs.php',
 'wp-admin/wpmu-edit.php',
 'wp-admin/wpmu-admin.php',
 'wp-admin/wpmu-blogs.php',
 'wp-admin/wpmu-edit.php',
@@ -180,23 +216,26 @@ $_old_files = array(
 'wp-admin/wpmu-themes.php',
 'wp-admin/wpmu-upgrade-site.php',
 'wp-admin/wpmu-users.php',
 'wp-admin/wpmu-themes.php',
 'wp-admin/wpmu-upgrade-site.php',
 'wp-admin/wpmu-users.php',
+'wp-includes/images/wordpress-mu.png',
 'wp-includes/wpmu-default-filters.php',
 'wp-includes/wpmu-functions.php',
 'wpmu-settings.php',
 'wp-includes/wpmu-default-filters.php',
 'wp-includes/wpmu-functions.php',
 'wpmu-settings.php',
-'index-install.php',
-'README.txt',
-'htaccess.dist',
-'wp-admin/css/mu-rtl.css',
-'wp-admin/css/mu.css',
-'wp-admin/images/site-admin.png',
-'wp-admin/includes/mu.php',
-'wp-includes/images/wordpress-mu.png',
 // 3.0
 'wp-admin/categories.php',
 'wp-admin/edit-category-form.php',
 'wp-admin/edit-page-form.php',
 'wp-admin/edit-pages.php',
 // 3.0
 'wp-admin/categories.php',
 'wp-admin/edit-category-form.php',
 'wp-admin/edit-page-form.php',
 'wp-admin/edit-pages.php',
+'wp-admin/images/admin-header-footer.png',
+'wp-admin/images/browse-happy.gif',
+'wp-admin/images/ico-add.png',
+'wp-admin/images/ico-close.png',
+'wp-admin/images/ico-edit.png',
+'wp-admin/images/ico-viewpage.png',
+'wp-admin/images/fav-top.png',
+'wp-admin/images/screen-options-left.gif',
+'wp-admin/images/wp-logo-vs.gif',
 'wp-admin/images/wp-logo.gif',
 'wp-admin/images/wp-logo.gif',
+'wp-admin/import',
 'wp-admin/js/wp-gears.dev.js',
 'wp-admin/js/wp-gears.js',
 'wp-admin/options-misc.php',
 'wp-admin/js/wp-gears.dev.js',
 'wp-admin/js/wp-gears.js',
 'wp-admin/options-misc.php',
@@ -208,51 +247,46 @@ $_old_files = array(
 'wp-admin/wp-admin.css',
 'wp-admin/wp-admin.dev.css',
 'wp-includes/js/codepress',
 'wp-admin/wp-admin.css',
 'wp-admin/wp-admin.dev.css',
 'wp-includes/js/codepress',
+'wp-includes/js/codepress/engines/khtml.js',
+'wp-includes/js/codepress/engines/older.js',
 'wp-includes/js/jquery/autocomplete.dev.js',
 'wp-includes/js/jquery/autocomplete.dev.js',
-'wp-includes/js/jquery/interface.js',
 'wp-includes/js/jquery/autocomplete.js',
 'wp-includes/js/jquery/autocomplete.js',
+'wp-includes/js/jquery/interface.js',
 'wp-includes/js/scriptaculous/prototype.js',
 'wp-includes/js/tinymce/wp-tinymce.js',
 'wp-includes/js/scriptaculous/prototype.js',
 'wp-includes/js/tinymce/wp-tinymce.js',
-'wp-admin/import',
-'wp-admin/images/ico-edit.png',
-'wp-admin/images/fav-top.png',
-'wp-admin/images/ico-close.png',
-'wp-admin/images/admin-header-footer.png',
-'wp-admin/images/screen-options-left.gif',
-'wp-admin/images/ico-add.png',
-'wp-admin/images/browse-happy.gif',
-'wp-admin/images/ico-viewpage.png',
 // 3.1
 // 3.1
-'wp-includes/js/tinymce/blank.htm',
-'wp-includes/js/tinymce/plugins/safari',
-'wp-admin/edit-link-categories.php',
-'wp-admin/edit-post-rows.php',
 'wp-admin/edit-attachment-rows.php',
 'wp-admin/edit-attachment-rows.php',
-'wp-admin/link-category.php',
+'wp-admin/edit-link-categories.php',
 'wp-admin/edit-link-category-form.php',
 'wp-admin/edit-link-category-form.php',
-'wp-admin/sidebar.php',
-'wp-admin/images/list-vs.png',
-'wp-admin/images/button-grad-vs.png',
+'wp-admin/edit-post-rows.php',
 'wp-admin/images/button-grad-active-vs.png',
 'wp-admin/images/button-grad-active-vs.png',
-'wp-admin/images/fav-arrow-vs.gif',
+'wp-admin/images/button-grad-vs.png',
 'wp-admin/images/fav-arrow-vs-rtl.gif',
 'wp-admin/images/fav-arrow-vs-rtl.gif',
+'wp-admin/images/fav-arrow-vs.gif',
 'wp-admin/images/fav-top-vs.gif',
 'wp-admin/images/fav-top-vs.gif',
-'wp-admin/images/screen-options-right.gif',
+'wp-admin/images/list-vs.png',
 'wp-admin/images/screen-options-right-up.gif',
 'wp-admin/images/screen-options-right-up.gif',
+'wp-admin/images/screen-options-right.gif',
 'wp-admin/images/visit-site-button-grad-vs.gif',
 'wp-admin/images/visit-site-button-grad.gif',
 'wp-admin/images/visit-site-button-grad-vs.gif',
 'wp-admin/images/visit-site-button-grad.gif',
+'wp-admin/link-category.php',
+'wp-admin/sidebar.php',
 'wp-includes/classes.php',
 'wp-includes/classes.php',
+'wp-includes/js/tinymce/blank.htm',
+'wp-includes/js/tinymce/plugins/media/css/content.css',
+'wp-includes/js/tinymce/plugins/media/img',
+'wp-includes/js/tinymce/plugins/safari',
 // 3.2
 // 3.2
+'wp-admin/images/logo-login.gif',
+'wp-admin/images/star.gif',
+'wp-admin/js/list-table.dev.js',
+'wp-admin/js/list-table.js',
 'wp-includes/default-embeds.php',
 'wp-includes/default-embeds.php',
+'wp-includes/js/tinymce/plugins/wordpress/img/help.gif',
 'wp-includes/js/tinymce/plugins/wordpress/img/more.gif',
 'wp-includes/js/tinymce/plugins/wordpress/img/toolbars.gif',
 'wp-includes/js/tinymce/plugins/wordpress/img/more.gif',
 'wp-includes/js/tinymce/plugins/wordpress/img/toolbars.gif',
-'wp-includes/js/tinymce/plugins/wordpress/img/help.gif',
 'wp-includes/js/tinymce/themes/advanced/img/fm.gif',
 'wp-includes/js/tinymce/themes/advanced/img/sflogo.png',
 'wp-includes/js/tinymce/themes/advanced/img/fm.gif',
 'wp-includes/js/tinymce/themes/advanced/img/sflogo.png',
-'wp-admin/js/list-table.js',
-'wp-admin/js/list-table.dev.js',
-'wp-admin/images/logo-login.gif',
-'wp-admin/images/star.gif',
 // 3.3
 'wp-admin/css/colors-classic-rtl.css',
 'wp-admin/css/colors-classic-rtl.dev.css',
 // 3.3
 'wp-admin/css/colors-classic-rtl.css',
 'wp-admin/css/colors-classic-rtl.dev.css',
@@ -324,6 +358,43 @@ $_old_files = array(
 'wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/down_arrow.gif',
 'wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/fade-butt.png',
 'wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/separator.gif',
 'wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/down_arrow.gif',
 'wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/fade-butt.png',
 'wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/separator.gif',
+// Don't delete, yet: 'wp-rss.php',
+// Don't delete, yet: 'wp-rdf.php',
+// Don't delete, yet: 'wp-rss2.php',
+// Don't delete, yet: 'wp-commentsrss2.php',
+// Don't delete, yet: 'wp-atom.php',
+// Don't delete, yet: 'wp-feed.php',
+// 3.4
+'wp-admin/images/gray-star.png',
+'wp-admin/images/logo-login.png',
+'wp-admin/images/star.png',
+'wp-admin/index-extra.php',
+'wp-admin/network/index-extra.php',
+'wp-admin/user/index-extra.php',
+'wp-admin/images/screenshots/admin-flyouts.png',
+'wp-admin/images/screenshots/coediting.png',
+'wp-admin/images/screenshots/drag-and-drop.png',
+'wp-admin/images/screenshots/help-screen.png',
+'wp-admin/images/screenshots/media-icon.png',
+'wp-admin/images/screenshots/new-feature-pointer.png',
+'wp-admin/images/screenshots/welcome-screen.png',
+'wp-includes/css/editor-buttons.css',
+'wp-includes/css/editor-buttons.dev.css',
+'wp-includes/js/tinymce/plugins/paste/blank.htm',
+'wp-includes/js/tinymce/plugins/wordpress/css',
+'wp-includes/js/tinymce/plugins/wordpress/editor_plugin.dev.js',
+'wp-includes/js/tinymce/plugins/wordpress/img/embedded.png',
+'wp-includes/js/tinymce/plugins/wordpress/img/more_bug.gif',
+'wp-includes/js/tinymce/plugins/wordpress/img/page_bug.gif',
+'wp-includes/js/tinymce/plugins/wpdialogs/editor_plugin.dev.js',
+'wp-includes/js/tinymce/plugins/wpeditimage/css/editimage-rtl.css',
+'wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.dev.js',
+'wp-includes/js/tinymce/plugins/wpfullscreen/editor_plugin.dev.js',
+'wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.dev.js',
+'wp-includes/js/tinymce/plugins/wpgallery/img/gallery.png',
+'wp-includes/js/tinymce/plugins/wplink/editor_plugin.dev.js',
+// Don't delete, yet: 'wp-pass.php',
+// Don't delete, yet: 'wp-register.php',
 );
 
 /**
 );
 
 /**
@@ -335,7 +406,7 @@ $_old_files = array(
  * introduced version present here being older than the current installed version.
  *
  * The content of this array should follow the following format:
  * introduced version present here being older than the current installed version.
  *
  * The content of this array should follow the following format:
- *  Filename (relative to wp-content) => Introduced version
+ * Filename (relative to wp-content) => Introduced version
  * Directories should be noted by suffixing it with a trailing slash (/)
  *
  * @since 3.2.0
  * Directories should be noted by suffixing it with a trailing slash (/)
  *
  * @since 3.2.0
@@ -406,7 +477,7 @@ function update_core($from, $to) {
        $mysql_version  = $wpdb->db_version();
        $required_php_version = '5.2.4';
        $required_mysql_version = '5.0';
        $mysql_version  = $wpdb->db_version();
        $required_php_version = '5.2.4';
        $required_mysql_version = '5.0';
-       $wp_version = '3.3.2';
+       $wp_version = '3.4';
        $php_compat     = version_compare( $php_version, $required_php_version, '>=' );
        if ( file_exists( WP_CONTENT_DIR . '/db.php' ) && empty( $wpdb->is_mysql ) )
                $mysql_compat = true;
        $php_compat     = version_compare( $php_version, $required_php_version, '>=' );
        if ( file_exists( WP_CONTENT_DIR . '/db.php' ) && empty( $wpdb->is_mysql ) )
                $mysql_compat = true;
@@ -601,7 +672,7 @@ function _copy_dir($from, $to, $skip_list = array() ) {
 /**
  * Redirect to the About WordPress page after a successful upgrade.
  *
 /**
  * Redirect to the About WordPress page after a successful upgrade.
  *
- * This function is only needed when the existing install is older than 3.3.0.
+ * This function is only needed when the existing install is older than 3.4.0.
  *
  * @since 3.3.0
  *
  *
  * @since 3.3.0
  *
@@ -609,7 +680,7 @@ function _copy_dir($from, $to, $skip_list = array() ) {
 function _redirect_to_about_wordpress( $new_version ) {
        global $wp_version, $pagenow, $action;
 
 function _redirect_to_about_wordpress( $new_version ) {
        global $wp_version, $pagenow, $action;
 
-       if ( version_compare( $wp_version, '3.3', '>=' ) )
+       if ( version_compare( $wp_version, '3.4-RC1', '>=' ) )
                return;
 
        // Ensure we only run this on the update-core.php page. wp_update_core() could be called in other contexts.
                return;
 
        // Ensure we only run this on the update-core.php page. wp_update_core() could be called in other contexts.
@@ -624,12 +695,12 @@ function _redirect_to_about_wordpress( $new_version ) {
 
        // See do_core_upgrade()
        show_message( __('WordPress updated successfully') );
 
        // See do_core_upgrade()
        show_message( __('WordPress updated successfully') );
-       show_message( '<span class="hide-if-no-js">' . sprintf( __( 'Welcome to WordPress %1$s. You will be redirected to the About WordPress screen. If not, click <a href="%s">here</a>.' ), $new_version, esc_url( admin_url( 'about.php?updated' ) ) ) . '</span>' );
-       show_message( '<span class="hide-if-js">' . sprintf( __( 'Welcome to WordPress %1$s. <a href="%2$s">Learn more</a>.' ), $new_version, esc_url( admin_url( 'about.php?updated' ) ) ) . '</span>' );
+       show_message( '<span class="hide-if-no-js">' . sprintf( __( 'Welcome to WordPress %1$s. You will be redirected to the About WordPress screen. If not, click <a href="%s">here</a>.' ), $new_version, esc_url( self_admin_url( 'about.php?updated' ) ) ) . '</span>' );
+       show_message( '<span class="hide-if-js">' . sprintf( __( 'Welcome to WordPress %1$s. <a href="%2$s">Learn more</a>.' ), $new_version, esc_url( self_admin_url( 'about.php?updated' ) ) ) . '</span>' );
        echo '</div>';
        ?>
 <script type="text/javascript">
        echo '</div>';
        ?>
 <script type="text/javascript">
-window.location = '<?php echo admin_url( 'about.php?updated' ); ?>';
+window.location = '<?php echo self_admin_url( 'about.php?updated' ); ?>';
 </script>
        <?php
 
 </script>
        <?php
 
index f82402457f87e0df023aea0ac8f8a107bd950f4d..ff787167ea275722fb9857cfbda9667110088553 100644 (file)
@@ -142,7 +142,7 @@ function update_right_now_message() {
        if ( current_user_can('update_core') ) {
                $cur = get_preferred_from_update_core();
 
        if ( current_user_can('update_core') ) {
                $cur = get_preferred_from_update_core();
 
-               if ( isset( $cur->response ) && $cur->response == 'upgrade'  )
+               if ( isset( $cur->response ) && $cur->response == 'upgrade' )
                        $msg .= " <a href='" . network_admin_url( 'update-core.php' ) . "' class='button'>" . sprintf( __('Update to %s'), $cur->current ? $cur->current : __( 'Latest' ) ) . '</a>';
        }
 
                        $msg .= " <a href='" . network_admin_url( 'update-core.php' ) . "' class='button'>" . sprintf( __('Update to %s'), $cur->current ? $cur->current : __( 'Latest' ) ) . '</a>';
        }
 
@@ -187,7 +187,7 @@ function wp_plugin_update_row( $file, $plugin_data ) {
        $plugins_allowedtags = array('a' => array('href' => array(),'title' => array()),'abbr' => array('title' => array()),'acronym' => array('title' => array()),'code' => array(),'em' => array(),'strong' => array());
        $plugin_name = wp_kses( $plugin_data['Name'], $plugins_allowedtags );
 
        $plugins_allowedtags = array('a' => array('href' => array(),'title' => array()),'abbr' => array('title' => array()),'acronym' => array('title' => array()),'code' => array(),'em' => array(),'strong' => array());
        $plugin_name = wp_kses( $plugin_data['Name'], $plugins_allowedtags );
 
-       $details_url = self_admin_url('plugin-install.php?tab=plugin-information&plugin=' . $r->slug . '&TB_iframe=true&width=600&height=800');
+       $details_url = self_admin_url('plugin-install.php?tab=plugin-information&plugin=' . $r->slug . '&section=changelog&TB_iframe=true&width=600&height=800');
 
        $wp_list_table = _get_list_table('WP_Plugins_List_Table');
 
 
        $wp_list_table = _get_list_table('WP_Plugins_List_Table');
 
@@ -199,7 +199,7 @@ function wp_plugin_update_row( $file, $plugin_data ) {
                else if ( empty($r->package) )
                        printf( __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%3$s">View version %4$s details</a>. <em>Automatic update is unavailable for this plugin.</em>'), $plugin_name, esc_url($details_url), esc_attr($plugin_name), $r->new_version );
                else
                else if ( empty($r->package) )
                        printf( __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%3$s">View version %4$s details</a>. <em>Automatic update is unavailable for this plugin.</em>'), $plugin_name, esc_url($details_url), esc_attr($plugin_name), $r->new_version );
                else
-                       printf( __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%3$s">View version %4$s details</a> or <a href="%5$s">update automatically</a>.'), $plugin_name, esc_url($details_url), esc_attr($plugin_name), $r->new_version, wp_nonce_url( self_admin_url('update.php?action=upgrade-plugin&plugin=') . $file, 'upgrade-plugin_' . $file) );
+                       printf( __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%3$s">View version %4$s details</a> or <a href="%5$s">update now</a>.'), $plugin_name, esc_url($details_url), esc_attr($plugin_name), $r->new_version, wp_nonce_url( self_admin_url('update.php?action=upgrade-plugin&plugin=') . $file, 'upgrade-plugin_' . $file) );
 
                do_action( "in_plugin_update_message-$file", $plugin_data, $r );
 
 
                do_action( "in_plugin_update_message-$file", $plugin_data, $r );
 
@@ -217,16 +217,16 @@ function wp_update_plugin($plugin, $feedback = '') {
 }
 
 function get_theme_updates() {
 }
 
 function get_theme_updates() {
-       $themes = get_themes();
+       $themes = wp_get_themes();
        $current = get_site_transient('update_themes');
        $current = get_site_transient('update_themes');
-       $update_themes = array();
 
 
-       foreach ( $themes as $theme ) {
-               $theme = (object) $theme;
-               if ( isset($current->response[ $theme->Stylesheet ]) ) {
-                       $update_themes[$theme->Stylesheet] = $theme;
-                       $update_themes[$theme->Stylesheet]->update = $current->response[ $theme->Stylesheet ];
-               }
+       if ( ! isset( $current->response ) )
+               return array();
+
+       $update_themes = array();
+       foreach ( $current->response as $stylesheet => $data ) {
+               $update_themes[ $stylesheet ] = wp_get_theme( $stylesheet );
+               $update_themes[ $stylesheet ]->update = $data;
        }
 
        return $update_themes;
        }
 
        return $update_themes;
@@ -272,9 +272,9 @@ function wp_theme_update_row( $theme_key, $theme ) {
        if ( ! current_user_can('update_themes') )
                printf( __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%3$s">View version %4$s details</a>.'), $theme['Name'], esc_url($details_url), esc_attr($theme['Name']), $r->new_version );
        else if ( empty( $r['package'] ) )
        if ( ! current_user_can('update_themes') )
                printf( __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%3$s">View version %4$s details</a>.'), $theme['Name'], esc_url($details_url), esc_attr($theme['Name']), $r->new_version );
        else if ( empty( $r['package'] ) )
-               printf( __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%3$s">View version %4$s details</a>. <em>Automatic update is unavailable for this plugin.</em>'), $theme['Name'], esc_url($details_url), esc_attr($theme['Name']), $r['new_version'] );
+               printf( __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%3$s">View version %4$s details</a>. <em>Automatic update is unavailable for this theme.</em>'), $theme['Name'], esc_url($details_url), esc_attr($theme['Name']), $r['new_version'] );
        else
        else
-               printf( __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%3$s">View version %4$s details</a> or <a href="%5$s">update automatically</a>.'), $theme['Name'], esc_url($details_url), esc_attr($theme['Name']), $r['new_version'], wp_nonce_url( self_admin_url('update.php?action=upgrade-theme&theme=') . $theme_key, 'upgrade-theme_' . $theme_key) );
+               printf( __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%3$s">View version %4$s details</a> or <a href="%5$s">update now</a>.'), $theme['Name'], esc_url($details_url), esc_attr($theme['Name']), $r['new_version'], wp_nonce_url( self_admin_url('update.php?action=upgrade-theme&theme=') . $theme_key, 'upgrade-theme_' . $theme_key) );
 
        do_action( "in_theme_update_message-$theme_key", $theme, $r );
 
 
        do_action( "in_theme_update_message-$theme_key", $theme, $r );
 
@@ -304,5 +304,3 @@ function maintenance_nag() {
        echo "<div class='update-nag'>$msg</div>";
 }
 add_action( 'admin_notices', 'maintenance_nag' );
        echo "<div class='update-nag'>$msg</div>";
 }
 add_action( 'admin_notices', 'maintenance_nag' );
-
-?>
index 646e1ccb5df3342219f8c22b111481881fa3da0d..bb69d9a0778058e7a5c6f872846659189e998f25 100644 (file)
@@ -35,8 +35,6 @@ if ( !function_exists('wp_install') ) :
  * @return array Array keys 'url', 'user_id', 'password', 'password_message'.
  */
 function wp_install( $blog_title, $user_name, $user_email, $public, $deprecated = '', $user_password = '' ) {
  * @return array Array keys 'url', 'user_id', 'password', 'password_message'.
  */
 function wp_install( $blog_title, $user_name, $user_email, $public, $deprecated = '', $user_password = '' ) {
-       global $wp_rewrite;
-
        if ( !empty( $deprecated ) )
                _deprecated_argument( __FUNCTION__, '2.6' );
 
        if ( !empty( $deprecated ) )
                _deprecated_argument( __FUNCTION__, '2.6' );
 
@@ -58,8 +56,8 @@ function wp_install( $blog_title, $user_name, $user_email, $public, $deprecated
        if ( ! $public )
                update_option('default_pingback_flag', 0);
 
        if ( ! $public )
                update_option('default_pingback_flag', 0);
 
-       // Create default user.  If the user already exists, the user tables are
-       // being shared among blogs.  Just set the role in that case.
+       // Create default user. If the user already exists, the user tables are
+       // being shared among blogs. Just set the role in that case.
        $user_id = username_exists($user_name);
        $user_password = trim($user_password);
        $email_password = false;
        $user_id = username_exists($user_name);
        $user_password = trim($user_password);
        $email_password = false;
@@ -74,7 +72,7 @@ function wp_install( $blog_title, $user_name, $user_email, $public, $deprecated
                $message = '<em>'.__('Your chosen password.').'</em>';
                $user_id = wp_create_user($user_name, $user_password, $user_email);
        } else {
                $message = '<em>'.__('Your chosen password.').'</em>';
                $user_id = wp_create_user($user_name, $user_password, $user_email);
        } else {
-               $message =  __('User already exists. Password inherited.');
+               $message = __('User already exists. Password inherited.');
        }
 
        $user = new WP_User($user_id);
        }
 
        $user = new WP_User($user_id);
@@ -82,7 +80,7 @@ function wp_install( $blog_title, $user_name, $user_email, $public, $deprecated
 
        wp_install_defaults($user_id);
 
 
        wp_install_defaults($user_id);
 
-       $wp_rewrite->flush_rules();
+       flush_rewrite_rules();
 
        wp_new_blog_notification($blog_title, $guessurl, $user_id, ($email_password ? $user_password : __('The password you chose during the install.') ) );
 
 
        wp_new_blog_notification($blog_title, $guessurl, $user_id, ($email_password ? $user_password : __('The password you chose during the install.') ) );
 
@@ -147,38 +145,38 @@ function wp_install_defaults($user_id) {
 
        // Now drop in some default links
        $default_links = array();
 
        // Now drop in some default links
        $default_links = array();
-       $default_links[] = array(       'link_url' => 'http://codex.wordpress.org/',
-                                                               'link_name' => 'Documentation',
+       $default_links[] = array(       'link_url' => __( 'http://codex.wordpress.org/' ),
+                                                               'link_name' => __( 'Documentation' ),
                                                                'link_rss' => '',
                                                                'link_notes' => '');
 
                                                                'link_rss' => '',
                                                                'link_notes' => '');
 
-       $default_links[] = array(       'link_url' => 'http://wordpress.org/news/',
-                                                               'link_name' => 'WordPress Blog',
-                                                               'link_rss' => 'http://wordpress.org/news/feed/',
+       $default_links[] = array(       'link_url' => __( 'http://wordpress.org/news/' ),
+                                                               'link_name' => __( 'WordPress Blog' ),
+                                                               'link_rss' => __( 'http://wordpress.org/news/feed/' ),
                                                                'link_notes' => '');
 
                                                                'link_notes' => '');
 
-       $default_links[] = array(       'link_url' => 'http://wordpress.org/extend/ideas/',
-                                                               'link_name' => 'Suggest Ideas',
+       $default_links[] = array(       'link_url' => __( 'http://wordpress.org/support/' ),
+                                                               'link_name' => _x( 'Support Forums', 'default link' ),
                                                                'link_rss' => '',
                                                                'link_notes' =>'');
 
                                                                'link_rss' => '',
                                                                'link_notes' =>'');
 
-       $default_links[] = array(       'link_url' => 'http://wordpress.org/support/',
-                                                               'link_name' => 'Support Forum',
+       $default_links[] = array(       'link_url' => 'http://wordpress.org/extend/plugins/',
+                                                               'link_name' => _x( 'Plugins', 'Default link to wordpress.org/extend/plugins/' ),
                                                                'link_rss' => '',
                                                                'link_notes' =>'');
 
                                                                'link_rss' => '',
                                                                'link_notes' =>'');
 
-       $default_links[] = array(       'link_url' => 'http://wordpress.org/extend/plugins/',
-                                                               'link_name' => 'Plugins',
+       $default_links[] = array(       'link_url' => 'http://wordpress.org/extend/themes/',
+                                                               'link_name' => _x( 'Themes', 'Default link to wordpress.org/extend/themes/' ),
                                                                'link_rss' => '',
                                                                'link_notes' =>'');
 
                                                                'link_rss' => '',
                                                                'link_notes' =>'');
 
-       $default_links[] = array(       'link_url' => 'http://wordpress.org/extend/themes/',
-                                                               'link_name' => 'Themes',
+       $default_links[] = array(       'link_url' => __( 'http://wordpress.org/support/forum/requests-and-feedback' ),
+                                                               'link_name' => __( 'Feedback' ),
                                                                'link_rss' => '',
                                                                'link_notes' =>'');
 
                                                                'link_rss' => '',
                                                                'link_notes' =>'');
 
-       $default_links[] = array(       'link_url' => 'http://planet.wordpress.org/',
-                                                               'link_name' => 'WordPress Planet',
+       $default_links[] = array(       'link_url' => __( 'http://planet.wordpress.org/' ),
+                                                               'link_name' => __( 'WordPress Planet' ),
                                                                'link_rss' => '',
                                                                'link_notes' =>'');
 
                                                                'link_rss' => '',
                                                                'link_notes' =>'');
 
@@ -302,7 +300,7 @@ As a new WordPress user, you should go to <a href=\"%s\">your dashboard</a> to d
 
                // Delete any caps that snuck into the previously active blog. (Hardcoded to blog 1 for now.) TODO: Get previous_blog_id.
                if ( !is_super_admin( $user_id ) && $user_id != 1 )
 
                // Delete any caps that snuck into the previously active blog. (Hardcoded to blog 1 for now.) TODO: Get previous_blog_id.
                if ( !is_super_admin( $user_id ) && $user_id != 1 )
-                       $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $wpdb->base_prefix.'1_capabilities') );
+                       $wpdb->delete( $wpdb->usermeta, array( 'user_id' => $user_id , 'meta_key' => $wpdb->base_prefix.'1_capabilities' ) );
        }
 }
 endif;
        }
 }
 endif;
@@ -358,7 +356,7 @@ function wp_upgrade() {
 
        $wp_current_db_version = __get_option('db_version');
 
 
        $wp_current_db_version = __get_option('db_version');
 
-       // We are up-to-date.  Nothing to do.
+       // We are up-to-date. Nothing to do.
        if ( $wp_db_version == $wp_current_db_version )
                return;
 
        if ( $wp_db_version == $wp_current_db_version )
                return;
 
@@ -391,10 +389,10 @@ endif;
  * @since 1.0.1
  */
 function upgrade_all() {
  * @since 1.0.1
  */
 function upgrade_all() {
-       global $wp_current_db_version, $wp_db_version, $wp_rewrite;
+       global $wp_current_db_version, $wp_db_version;
        $wp_current_db_version = __get_option('db_version');
 
        $wp_current_db_version = __get_option('db_version');
 
-       // We are up-to-date.  Nothing to do.
+       // We are up-to-date. Nothing to do.
        if ( $wp_db_version == $wp_current_db_version )
                return;
 
        if ( $wp_db_version == $wp_current_db_version )
                return;
 
@@ -459,6 +457,9 @@ function upgrade_all() {
        if ( $wp_current_db_version < 19389 )
                upgrade_330();
 
        if ( $wp_current_db_version < 19389 )
                upgrade_330();
 
+       if ( $wp_current_db_version < 20080 )
+               upgrade_340();
+
        maybe_disable_automattic_widgets();
 
        update_option( 'db_version', $wp_db_version );
        maybe_disable_automattic_widgets();
 
        update_option( 'db_version', $wp_db_version );
@@ -565,7 +566,7 @@ function upgrade_110() {
 
        $time_difference = $all_options->time_difference;
 
 
        $time_difference = $all_options->time_difference;
 
-       $server_time = time()+date('Z');
+               $server_time = time()+date('Z');
        $weblogger_time = $server_time + $time_difference*3600;
        $gmt_time = time();
 
        $weblogger_time = $server_time + $time_difference*3600;
        $gmt_time = time();
 
@@ -646,7 +647,7 @@ function upgrade_130() {
        $active_plugins = __get_option('active_plugins');
 
        // If plugins are not stored in an array, they're stored in the old
        $active_plugins = __get_option('active_plugins');
 
        // If plugins are not stored in an array, they're stored in the old
-       // newline separated format.  Convert to new format.
+       // newline separated format. Convert to new format.
        if ( !is_array( $active_plugins ) ) {
                $active_plugins = explode("\n", trim($active_plugins));
                update_option('active_plugins', $active_plugins);
        if ( !is_array( $active_plugins ) ) {
                $active_plugins = explode("\n", trim($active_plugins));
                update_option('active_plugins', $active_plugins);
@@ -898,9 +899,9 @@ function upgrade_230() {
                $wpdb->insert( $wpdb->term_relationships, array('object_id' => $post_id, 'term_taxonomy_id' => $tt_id) );
        }
 
                $wpdb->insert( $wpdb->term_relationships, array('object_id' => $post_id, 'term_taxonomy_id' => $tt_id) );
        }
 
-       // < 3570 we used linkcategories.  >= 3570 we used categories and link2cat.
+       // < 3570 we used linkcategories. >= 3570 we used categories and link2cat.
        if ( $wp_current_db_version < 3570 ) {
        if ( $wp_current_db_version < 3570 ) {
-               // Create link_category terms for link categories.  Create a map of link cat IDs
+               // Create link_category terms for link categories. Create a map of link cat IDs
                // to link_category terms.
                $link_cat_id_map = array();
                $default_link_cat = 0;
                // to link_category terms.
                $link_cat_id_map = array();
                $default_link_cat = 0;
@@ -1151,11 +1152,6 @@ function upgrade_330() {
                $wpdb->query( "DELETE FROM $wpdb->usermeta WHERE meta_key IN ('show_admin_bar_admin', 'plugins_last_view')" );
        }
 
                $wpdb->query( "DELETE FROM $wpdb->usermeta WHERE meta_key IN ('show_admin_bar_admin', 'plugins_last_view')" );
        }
 
-       // 3.3-beta. Can remove before release.
-       if ( $wp_current_db_version > 18715 && $wp_current_db_version < 19389
-               && is_main_site() && ! defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) )
-                       delete_metadata( 'user', 0, 'dismissed_wp_pointers', '', true );
-
        if ( $wp_current_db_version >= 11548 )
                return;
 
        if ( $wp_current_db_version >= 11548 )
                return;
 
@@ -1213,6 +1209,39 @@ function upgrade_330() {
        }
 }
 
        }
 }
 
+/**
+ * Execute changes made in WordPress 3.4.
+ *
+ * @since 3.4.0
+ */
+function upgrade_340() {
+       global $wp_current_db_version, $wpdb;
+
+       if ( $wp_current_db_version < 19798 ) {
+               $wpdb->hide_errors();
+               $wpdb->query( "ALTER TABLE $wpdb->options DROP COLUMN blog_id" );
+               $wpdb->show_errors();
+       }
+
+       if ( $wp_current_db_version < 19799 ) {
+               $wpdb->hide_errors();
+               $wpdb->query("ALTER TABLE $wpdb->comments DROP INDEX comment_approved");
+               $wpdb->show_errors();
+       }
+
+       if ( $wp_current_db_version < 20022 && is_main_site() && ! defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) ) {
+               $wpdb->query( "DELETE FROM $wpdb->usermeta WHERE meta_key = 'themes_last_view'" );
+       }
+
+       if ( $wp_current_db_version < 20080 ) {
+               if ( 'yes' == $wpdb->get_var( "SELECT autoload FROM $wpdb->options WHERE option_name = 'uninstall_plugins'" ) ) {
+                       $uninstall_plugins = get_option( 'uninstall_plugins' );
+                       delete_option( 'uninstall_plugins' );
+                       add_option( 'uninstall_plugins', $uninstall_plugins, null, 'no' );
+               }
+       }
+}
+
 /**
  * Execute network level changes
  *
 /**
  * Execute network level changes
  *
@@ -1248,16 +1277,36 @@ function upgrade_network() {
                        $start += 20;
                }
        }
                        $start += 20;
                }
        }
+
        // 3.0
        if ( $wp_current_db_version < 13576 )
                update_site_option( 'global_terms_enabled', '1' );
        // 3.0
        if ( $wp_current_db_version < 13576 )
                update_site_option( 'global_terms_enabled', '1' );
+
        // 3.3
        if ( $wp_current_db_version < 19390 )
                update_site_option( 'initial_db_version', $wp_current_db_version );
        // 3.3
        if ( $wp_current_db_version < 19390 )
                update_site_option( 'initial_db_version', $wp_current_db_version );
+
        if ( $wp_current_db_version < 19470 ) {
                if ( false === get_site_option( 'active_sitewide_plugins' ) )
                        update_site_option( 'active_sitewide_plugins', array() );
        }
        if ( $wp_current_db_version < 19470 ) {
                if ( false === get_site_option( 'active_sitewide_plugins' ) )
                        update_site_option( 'active_sitewide_plugins', array() );
        }
+
+       // 3.4
+       if ( $wp_current_db_version < 20148 ) {
+               // 'allowedthemes' keys things by stylesheet. 'allowed_themes' keyed things by name.
+               $allowedthemes  = get_site_option( 'allowedthemes'  );
+               $allowed_themes = get_site_option( 'allowed_themes' );
+               if ( false === $allowedthemes && is_array( $allowed_themes ) && $allowed_themes ) {
+                       $converted = array();
+                       $themes = wp_get_themes();
+                       foreach ( $themes as $stylesheet => $theme_data ) {
+                               if ( isset( $allowed_themes[ $theme_data->get('Name') ] ) )
+                                       $converted[ $stylesheet ] = true;
+                       }
+                       update_site_option( 'allowedthemes', $converted );
+                       delete_site_option( 'allowed_themes' );
+               }
+       }
 }
 
 // The functions we use to actually do stuff
 }
 
 // The functions we use to actually do stuff
@@ -1335,9 +1384,8 @@ function add_clean_index($table, $index) {
  **           false on error
  */
 function maybe_add_column($table_name, $column_name, $create_ddl) {
  **           false on error
  */
 function maybe_add_column($table_name, $column_name, $create_ddl) {
-       global $wpdb, $debug;
+       global $wpdb;
        foreach ($wpdb->get_col("DESC $table_name", 0) as $column ) {
        foreach ($wpdb->get_col("DESC $table_name", 0) as $column ) {
-               if ($debug) echo("checking $column == $column_name<br />");
                if ($column == $column_name) {
                        return true;
                }
                if ($column == $column_name) {
                        return true;
                }
@@ -1362,14 +1410,12 @@ function maybe_add_column($table_name, $column_name, $create_ddl) {
  */
 function get_alloptions_110() {
        global $wpdb;
  */
 function get_alloptions_110() {
        global $wpdb;
-       if ($options = $wpdb->get_results("SELECT option_name, option_value FROM $wpdb->options")) {
-               foreach ($options as $option) {
-                       // "When trying to design a foolproof system,
-                       //  never underestimate the ingenuity of the fools :)" -- Dougal
-                       if ('siteurl' == $option->option_name) $option->option_value = preg_replace('|/+$|', '', $option->option_value);
-                       if ('home' == $option->option_name) $option->option_value = preg_replace('|/+$|', '', $option->option_value);
-                       if ('category_base' == $option->option_name) $option->option_value = preg_replace('|/+$|', '', $option->option_value);
-                       $all_options->{$option->option_name} = stripslashes($option->option_value);
+       $all_options = new stdClass;
+       if ( $options = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options" ) ) {
+               foreach ( $options as $option ) {
+                       if ( 'siteurl' == $option->option_name || 'home' == $option->option_name || 'category_base' == $option->option_name )
+                               $option->option_value = untrailingslashit( $option->option_value );
+                       $all_options->{$option->option_name} = stripslashes( $option->option_value );
                }
        }
        return $all_options;
                }
        }
        return $all_options;
@@ -1387,24 +1433,22 @@ function get_alloptions_110() {
 function __get_option($setting) {
        global $wpdb;
 
 function __get_option($setting) {
        global $wpdb;
 
-       if ( $setting == 'home' && defined( 'WP_HOME' ) ) {
-               return preg_replace( '|/+$|', '', WP_HOME );
-       }
+       if ( $setting == 'home' && defined( 'WP_HOME' ) )
+               return untrailingslashit( WP_HOME );
 
 
-       if ( $setting == 'siteurl' && defined( 'WP_SITEURL' ) ) {
-               return preg_replace( '|/+$|', '', WP_SITEURL );
-       }
+       if ( $setting == 'siteurl' && defined( 'WP_SITEURL' ) )
+               return untrailingslashit( WP_SITEURL );
 
 
-       $option = $wpdb->get_var( $wpdb->prepare("SELECT option_value FROM $wpdb->options WHERE option_name = %s", $setting) );
+       $option = $wpdb->get_var( $wpdb->prepare("SELECT option_value FROM $wpdb->options WHERE option_name = %s", $setting ) );
 
        if ( 'home' == $setting && '' == $option )
 
        if ( 'home' == $setting && '' == $option )
-               return __get_option('siteurl');
+               return __get_option( 'siteurl' );
 
 
-       if ( 'siteurl' == $setting || 'home' == $setting || 'category_base' == $setting )
-               $option = preg_replace('|/+$|', '', $option);
+       if ( 'siteurl' == $setting || 'home' == $setting || 'category_base' == $setting || 'tag_base' == $setting )
+               $option = untrailingslashit( $option );
 
 
-       @ $kellogs = unserialize($option);
-       if ($kellogs !== FALSE)
+       @ $kellogs = unserialize( $option );
+       if ( $kellogs !== false )
                return $kellogs;
        else
                return $option;
                return $kellogs;
        else
                return $option;
@@ -1457,7 +1501,7 @@ function dbDelta( $queries = '', $execute = true ) {
        // Separate individual queries into an array
        if ( !is_array($queries) ) {
                $queries = explode( ';', $queries );
        // Separate individual queries into an array
        if ( !is_array($queries) ) {
                $queries = explode( ';', $queries );
-               if ('' == $queries[count($queries) - 1]) array_pop($queries);
+               $queries = array_filter( $queries );
        }
        $queries = apply_filters( 'dbdelta_queries', $queries );
 
        }
        $queries = apply_filters( 'dbdelta_queries', $queries );
 
@@ -1468,7 +1512,7 @@ function dbDelta( $queries = '', $execute = true ) {
        // Create a tablename index for an array ($cqueries) of queries
        foreach($queries as $qry) {
                if (preg_match("|CREATE TABLE ([^ ]*)|", $qry, $matches)) {
        // Create a tablename index for an array ($cqueries) of queries
        foreach($queries as $qry) {
                if (preg_match("|CREATE TABLE ([^ ]*)|", $qry, $matches)) {
-                       $cqueries[trim( strtolower($matches[1]), '`' )] = $qry;
+                       $cqueries[ trim( $matches[1], '`' ) ] = $qry;
                        $for_update[$matches[1]] = 'Created table '.$matches[1];
                } else if (preg_match("|CREATE DATABASE ([^ ]*)|", $qry, $matches)) {
                        array_unshift($cqueries, $qry);
                        $for_update[$matches[1]] = 'Created table '.$matches[1];
                } else if (preg_match("|CREATE DATABASE ([^ ]*)|", $qry, $matches)) {
                        array_unshift($cqueries, $qry);
@@ -1667,7 +1711,7 @@ function make_db_current( $tables = 'all' ) {
  *
  * @since 1.5.0
  */
  *
  * @since 1.5.0
  */
-function make_db_current_silent(  $tables = 'all' ) {
+function make_db_current_silent( $tables = 'all' ) {
        $alterations = dbDelta( $tables );
 }
 
        $alterations = dbDelta( $tables );
 }
 
@@ -1690,7 +1734,7 @@ function make_site_theme_from_oldschool($theme_name, $template) {
                return false;
 
        // Copy files from the old locations to the site theme.
                return false;
 
        // Copy files from the old locations to the site theme.
-       // TODO: This does not copy arbitrary include dependencies.  Only the
+       // TODO: This does not copy arbitrary include dependencies. Only the
        // standard WP files are copied.
        $files = array('index.php' => 'index.php', 'wp-layout.css' => 'style.css', 'wp-comments.php' => 'comments.php', 'wp-comments-popup.php' => 'comments-popup.php');
 
        // standard WP files are copied.
        $files = array('index.php' => 'index.php', 'wp-layout.css' => 'style.css', 'wp-comments.php' => 'comments.php', 'wp-comments-popup.php' => 'comments-popup.php');
 
@@ -1848,12 +1892,12 @@ function make_site_theme() {
 
        if (file_exists(ABSPATH . 'wp-layout.css')) {
                if (! make_site_theme_from_oldschool($theme_name, $template)) {
 
        if (file_exists(ABSPATH . 'wp-layout.css')) {
                if (! make_site_theme_from_oldschool($theme_name, $template)) {
-                       // TODO:  rm -rf the site theme directory.
+                       // TODO: rm -rf the site theme directory.
                        return false;
                }
        } else {
                if (! make_site_theme_from_default($theme_name, $template))
                        return false;
                }
        } else {
                if (! make_site_theme_from_default($theme_name, $template))
-                       // TODO:  rm -rf the site theme directory.
+                       // TODO: rm -rf the site theme directory.
                        return false;
        }
 
                        return false;
        }
 
@@ -1938,7 +1982,7 @@ function pre_schema_upgrade() {
 
        // Upgrade versions prior to 2.9
        if ( $wp_current_db_version < 11557 ) {
 
        // Upgrade versions prior to 2.9
        if ( $wp_current_db_version < 11557 ) {
-               // Delete duplicate options.  Keep the option with the highest option_id.
+               // Delete duplicate options. Keep the option with the highest option_id.
                $wpdb->query("DELETE o1 FROM $wpdb->options AS o1 JOIN $wpdb->options AS o2 USING (`option_name`) WHERE o2.option_id > o1.option_id");
 
                // Drop the old primary key and add the new.
                $wpdb->query("DELETE o1 FROM $wpdb->options AS o1 JOIN $wpdb->options AS o2 USING (`option_name`) WHERE o2.option_id > o1.option_id");
 
                // Drop the old primary key and add the new.
@@ -1974,4 +2018,3 @@ CREATE TABLE $wpdb->sitecategories (
        dbDelta( $ms_queries );
 }
 endif;
        dbDelta( $ms_queries );
 }
 endif;
-?>
index 816a9e79ff45e013378c26c41ce44e8bd05d0b66..ff1e91dcebda385b51d6974ae2cea95201c93d80 100644 (file)
@@ -9,38 +9,12 @@
 /**
  * Creates a new user from the "Users" form using $_POST information.
  *
 /**
  * Creates a new user from the "Users" form using $_POST information.
  *
- * It seems that the first half is for backwards compatibility, but only
- * has the ability to alter the user's role. WordPress core seems to
- * use this function only in the second way, running edit_user() with
- * no id so as to create a new user.
- *
  * @since 2.0
  *
  * @since 2.0
  *
- * @param int $user_id Optional. User ID.
  * @return null|WP_Error|int Null when adding user, WP_Error or User ID integer when no parameters.
  */
 function add_user() {
  * @return null|WP_Error|int Null when adding user, WP_Error or User ID integer when no parameters.
  */
 function add_user() {
-       if ( func_num_args() ) { // The hackiest hack that ever did hack
-               global $wp_roles;
-               $user_id = (int) func_get_arg( 0 );
-
-               if ( isset( $_POST['role'] ) ) {
-                       $new_role = sanitize_text_field( $_POST['role'] );
-                       // Don't let anyone with 'edit_users' (admins) edit their own role to something without it.
-                       if ( $user_id != get_current_user_id() || $wp_roles->role_objects[$new_role]->has_cap( 'edit_users' ) ) {
-                               // If the new role isn't editable by the logged-in user die with error
-                               $editable_roles = get_editable_roles();
-                               if ( empty( $editable_roles[$new_role] ) )
-                                       wp_die(__('You can&#8217;t give users that role.'));
-
-                               $user = new WP_User( $user_id );
-                               $user->set_role( $new_role );
-                       }
-               }
-       } else {
-               add_action( 'user_register', 'add_user' ); // See above
-               return edit_user();
-       }
+       return edit_user();
 }
 
 /**
 }
 
 /**
@@ -263,16 +237,27 @@ function wp_delete_user( $id, $reassign = 'novalue' ) {
        global $wpdb;
 
        $id = (int) $id;
        global $wpdb;
 
        $id = (int) $id;
+       $user = new WP_User( $id );
 
        // allow for transaction statement
        do_action('delete_user', $id);
 
        if ( 'novalue' === $reassign || null === $reassign ) {
 
        // allow for transaction statement
        do_action('delete_user', $id);
 
        if ( 'novalue' === $reassign || null === $reassign ) {
-               $post_ids = $wpdb->get_col( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_author = %d", $id) );
+               $post_types_to_delete = array();
+               foreach ( get_post_types( array(), 'objects' ) as $post_type ) {
+                       if ( $post_type->delete_with_user ) {
+                               $post_types_to_delete[] = $post_type->name;
+                       } elseif ( null === $post_type->delete_with_user && post_type_supports( $post_type->name, 'author' ) ) {
+                               $post_types_to_delete[] = $post_type->name;
+                       }
+               }
 
 
+               $post_types_to_delete = apply_filters( 'post_types_to_delete_with_user', $post_types_to_delete, $id );
+               $post_types_to_delete = implode( "', '", $post_types_to_delete );
+               $post_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_author = %d AND post_type IN ('$post_types_to_delete')", $id ) );
                if ( $post_ids ) {
                        foreach ( $post_ids as $post_id )
                if ( $post_ids ) {
                        foreach ( $post_ids as $post_id )
-                               wp_delete_post($post_id);
+                               wp_delete_post( $post_id );
                }
 
                // Clean links
                }
 
                // Clean links
@@ -288,17 +273,19 @@ function wp_delete_user( $id, $reassign = 'novalue' ) {
                $wpdb->update( $wpdb->links, array('link_owner' => $reassign), array('link_owner' => $id) );
        }
 
                $wpdb->update( $wpdb->links, array('link_owner' => $reassign), array('link_owner' => $id) );
        }
 
-       clean_user_cache($id);
-
        // FINALLY, delete user
        // FINALLY, delete user
-       if ( !is_multisite() ) {
-               $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE user_id = %d", $id) );
-               $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->users WHERE ID = %d", $id) );
+       if ( is_multisite() ) {
+               remove_user_from_blog( $id, get_current_blog_id() );
        } else {
        } else {
-               $level_key = $wpdb->get_blog_prefix() . 'capabilities'; // wpmu site admins don't have user_levels
-               $wpdb->query("DELETE FROM $wpdb->usermeta WHERE user_id = $id AND meta_key = '{$level_key}'");
+               $meta = $wpdb->get_col( $wpdb->prepare( "SELECT umeta_id FROM $wpdb->usermeta WHERE user_id = %d", $id ) );
+               foreach ( $meta as $mid )
+                       delete_metadata_by_mid( 'user', $mid );
+
+               $wpdb->delete( $wpdb->users, array( 'ID' => $id ) );
        }
 
        }
 
+       clean_user_cache( $user );
+
        // allow for commit transaction
        do_action('deleted_user', $id);
 
        // allow for commit transaction
        do_action('deleted_user', $id);
 
@@ -369,5 +356,3 @@ function default_password_nag() {
        printf( '<a href="%s" id="default-password-nag-no">' . __('No thanks, do not remind me again') . '</a>', '?default_password_nag=0' );
        echo '</p></div>';
 }
        printf( '<a href="%s" id="default-password-nag-no">' . __('No thanks, do not remind me again') . '</a>', '?default_password_nag=0' );
        echo '</p></div>';
 }
-
-?>
index aed123601988a3e81cfeab8bb3a71953112b314d..318cf3f64df46ae8b366c601d880c7226d1533ec 100644 (file)
@@ -222,4 +222,3 @@ function wp_widget_control( $sidebar_args ) {
        echo $sidebar_args['after_widget'];
        return $sidebar_args;
 }
        echo $sidebar_args['after_widget'];
        return $sidebar_args;
 }
-
diff --git a/wp-admin/index-extra.php b/wp-admin/index-extra.php
deleted file mode 100644 (file)
index bbaea63..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-/**
- * Handle default dashboard widgets options AJAX.
- *
- * @package WordPress
- * @subpackage Administration
- */
-
-define('DOING_AJAX', true);
-
-/** Load WordPress Bootstrap */
-require_once( './admin.php' );
-
-/** Load WordPress Administration Dashboard API */
-require(ABSPATH . 'wp-admin/includes/dashboard.php' );
-
-@header( 'Content-Type: ' . get_option( 'html_type' ) . '; charset=' . get_option( 'blog_charset' ) );
-send_nosniff_header();
-
-switch ( $_GET['jax'] ) {
-
-case 'dashboard_incoming_links' :
-       wp_dashboard_incoming_links();
-       break;
-
-case 'dashboard_primary' :
-       wp_dashboard_primary();
-       break;
-
-case 'dashboard_secondary' :
-       wp_dashboard_secondary();
-       break;
-
-case 'dashboard_plugins' :
-       wp_dashboard_plugins();
-       break;
-
-}
-
-?>
\ No newline at end of file
index b7b40bb87ba0ceade7bfd741bd1e9d7aa6443c5e..34273977358352fea0575c2fbc4310fc5205f588 100644 (file)
@@ -19,6 +19,9 @@ wp_enqueue_script( 'plugin-install' );
 wp_enqueue_script( 'media-upload' );
 add_thickbox();
 
 wp_enqueue_script( 'media-upload' );
 add_thickbox();
 
+if ( wp_is_mobile() )
+       wp_enqueue_script( 'jquery-touch-punch' );
+
 $title = __('Dashboard');
 $parent_file = 'index.php';
 
 $title = __('Dashboard');
 $parent_file = 'index.php';
 
@@ -27,7 +30,6 @@ if ( is_user_admin() )
 else
        add_screen_option('layout_columns', array('max' => 4, 'default' => 2) );
 
 else
        add_screen_option('layout_columns', array('max' => 4, 'default' => 2) );
 
-
 $help = '<p>' . __( 'Welcome to your WordPress Dashboard! This is the screen you will see when you log in to your site, and gives you access to all the site management features of WordPress. You can get help for any screen by clicking the Help tab in the upper corner.' ) . '</p>';
 
 get_current_screen()->add_help_tab( array(
 $help = '<p>' . __( 'Welcome to your WordPress Dashboard! This is the screen you will see when you log in to your site, and gives you access to all the site management features of WordPress. You can get help for any screen by clicking the Help tab in the upper corner.' ) . '</p>';
 
 get_current_screen()->add_help_tab( array(
@@ -59,14 +61,22 @@ get_current_screen()->add_help_tab( array(
 ) );
 
 $help  = '<p>' . __('The boxes on your Dashboard screen are:') . '</p>';
 ) );
 
 $help  = '<p>' . __('The boxes on your Dashboard screen are:') . '</p>';
-$help .= '<p>' . __('<strong>Right Now</strong> - Displays a summary of the content on your site and identifies which theme and version of WordPress you are using.') . '</p>';
-$help .= '<p>' . __('<strong>Recent Comments</strong> - Shows the most recent comments on your posts (configurable, up to 30) and allows you to moderate them.') . '</p>';
-$help .= '<p>' . __('<strong>Incoming Links</strong> - Shows links to your site found by Google Blog Search.') . '</p>';
-$help .= '<p>' . __('<strong>QuickPress</strong> - Allows you to create a new post and either publish it or save it as a draft.') . '</p>';
-$help .= '<p>' . __('<strong>Recent Drafts</strong> - Displays links to the 5 most recent draft posts you&#8217;ve started.') . '</p>';
+if ( current_user_can( 'edit_posts' ) )
+       $help .= '<p>' . __('<strong>Right Now</strong> - Displays a summary of the content on your site and identifies which theme and version of WordPress you are using.') . '</p>';
+if ( current_user_can( 'moderate_comments' ) )
+       $help .= '<p>' . __('<strong>Recent Comments</strong> - Shows the most recent comments on your posts (configurable, up to 30) and allows you to moderate them.') . '</p>';
+if ( current_user_can( 'publish_posts' ) )
+       $help .= '<p>' . __('<strong>Incoming Links</strong> - Shows links to your site found by Google Blog Search.') . '</p>';
+if ( current_user_can( 'edit_posts' ) ) {
+       $help .= '<p>' . __('<strong>QuickPress</strong> - Allows you to create a new post and either publish it or save it as a draft.') . '</p>';
+       $help .= '<p>' . __('<strong>Recent Drafts</strong> - Displays links to the 5 most recent draft posts you&#8217;ve started.') . '</p>';
+}
 $help .= '<p>' . __('<strong>WordPress Blog</strong> - Latest news from the official WordPress project.') . '</p>';
 $help .= '<p>' . __('<strong>Other WordPress News</strong> - Shows the <a href="http://planet.wordpress.org" target="_blank">WordPress Planet</a> feed. You can configure it to show a different feed of your choosing.') . '</p>';
 $help .= '<p>' . __('<strong>WordPress Blog</strong> - Latest news from the official WordPress project.') . '</p>';
 $help .= '<p>' . __('<strong>Other WordPress News</strong> - Shows the <a href="http://planet.wordpress.org" target="_blank">WordPress Planet</a> feed. You can configure it to show a different feed of your choosing.') . '</p>';
-$help .= '<p>' . __('<strong>Plugins</strong> - Features the most popular, newest, and recently updated plugins from the WordPress.org Plugin Directory.') . '</p>';
+if ( ! is_multisite() && current_user_can( 'install_plugins' ) )
+       $help .= '<p>' . __('<strong>Plugins</strong> - Features the most popular, newest, and recently updated plugins from the WordPress.org Plugin Directory.') . '</p>';
+if ( current_user_can( 'edit_theme_options' ) )
+       $help .= '<p>' . __('<strong>Welcome</strong> - Shows links for some of the most common tasks when setting up a new site.') . '</p>';
 
 get_current_screen()->add_help_tab( array(
        'id'      => 'help-content',
 
 get_current_screen()->add_help_tab( array(
        'id'      => 'help-content',
index 2970b7cba09864bf9e8cb3a0babc3709dc066ed3..c98b28cc30d29869e6511bd3d1629c7192746068 100644 (file)
@@ -10,9 +10,6 @@
  * needing to use these functions a lot, you might experience time outs. If you
  * do, then it is advised to just write the SQL code yourself.
  *
  * needing to use these functions a lot, you might experience time outs. If you
  * do, then it is advised to just write the SQL code yourself.
  *
- * You can turn debugging on, by setting $debug to 1 after you include this
- * file.
- *
  * <code>
  * check_column('wp_links', 'link_description', 'mediumtext');
  * if (check_column($wpdb->comments, 'comment_author', 'tinytext'))
  * <code>
  * check_column('wp_links', 'link_description', 'mediumtext');
  * if (check_column($wpdb->comments, 'comment_author', 'tinytext'))
 /** Load WordPress Bootstrap */
 require_once(dirname(dirname(__FILE__)).'/wp-load.php');
 
 /** Load WordPress Bootstrap */
 require_once(dirname(dirname(__FILE__)).'/wp-load.php');
 
-/**
- * Turn debugging on or off.
- * @global bool|int $debug
- * @name $debug
- * @var bool|int
- * @since 1.0.0
- */
-$debug = 0;
-
 if ( ! function_exists('maybe_create_table') ) :
 /**
  * Create database table, if it doesn't already exist.
 if ( ! function_exists('maybe_create_table') ) :
 /**
  * Create database table, if it doesn't already exist.
@@ -90,7 +78,6 @@ if ( ! function_exists('maybe_add_column') ) :
  * @package WordPress
  * @subpackage Plugin
  * @uses $wpdb
  * @package WordPress
  * @subpackage Plugin
  * @uses $wpdb
- * @uses $debug
  *
  * @param string $table_name Database table name
  * @param string $column_name Table column name
  *
  * @param string $table_name Database table name
  * @param string $column_name Table column name
@@ -98,9 +85,8 @@ if ( ! function_exists('maybe_add_column') ) :
  * @return bool False on failure. True, if already exists or was successful.
  */
 function maybe_add_column($table_name, $column_name, $create_ddl) {
  * @return bool False on failure. True, if already exists or was successful.
  */
 function maybe_add_column($table_name, $column_name, $create_ddl) {
-       global $wpdb, $debug;
+       global $wpdb;
        foreach ($wpdb->get_col("DESC $table_name",0) as $column ) {
        foreach ($wpdb->get_col("DESC $table_name",0) as $column ) {
-               if ($debug) echo("checking $column == $column_name<br />");
 
                if ($column == $column_name) {
                        return true;
 
                if ($column == $column_name) {
                        return true;
@@ -179,16 +165,14 @@ function maybe_drop_column($table_name, $column_name, $drop_ddl) {
  * @return bool True, if matches. False, if not matching.
  */
 function check_column($table_name, $col_name, $col_type, $is_null = null, $key = null, $default = null, $extra = null) {
  * @return bool True, if matches. False, if not matching.
  */
 function check_column($table_name, $col_name, $col_type, $is_null = null, $key = null, $default = null, $extra = null) {
-       global $wpdb, $debug;
+       global $wpdb;
        $diffs = 0;
        $results = $wpdb->get_results("DESC $table_name");
 
        foreach ($results as $row ) {
        $diffs = 0;
        $results = $wpdb->get_results("DESC $table_name");
 
        foreach ($results as $row ) {
-               if ($debug > 1) print_r($row);
 
                if ($row->Field == $col_name) {
                        // got our column, check the params
 
                if ($row->Field == $col_name) {
                        // got our column, check the params
-                       if ($debug) echo ("checking $row->Type against $col_type\n");
                        if (($col_type != null) && ($row->Type != $col_type)) {
                                ++$diffs;
                        }
                        if (($col_type != null) && ($row->Type != $col_type)) {
                                ++$diffs;
                        }
@@ -205,7 +189,6 @@ function check_column($table_name, $col_name, $col_type, $is_null = null, $key =
                                ++$diffs;
                        }
                        if ($diffs > 0) {
                                ++$diffs;
                        }
                        if ($diffs > 0) {
-                               if ($debug) echo ("diffs = $diffs returning false\n");
                                return false;
                        }
                        return true;
                                return false;
                        }
                        return true;
@@ -213,5 +196,3 @@ function check_column($table_name, $col_name, $col_type, $is_null = null, $key =
        }
        return false;
 }
        }
        return false;
 }
-
-?>
\ No newline at end of file
index edbc8c0136b354d69f4b9a99ac8e37b9bd0f9529..e39d1f4fc56079707561814f24a4c3686f44cb68 100644 (file)
 if ( false ) {
 ?>
 <!DOCTYPE html>
 if ( false ) {
 ?>
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml" >
+<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Error: PHP is not running</title>
 </head>
 <body>
 <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Error: PHP is not running</title>
 </head>
 <body>
-       <h1 id="logo"><img alt="WordPress" src="images/wordpress-logo.png" /></h1>
+       <h1 id="logo"><img alt="WordPress" src="images/wordpress-logo.png?ver=20120216" /></h1>
        <h2>Error: PHP is not running</h2>
        <p>WordPress requires that your web server is running PHP. Your server does not have PHP installed, or PHP is turned off.</p>
 </body>
        <h2>Error: PHP is not running</h2>
        <p>WordPress requires that your web server is running PHP. Your server does not have PHP installed, or PHP is turned off.</p>
 </body>
@@ -41,7 +41,7 @@ require_once( dirname( __FILE__ ) . '/includes/upgrade.php' );
 /** Load wpdb */
 require_once(dirname(dirname(__FILE__)) . '/wp-includes/wp-db.php');
 
 /** Load wpdb */
 require_once(dirname(dirname(__FILE__)) . '/wp-includes/wp-db.php');
 
-$step = isset( $_GET['step'] ) ? $_GET['step'] : 0;
+$step = isset( $_GET['step'] ) ? (int) $_GET['step'] : 0;
 
 /**
  * Display install header.
 
 /**
  * Display install header.
@@ -61,7 +61,7 @@ function display_header() {
        <?php wp_admin_css( 'install', true ); ?>
 </head>
 <body<?php if ( is_rtl() ) echo ' class="rtl"'; ?>>
        <?php wp_admin_css( 'install', true ); ?>
 </head>
 <body<?php if ( is_rtl() ) echo ' class="rtl"'; ?>>
-<h1 id="logo"><img alt="WordPress" src="images/wordpress-logo.png" /></h1>
+<h1 id="logo"><img alt="WordPress" src="images/wordpress-logo.png?ver=20120216" /></h1>
 
 <?php
 } // end display_header()
 
 <?php
 } // end display_header()
@@ -131,7 +131,7 @@ function display_setup_form( $error = null ) {
                </tr>
                <tr>
                        <th scope="row"><label for="blog_public"><?php _e( 'Privacy' ); ?></label></th>
                </tr>
                <tr>
                        <th scope="row"><label for="blog_public"><?php _e( 'Privacy' ); ?></label></th>
-                       <td colspan="2"><label><input type="checkbox" name="blog_public" value="1" <?php checked( $blog_public ); ?> /> <?php _e( 'Allow my site to appear in search engines like Google and Technorati.' ); ?></label></td>
+                       <td colspan="2"><label><input type="checkbox" name="blog_public" value="1" <?php checked( $blog_public ); ?> /> <?php _e( 'Allow search engines to index this site.' ); ?></label></td>
                </tr>
        </table>
        <p class="step"><input type="submit" name="Submit" value="<?php esc_attr_e( 'Install WordPress' ); ?>" class="button" /></p>
                </tr>
        </table>
        <p class="step"><input type="submit" name="Submit" value="<?php esc_attr_e( 'Install WordPress' ); ?>" class="button" /></p>
@@ -151,15 +151,20 @@ $php_compat     = version_compare( $php_version, $required_php_version, '>=' );
 $mysql_compat   = version_compare( $mysql_version, $required_mysql_version, '>=' ) || file_exists( WP_CONTENT_DIR . '/db.php' );
 
 if ( !$mysql_compat && !$php_compat )
 $mysql_compat   = version_compare( $mysql_version, $required_mysql_version, '>=' ) || file_exists( WP_CONTENT_DIR . '/db.php' );
 
 if ( !$mysql_compat && !$php_compat )
-       $compat = sprintf( __('You cannot install because <a href="http://codex.wordpress.org/Version_%1$s">WordPress %1$s</a> requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s.'), $wp_version, $required_php_version, $required_mysql_version, $php_version, $mysql_version );
+       $compat = sprintf( __( 'You cannot install because <a href="http://codex.wordpress.org/Version_%1$s">WordPress %1$s</a> requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s.' ), $wp_version, $required_php_version, $required_mysql_version, $php_version, $mysql_version );
 elseif ( !$php_compat )
 elseif ( !$php_compat )
-       $compat = sprintf( __('You cannot install because <a href="http://codex.wordpress.org/Version_%1$s">WordPress %1$s</a> requires PHP version %2$s or higher. You are running version %3$s.'), $wp_version, $required_php_version, $php_version );
+       $compat = sprintf( __( 'You cannot install because <a href="http://codex.wordpress.org/Version_%1$s">WordPress %1$s</a> requires PHP version %2$s or higher. You are running version %3$s.' ), $wp_version, $required_php_version, $php_version );
 elseif ( !$mysql_compat )
 elseif ( !$mysql_compat )
-       $compat = sprintf( __('You cannot install because <a href="http://codex.wordpress.org/Version_%1$s">WordPress %1$s</a> requires MySQL version %2$s or higher. You are running version %3$s.'), $wp_version, $required_mysql_version, $mysql_version );
+       $compat = sprintf( __( 'You cannot install because <a href="http://codex.wordpress.org/Version_%1$s">WordPress %1$s</a> requires MySQL version %2$s or higher. You are running version %3$s.' ), $wp_version, $required_mysql_version, $mysql_version );
 
 if ( !$mysql_compat || !$php_compat ) {
        display_header();
 
 if ( !$mysql_compat || !$php_compat ) {
        display_header();
-       die('<h1>' . __('Insufficient Requirements') . '</h1><p>' . $compat . '</p></body></html>');
+       die( '<h1>' . __( 'Insufficient Requirements' ) . '</h1><p>' . $compat . '</p></body></html>' );
+}
+
+if ( ! is_string( $wpdb->base_prefix ) || '' === $wpdb->base_prefix ) {
+       display_header();
+       die( '<h1>' . __( 'Configuration Error' ) . '</h1><p>' . __( 'Your <code>wp-config.php</code> file has an empty database table prefix, which is not supported.' ) . '</p></body></html>' );
 }
 
 switch($step) {
 }
 
 switch($step) {
@@ -167,7 +172,7 @@ switch($step) {
        case 1: // Step 1, direct link.
          display_header();
 ?>
        case 1: // Step 1, direct link.
          display_header();
 ?>
-<h1><?php _e( 'Welcome' ); ?></h1>
+<h1><?php _ex( 'Welcome', 'Howdy' ); ?></h1>
 <p><?php printf( __( 'Welcome to the famous five minute WordPress installation process! You may want to browse the <a href="%s">ReadMe documentation</a> at your leisure. Otherwise, just fill in the information below and you&#8217;ll be on your way to using the most extendable and powerful personal publishing platform in the world.' ), '../readme.html' ); ?></p>
 
 <h1><?php _e( 'Information needed' ); ?></h1>
 <p><?php printf( __( 'Welcome to the famous five minute WordPress installation process! You may want to browse the <a href="%s">ReadMe documentation</a> at your leisure. Otherwise, just fill in the information below and you&#8217;ll be on your way to using the most extendable and powerful personal publishing platform in the world.' ), '../readme.html' ); ?></p>
 
 <h1><?php _e( 'Information needed' ); ?></h1>
@@ -207,7 +212,7 @@ switch($step) {
                        $error = true;
                } elseif ( ! is_email( $admin_email ) ) {
                        // TODO: poka-yoke
                        $error = true;
                } elseif ( ! is_email( $admin_email ) ) {
                        // TODO: poka-yoke
-                       display_setup_form( __( 'that isn&#8217;t a valid e-mail address.  E-mail addresses look like: <code>username@example.com</code>' ) );
+                       display_setup_form( __( 'that isn&#8217;t a valid e-mail address. E-mail addresses look like: <code>username@example.com</code>' ) );
                        $error = true;
                }
 
                        $error = true;
                }
 
index 4918f1f77bda71c06e8cfdeef6d7f8322243a807..4c87a877fada057be4035999f1267b2d12f35680 100644 (file)
@@ -1,4 +1,4 @@
-var showNotice, adminMenu, columns, validateForm, screenMeta, autofold_menu;
+var showNotice, adminMenu, columns, validateForm, screenMeta;
 (function($){
 // Removed in 3.3.
 // (perhaps) needed for back-compat
 (function($){
 // Removed in 3.3.
 // (perhaps) needed for back-compat
@@ -160,7 +160,7 @@ $('.contextual-help-tabs').delegate('a', 'click focus', function(e) {
 
 $(document).ready( function() {
        var lastClicked = false, checks, first, last, checked, menu = $('#adminmenu'),
 
 $(document).ready( function() {
        var lastClicked = false, checks, first, last, checked, menu = $('#adminmenu'),
-               pageInput = $('input.current-page'), currentPage = pageInput.val(), folded, refresh;
+               pageInput = $('input.current-page'), currentPage = pageInput.val(), refresh;
 
        // admin menu
        refresh = function(i, el){ // force the browser to refresh the tabbing index
 
        // admin menu
        refresh = function(i, el){ // force the browser to refresh the tabbing index
@@ -172,6 +172,9 @@ $(document).ready( function() {
        $('#collapse-menu', menu).click(function(){
                var body = $(document.body);
 
        $('#collapse-menu', menu).click(function(){
                var body = $(document.body);
 
+               // reset any compensation for submenus near the bottom of the screen
+               $('#adminmenu div.wp-submenu').css('margin-top', '');
+
                if ( body.hasClass('folded') ) {
                        body.removeClass('folded');
                        setUserSetting('mfold', 'o');
                if ( body.hasClass('folded') ) {
                        body.removeClass('folded');
                        setUserSetting('mfold', 'o');
@@ -186,7 +189,7 @@ $(document).ready( function() {
                over: function(e){
                        var b, h, o, f, m = $(this).find('.wp-submenu'), menutop, wintop, maxtop;
 
                over: function(e){
                        var b, h, o, f, m = $(this).find('.wp-submenu'), menutop, wintop, maxtop;
 
-                       if ( !$(document.body).hasClass('folded') && $(this).hasClass('wp-menu-open') )
+                       if ( m.is(':visible') )
                                return;
 
                        menutop = $(this).offset().top;
                                return;
 
                        menutop = $(this).offset().top;
@@ -205,9 +208,9 @@ $(document).ready( function() {
                                o = maxtop;
 
                        if ( o > 1 )
                                o = maxtop;
 
                        if ( o > 1 )
-                               m.css({'marginTop':'-'+o+'px'});
-                       else if ( m.css('marginTop') )
-                               m.css({'marginTop':''});
+                               m.css('margin-top', '-'+o+'px');
+                       else
+                               m.css('margin-top', '');
 
                        menu.find('.wp-submenu').removeClass('sub-open');
                        m.addClass('sub-open');
 
                        menu.find('.wp-submenu').removeClass('sub-open');
                        m.addClass('sub-open');
@@ -317,7 +320,7 @@ $(document).ready( function() {
                var el = e.target, selStart = el.selectionStart, selEnd = el.selectionEnd, val = el.value, scroll, sel;
 
                try {
                var el = e.target, selStart = el.selectionStart, selEnd = el.selectionEnd, val = el.value, scroll, sel;
 
                try {
-                       this.lastKey = 9; // not a standard DOM property, lastKey is to help stop Opera tab event.  See blur handler below.
+                       this.lastKey = 9; // not a standard DOM property, lastKey is to help stop Opera tab event. See blur handler below.
                } catch(err) {}
 
                if ( document.selection ) {
                } catch(err) {}
 
                if ( document.selection ) {
@@ -351,28 +354,6 @@ $(document).ready( function() {
                });
        }
 
                });
        }
 
-       // auto-fold the menu when screen is under 800px
-       $(window).bind('resize.autofold', function(){
-               if ( getUserSetting('mfold') == 'f' )
-                       return;
-
-               var width = $(window).width();
-
-               // fold admin menu
-               if ( width <= 800 ) {
-                       if ( !folded ) {
-                               $(document.body).addClass('folded');
-                               folded = true;
-                       }
-               } else {
-                       if ( folded ) {
-                               $(document.body).removeClass('folded');
-                               folded = false;
-                       }
-               }
-
-       }).triggerHandler('resize');
-
 });
 
 // internal use
 });
 
 // internal use
index c812f3fc65e714eae37893f9210e48c99796f6c4..7f71b3d018b7e9ba1e943775a93ce42d5969a038 100644 (file)
@@ -1 +1 @@
-var showNotice,adminMenu,columns,validateForm,screenMeta,autofold_menu;(function(a){adminMenu={init:function(){},fold:function(){},restoreMenuState:function(){},toggle:function(){},favorites:function(){}};columns={init:function(){var b=this;a(".hide-column-tog","#adv-settings").click(function(){var d=a(this),c=d.val();if(d.prop("checked")){b.checked(c)}else{b.unchecked(c)}columns.saveManageColumnsState()})},saveManageColumnsState:function(){var b=this.hidden();a.post(ajaxurl,{action:"hidden-columns",hidden:b,screenoptionnonce:a("#screenoptionnonce").val(),page:pagenow})},checked:function(b){a(".column-"+b).show();this.colSpanChange(+1)},unchecked:function(b){a(".column-"+b).hide();this.colSpanChange(-1)},hidden:function(){return a(".manage-column").filter(":hidden").map(function(){return this.id}).get().join(",")},useCheckboxesForHidden:function(){this.hidden=function(){return a(".hide-column-tog").not(":checked").map(function(){var b=this.id;return b.substring(b,b.length-5)}).get().join(",")}},colSpanChange:function(b){var d=a("table").find(".colspanchange"),c;if(!d.length){return}c=parseInt(d.attr("colspan"),10)+b;d.attr("colspan",c.toString())}};a(document).ready(function(){columns.init()});validateForm=function(b){return !a(b).find(".form-required").filter(function(){return a("input:visible",this).val()==""}).addClass("form-invalid").find("input:visible").change(function(){a(this).closest(".form-invalid").removeClass("form-invalid")}).size()};showNotice={warn:function(){var b=commonL10n.warnDelete||"";if(confirm(b)){return true}return false},note:function(b){alert(b)}};screenMeta={element:null,toggles:null,page:null,init:function(){this.element=a("#screen-meta");this.toggles=a(".screen-meta-toggle a");this.page=a("#wpcontent");this.toggles.click(this.toggleEvent)},toggleEvent:function(c){var b=a(this.href.replace(/.+#/,"#"));c.preventDefault();if(!b.length){return}if(b.is(":visible")){screenMeta.close(b,a(this))}else{screenMeta.open(b,a(this))}},open:function(b,c){a(".screen-meta-toggle").not(c.parent()).css("visibility","hidden");b.parent().show();b.slideDown("fast",function(){c.addClass("screen-meta-active")})},close:function(b,c){b.slideUp("fast",function(){c.removeClass("screen-meta-active");a(".screen-meta-toggle").css("visibility","");b.parent().hide()})}};a(".contextual-help-tabs").delegate("a","click focus",function(d){var c=a(this),b;d.preventDefault();if(c.is(".active a")){return false}a(".contextual-help-tabs .active").removeClass("active");c.parent("li").addClass("active");b=a(c.attr("href"));a(".help-tab-content").not(b).removeClass("active").hide();b.addClass("active").show()});a(document).ready(function(){var j=false,c,e,k,i,b=a("#adminmenu"),d=a("input.current-page"),f=d.val(),h,g;g=function(l,n){var o=a(n),m=o.attr("tabindex");if(m){o.attr("tabindex","0").attr("tabindex",m)}};a("#collapse-menu",b).click(function(){var l=a(document.body);if(l.hasClass("folded")){l.removeClass("folded");setUserSetting("mfold","o")}else{l.addClass("folded");setUserSetting("mfold","f")}return false});a("li.wp-has-submenu",b).hoverIntent({over:function(t){var u,r,l,s,n=a(this).find(".wp-submenu"),v,p,q;if(!a(document.body).hasClass("folded")&&a(this).hasClass("wp-menu-open")){return}v=a(this).offset().top;p=a(window).scrollTop();q=v-p-30;u=v+n.height()+1;r=a("#wpwrap").height();l=60+u-r;s=a(window).height()+p-15;if(s<(u-l)){l=u-s}if(l>q){l=q}if(l>1){n.css({marginTop:"-"+l+"px"})}else{if(n.css("marginTop")){n.css({marginTop:""})}}b.find(".wp-submenu").removeClass("sub-open");n.addClass("sub-open")},out:function(){a(this).find(".wp-submenu").removeClass("sub-open")},timeout:200,sensitivity:7,interval:90});a("li.wp-has-submenu > a.wp-not-current-submenu",b).bind("keydown.adminmenu",function(m){if(m.which!=13){return}var l=a(m.target);m.stopPropagation();m.preventDefault();b.find(".wp-submenu").removeClass("sub-open");l.siblings(".wp-submenu").toggleClass("sub-open").find('a[role="menuitem"]').each(g)}).each(g);a('a[role="menuitem"]',b).bind("keydown.adminmenu",function(m){if(m.which!=27){return}var l=a(m.target);m.stopPropagation();m.preventDefault();l.add(l.siblings()).closest(".sub-open").removeClass("sub-open").siblings("a.wp-not-current-submenu").focus()});a("div.wrap h2:first").nextAll("div.updated, div.error").addClass("below-h2");a("div.updated, div.error").not(".below-h2, .inline").insertAfter(a("div.wrap h2:first"));screenMeta.init();a("tbody").children().children(".check-column").find(":checkbox").click(function(l){if("undefined"==l.shiftKey){return true}if(l.shiftKey){if(!j){return true}c=a(j).closest("form").find(":checkbox");e=c.index(j);k=c.index(this);i=a(this).prop("checked");if(0<e&&0<k&&e!=k){c.slice(e,k).prop("checked",function(){if(a(this).closest("tr").is(":visible")){return i}return false})}}j=this;return true});a("thead, tfoot").find(".check-column :checkbox").click(function(n){var o=a(this).prop("checked"),m="undefined"==typeof toggleWithKeyboard?false:toggleWithKeyboard,l=n.shiftKey||m;a(this).closest("table").children("tbody").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){if(a(this).closest("tr").is(":hidden")){return false}if(l){return a(this).prop("checked")}else{if(o){return true}}return false});a(this).closest("table").children("thead,  tfoot").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){if(l){return false}else{if(o){return true}}return false})});a("#default-password-nag-no").click(function(){setUserSetting("default_password_nag","hide");a("div.default-password-nag").hide();return false});a("#newcontent").bind("keydown.wpevent_InsertTab",function(q){if(q.keyCode!=9){return true}var n=q.target,s=n.selectionStart,m=n.selectionEnd,r=n.value,l,p;try{this.lastKey=9}catch(o){}if(document.selection){n.focus();p=document.selection.createRange();p.text="\t"}else{if(s>=0){l=this.scrollTop;n.value=r.substring(0,s).concat("\t",r.substring(m));n.selectionStart=n.selectionEnd=s+1;this.scrollTop=l}}if(q.stopPropagation){q.stopPropagation()}if(q.preventDefault){q.preventDefault()}});a("#newcontent").bind("blur.wpevent_InsertTab",function(l){if(this.lastKey&&9==this.lastKey){this.focus()}});if(d.length){d.closest("form").submit(function(l){if(a('select[name="action"]').val()==-1&&a('select[name="action2"]').val()==-1&&d.val()==f){d.val("1")}})}a(window).bind("resize.autofold",function(){if(getUserSetting("mfold")=="f"){return}var l=a(window).width();if(l<=800){if(!h){a(document.body).addClass("folded");h=true}}else{if(h){a(document.body).removeClass("folded");h=false}}}).triggerHandler("resize")});a(document).bind("wp_CloseOnEscape",function(c,b){if(typeof(b.cb)!="function"){return}if(typeof(b.condition)!="function"||b.condition()){b.cb()}return true})})(jQuery);
\ No newline at end of file
+var showNotice,adminMenu,columns,validateForm,screenMeta;(function(a){adminMenu={init:function(){},fold:function(){},restoreMenuState:function(){},toggle:function(){},favorites:function(){}};columns={init:function(){var b=this;a(".hide-column-tog","#adv-settings").click(function(){var d=a(this),c=d.val();if(d.prop("checked")){b.checked(c)}else{b.unchecked(c)}columns.saveManageColumnsState()})},saveManageColumnsState:function(){var b=this.hidden();a.post(ajaxurl,{action:"hidden-columns",hidden:b,screenoptionnonce:a("#screenoptionnonce").val(),page:pagenow})},checked:function(b){a(".column-"+b).show();this.colSpanChange(+1)},unchecked:function(b){a(".column-"+b).hide();this.colSpanChange(-1)},hidden:function(){return a(".manage-column").filter(":hidden").map(function(){return this.id}).get().join(",")},useCheckboxesForHidden:function(){this.hidden=function(){return a(".hide-column-tog").not(":checked").map(function(){var b=this.id;return b.substring(b,b.length-5)}).get().join(",")}},colSpanChange:function(b){var d=a("table").find(".colspanchange"),c;if(!d.length){return}c=parseInt(d.attr("colspan"),10)+b;d.attr("colspan",c.toString())}};a(document).ready(function(){columns.init()});validateForm=function(b){return !a(b).find(".form-required").filter(function(){return a("input:visible",this).val()==""}).addClass("form-invalid").find("input:visible").change(function(){a(this).closest(".form-invalid").removeClass("form-invalid")}).size()};showNotice={warn:function(){var b=commonL10n.warnDelete||"";if(confirm(b)){return true}return false},note:function(b){alert(b)}};screenMeta={element:null,toggles:null,page:null,init:function(){this.element=a("#screen-meta");this.toggles=a(".screen-meta-toggle a");this.page=a("#wpcontent");this.toggles.click(this.toggleEvent)},toggleEvent:function(c){var b=a(this.href.replace(/.+#/,"#"));c.preventDefault();if(!b.length){return}if(b.is(":visible")){screenMeta.close(b,a(this))}else{screenMeta.open(b,a(this))}},open:function(b,c){a(".screen-meta-toggle").not(c.parent()).css("visibility","hidden");b.parent().show();b.slideDown("fast",function(){c.addClass("screen-meta-active")})},close:function(b,c){b.slideUp("fast",function(){c.removeClass("screen-meta-active");a(".screen-meta-toggle").css("visibility","");b.parent().hide()})}};a(".contextual-help-tabs").delegate("a","click focus",function(d){var c=a(this),b;d.preventDefault();if(c.is(".active a")){return false}a(".contextual-help-tabs .active").removeClass("active");c.parent("li").addClass("active");b=a(c.attr("href"));a(".help-tab-content").not(b).removeClass("active").hide();b.addClass("active").show()});a(document).ready(function(){var i=false,c,e,j,h,b=a("#adminmenu"),d=a("input.current-page"),f=d.val(),g;g=function(k,m){var n=a(m),l=n.attr("tabindex");if(l){n.attr("tabindex","0").attr("tabindex",l)}};a("#collapse-menu",b).click(function(){var k=a(document.body);a("#adminmenu div.wp-submenu").css("margin-top","");if(k.hasClass("folded")){k.removeClass("folded");setUserSetting("mfold","o")}else{k.addClass("folded");setUserSetting("mfold","f")}return false});a("li.wp-has-submenu",b).hoverIntent({over:function(s){var t,q,k,r,l=a(this).find(".wp-submenu"),u,n,p;if(l.is(":visible")){return}u=a(this).offset().top;n=a(window).scrollTop();p=u-n-30;t=u+l.height()+1;q=a("#wpwrap").height();k=60+t-q;r=a(window).height()+n-15;if(r<(t-k)){k=t-r}if(k>p){k=p}if(k>1){l.css("margin-top","-"+k+"px")}else{l.css("margin-top","")}b.find(".wp-submenu").removeClass("sub-open");l.addClass("sub-open")},out:function(){a(this).find(".wp-submenu").removeClass("sub-open")},timeout:200,sensitivity:7,interval:90});a("li.wp-has-submenu > a.wp-not-current-submenu",b).bind("keydown.adminmenu",function(l){if(l.which!=13){return}var k=a(l.target);l.stopPropagation();l.preventDefault();b.find(".wp-submenu").removeClass("sub-open");k.siblings(".wp-submenu").toggleClass("sub-open").find('a[role="menuitem"]').each(g)}).each(g);a('a[role="menuitem"]',b).bind("keydown.adminmenu",function(l){if(l.which!=27){return}var k=a(l.target);l.stopPropagation();l.preventDefault();k.add(k.siblings()).closest(".sub-open").removeClass("sub-open").siblings("a.wp-not-current-submenu").focus()});a("div.wrap h2:first").nextAll("div.updated, div.error").addClass("below-h2");a("div.updated, div.error").not(".below-h2, .inline").insertAfter(a("div.wrap h2:first"));screenMeta.init();a("tbody").children().children(".check-column").find(":checkbox").click(function(k){if("undefined"==k.shiftKey){return true}if(k.shiftKey){if(!i){return true}c=a(i).closest("form").find(":checkbox");e=c.index(i);j=c.index(this);h=a(this).prop("checked");if(0<e&&0<j&&e!=j){c.slice(e,j).prop("checked",function(){if(a(this).closest("tr").is(":visible")){return h}return false})}}i=this;return true});a("thead, tfoot").find(".check-column :checkbox").click(function(m){var n=a(this).prop("checked"),l="undefined"==typeof toggleWithKeyboard?false:toggleWithKeyboard,k=m.shiftKey||l;a(this).closest("table").children("tbody").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){if(a(this).closest("tr").is(":hidden")){return false}if(k){return a(this).prop("checked")}else{if(n){return true}}return false});a(this).closest("table").children("thead,  tfoot").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){if(k){return false}else{if(n){return true}}return false})});a("#default-password-nag-no").click(function(){setUserSetting("default_password_nag","hide");a("div.default-password-nag").hide();return false});a("#newcontent").bind("keydown.wpevent_InsertTab",function(p){if(p.keyCode!=9){return true}var m=p.target,r=m.selectionStart,l=m.selectionEnd,q=m.value,k,o;try{this.lastKey=9}catch(n){}if(document.selection){m.focus();o=document.selection.createRange();o.text="\t"}else{if(r>=0){k=this.scrollTop;m.value=q.substring(0,r).concat("\t",q.substring(l));m.selectionStart=m.selectionEnd=r+1;this.scrollTop=k}}if(p.stopPropagation){p.stopPropagation()}if(p.preventDefault){p.preventDefault()}});a("#newcontent").bind("blur.wpevent_InsertTab",function(k){if(this.lastKey&&9==this.lastKey){this.focus()}});if(d.length){d.closest("form").submit(function(k){if(a('select[name="action"]').val()==-1&&a('select[name="action2"]').val()==-1&&d.val()==f){d.val("1")}})}});a(document).bind("wp_CloseOnEscape",function(c,b){if(typeof(b.cb)!="function"){return}if(typeof(b.condition)!="function"||b.condition()){b.cb()}return true})})(jQuery);
\ No newline at end of file
index b4dbc6657425f4eed440a7a0d4dfa2e38668a275..5bf085da2fa001efd49571267d6cfa4a46e3cea8 100644 (file)
@@ -1,55 +1,66 @@
-var farbtastic;
-
-function pickColor(color) {
-       farbtastic.setColor(color);
-       jQuery('#background-color').val(color);
-       jQuery('#custom-background-image').css('background-color', color);
-       if ( color && color !== '#' )
-               jQuery('#clearcolor').show();
-       else
-               jQuery('#clearcolor').hide();
-}
-
-jQuery(document).ready(function() {
-       jQuery('#pickcolor').click(function() {
-               jQuery('#colorPickerDiv').show();
-               return false;
-       });
+var farbtastic, pickColor;
 
 
-       jQuery('#clearcolor a').click( function(e) {
-               pickColor('');
-               e.preventDefault();
-       });
+(function($) {
 
 
-       jQuery('#background-color').keyup(function() {
-               var _hex = jQuery('#background-color').val(), hex = _hex;
-               if ( hex.charAt(0) != '#' )
-                       hex = '#' + hex;
-               hex = hex.replace(/[^#a-fA-F0-9]+/, '');
-               if ( hex != _hex )
-                       jQuery('#background-color').val(hex);
-               if ( hex.length == 4 || hex.length == 7 )
-                       pickColor( hex );
-       });
+       var defaultColor = '';
 
 
-       jQuery('input[name="background-position-x"]').change(function() {
-               jQuery('#custom-background-image').css('background-position', jQuery(this).val() + ' top');
-       });
+       pickColor = function(color) {
+               farbtastic.setColor(color);
+               $('#background-color').val(color);
+               $('#custom-background-image').css('background-color', color);
+               // If we have a default color, and they match, then we need to hide the 'Default' link.
+               // Otherwise, we hide the 'Clear' link when it is empty.
+               if ( ( defaultColor && color === defaultColor ) || ( ! defaultColor && ( '' === color || '#' === color ) ) )
+                       $('#clearcolor').hide();
+               else
+                       $('#clearcolor').show();
+       }
 
 
-       jQuery('input[name="background-repeat"]').change(function() {
-               jQuery('#custom-background-image').css('background-repeat', jQuery(this).val());
-       });
+       $(document).ready(function() {
 
 
-       farbtastic = jQuery.farbtastic('#colorPickerDiv', function(color) {
-               pickColor(color);
-       });
-       pickColor(jQuery('#background-color').val());
+               defaultColor = $('#defaultcolor').val();
+
+               $('#pickcolor').click(function() {
+                       $('#colorPickerDiv').show();
+                       return false;
+               });
+
+               $('#clearcolor a').click( function(e) {
+                       pickColor( defaultColor );
+                       e.preventDefault();
+               });
 
 
-       jQuery(document).mousedown(function(){
-               jQuery('#colorPickerDiv').each(function(){
-                       var display = jQuery(this).css('display');
-                       if ( display == 'block' )
-                               jQuery(this).fadeOut(2);
+               $('#background-color').keyup(function() {
+                       var _hex = $('#background-color').val(), hex = _hex;
+                       if ( hex.charAt(0) != '#' )
+                               hex = '#' + hex;
+                       hex = hex.replace(/[^#a-fA-F0-9]+/, '');
+                       if ( hex != _hex )
+                               $('#background-color').val(hex);
+                       if ( hex.length == 4 || hex.length == 7 )
+                               pickColor( hex );
+               });
+
+               $('input[name="background-position-x"]').change(function() {
+                       $('#custom-background-image').css('background-position', $(this).val() + ' top');
+               });
+
+               $('input[name="background-repeat"]').change(function() {
+                       $('#custom-background-image').css('background-repeat', $(this).val());
+               });
+
+               farbtastic = $.farbtastic('#colorPickerDiv', function(color) {
+                       pickColor(color);
+               });
+               pickColor($('#background-color').val());
+
+               $(document).mousedown(function(){
+                       $('#colorPickerDiv').each(function(){
+                               var display = $(this).css('display');
+                               if ( display == 'block' )
+                                       $(this).fadeOut(2);
+                       });
                });
        });
                });
        });
-});
+
+})(jQuery);
\ No newline at end of file
index 6cf8851bde9b97c890da2160e9b71055827bc096..66b8bbfd406c33e7c038fb61d8b6f6527a962c85 100644 (file)
@@ -1 +1 @@
-var farbtastic;function pickColor(a){farbtastic.setColor(a);jQuery("#background-color").val(a);jQuery("#custom-background-image").css("background-color",a);if(a&&a!=="#"){jQuery("#clearcolor").show()}else{jQuery("#clearcolor").hide()}}jQuery(document).ready(function(){jQuery("#pickcolor").click(function(){jQuery("#colorPickerDiv").show();return false});jQuery("#clearcolor a").click(function(a){pickColor("");a.preventDefault()});jQuery("#background-color").keyup(function(){var b=jQuery("#background-color").val(),a=b;if(a.charAt(0)!="#"){a="#"+a}a=a.replace(/[^#a-fA-F0-9]+/,"");if(a!=b){jQuery("#background-color").val(a)}if(a.length==4||a.length==7){pickColor(a)}});jQuery('input[name="background-position-x"]').change(function(){jQuery("#custom-background-image").css("background-position",jQuery(this).val()+" top")});jQuery('input[name="background-repeat"]').change(function(){jQuery("#custom-background-image").css("background-repeat",jQuery(this).val())});farbtastic=jQuery.farbtastic("#colorPickerDiv",function(a){pickColor(a)});pickColor(jQuery("#background-color").val());jQuery(document).mousedown(function(){jQuery("#colorPickerDiv").each(function(){var a=jQuery(this).css("display");if(a=="block"){jQuery(this).fadeOut(2)}})})});
\ No newline at end of file
+var farbtastic,pickColor;(function(b){var a="";pickColor=function(c){farbtastic.setColor(c);b("#background-color").val(c);b("#custom-background-image").css("background-color",c);if((a&&c===a)||(!a&&(""===c||"#"===c))){b("#clearcolor").hide()}else{b("#clearcolor").show()}};b(document).ready(function(){a=b("#defaultcolor").val();b("#pickcolor").click(function(){b("#colorPickerDiv").show();return false});b("#clearcolor a").click(function(c){pickColor(a);c.preventDefault()});b("#background-color").keyup(function(){var d=b("#background-color").val(),c=d;if(c.charAt(0)!="#"){c="#"+c}c=c.replace(/[^#a-fA-F0-9]+/,"");if(c!=d){b("#background-color").val(c)}if(c.length==4||c.length==7){pickColor(c)}});b('input[name="background-position-x"]').change(function(){b("#custom-background-image").css("background-position",b(this).val()+" top")});b('input[name="background-repeat"]').change(function(){b("#custom-background-image").css("background-repeat",b(this).val())});farbtastic=b.farbtastic("#colorPickerDiv",function(c){pickColor(c)});pickColor(b("#background-color").val());b(document).mousedown(function(){b("#colorPickerDiv").each(function(){var c=b(this).css("display");if(c=="block"){b(this).fadeOut(2)}})})})})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/customize-controls.dev.js b/wp-admin/js/customize-controls.dev.js
new file mode 100644 (file)
index 0000000..cb4e6e2
--- /dev/null
@@ -0,0 +1,942 @@
+(function( exports, $ ){
+       var api = wp.customize;
+
+       /*
+        * @param options
+        * - previewer - The Previewer instance to sync with.
+        * - transport - The transport to use for previewing. Supports 'refresh' and 'postMessage'.
+        */
+       api.Setting = api.Value.extend({
+               initialize: function( id, value, options ) {
+                       var element;
+
+                       api.Value.prototype.initialize.call( this, value, options );
+
+                       this.id = id;
+                       this.transport = this.transport || 'refresh';
+
+                       this.bind( this.preview );
+               },
+               preview: function() {
+                       switch ( this.transport ) {
+                               case 'refresh':
+                                       return this.previewer.refresh();
+                               case 'postMessage':
+                                       return this.previewer.send( 'setting', [ this.id, this() ] );
+                       }
+               }
+       });
+
+       api.Control = api.Class.extend({
+               initialize: function( id, options ) {
+                       var control = this,
+                               nodes, radios, settings;
+
+                       this.params = {};
+                       $.extend( this, options || {} );
+
+                       this.id = id;
+                       this.selector = '#customize-control-' + id.replace( ']', '' ).replace( '[', '-' );
+                       this.container = $( this.selector );
+
+                       settings = $.map( this.params.settings, function( value ) {
+                               return value;
+                       });
+
+                       api.apply( api, settings.concat( function() {
+                               var key;
+
+                               control.settings = {};
+                               for ( key in control.params.settings ) {
+                                       control.settings[ key ] = api( control.params.settings[ key ] );
+                               }
+
+                               control.setting = control.settings['default'] || null;
+                               control.ready();
+                       }) );
+
+                       control.elements = [];
+
+                       nodes  = this.container.find('[data-customize-setting-link]');
+                       radios = {};
+
+                       nodes.each( function() {
+                               var node = $(this),
+                                       name;
+
+                               if ( node.is(':radio') ) {
+                                       name = node.prop('name');
+                                       if ( radios[ name ] )
+                                               return;
+
+                                       radios[ name ] = true;
+                                       node = nodes.filter( '[name="' + name + '"]' );
+                               }
+
+                               api( node.data('customizeSettingLink'), function( setting ) {
+                                       var element = new api.Element( node );
+                                       control.elements.push( element );
+                                       element.sync( setting );
+                                       element.set( setting() );
+                               });
+                       });
+               },
+
+               ready: function() {},
+
+               dropdownInit: function() {
+                       var control  = this,
+                               statuses = this.container.find('.dropdown-status'),
+                               params   = this.params,
+                               update   = function( to ) {
+                                       if ( typeof     to === 'string' && params.statuses && params.statuses[ to ] )
+                                               statuses.html( params.statuses[ to ] ).show();
+                                       else
+                                               statuses.hide();
+                               };
+
+                       // Support the .dropdown class to open/close complex elements
+                       this.container.on( 'click', '.dropdown', function( event ) {
+                               event.preventDefault();
+                               control.container.toggleClass('open');
+                       });
+
+                       this.setting.bind( update );
+                       update( this.setting() );
+               }
+       });
+
+       api.ColorControl = api.Control.extend({
+               ready: function() {
+                       var control = this,
+                               rhex, spot, input, text, update;
+
+                       rhex   = /^#([A-Fa-f0-9]{3}){0,2}$/;
+                       spot   = this.container.find('.dropdown-content');
+                       input  = new api.Element( this.container.find('.color-picker-hex') );
+                       update = function( color ) {
+                               spot.css( 'background', color );
+                               control.farbtastic.setColor( color );
+                       };
+
+                       this.farbtastic = $.farbtastic( this.container.find('.farbtastic-placeholder'), control.setting.set );
+
+                       // Only pass through values that are valid hexes/empty.
+                       input.sync( this.setting ).validate = function( to ) {
+                               return rhex.test( to ) ? to : null;
+                       };
+
+                       this.setting.bind( update );
+                       update( this.setting() );
+
+                       this.dropdownInit();
+               }
+       });
+
+       api.UploadControl = api.Control.extend({
+               ready: function() {
+                       var control = this;
+
+                       this.params.removed = this.params.removed || '';
+
+                       this.success = $.proxy( this.success, this );
+
+                       this.uploader = $.extend({
+                               container: this.container,
+                               browser:   this.container.find('.upload'),
+                               dropzone:  this.container.find('.upload-dropzone'),
+                               success:   this.success
+                       }, this.uploader || {} );
+
+                       if ( this.uploader.supported ) {
+                               if ( control.params.context )
+                                       control.uploader.param( 'post_data[context]', this.params.context );
+
+                               control.uploader.param( 'post_data[theme]', api.settings.theme.stylesheet );
+                       }
+
+                       this.uploader = new wp.Uploader( this.uploader );
+
+                       this.remover = this.container.find('.remove');
+                       this.remover.click( function( event ) {
+                               control.setting.set( control.params.removed );
+                               event.preventDefault();
+                       });
+
+                       this.removerVisibility = $.proxy( this.removerVisibility, this );
+                       this.setting.bind( this.removerVisibility );
+                       this.removerVisibility( this.setting.get() );
+               },
+               success: function( attachment ) {
+                       this.setting.set( attachment.url );
+               },
+               removerVisibility: function( to ) {
+                       this.remover.toggle( to != this.params.removed );
+               }
+       });
+
+       api.ImageControl = api.UploadControl.extend({
+               ready: function() {
+                       var control = this,
+                               panels;
+
+                       this.uploader = {
+                               init: function( up ) {
+                                       var fallback, button;
+
+                                       if ( this.supports.dragdrop )
+                                               return;
+
+                                       // Maintain references while wrapping the fallback button.
+                                       fallback = control.container.find( '.upload-fallback' );
+                                       button   = fallback.children().detach();
+
+                                       this.browser.detach().empty().append( button );
+                                       fallback.append( this.browser ).show();
+                               }
+                       };
+
+                       api.UploadControl.prototype.ready.call( this );
+
+                       this.thumbnail    = this.container.find('.preview-thumbnail img');
+                       this.thumbnailSrc = $.proxy( this.thumbnailSrc, this );
+                       this.setting.bind( this.thumbnailSrc );
+
+                       this.library = this.container.find('.library');
+
+                       // Generate tab objects
+                       this.tabs = {};
+                       panels    = this.library.find('.library-content');
+
+                       this.library.children('ul').children('li').each( function() {
+                               var link  = $(this),
+                                       id    = link.data('customizeTab'),
+                                       panel = panels.filter('[data-customize-tab="' + id + '"]');
+
+                               control.tabs[ id ] = {
+                                       both:  link.add( panel ),
+                                       link:  link,
+                                       panel: panel
+                               };
+                       });
+
+                       // Select a tab
+                       this.selected = this.tabs[ panels.first().data('customizeTab') ];
+                       this.selected.both.addClass('library-selected');
+
+                       // Bind tab switch events
+                       this.library.children('ul').on( 'click', 'li', function( event ) {
+                               var id  = $(this).data('customizeTab'),
+                                       tab = control.tabs[ id ];
+
+                               event.preventDefault();
+
+                               if ( tab.link.hasClass('library-selected') )
+                                       return;
+
+                               control.selected.both.removeClass('library-selected');
+                               control.selected = tab;
+                               control.selected.both.addClass('library-selected');
+                       });
+
+                       // Bind events to switch image urls.
+                       this.library.on( 'click', 'a', function( event ) {
+                               var value = $(this).data('customizeImageValue');
+
+                               if ( value ) {
+                                       control.setting.set( value );
+                                       event.preventDefault();
+                               }
+                       });
+
+                       if ( this.tabs.uploaded ) {
+                               this.tabs.uploaded.target = this.library.find('.uploaded-target');
+                               if ( ! this.tabs.uploaded.panel.find('.thumbnail').length )
+                                       this.tabs.uploaded.both.addClass('hidden');
+                       }
+
+                       this.dropdownInit();
+               },
+               success: function( attachment ) {
+                       api.UploadControl.prototype.success.call( this, attachment );
+
+                       // Add the uploaded image to the uploaded tab.
+                       if ( this.tabs.uploaded && this.tabs.uploaded.target.length ) {
+                               this.tabs.uploaded.both.removeClass('hidden');
+
+                               attachment.element = $( '<a href="#" class="thumbnail"></a>' )
+                                       .data( 'customizeImageValue', attachment.url )
+                                       .append( '<img src="' +  attachment.url+ '" />' )
+                                       .appendTo( this.tabs.uploaded.target );
+                       }
+               },
+               thumbnailSrc: function( to ) {
+                       if ( /^(https?:)?\/\//.test( to ) )
+                               this.thumbnail.prop( 'src', to ).show();
+                       else
+                               this.thumbnail.hide();
+               }
+       });
+
+       // Change objects contained within the main customize object to Settings.
+       api.defaultConstructor = api.Setting;
+
+       // Create the collection of Control objects.
+       api.control = new api.Values({ defaultConstructor: api.Control });
+
+       api.PreviewFrame = api.Messenger.extend({
+               sensitivity: 2000,
+
+               initialize: function( params, options ) {
+                       var deferred = $.Deferred(),
+                               self     = this;
+
+                       // This is the promise object.
+                       deferred.promise( this );
+
+                       this.previewer = params.previewer;
+
+                       $.extend( params, { channel: api.PreviewFrame.uuid() });
+
+                       api.Messenger.prototype.initialize.call( this, params, options );
+
+                       this.add( 'previewUrl', params.previewUrl );
+
+                       this.query = $.extend( params.query || {}, { customize_messenger_channel: this.channel() });
+
+                       this.run( deferred );
+               },
+
+               run: function( deferred ) {
+                       var self   = this,
+                               loaded = false,
+                               ready  = false;
+
+                       if ( this._ready )
+                               this.unbind( 'ready', this._ready );
+
+                       this._ready = function() {
+                               ready = true;
+
+                               if ( loaded )
+                                       deferred.resolveWith( self );
+                       };
+
+                       this.bind( 'ready', this._ready );
+
+                       this.request = $.ajax( this.previewUrl(), {
+                               type: 'POST',
+                               data: this.query,
+                               xhrFields: {
+                                       withCredentials: true
+                               }
+                       } );
+
+                       this.request.fail( function() {
+                               deferred.rejectWith( self, [ 'request failure' ] );
+                       });
+
+                       this.request.done( function( response ) {
+                               var location = self.request.getResponseHeader('Location'),
+                                       signature = 'WP_CUSTOMIZER_SIGNATURE',
+                                       index;
+
+                               // Check if the location response header differs from the current URL.
+                               // If so, the request was redirected; try loading the requested page.
+                               if ( location && location != self.previewUrl() ) {
+                                       deferred.rejectWith( self, [ 'redirect', location ] );
+                                       return;
+                               }
+
+                               // Check if the user is not logged in.
+                               if ( '0' === response ) {
+                                       self.login( deferred );
+                                       return;
+                               }
+
+                               // Check for cheaters.
+                               if ( '-1' === response ) {
+                                       deferred.rejectWith( self, [ 'cheatin' ] );
+                                       return;
+                               }
+
+                               // Check for a signature in the request.
+                               index = response.lastIndexOf( signature );
+                               if ( -1 === index || index < response.lastIndexOf('</html>') ) {
+                                       deferred.rejectWith( self, [ 'unsigned' ] );
+                                       return;
+                               }
+
+                               // Strip the signature from the request.
+                               response = response.slice( 0, index ) + response.slice( index + signature.length );
+
+                               // Create the iframe and inject the html content.
+                               self.iframe = $('<iframe />').appendTo( self.previewer.container );
+
+                               // Bind load event after the iframe has been added to the page;
+                               // otherwise it will fire when injected into the DOM.
+                               self.iframe.one( 'load', function() {
+                                       loaded = true;
+
+                                       if ( ready ) {
+                                               deferred.resolveWith( self );
+                                       } else {
+                                               setTimeout( function() {
+                                                       deferred.rejectWith( self, [ 'ready timeout' ] );
+                                               }, self.sensitivity );
+                                       }
+                               });
+
+                               self.targetWindow( self.iframe[0].contentWindow );
+
+                               self.targetWindow().document.open();
+                               self.targetWindow().document.write( response );
+                               self.targetWindow().document.close();
+                       });
+               },
+
+               login: function( deferred ) {
+                       var self = this,
+                               reject;
+
+                       reject = function() {
+                               deferred.rejectWith( self, [ 'logged out' ] );
+                       };
+
+                       if ( this.triedLogin )
+                               return reject();
+
+                       // Check if we have an admin cookie.
+                       $.get( api.settings.url.ajax, {
+                               action: 'logged-in'
+                       }).fail( reject ).done( function( response ) {
+                               var iframe;
+
+                               if ( '1' !== response )
+                                       reject();
+
+                               iframe = $('<iframe src="' + self.previewUrl() + '" />').hide();
+                               iframe.appendTo( self.previewer.container );
+                               iframe.load( function() {
+                                       self.triedLogin = true;
+
+                                       iframe.remove();
+                                       self.run( deferred );
+                               });
+                       });
+               },
+
+               destroy: function() {
+                       api.Messenger.prototype.destroy.call( this );
+                       this.request.abort();
+
+                       if ( this.iframe )
+                               this.iframe.remove();
+
+                       delete this.request;
+                       delete this.iframe;
+                       delete this.targetWindow;
+               }
+       });
+
+       (function(){
+               var uuid = 0;
+               api.PreviewFrame.uuid = function() {
+                       return 'preview-' + uuid++;
+               };
+       }());
+
+       api.Previewer = api.Messenger.extend({
+               refreshBuffer: 250,
+
+               /**
+                * Requires params:
+                *  - container  - a selector or jQuery element
+                *  - previewUrl - the URL of preview frame
+                */
+               initialize: function( params, options ) {
+                       var self = this,
+                               rscheme = /^https?/,
+                               url;
+
+                       $.extend( this, options || {} );
+
+                       /*
+                        * Wrap this.refresh to prevent it from hammering the servers:
+                        *
+                        * If refresh is called once and no other refresh requests are
+                        * loading, trigger the request immediately.
+                        *
+                        * If refresh is called while another refresh request is loading,
+                        * debounce the refresh requests:
+                        * 1. Stop the loading request (as it is instantly outdated).
+                        * 2. Trigger the new request once refresh hasn't been called for
+                        *    self.refreshBuffer milliseconds.
+                        */
+                       this.refresh = (function( self ) {
+                               var refresh  = self.refresh,
+                                       callback = function() {
+                                               timeout = null;
+                                               refresh.call( self );
+                                       },
+                                       timeout;
+
+                               return function() {
+                                       if ( typeof timeout !== 'number' ) {
+                                               if ( self.loading ) {
+                                                       self.abort();
+                                               } else {
+                                                       return callback();
+                                               }
+                                       }
+
+                                       clearTimeout( timeout );
+                                       timeout = setTimeout( callback, self.refreshBuffer );
+                               };
+                       })( this );
+
+                       this.container   = api.ensure( params.container );
+                       this.allowedUrls = params.allowedUrls;
+
+                       params.url = window.location.href;
+
+                       api.Messenger.prototype.initialize.call( this, params );
+
+                       this.add( 'scheme', this.origin() ).link( this.origin ).setter( function( to ) {
+                               var match = to.match( rscheme );
+                               return match ? match[0] : '';
+                       });
+
+                       // Limit the URL to internal, front-end links.
+                       //
+                       // If the frontend and the admin are served from the same domain, load the
+                       // preview over ssl if the customizer is being loaded over ssl. This avoids
+                       // insecure content warnings. This is not attempted if the admin and frontend
+                       // are on different domains to avoid the case where the frontend doesn't have
+                       // ssl certs.
+
+                       this.add( 'previewUrl', params.previewUrl ).setter( function( to ) {
+                               var result;
+
+                               // Check for URLs that include "/wp-admin/" or end in "/wp-admin".
+                               // Strip hashes and query strings before testing.
+                               if ( /\/wp-admin(\/|$)/.test( to.replace(/[#?].*$/, '') ) )
+                                       return null;
+
+                               // Attempt to match the URL to the control frame's scheme
+                               // and check if it's allowed. If not, try the original URL.
+                               $.each([ to.replace( rscheme, self.scheme() ), to ], function( i, url ) {
+                                       $.each( self.allowedUrls, function( i, allowed ) {
+                                               if ( 0 === url.indexOf( allowed ) ) {
+                                                       result = url;
+                                                       return false;
+                                               }
+                                       });
+                                       if ( result )
+                                               return false;
+                               });
+
+                               // If we found a matching result, return it. If not, bail.
+                               return result ? result : null;
+                       });
+
+                       // Refresh the preview when the URL is changed (but not yet).
+                       this.previewUrl.bind( this.refresh );
+
+                       this.scroll = 0;
+                       this.bind( 'scroll', function( distance ) {
+                               this.scroll = distance;
+                       });
+
+                       // Update the URL when the iframe sends a URL message.
+                       this.bind( 'url', this.previewUrl );
+               },
+
+               query: function() {},
+
+               abort: function() {
+                       if ( this.loading ) {
+                               this.loading.destroy();
+                               delete this.loading;
+                       }
+               },
+
+               refresh: function() {
+                       var self = this;
+
+                       this.abort();
+
+                       this.loading = new api.PreviewFrame({
+                               url:        this.url(),
+                               previewUrl: this.previewUrl(),
+                               query:      this.query() || {},
+                               previewer:  this
+                       });
+
+                       this.loading.done( function() {
+                               // 'this' is the loading frame
+                               this.bind( 'synced', function() {
+                                       if ( self.preview )
+                                               self.preview.destroy();
+                                       self.preview = this;
+                                       delete self.loading;
+
+                                       self.targetWindow( this.targetWindow() );
+                                       self.channel( this.channel() );
+                               });
+
+                               this.send( 'sync', {
+                                       scroll:   self.scroll,
+                                       settings: api.get()
+                               });
+                       });
+
+                       this.loading.fail( function( reason, location ) {
+                               if ( 'redirect' === reason && location )
+                                       self.previewUrl( location );
+
+                               if ( 'logged out' === reason ) {
+                                       if ( self.preview ) {
+                                               self.preview.destroy();
+                                               delete self.preview;
+                                       }
+
+                                       self.login().done( self.refresh );
+                               }
+
+                               if ( 'cheatin' === reason )
+                                       self.cheatin();
+                       });
+               },
+
+               login: function() {
+                       var previewer = this,
+                               deferred, messenger, iframe;
+
+                       if ( this._login )
+                               return this._login;
+
+                       deferred = $.Deferred();
+                       this._login = deferred.promise();
+
+                       messenger = new api.Messenger({
+                               channel: 'login',
+                               url:     api.settings.url.login
+                       });
+
+                       iframe = $('<iframe src="' + api.settings.url.login + '" />').appendTo( this.container );
+
+                       messenger.targetWindow( iframe[0].contentWindow );
+
+                       messenger.bind( 'login', function() {
+                               iframe.remove();
+                               messenger.destroy();
+                               delete previewer._login;
+                               deferred.resolve();
+                       });
+
+                       return this._login;
+               },
+
+               cheatin: function() {
+                       $( document.body ).empty().addClass('cheatin').append( '<p>' + api.l10n.cheatin + '</p>' );
+               }
+       });
+
+       /* =====================================================================
+        * Ready.
+        * ===================================================================== */
+
+       api.controlConstructor = {
+               color:  api.ColorControl,
+               upload: api.UploadControl,
+               image:  api.ImageControl
+       };
+
+       $( function() {
+               api.settings = window._wpCustomizeSettings;
+               api.l10n = window._wpCustomizeControlsL10n;
+
+               // Check if we can run the customizer.
+               if ( ! api.settings )
+                       return;
+
+               // Redirect to the fallback preview if any incompatibilities are found.
+               if ( ! $.support.postMessage || ( ! $.support.cors && api.settings.isCrossDomain ) )
+                       return window.location = api.settings.url.fallback;
+
+               var body = $( document.body ),
+                       overlay = body.children('.wp-full-overlay'),
+                       query, previewer, parent;
+
+               // Prevent the form from saving when enter is pressed.
+               $('#customize-controls').on( 'keydown', function( e ) {
+                       if ( $( e.target ).is('textarea') )
+                               return;
+
+                       if ( 13 === e.which ) // Enter
+                               e.preventDefault();
+               });
+
+               // Initialize Previewer
+               previewer = new api.Previewer({
+                       container:   '#customize-preview',
+                       form:        '#customize-controls',
+                       previewUrl:  api.settings.url.preview,
+                       allowedUrls: api.settings.url.allowed
+               }, {
+                       query: function() {
+                               return {
+                                       wp_customize: 'on',
+                                       theme:        api.settings.theme.stylesheet,
+                                       customized:   JSON.stringify( api.get() )
+                               };
+                       },
+
+                       nonce: $('#_wpnonce').val(),
+
+                       save: function() {
+                               var self  = this,
+                                       query = $.extend( this.query(), {
+                                               action: 'customize_save',
+                                               nonce:  this.nonce
+                                       }),
+                                       request = $.post( api.settings.url.ajax, query );
+
+                               api.trigger( 'save', request );
+
+                               body.addClass('saving');
+
+                               request.always( function() {
+                                       body.removeClass('saving');
+                               });
+
+                               request.done( function( response ) {
+                                       // Check if the user is logged out.
+                                       if ( '0' === response ) {
+                                               self.preview.iframe.hide();
+                                               self.login().done( function() {
+                                                       self.save();
+                                                       self.preview.iframe.show();
+                                               });
+                                               return;
+                                       }
+
+                                       // Check for cheaters.
+                                       if ( '-1' === response ) {
+                                               self.cheatin();
+                                               return;
+                                       }
+
+                                       api.trigger( 'saved' );
+                               });
+                       }
+               });
+
+               $.each( api.settings.settings, function( id, data ) {
+                       api.create( id, id, data.value, {
+                               transport: data.transport,
+                               previewer: previewer
+                       } );
+               });
+
+               $.each( api.settings.controls, function( id, data ) {
+                       var constructor = api.controlConstructor[ data.type ] || api.Control,
+                               control;
+
+                       control = api.control.add( id, new constructor( id, {
+                               params: data,
+                               previewer: previewer
+                       } ) );
+               });
+
+               // Check if preview url is valid and load the preview frame.
+               if ( previewer.previewUrl() )
+                       previewer.refresh();
+               else
+                       previewer.previewUrl( api.settings.url.home );
+
+               // Save and activated states
+               (function() {
+                       var state = new api.Values(),
+                               saved = state.create('saved'),
+                               activated = state.create('activated');
+
+                       state.bind( 'change', function() {
+                               var save = $('#save'),
+                                       back = $('.back');
+
+                               if ( ! activated() ) {
+                                       save.val( api.l10n.activate ).prop( 'disabled', false );
+                                       back.text( api.l10n.cancel );
+
+                               } else if ( saved() ) {
+                                       save.val( api.l10n.saved ).prop( 'disabled', true );
+                                       back.text( api.l10n.close );
+
+                               } else {
+                                       save.val( api.l10n.save ).prop( 'disabled', false );
+                                       back.text( api.l10n.cancel );
+                               }
+                       });
+
+                       // Set default states.
+                       saved( true );
+                       activated( api.settings.theme.active );
+
+                       api.bind( 'change', function() {
+                               state('saved').set( false );
+                       });
+
+                       api.bind( 'saved', function() {
+                               state('saved').set( true );
+                               state('activated').set( true );
+                       });
+
+                       activated.bind( function( to ) {
+                               if ( to )
+                                       api.trigger( 'activated' );
+                       });
+
+                       // Expose states to the API.
+                       api.state = state;
+               }());
+
+               // Temporary accordion code.
+               $('.customize-section-title').click( function( event ) {
+                       var clicked = $( this ).parents( '.customize-section' );
+
+                       if ( clicked.hasClass('cannot-expand') )
+                               return;
+
+                       $( '.customize-section' ).not( clicked ).removeClass( 'open' );
+                       clicked.toggleClass( 'open' );
+                       event.preventDefault();
+               });
+
+               // Button bindings.
+               $('#save').click( function( event ) {
+                       previewer.save();
+                       event.preventDefault();
+               });
+
+               $('.collapse-sidebar').click( function( event ) {
+                       overlay.toggleClass( 'collapsed' ).toggleClass( 'expanded' );
+                       event.preventDefault();
+               });
+
+               // Create a potential postMessage connection with the parent frame.
+               parent = new api.Messenger({
+                       url: api.settings.url.parent,
+                       channel: 'loader'
+               });
+
+               // If we receive a 'back' event, we're inside an iframe.
+               // Send any clicks to the 'Return' link to the parent page.
+               parent.bind( 'back', function() {
+                       $('.back').on( 'click.back', function( event ) {
+                               event.preventDefault();
+                               parent.send( 'close' );
+                       });
+               });
+
+               // Pass events through to the parent.
+               api.bind( 'saved', function() {
+                       parent.send( 'saved' );
+               });
+
+               // When activated, let the loader handle redirecting the page.
+               // If no loader exists, redirect the page ourselves (if a url exists).
+               api.bind( 'activated', function() {
+                       if ( parent.targetWindow() )
+                               parent.send( 'activated', api.settings.url.activated );
+                       else if ( api.settings.url.activated )
+                               window.location = api.settings.url.activated;
+               });
+
+               // Initialize the connection with the parent frame.
+               parent.send( 'ready' );
+
+               // Control visibility for default controls
+               $.each({
+                       'background_image': {
+                               controls: [ 'background_repeat', 'background_position_x', 'background_attachment' ],
+                               callback: function( to ) { return !! to }
+                       },
+                       'show_on_front': {
+                               controls: [ 'page_on_front', 'page_for_posts' ],
+                               callback: function( to ) { return 'page' === to }
+                       },
+                       'header_textcolor': {
+                               controls: [ 'header_textcolor' ],
+                               callback: function( to ) { return 'blank' !== to }
+                       }
+               }, function( settingId, o ) {
+                       api( settingId, function( setting ) {
+                               $.each( o.controls, function( i, controlId ) {
+                                       api.control( controlId, function( control ) {
+                                               var visibility = function( to ) {
+                                                       control.container.toggle( o.callback( to ) );
+                                               };
+
+                                               visibility( setting.get() );
+                                               setting.bind( visibility );
+                                       });
+                               });
+                       });
+               });
+
+               // Juggle the two controls that use header_textcolor
+               api.control( 'display_header_text', function( control ) {
+                       var last = '';
+
+                       control.elements[0].unsync( api( 'header_textcolor' ) );
+
+                       control.element = new api.Element( control.container.find('input') );
+                       control.element.set( 'blank' !== control.setting() );
+
+                       control.element.bind( function( to ) {
+                               if ( ! to )
+                                       last = api( 'header_textcolor' ).get();
+
+                               control.setting.set( to ? last : 'blank' );
+                       });
+
+                       control.setting.bind( function( to ) {
+                               control.element.set( 'blank' !== to );
+                       });
+               });
+
+               // Handle header image data
+               api.control( 'header_image', function( control ) {
+                       control.setting.bind( function( to ) {
+                               if ( to === control.params.removed )
+                                       control.settings.data.set( false );
+                       });
+
+                       control.library.on( 'click', 'a', function( event ) {
+                               control.settings.data.set( $(this).data('customizeHeaderImageData') );
+                       });
+
+                       control.uploader.success = function( attachment ) {
+                               var data;
+
+                               api.ImageControl.prototype.success.call( control, attachment );
+
+                               data = {
+                                       attachment_id: attachment.id,
+                                       url:           attachment.url,
+                                       thumbnail_url: attachment.url,
+                                       height:        attachment.meta.height,
+                                       width:         attachment.meta.width
+                               };
+
+                               attachment.element.data( 'customizeHeaderImageData', data );
+                               control.settings.data.set( data );
+                       }
+               });
+
+               api.trigger( 'ready' );
+       });
+
+})( wp, jQuery );
\ No newline at end of file
diff --git a/wp-admin/js/customize-controls.js b/wp-admin/js/customize-controls.js
new file mode 100644 (file)
index 0000000..2fae4c6
--- /dev/null
@@ -0,0 +1 @@
+(function(a,c){var b=wp.customize;b.Setting=b.Value.extend({initialize:function(g,f,d){var e;b.Value.prototype.initialize.call(this,f,d);this.id=g;this.transport=this.transport||"refresh";this.bind(this.preview)},preview:function(){switch(this.transport){case"refresh":return this.previewer.refresh();case"postMessage":return this.previewer.send("setting",[this.id,this()])}}});b.Control=b.Class.extend({initialize:function(i,e){var g=this,d,h,f;this.params={};c.extend(this,e||{});this.id=i;this.selector="#customize-control-"+i.replace("]","").replace("[","-");this.container=c(this.selector);f=c.map(this.params.settings,function(j){return j});b.apply(b,f.concat(function(){var j;g.settings={};for(j in g.params.settings){g.settings[j]=b(g.params.settings[j])}g.setting=g.settings["default"]||null;g.ready()}));g.elements=[];d=this.container.find("[data-customize-setting-link]");h={};d.each(function(){var k=c(this),j;if(k.is(":radio")){j=k.prop("name");if(h[j]){return}h[j]=true;k=d.filter('[name="'+j+'"]')}b(k.data("customizeSettingLink"),function(m){var l=new b.Element(k);g.elements.push(l);l.sync(m);l.set(m())})})},ready:function(){},dropdownInit:function(){var e=this,d=this.container.find(".dropdown-status"),f=this.params,g=function(h){if(typeof h==="string"&&f.statuses&&f.statuses[h]){d.html(f.statuses[h]).show()}else{d.hide()}};this.container.on("click",".dropdown",function(h){h.preventDefault();e.container.toggleClass("open")});this.setting.bind(g);g(this.setting())}});b.ColorControl=b.Control.extend({ready:function(){var g=this,f,e,d,h,i;f=/^#([A-Fa-f0-9]{3}){0,2}$/;e=this.container.find(".dropdown-content");d=new b.Element(this.container.find(".color-picker-hex"));i=function(j){e.css("background",j);g.farbtastic.setColor(j)};this.farbtastic=c.farbtastic(this.container.find(".farbtastic-placeholder"),g.setting.set);d.sync(this.setting).validate=function(j){return f.test(j)?j:null};this.setting.bind(i);i(this.setting());this.dropdownInit()}});b.UploadControl=b.Control.extend({ready:function(){var d=this;this.params.removed=this.params.removed||"";this.success=c.proxy(this.success,this);this.uploader=c.extend({container:this.container,browser:this.container.find(".upload"),dropzone:this.container.find(".upload-dropzone"),success:this.success},this.uploader||{});if(this.uploader.supported){if(d.params.context){d.uploader.param("post_data[context]",this.params.context)}d.uploader.param("post_data[theme]",b.settings.theme.stylesheet)}this.uploader=new wp.Uploader(this.uploader);this.remover=this.container.find(".remove");this.remover.click(function(e){d.setting.set(d.params.removed);e.preventDefault()});this.removerVisibility=c.proxy(this.removerVisibility,this);this.setting.bind(this.removerVisibility);this.removerVisibility(this.setting.get())},success:function(d){this.setting.set(d.url)},removerVisibility:function(d){this.remover.toggle(d!=this.params.removed)}});b.ImageControl=b.UploadControl.extend({ready:function(){var e=this,d;this.uploader={init:function(f){var h,g;if(this.supports.dragdrop){return}h=e.container.find(".upload-fallback");g=h.children().detach();this.browser.detach().empty().append(g);h.append(this.browser).show()}};b.UploadControl.prototype.ready.call(this);this.thumbnail=this.container.find(".preview-thumbnail img");this.thumbnailSrc=c.proxy(this.thumbnailSrc,this);this.setting.bind(this.thumbnailSrc);this.library=this.container.find(".library");this.tabs={};d=this.library.find(".library-content");this.library.children("ul").children("li").each(function(){var g=c(this),h=g.data("customizeTab"),f=d.filter('[data-customize-tab="'+h+'"]');e.tabs[h]={both:g.add(f),link:g,panel:f}});this.selected=this.tabs[d.first().data("customizeTab")];this.selected.both.addClass("library-selected");this.library.children("ul").on("click","li",function(g){var h=c(this).data("customizeTab"),f=e.tabs[h];g.preventDefault();if(f.link.hasClass("library-selected")){return}e.selected.both.removeClass("library-selected");e.selected=f;e.selected.both.addClass("library-selected")});this.library.on("click","a",function(f){var g=c(this).data("customizeImageValue");if(g){e.setting.set(g);f.preventDefault()}});if(this.tabs.uploaded){this.tabs.uploaded.target=this.library.find(".uploaded-target");if(!this.tabs.uploaded.panel.find(".thumbnail").length){this.tabs.uploaded.both.addClass("hidden")}}this.dropdownInit()},success:function(d){b.UploadControl.prototype.success.call(this,d);if(this.tabs.uploaded&&this.tabs.uploaded.target.length){this.tabs.uploaded.both.removeClass("hidden");d.element=c('<a href="#" class="thumbnail"></a>').data("customizeImageValue",d.url).append('<img src="'+d.url+'" />').appendTo(this.tabs.uploaded.target)}},thumbnailSrc:function(d){if(/^(https?:)?\/\//.test(d)){this.thumbnail.prop("src",d).show()}else{this.thumbnail.hide()}}});b.defaultConstructor=b.Setting;b.control=new b.Values({defaultConstructor:b.Control});b.PreviewFrame=b.Messenger.extend({sensitivity:2000,initialize:function(g,f){var e=c.Deferred(),d=this;e.promise(this);this.previewer=g.previewer;c.extend(g,{channel:b.PreviewFrame.uuid()});b.Messenger.prototype.initialize.call(this,g,f);this.add("previewUrl",g.previewUrl);this.query=c.extend(g.query||{},{customize_messenger_channel:this.channel()});this.run(e)},run:function(e){var d=this,f=false,g=false;if(this._ready){this.unbind("ready",this._ready)}this._ready=function(){g=true;if(f){e.resolveWith(d)}};this.bind("ready",this._ready);this.request=c.ajax(this.previewUrl(),{type:"POST",data:this.query,xhrFields:{withCredentials:true}});this.request.fail(function(){e.rejectWith(d,["request failure"])});this.request.done(function(j){var i=d.request.getResponseHeader("Location"),h="WP_CUSTOMIZER_SIGNATURE",k;if(i&&i!=d.previewUrl()){e.rejectWith(d,["redirect",i]);return}if("0"===j){d.login(e);return}if("-1"===j){e.rejectWith(d,["cheatin"]);return}k=j.lastIndexOf(h);if(-1===k||k<j.lastIndexOf("</html>")){e.rejectWith(d,["unsigned"]);return}j=j.slice(0,k)+j.slice(k+h.length);d.iframe=c("<iframe />").appendTo(d.previewer.container);d.iframe.one("load",function(){f=true;if(g){e.resolveWith(d)}else{setTimeout(function(){e.rejectWith(d,["ready timeout"])},d.sensitivity)}});d.targetWindow(d.iframe[0].contentWindow);d.targetWindow().document.open();d.targetWindow().document.write(j);d.targetWindow().document.close()})},login:function(e){var d=this,f;f=function(){e.rejectWith(d,["logged out"])};if(this.triedLogin){return f()}c.get(b.settings.url.ajax,{action:"logged-in"}).fail(f).done(function(g){var h;if("1"!==g){f()}h=c('<iframe src="'+d.previewUrl()+'" />').hide();h.appendTo(d.previewer.container);h.load(function(){d.triedLogin=true;h.remove();d.run(e)})})},destroy:function(){b.Messenger.prototype.destroy.call(this);this.request.abort();if(this.iframe){this.iframe.remove()}delete this.request;delete this.iframe;delete this.targetWindow}});(function(){var d=0;b.PreviewFrame.uuid=function(){return"preview-"+d++}}());b.Previewer=b.Messenger.extend({refreshBuffer:250,initialize:function(h,f){var d=this,g=/^https?/,e;c.extend(this,f||{});this.refresh=(function(i){var j=i.refresh,l=function(){k=null;j.call(i)},k;return function(){if(typeof k!=="number"){if(i.loading){i.abort()}else{return l()}}clearTimeout(k);k=setTimeout(l,i.refreshBuffer)}})(this);this.container=b.ensure(h.container);this.allowedUrls=h.allowedUrls;h.url=window.location.href;b.Messenger.prototype.initialize.call(this,h);this.add("scheme",this.origin()).link(this.origin).setter(function(j){var i=j.match(g);return i?i[0]:""});this.add("previewUrl",h.previewUrl).setter(function(j){var i;if(/\/wp-admin(\/|$)/.test(j.replace(/[#?].*$/,""))){return null}c.each([j.replace(g,d.scheme()),j],function(l,k){c.each(d.allowedUrls,function(m,n){if(0===k.indexOf(n)){i=k;return false}});if(i){return false}});return i?i:null});this.previewUrl.bind(this.refresh);this.scroll=0;this.bind("scroll",function(i){this.scroll=i});this.bind("url",this.previewUrl)},query:function(){},abort:function(){if(this.loading){this.loading.destroy();delete this.loading}},refresh:function(){var d=this;this.abort();this.loading=new b.PreviewFrame({url:this.url(),previewUrl:this.previewUrl(),query:this.query()||{},previewer:this});this.loading.done(function(){this.bind("synced",function(){if(d.preview){d.preview.destroy()}d.preview=this;delete d.loading;d.targetWindow(this.targetWindow());d.channel(this.channel())});this.send("sync",{scroll:d.scroll,settings:b.get()})});this.loading.fail(function(f,e){if("redirect"===f&&e){d.previewUrl(e)}if("logged out"===f){if(d.preview){d.preview.destroy();delete d.preview}d.login().done(d.refresh)}if("cheatin"===f){d.cheatin()}})},login:function(){var g=this,d,f,e;if(this._login){return this._login}d=c.Deferred();this._login=d.promise();f=new b.Messenger({channel:"login",url:b.settings.url.login});e=c('<iframe src="'+b.settings.url.login+'" />').appendTo(this.container);f.targetWindow(e[0].contentWindow);f.bind("login",function(){e.remove();f.destroy();delete g._login;d.resolve()});return this._login},cheatin:function(){c(document.body).empty().addClass("cheatin").append("<p>"+b.l10n.cheatin+"</p>")}});b.controlConstructor={color:b.ColorControl,upload:b.UploadControl,image:b.ImageControl};c(function(){b.settings=window._wpCustomizeSettings;b.l10n=window._wpCustomizeControlsL10n;if(!b.settings){return}if(!c.support.postMessage||(!c.support.cors&&b.settings.isCrossDomain)){return window.location=b.settings.url.fallback}var d=c(document.body),e=d.children(".wp-full-overlay"),g,h,f;c("#customize-controls").on("keydown",function(i){if(c(i.target).is("textarea")){return}if(13===i.which){i.preventDefault()}});h=new b.Previewer({container:"#customize-preview",form:"#customize-controls",previewUrl:b.settings.url.preview,allowedUrls:b.settings.url.allowed},{query:function(){return{wp_customize:"on",theme:b.settings.theme.stylesheet,customized:JSON.stringify(b.get())}},nonce:c("#_wpnonce").val(),save:function(){var i=this,k=c.extend(this.query(),{action:"customize_save",nonce:this.nonce}),j=c.post(b.settings.url.ajax,k);b.trigger("save",j);d.addClass("saving");j.always(function(){d.removeClass("saving")});j.done(function(l){if("0"===l){i.preview.iframe.hide();i.login().done(function(){i.save();i.preview.iframe.show()});return}if("-1"===l){i.cheatin();return}b.trigger("saved")})}});c.each(b.settings.settings,function(j,i){b.create(j,j,i.value,{transport:i.transport,previewer:h})});c.each(b.settings.controls,function(l,j){var i=b.controlConstructor[j.type]||b.Control,k;k=b.control.add(l,new i(l,{params:j,previewer:h}))});if(h.previewUrl()){h.refresh()}else{h.previewUrl(b.settings.url.home)}(function(){var k=new b.Values(),j=k.create("saved"),i=k.create("activated");k.bind("change",function(){var m=c("#save"),l=c(".back");if(!i()){m.val(b.l10n.activate).prop("disabled",false);l.text(b.l10n.cancel)}else{if(j()){m.val(b.l10n.saved).prop("disabled",true);l.text(b.l10n.close)}else{m.val(b.l10n.save).prop("disabled",false);l.text(b.l10n.cancel)}}});j(true);i(b.settings.theme.active);b.bind("change",function(){k("saved").set(false)});b.bind("saved",function(){k("saved").set(true);k("activated").set(true)});i.bind(function(l){if(l){b.trigger("activated")}});b.state=k}());c(".customize-section-title").click(function(j){var i=c(this).parents(".customize-section");if(i.hasClass("cannot-expand")){return}c(".customize-section").not(i).removeClass("open");i.toggleClass("open");j.preventDefault()});c("#save").click(function(i){h.save();i.preventDefault()});c(".collapse-sidebar").click(function(i){e.toggleClass("collapsed").toggleClass("expanded");i.preventDefault()});f=new b.Messenger({url:b.settings.url.parent,channel:"loader"});f.bind("back",function(){c(".back").on("click.back",function(i){i.preventDefault();f.send("close")})});b.bind("saved",function(){f.send("saved")});b.bind("activated",function(){if(f.targetWindow()){f.send("activated",b.settings.url.activated)}else{if(b.settings.url.activated){window.location=b.settings.url.activated}}});f.send("ready");c.each({background_image:{controls:["background_repeat","background_position_x","background_attachment"],callback:function(i){return !!i}},show_on_front:{controls:["page_on_front","page_for_posts"],callback:function(i){return"page"===i}},header_textcolor:{controls:["header_textcolor"],callback:function(i){return"blank"!==i}}},function(i,j){b(i,function(k){c.each(j.controls,function(l,m){b.control(m,function(o){var n=function(p){o.container.toggle(j.callback(p))};n(k.get());k.bind(n)})})})});b.control("display_header_text",function(j){var i="";j.elements[0].unsync(b("header_textcolor"));j.element=new b.Element(j.container.find("input"));j.element.set("blank"!==j.setting());j.element.bind(function(k){if(!k){i=b("header_textcolor").get()}j.setting.set(k?i:"blank")});j.setting.bind(function(k){j.element.set("blank"!==k)})});b.control("header_image",function(i){i.setting.bind(function(j){if(j===i.params.removed){i.settings.data.set(false)}});i.library.on("click","a",function(j){i.settings.data.set(c(this).data("customizeHeaderImageData"))});i.uploader.success=function(k){var j;b.ImageControl.prototype.success.call(i,k);j={attachment_id:k.id,url:k.url,thumbnail_url:k.url,height:k.meta.height,width:k.meta.width};k.element.data("customizeHeaderImageData",j);i.settings.data.set(j)}});b.trigger("ready")})})(wp,jQuery);
\ No newline at end of file
index 62ff7e34720f767f1b3c8af755c758ec684fa1da..6709ba7bde6316beb2743ebbf496286ea1776a16 100644 (file)
@@ -22,7 +22,6 @@ jQuery(document).ready( function($) {
                $('#wp_welcome_panel-hide').prop('checked', false);
        });
 
                $('#wp_welcome_panel-hide').prop('checked', false);
        });
 
-
        welcomePanelHide.click( function() {
                welcomePanel.toggleClass('hidden', ! this.checked );
                updateWelcomePanel( this.checked ? 1 : 0 );
        welcomePanelHide.click( function() {
                welcomePanel.toggleClass('hidden', ! this.checked );
                updateWelcomePanel( this.checked ? 1 : 0 );
@@ -42,7 +41,7 @@ jQuery(document).ready( function($) {
                        if ( e.length ) {
                                p = e.parent();
                                setTimeout( function(){
                        if ( e.length ) {
                                p = e.parent();
                                setTimeout( function(){
-                                       p.load( ajaxurl.replace( '/admin-ajax.php', '' ) + '/index-extra.php?jax=' + id, '', function() {
+                                       p.load( ajaxurl + '?action=dashboard-widgets&widget=' + id, '', function() {
                                                p.hide().slideDown('normal', function(){
                                                        $(this).css('display', '');
                                                });
                                                p.hide().slideDown('normal', function(){
                                                        $(this).css('display', '');
                                                });
index f9a4f63fd2973a30b16080b4ad9f4fd567aa68a2..c44eed79d1a98f2fe65c5b1dd9deb86827624089 100644 (file)
@@ -1 +1 @@
-var ajaxWidgets,ajaxPopulateWidgets,quickPressLoad;jQuery(document).ready(function(c){var d=c("#welcome-panel"),a=c("#wp_welcome_panel-hide"),b=function(e){c.post(ajaxurl,{action:"update-welcome-panel",visible:e,welcomepanelnonce:c("#welcomepanelnonce").val()})};if(d.hasClass("hidden")&&a.prop("checked")){d.removeClass("hidden")}c(".welcome-panel-close, .welcome-panel-dismiss a",d).click(function(f){f.preventDefault();d.addClass("hidden");b(0);c("#wp_welcome_panel-hide").prop("checked",false)});a.click(function(){d.toggleClass("hidden",!this.checked);b(this.checked?1:0)});ajaxWidgets=["dashboard_incoming_links","dashboard_primary","dashboard_secondary","dashboard_plugins"];ajaxPopulateWidgets=function(f){function e(g,k){var j,h=c("#"+k+" div.inside:visible").find(".widget-loading");if(h.length){j=h.parent();setTimeout(function(){j.load(ajaxurl.replace("/admin-ajax.php","")+"/index-extra.php?jax="+k,"",function(){j.hide().slideDown("normal",function(){c(this).css("display","")})})},g*500)}}if(f){f=f.toString();if(c.inArray(f,ajaxWidgets)!=-1){e(0,f)}}else{c.each(ajaxWidgets,e)}};ajaxPopulateWidgets();postboxes.add_postbox_toggles(pagenow,{pbshow:ajaxPopulateWidgets});quickPressLoad=function(){var e=c("#quickpost-action"),f;f=c("#quick-press").submit(function(){c("#dashboard_quick_press #publishing-action img.waiting").css("visibility","visible");c('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop("disabled",true);if("post"==e.val()){e.val("post-quickpress-publish")}c("#dashboard_quick_press div.inside").load(f.attr("action"),f.serializeArray(),function(){c("#dashboard_quick_press #publishing-action img.waiting").css("visibility","hidden");c('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop("disabled",false);c("#dashboard_quick_press ul").next("p").remove();c("#dashboard_quick_press ul").find("li").each(function(){c("#dashboard_recent_drafts ul").prepend(this)}).end().remove();quickPressLoad()});return false});c("#publish").click(function(){e.val("post-quickpress-publish")})};quickPressLoad()});
\ No newline at end of file
+var ajaxWidgets,ajaxPopulateWidgets,quickPressLoad;jQuery(document).ready(function(c){var d=c("#welcome-panel"),a=c("#wp_welcome_panel-hide"),b=function(e){c.post(ajaxurl,{action:"update-welcome-panel",visible:e,welcomepanelnonce:c("#welcomepanelnonce").val()})};if(d.hasClass("hidden")&&a.prop("checked")){d.removeClass("hidden")}c(".welcome-panel-close, .welcome-panel-dismiss a",d).click(function(f){f.preventDefault();d.addClass("hidden");b(0);c("#wp_welcome_panel-hide").prop("checked",false)});a.click(function(){d.toggleClass("hidden",!this.checked);b(this.checked?1:0)});ajaxWidgets=["dashboard_incoming_links","dashboard_primary","dashboard_secondary","dashboard_plugins"];ajaxPopulateWidgets=function(f){function e(g,k){var j,h=c("#"+k+" div.inside:visible").find(".widget-loading");if(h.length){j=h.parent();setTimeout(function(){j.load(ajaxurl+"?action=dashboard-widgets&widget="+k,"",function(){j.hide().slideDown("normal",function(){c(this).css("display","")})})},g*500)}}if(f){f=f.toString();if(c.inArray(f,ajaxWidgets)!=-1){e(0,f)}}else{c.each(ajaxWidgets,e)}};ajaxPopulateWidgets();postboxes.add_postbox_toggles(pagenow,{pbshow:ajaxPopulateWidgets});quickPressLoad=function(){var e=c("#quickpost-action"),f;f=c("#quick-press").submit(function(){c("#dashboard_quick_press #publishing-action img.waiting").css("visibility","visible");c('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop("disabled",true);if("post"==e.val()){e.val("post-quickpress-publish")}c("#dashboard_quick_press div.inside").load(f.attr("action"),f.serializeArray(),function(){c("#dashboard_quick_press #publishing-action img.waiting").css("visibility","hidden");c('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop("disabled",false);c("#dashboard_quick_press ul").next("p").remove();c("#dashboard_quick_press ul").find("li").each(function(){c("#dashboard_recent_drafts ul").prepend(this)}).end().remove();quickPressLoad()});return false});c("#publish").click(function(){e.val("post-quickpress-publish")})};quickPressLoad()});
\ No newline at end of file
index 634275a7a460a174f0b33edeed69f10fa8b3702e..b35337786768296b25b89f5c56fa6b5beb49df59 100644 (file)
@@ -1,5 +1,7 @@
-var theList, theExtraList, toggleWithKeyboard = false, getCount, updateCount, updatePending, dashboardTotals;
+var theList, theExtraList, toggleWithKeyboard = false;
+
 (function($) {
 (function($) {
+var getCount, updateCount, updatePending, dashboardTotals;
 
 setCommentsList = function() {
        var totalInput, perPageInput, pageInput, lastConfidentTime = 0, dimAfter, delBefore, updateTotalCount, delAfter, refillTheExtraList;
 
 setCommentsList = function() {
        var totalInput, perPageInput, pageInput, lastConfidentTime = 0, dimAfter, delBefore, updateTotalCount, delAfter, refillTheExtraList;
@@ -27,25 +29,8 @@ setCommentsList = function() {
                        c.find('div.comment_status').html('1');
                }
 
                        c.find('div.comment_status').html('1');
                }
 
-               $('span.pending-count').each( function() {
-                       var a = $(this), n, dif;
-
-                       n = a.html().replace(/[^0-9]+/g, '');
-                       n = parseInt(n, 10);
-
-                       if ( isNaN(n) )
-                               return;
-
-                       dif = $('#' + settings.element).is('.' + settings.dimClass) ? 1 : -1;
-                       n = n + dif;
-
-                       if ( n < 0 )
-                               n = 0;
-
-                       a.closest('.awaiting-mod')[ 0 == n ? 'addClass' : 'removeClass' ]('count-0');
-                       updateCount(a, n);
-                       dashboardTotals();
-               });
+               var diff = $('#' + settings.element).is('.' + settings.dimClass) ? 1 : -1;
+               updatePending( diff );
        };
 
        // Send current total, page, per_page and url
        };
 
        // Send current total, page, per_page and url
@@ -84,7 +69,7 @@ setCommentsList = function() {
 
                        el.before(h);
 
 
                        el.before(h);
 
-                       $('strong', '#undo-' + id).text(author + ' ');
+                       $('strong', '#undo-' + id).text(author);
                        a = $('.undo a', '#undo-' + id);
                        a.attr('href', 'comment.php?action=un' + action + 'comment&c=' + id + '&_wpnonce=' + settings.data._ajax_nonce);
                        a.attr('class', 'delete:the-comment-list:comment-' + id + '::un' + action + '=1 vim-z vim-destructive');
                        a = $('.undo a', '#undo-' + id);
                        a.attr('href', 'comment.php?action=un' + action + 'comment&c=' + id + '&_wpnonce=' + settings.data._ajax_nonce);
                        a.attr('class', 'delete:the-comment-list:comment-' + id + '::un' + action + '=1 vim-z vim-destructive');
@@ -129,7 +114,6 @@ setCommentsList = function() {
                apprN = totalN - getCount( $('span.pending-count', dash) ) - getCount( $('span.spam-count', dash) );
                updateCount(total, totalN);
                updateCount(appr, apprN);
                apprN = totalN - getCount( $('span.pending-count', dash) ) - getCount( $('span.spam-count', dash) );
                updateCount(total, totalN);
                updateCount(appr, apprN);
-
        };
 
        getCount = function(el) {
        };
 
        getCount = function(el) {
@@ -154,17 +138,16 @@ setCommentsList = function() {
                el.html(n);
        };
 
                el.html(n);
        };
 
-       updatePending = function(n) {
-               $('span.pending-count').each( function() {
-                       var a = $(this);
-
-                       if ( n < 0 )
+       updatePending = function( diff ) {
+               $('span.pending-count').each(function() {
+                       var a = $(this), n = getCount(a) + diff;
+                       if ( n < 1 )
                                n = 0;
                                n = 0;
-
                        a.closest('.awaiting-mod')[ 0 == n ? 'addClass' : 'removeClass' ]('count-0');
                        a.closest('.awaiting-mod')[ 0 == n ? 'addClass' : 'removeClass' ]('count-0');
-                       updateCount(a, n);
-                       dashboardTotals();
+                       updateCount( a, n );
                });
                });
+
+               dashboardTotals();
        };
 
        // In admin-ajax.php, we send back the unix time stamp instead of 1 on success
        };
 
        // In admin-ajax.php, we send back the unix time stamp instead of 1 on success
@@ -193,15 +176,17 @@ setCommentsList = function() {
                else
                        spam = getUpdate('spam');
 
                else
                        spam = getUpdate('spam');
 
-               pending = getCount( $('span.pending-count').eq(0) );
-
-               if ( $(settings.target).parent().is('span.unapprove') || ( ( untrash || unspam ) && unapproved ) ) { // we "deleted" an approved comment from the approved list by clicking "Unapprove"
-                       pending = pending + 1;
-               } else if ( unapproved ) { // we deleted a formerly unapproved comment
-                       pending = pending - 1;
+               if ( $(settings.target).parent().is('span.unapprove') || ( ( untrash || unspam ) && unapproved ) ) {
+                       // a comment was 'deleted' from another list (e.g. approved, spam, trash) and moved to pending,
+                       // or a trash/spam of a pending comment was undone
+                       pending = 1;
+               } else if ( unapproved ) {
+                       // a pending comment was trashed/spammed/approved
+                       pending = -1;
                }
 
                }
 
-               updatePending(pending);
+               if ( pending )
+                       updatePending(pending);
 
                $('span.spam-count').each( function() {
                        var a = $(this), n = getCount(a) + spam;
 
                $('span.spam-count').each( function() {
                        var a = $(this), n = getCount(a) + spam;
@@ -239,7 +224,6 @@ setCommentsList = function() {
                        }
                }
 
                        }
                }
 
-
                if ( ! theExtraList || theExtraList.size() == 0 || theExtraList.children().size() == 0 || untrash || unspam ) {
                        return;
                }
                if ( ! theExtraList || theExtraList.size() == 0 || theExtraList.children().size() == 0 || untrash || unspam ) {
                        return;
                }
@@ -362,61 +346,72 @@ commentReply = {
        },
 
        close : function() {
        },
 
        close : function() {
-               var c;
+               var c, replyrow = $('#replyrow');
 
 
-               if ( this.cid ) {
+               // replyrow is not showing?
+               if ( replyrow.parent().is('#com-reply') )
+                       return;
+
+               if ( this.cid && this.act == 'edit-comment' ) {
                        c = $('#comment-' + this.cid);
                        c = $('#comment-' + this.cid);
+                       c.fadeIn(300, function(){ c.show() }).css('backgroundColor', '');
+               }
 
 
-                       if ( typeof QTags != 'undefined' )
-                               QTags.closeAllTags('replycontent');
+               // reset the Quicktags buttons
+               if ( typeof QTags != 'undefined' )
+                       QTags.closeAllTags('replycontent');
 
 
-                       if ( this.act == 'edit-comment' )
-                               c.fadeIn(300, function(){ c.show() }).css('backgroundColor', '');
+               $('#add-new-comment').css('display', '');
 
 
-                       $('#replyrow').hide();
-                       $('#com-reply').append( $('#replyrow') );
-                       $('#replycontent').val('');
-                       $('input', '#edithead').val('');
-                       $('.error', '#replysubmit').html('').hide();
-                       $('.waiting', '#replysubmit').hide();
-                       $('#replycontent').css('height', '');
+               replyrow.hide();
+               $('#com-reply').append( replyrow );
+               $('#replycontent').css('height', '').val('');
+               $('#edithead input').val('');
+               $('.error', replyrow).html('').hide();
+               $('.waiting', replyrow).hide();
 
 
-                       this.cid = '';
-               }
+               this.cid = '';
        },
 
        },
 
-       open : function(id, p, a) {
-               var t = this, editRow, rowData, act, c = $('#comment-' + id), h = c.height(), replyButton;
+       open : function(comment_id, post_id, action) {
+               var t = this, editRow, rowData, act, c = $('#comment-' + comment_id), h = c.height(), replyButton;
 
                t.close();
 
                t.close();
-               t.cid = id;
+               t.cid = comment_id;
 
                editRow = $('#replyrow');
 
                editRow = $('#replyrow');
-               rowData = $('#inline-'+id);
-               act = t.act = (a == 'edit') ? 'edit-comment' : 'replyto-comment';
+               rowData = $('#inline-'+comment_id);
+               action = action || 'replyto';
+               act = 'edit' == action ? 'edit' : 'replyto';
+               act = t.act = act + '-comment';
 
                $('#action', editRow).val(act);
 
                $('#action', editRow).val(act);
-               $('#comment_post_ID', editRow).val(p);
-               $('#comment_ID', editRow).val(id);
+               $('#comment_post_ID', editRow).val(post_id);
+               $('#comment_ID', editRow).val(comment_id);
 
                if ( h > 120 )
                        $('#replycontent', editRow).css('height', (35+h) + 'px');
 
 
                if ( h > 120 )
                        $('#replycontent', editRow).css('height', (35+h) + 'px');
 
-               if ( a == 'edit' ) {
+               if ( action == 'edit' ) {
                        $('#author', editRow).val( $('div.author', rowData).text() );
                        $('#author-email', editRow).val( $('div.author-email', rowData).text() );
                        $('#author-url', editRow).val( $('div.author-url', rowData).text() );
                        $('#status', editRow).val( $('div.comment_status', rowData).text() );
                        $('#replycontent', editRow).val( $('textarea.comment', rowData).val() );
                        $('#edithead, #savebtn', editRow).show();
                        $('#author', editRow).val( $('div.author', rowData).text() );
                        $('#author-email', editRow).val( $('div.author-email', rowData).text() );
                        $('#author-url', editRow).val( $('div.author-url', rowData).text() );
                        $('#status', editRow).val( $('div.comment_status', rowData).text() );
                        $('#replycontent', editRow).val( $('textarea.comment', rowData).val() );
                        $('#edithead, #savebtn', editRow).show();
-                       $('#replyhead, #replybtn', editRow).hide();
+                       $('#replyhead, #replybtn, #addhead, #addbtn', editRow).hide();
 
                        c.after( editRow ).fadeOut('fast', function(){
                                $('#replyrow').fadeIn(300, function(){ $(this).show() });
                        });
 
                        c.after( editRow ).fadeOut('fast', function(){
                                $('#replyrow').fadeIn(300, function(){ $(this).show() });
                        });
-               } else {
-                       replyButton = $('#replybtn', editRow);
-                       $('#edithead, #savebtn', editRow).hide();
+               } else if ( action == 'add' ) {
+                       $('#addhead, #addbtn', editRow).show();
+                       $('#replyhead, #replybtn, #edithead, #editbtn', editRow).hide();
+                       $('#the-comment-list').prepend(editRow);
+                       $('#replyrow').fadeIn(300);
+               } else {
+                       replyButton = $('#replybtn', editRow);
+                       $('#edithead, #savebtn, #addhead, #addbtn', editRow).hide();
                        $('#replyhead, #replybtn', editRow).show();
                        c.after(editRow);
 
                        $('#replyhead, #replybtn', editRow).show();
                        c.after(editRow);
 
@@ -459,7 +454,8 @@ commentReply = {
                $('#replysubmit .waiting').show();
 
                $('#replyrow input').not(':button').each(function() {
                $('#replysubmit .waiting').show();
 
                $('#replyrow input').not(':button').each(function() {
-                       post[ $(this).attr('name') ] = $(this).val();
+                       var t = $(this);
+                       post[ t.attr('name') ] = t.val();
                });
 
                post.content = $('#replycontent').val();
                });
 
                post.content = $('#replycontent').val();
@@ -500,12 +496,13 @@ commentReply = {
                r = r.responses[0];
                c = r.data;
                id = '#comment-' + r.id;
                r = r.responses[0];
                c = r.data;
                id = '#comment-' + r.id;
+
                if ( 'edit-comment' == t.act )
                        $(id).remove();
 
                if ( r.supplemental.parent_approved ) {
                        pid = $('#comment-' + r.supplemental.parent_approved);
                if ( 'edit-comment' == t.act )
                        $(id).remove();
 
                if ( r.supplemental.parent_approved ) {
                        pid = $('#comment-' + r.supplemental.parent_approved);
-                       updatePending( getCount( $('span.pending-count').eq(0) ) - 1 );
+                       updatePending( -1 );
 
                        if ( this.comments_listing == 'moderated' ) {
                                pid.animate( { 'backgroundColor':'#CCEEBB' }, 400, function(){
 
                        if ( this.comments_listing == 'moderated' ) {
                                pid.animate( { 'backgroundColor':'#CCEEBB' }, 400, function(){
@@ -544,6 +541,16 @@ commentReply = {
                if ( er )
                        $('#replysubmit .error').html(er).show();
 
                if ( er )
                        $('#replysubmit .error').html(er).show();
 
+       },
+
+       addcomment: function(post_id) {
+               var t = this;
+
+               $('#add-new-comment').fadeOut(200, function(){
+                       t.open(0, post_id, 'add');
+                       $('table.comments-box').css('display', '');
+                       $('#no-comments').remove();
+               });
        }
 };
 
        }
 };
 
@@ -554,7 +561,6 @@ $(document).ready(function(){
        commentReply.init();
        $(document).delegate('span.delete a.delete', 'click', function(){return false;});
 
        commentReply.init();
        $(document).delegate('span.delete a.delete', 'click', function(){return false;});
 
-
        if ( typeof $.table_hotkeys != 'undefined' ) {
                make_hotkeys_redirect = function(which) {
                        return function() {
        if ( typeof $.table_hotkeys != 'undefined' ) {
                make_hotkeys_redirect = function(which) {
                        return function() {
index 314c532c9ea1051c217a1245cfca7630707b9fdd..6171510f8f46d1ad17e17bc9a74553308aa2cbc1 100644 (file)
@@ -1 +1 @@
-var theList,theExtraList,toggleWithKeyboard=false,getCount,updateCount,updatePending,dashboardTotals;(function($){setCommentsList=function(){var totalInput,perPageInput,pageInput,lastConfidentTime=0,dimAfter,delBefore,updateTotalCount,delAfter,refillTheExtraList;totalInput=$('input[name="_total"]',"#comments-form");perPageInput=$('input[name="_per_page"]',"#comments-form");pageInput=$('input[name="_page"]',"#comments-form");dimAfter=function(r,settings){var c=$("#"+settings.element),editRow,replyID,replyButton;editRow=$("#replyrow");replyID=$("#comment_ID",editRow).val();replyButton=$("#replybtn",editRow);if(c.is(".unapproved")){if(settings.data.id==replyID){replyButton.text(adminCommentsL10n.replyApprove)}c.find("div.comment_status").html("0")}else{if(settings.data.id==replyID){replyButton.text(adminCommentsL10n.reply)}c.find("div.comment_status").html("1")}$("span.pending-count").each(function(){var a=$(this),n,dif;n=a.html().replace(/[^0-9]+/g,"");n=parseInt(n,10);if(isNaN(n)){return}dif=$("#"+settings.element).is("."+settings.dimClass)?1:-1;n=n+dif;if(n<0){n=0}a.closest(".awaiting-mod")[0==n?"addClass":"removeClass"]("count-0");updateCount(a,n);dashboardTotals()})};delBefore=function(settings,list){var cl=$(settings.target).attr("class"),id,el,n,h,a,author,action=false;settings.data._total=totalInput.val()||0;settings.data._per_page=perPageInput.val()||0;settings.data._page=pageInput.val()||0;settings.data._url=document.location.href;settings.data.comment_status=$('input[name="comment_status"]',"#comments-form").val();if(cl.indexOf(":trash=1")!=-1){action="trash"}else{if(cl.indexOf(":spam=1")!=-1){action="spam"}}if(action){id=cl.replace(/.*?comment-([0-9]+).*/,"$1");el=$("#comment-"+id);note=$("#"+action+"-undo-holder").html();el.find(".check-column :checkbox").prop("checked",false);if(el.siblings("#replyrow").length&&commentReply.cid==id){commentReply.close()}if(el.is("tr")){n=el.children(":visible").length;author=$(".author strong",el).text();h=$('<tr id="undo-'+id+'" class="undo un'+action+'" style="display:none;"><td colspan="'+n+'">'+note+"</td></tr>")}else{author=$(".comment-author",el).text();h=$('<div id="undo-'+id+'" style="display:none;" class="undo un'+action+'">'+note+"</div>")}el.before(h);$("strong","#undo-"+id).text(author+" ");a=$(".undo a","#undo-"+id);a.attr("href","comment.php?action=un"+action+"comment&c="+id+"&_wpnonce="+settings.data._ajax_nonce);a.attr("class","delete:the-comment-list:comment-"+id+"::un"+action+"=1 vim-z vim-destructive");$(".avatar",el).clone().prependTo("#undo-"+id+" ."+action+"-undo-inside");a.click(function(){list.wpList.del(this);$("#undo-"+id).css({backgroundColor:"#ceb"}).fadeOut(350,function(){$(this).remove();$("#comment-"+id).css("backgroundColor","").fadeIn(300,function(){$(this).show()})});return false})}return settings};updateTotalCount=function(total,time,setConfidentTime){if(time<lastConfidentTime){return}if(setConfidentTime){lastConfidentTime=time}totalInput.val(total.toString())};dashboardTotals=function(n){var dash=$("#dashboard_right_now"),total,appr,totalN,apprN;n=n||0;if(isNaN(n)||!dash.length){return}total=$("span.total-count",dash);appr=$("span.approved-count",dash);totalN=getCount(total);totalN=totalN+n;apprN=totalN-getCount($("span.pending-count",dash))-getCount($("span.spam-count",dash));updateCount(total,totalN);updateCount(appr,apprN)};getCount=function(el){var n=parseInt(el.html().replace(/[^0-9]+/g,""),10);if(isNaN(n)){return 0}return n};updateCount=function(el,n){var n1="";if(isNaN(n)){return}n=n<1?"0":n.toString();if(n.length>3){while(n.length>3){n1=thousandsSeparator+n.substr(n.length-3)+n1;n=n.substr(0,n.length-3)}n=n+n1}el.html(n)};updatePending=function(n){$("span.pending-count").each(function(){var a=$(this);if(n<0){n=0}a.closest(".awaiting-mod")[0==n?"addClass":"removeClass"]("count-0");updateCount(a,n);dashboardTotals()})};delAfter=function(r,settings){var total,N,spam,trash,pending,untrash=$(settings.target).parent().is("span.untrash"),unspam=$(settings.target).parent().is("span.unspam"),unapproved=$("#"+settings.element).is(".unapproved");function getUpdate(s){if($(settings.target).parent().is("span."+s)){return 1}else{if($("#"+settings.element).is("."+s)){return -1}}return 0}if(untrash){trash=-1}else{trash=getUpdate("trash")}if(unspam){spam=-1}else{spam=getUpdate("spam")}pending=getCount($("span.pending-count").eq(0));if($(settings.target).parent().is("span.unapprove")||((untrash||unspam)&&unapproved)){pending=pending+1}else{if(unapproved){pending=pending-1}}updatePending(pending);$("span.spam-count").each(function(){var a=$(this),n=getCount(a)+spam;updateCount(a,n)});$("span.trash-count").each(function(){var a=$(this),n=getCount(a)+trash;updateCount(a,n)});if($("#dashboard_right_now").length){N=trash?-1*trash:0;dashboardTotals(N)}else{total=totalInput.val()?parseInt(totalInput.val(),10):0;if($(settings.target).parent().is("span.undo")){total++}else{total--}if(total<0){total=0}if(("object"==typeof r)&&lastConfidentTime<settings.parsed.responses[0].supplemental.time){total_items_i18n=settings.parsed.responses[0].supplemental.total_items_i18n||"";if(total_items_i18n){$(".displaying-num").text(total_items_i18n);$(".total-pages").text(settings.parsed.responses[0].supplemental.total_pages_i18n);$(".tablenav-pages").find(".next-page, .last-page").toggleClass("disabled",settings.parsed.responses[0].supplemental.total_pages==$(".current-page").val())}updateTotalCount(total,settings.parsed.responses[0].supplemental.time,true)}else{updateTotalCount(total,r,false)}}if(!theExtraList||theExtraList.size()==0||theExtraList.children().size()==0||untrash||unspam){return}theList.get(0).wpList.add(theExtraList.children(":eq(0)").remove().clone());refillTheExtraList()};refillTheExtraList=function(ev){var args=$.query.get(),total_pages=$(".total-pages").text(),per_page=$('input[name="_per_page"]',"#comments-form").val();if(!args.paged){args.paged=1}if(args.paged>total_pages){return}if(ev){theExtraList.empty();args.number=Math.min(8,per_page)}else{args.number=1;args.offset=Math.min(8,per_page)-1}args.no_placeholder=true;args.paged++;if(true===args.comment_type){args.comment_type=""}args=$.extend(args,{action:"fetch-list",list_args:list_args,_ajax_fetch_list_nonce:$("#_ajax_fetch_list_nonce").val()});$.ajax({url:ajaxurl,global:false,dataType:"json",data:args,success:function(response){theExtraList.get(0).wpList.add(response.rows)}})};theExtraList=$("#the-extra-comment-list").wpList({alt:"",delColor:"none",addColor:"none"});theList=$("#the-comment-list").wpList({alt:"",delBefore:delBefore,dimAfter:dimAfter,delAfter:delAfter,addColor:"none"}).bind("wpListDelEnd",function(e,s){var id=s.element.replace(/[^0-9]+/g,"");if(s.target.className.indexOf(":trash=1")!=-1||s.target.className.indexOf(":spam=1")!=-1){$("#undo-"+id).fadeIn(300,function(){$(this).show()})}})};commentReply={cid:"",act:"",init:function(){var row=$("#replyrow");$("a.cancel",row).click(function(){return commentReply.revert()});$("a.save",row).click(function(){return commentReply.send()});$("input#author, input#author-email, input#author-url",row).keypress(function(e){if(e.which==13){commentReply.send();e.preventDefault();return false}});$("#the-comment-list .column-comment > p").dblclick(function(){commentReply.toggle($(this).parent())});$("#doaction, #doaction2, #post-query-submit").click(function(e){if($("#the-comment-list #replyrow").length>0){commentReply.close()}});this.comments_listing=$('#comments-form > input[name="comment_status"]').val()||""},addEvents:function(r){r.each(function(){$(this).find(".column-comment > p").dblclick(function(){commentReply.toggle($(this).parent())})})},toggle:function(el){if($(el).css("display")!="none"){$(el).find("a.vim-q").click()}},revert:function(){if($("#the-comment-list #replyrow").length<1){return false}$("#replyrow").fadeOut("fast",function(){commentReply.close()});return false},close:function(){var c;if(this.cid){c=$("#comment-"+this.cid);if(typeof QTags!="undefined"){QTags.closeAllTags("replycontent")}if(this.act=="edit-comment"){c.fadeIn(300,function(){c.show()}).css("backgroundColor","")}$("#replyrow").hide();$("#com-reply").append($("#replyrow"));$("#replycontent").val("");$("input","#edithead").val("");$(".error","#replysubmit").html("").hide();$(".waiting","#replysubmit").hide();$("#replycontent").css("height","");this.cid=""}},open:function(id,p,a){var t=this,editRow,rowData,act,c=$("#comment-"+id),h=c.height(),replyButton;t.close();t.cid=id;editRow=$("#replyrow");rowData=$("#inline-"+id);act=t.act=(a=="edit")?"edit-comment":"replyto-comment";$("#action",editRow).val(act);$("#comment_post_ID",editRow).val(p);$("#comment_ID",editRow).val(id);if(h>120){$("#replycontent",editRow).css("height",(35+h)+"px")}if(a=="edit"){$("#author",editRow).val($("div.author",rowData).text());$("#author-email",editRow).val($("div.author-email",rowData).text());$("#author-url",editRow).val($("div.author-url",rowData).text());$("#status",editRow).val($("div.comment_status",rowData).text());$("#replycontent",editRow).val($("textarea.comment",rowData).val());$("#edithead, #savebtn",editRow).show();$("#replyhead, #replybtn",editRow).hide();c.after(editRow).fadeOut("fast",function(){$("#replyrow").fadeIn(300,function(){$(this).show()})})}else{replyButton=$("#replybtn",editRow);$("#edithead, #savebtn",editRow).hide();$("#replyhead, #replybtn",editRow).show();c.after(editRow);if(c.hasClass("unapproved")){replyButton.text(adminCommentsL10n.replyApprove)}else{replyButton.text(adminCommentsL10n.reply)}$("#replyrow").fadeIn(300,function(){$(this).show()})}setTimeout(function(){var rtop,rbottom,scrollTop,vp,scrollBottom;rtop=$("#replyrow").offset().top;rbottom=rtop+$("#replyrow").height();scrollTop=window.pageYOffset||document.documentElement.scrollTop;vp=document.documentElement.clientHeight||self.innerHeight||0;scrollBottom=scrollTop+vp;if(scrollBottom-20<rbottom){window.scroll(0,rbottom-vp+35)}else{if(rtop-20<scrollTop){window.scroll(0,rtop-35)}}$("#replycontent").focus().keyup(function(e){if(e.which==27){commentReply.revert()}})},600);return false},send:function(){var post={};$("#replysubmit .error").hide();$("#replysubmit .waiting").show();$("#replyrow input").not(":button").each(function(){post[$(this).attr("name")]=$(this).val()});post.content=$("#replycontent").val();post.id=post.comment_post_ID;post.comments_listing=this.comments_listing;post.p=$('[name="p"]').val();if($("#comment-"+$("#comment_ID").val()).hasClass("unapproved")){post.approve_parent=1}$.ajax({type:"POST",url:ajaxurl,data:post,success:function(x){commentReply.show(x)},error:function(r){commentReply.error(r)}});return false},show:function(xml){var t=this,r,c,id,bg,pid;if(typeof(xml)=="string"){t.error({responseText:xml});return false}r=wpAjax.parseAjaxResponse(xml);if(r.errors){t.error({responseText:wpAjax.broken});return false}t.revert();r=r.responses[0];c=r.data;id="#comment-"+r.id;if("edit-comment"==t.act){$(id).remove()}if(r.supplemental.parent_approved){pid=$("#comment-"+r.supplemental.parent_approved);updatePending(getCount($("span.pending-count").eq(0))-1);if(this.comments_listing=="moderated"){pid.animate({backgroundColor:"#CCEEBB"},400,function(){pid.fadeOut()});return}}$(c).hide();$("#replyrow").after(c);id=$(id);t.addEvents(id);bg=id.hasClass("unapproved")?"#FFFFE0":id.closest(".widefat, .postbox").css("backgroundColor");id.animate({backgroundColor:"#CCEEBB"},300).animate({backgroundColor:bg},300,function(){if(pid&&pid.length){pid.animate({backgroundColor:"#CCEEBB"},300).animate({backgroundColor:bg},300).removeClass("unapproved").addClass("approved").find("div.comment_status").html("1")}})},error:function(r){var er=r.statusText;$("#replysubmit .waiting").hide();if(r.responseText){er=r.responseText.replace(/<.[^<>]*?>/g,"")}if(er){$("#replysubmit .error").html(er).show()}}};$(document).ready(function(){var make_hotkeys_redirect,edit_comment,toggle_all,make_bulk;setCommentsList();commentReply.init();$(document).delegate("span.delete a.delete","click",function(){return false});if(typeof $.table_hotkeys!="undefined"){make_hotkeys_redirect=function(which){return function(){var first_last,l;first_last="next"==which?"first":"last";l=$(".tablenav-pages ."+which+"-page:not(.disabled)");if(l.length){window.location=l[0].href.replace(/\&hotkeys_highlight_(first|last)=1/g,"")+"&hotkeys_highlight_"+first_last+"=1"}}};edit_comment=function(event,current_row){window.location=$("span.edit a",current_row).attr("href")};toggle_all=function(){toggleWithKeyboard=true;$("input:checkbox","#cb").click().prop("checked",false);toggleWithKeyboard=false};make_bulk=function(value){return function(){var scope=$('select[name="action"]');$('option[value="'+value+'"]',scope).prop("selected",true);$("#doaction").click()}};$.table_hotkeys($("table.widefat"),["a","u","s","d","r","q","z",["e",edit_comment],["shift+x",toggle_all],["shift+a",make_bulk("approve")],["shift+s",make_bulk("spam")],["shift+d",make_bulk("delete")],["shift+t",make_bulk("trash")],["shift+z",make_bulk("untrash")],["shift+u",make_bulk("unapprove")]],{highlight_first:adminCommentsL10n.hotkeys_highlight_first,highlight_last:adminCommentsL10n.hotkeys_highlight_last,prev_page_link_cb:make_hotkeys_redirect("prev"),next_page_link_cb:make_hotkeys_redirect("next")})}})})(jQuery);
\ No newline at end of file
+var theList,theExtraList,toggleWithKeyboard=false;(function(d){var b,a,e,c;setCommentsList=function(){var g,i,k,n=0,j,l,h,m,f;g=d('input[name="_total"]',"#comments-form");i=d('input[name="_per_page"]',"#comments-form");k=d('input[name="_page"]',"#comments-form");j=function(s,p){var v=d("#"+p.element),o,u,q;o=d("#replyrow");u=d("#comment_ID",o).val();q=d("#replybtn",o);if(v.is(".unapproved")){if(p.data.id==u){q.text(adminCommentsL10n.replyApprove)}v.find("div.comment_status").html("0")}else{if(p.data.id==u){q.text(adminCommentsL10n.reply)}v.find("div.comment_status").html("1")}var t=d("#"+p.element).is("."+p.dimClass)?1:-1;e(t)};l=function(r,v){var x=d(r.target).attr("class"),o,p,q,u,w,t,s=false;r.data._total=g.val()||0;r.data._per_page=i.val()||0;r.data._page=k.val()||0;r.data._url=document.location.href;r.data.comment_status=d('input[name="comment_status"]',"#comments-form").val();if(x.indexOf(":trash=1")!=-1){s="trash"}else{if(x.indexOf(":spam=1")!=-1){s="spam"}}if(s){o=x.replace(/.*?comment-([0-9]+).*/,"$1");p=d("#comment-"+o);note=d("#"+s+"-undo-holder").html();p.find(".check-column :checkbox").prop("checked",false);if(p.siblings("#replyrow").length&&commentReply.cid==o){commentReply.close()}if(p.is("tr")){q=p.children(":visible").length;t=d(".author strong",p).text();u=d('<tr id="undo-'+o+'" class="undo un'+s+'" style="display:none;"><td colspan="'+q+'">'+note+"</td></tr>")}else{t=d(".comment-author",p).text();u=d('<div id="undo-'+o+'" style="display:none;" class="undo un'+s+'">'+note+"</div>")}p.before(u);d("strong","#undo-"+o).text(t);w=d(".undo a","#undo-"+o);w.attr("href","comment.php?action=un"+s+"comment&c="+o+"&_wpnonce="+r.data._ajax_nonce);w.attr("class","delete:the-comment-list:comment-"+o+"::un"+s+"=1 vim-z vim-destructive");d(".avatar",p).clone().prependTo("#undo-"+o+" ."+s+"-undo-inside");w.click(function(){v.wpList.del(this);d("#undo-"+o).css({backgroundColor:"#ceb"}).fadeOut(350,function(){d(this).remove();d("#comment-"+o).css("backgroundColor","").fadeIn(300,function(){d(this).show()})});return false})}return r};h=function(o,p,q){if(p<n){return}if(q){n=p}g.val(o.toString())};c=function(t){var s=d("#dashboard_right_now"),p,r,q,o;t=t||0;if(isNaN(t)||!s.length){return}p=d("span.total-count",s);r=d("span.approved-count",s);q=b(p);q=q+t;o=q-b(d("span.pending-count",s))-b(d("span.spam-count",s));a(p,q);a(r,o)};b=function(o){var p=parseInt(o.html().replace(/[^0-9]+/g,""),10);if(isNaN(p)){return 0}return p};a=function(p,q){var o="";if(isNaN(q)){return}q=q<1?"0":q.toString();if(q.length>3){while(q.length>3){o=thousandsSeparator+q.substr(q.length-3)+o;q=q.substr(0,q.length-3)}q=q+o}p.html(q)};e=function(o){d("span.pending-count").each(function(){var p=d(this),q=b(p)+o;if(q<1){q=0}p.closest(".awaiting-mod")[0==q?"addClass":"removeClass"]("count-0");a(p,q)});c()};m=function(o,s){var v,t,x,w,p,y=d(s.target).parent().is("span.untrash"),q=d(s.target).parent().is("span.unspam"),u=d("#"+s.element).is(".unapproved");function z(r){if(d(s.target).parent().is("span."+r)){return 1}else{if(d("#"+s.element).is("."+r)){return -1}}return 0}if(y){w=-1}else{w=z("trash")}if(q){x=-1}else{x=z("spam")}if(d(s.target).parent().is("span.unapprove")||((y||q)&&u)){p=1}else{if(u){p=-1}}if(p){e(p)}d("span.spam-count").each(function(){var r=d(this),A=b(r)+x;a(r,A)});d("span.trash-count").each(function(){var r=d(this),A=b(r)+w;a(r,A)});if(d("#dashboard_right_now").length){t=w?-1*w:0;c(t)}else{v=g.val()?parseInt(g.val(),10):0;if(d(s.target).parent().is("span.undo")){v++}else{v--}if(v<0){v=0}if(("object"==typeof o)&&n<s.parsed.responses[0].supplemental.time){total_items_i18n=s.parsed.responses[0].supplemental.total_items_i18n||"";if(total_items_i18n){d(".displaying-num").text(total_items_i18n);d(".total-pages").text(s.parsed.responses[0].supplemental.total_pages_i18n);d(".tablenav-pages").find(".next-page, .last-page").toggleClass("disabled",s.parsed.responses[0].supplemental.total_pages==d(".current-page").val())}h(v,s.parsed.responses[0].supplemental.time,true)}else{h(v,o,false)}}if(!theExtraList||theExtraList.size()==0||theExtraList.children().size()==0||y||q){return}theList.get(0).wpList.add(theExtraList.children(":eq(0)").remove().clone());f()};f=function(r){var p=d.query.get(),o=d(".total-pages").text(),q=d('input[name="_per_page"]',"#comments-form").val();if(!p.paged){p.paged=1}if(p.paged>o){return}if(r){theExtraList.empty();p.number=Math.min(8,q)}else{p.number=1;p.offset=Math.min(8,q)-1}p.no_placeholder=true;p.paged++;if(true===p.comment_type){p.comment_type=""}p=d.extend(p,{action:"fetch-list",list_args:list_args,_ajax_fetch_list_nonce:d("#_ajax_fetch_list_nonce").val()});d.ajax({url:ajaxurl,global:false,dataType:"json",data:p,success:function(s){theExtraList.get(0).wpList.add(s.rows)}})};theExtraList=d("#the-extra-comment-list").wpList({alt:"",delColor:"none",addColor:"none"});theList=d("#the-comment-list").wpList({alt:"",delBefore:l,dimAfter:j,delAfter:m,addColor:"none"}).bind("wpListDelEnd",function(p,o){var q=o.element.replace(/[^0-9]+/g,"");if(o.target.className.indexOf(":trash=1")!=-1||o.target.className.indexOf(":spam=1")!=-1){d("#undo-"+q).fadeIn(300,function(){d(this).show()})}})};commentReply={cid:"",act:"",init:function(){var f=d("#replyrow");d("a.cancel",f).click(function(){return commentReply.revert()});d("a.save",f).click(function(){return commentReply.send()});d("input#author, input#author-email, input#author-url",f).keypress(function(g){if(g.which==13){commentReply.send();g.preventDefault();return false}});d("#the-comment-list .column-comment > p").dblclick(function(){commentReply.toggle(d(this).parent())});d("#doaction, #doaction2, #post-query-submit").click(function(g){if(d("#the-comment-list #replyrow").length>0){commentReply.close()}});this.comments_listing=d('#comments-form > input[name="comment_status"]').val()||""},addEvents:function(f){f.each(function(){d(this).find(".column-comment > p").dblclick(function(){commentReply.toggle(d(this).parent())})})},toggle:function(f){if(d(f).css("display")!="none"){d(f).find("a.vim-q").click()}},revert:function(){if(d("#the-comment-list #replyrow").length<1){return false}d("#replyrow").fadeOut("fast",function(){commentReply.close()});return false},close:function(){var g,f=d("#replyrow");if(f.parent().is("#com-reply")){return}if(this.cid&&this.act=="edit-comment"){g=d("#comment-"+this.cid);g.fadeIn(300,function(){g.show()}).css("backgroundColor","")}if(typeof QTags!="undefined"){QTags.closeAllTags("replycontent")}d("#add-new-comment").css("display","");f.hide();d("#com-reply").append(f);d("#replycontent").css("height","").val("");d("#edithead input").val("");d(".error",f).html("").hide();d(".waiting",f).hide();this.cid=""},open:function(f,i,k){var p=this,g,j,m,n=d("#comment-"+f),l=n.height(),o;p.close();p.cid=f;g=d("#replyrow");j=d("#inline-"+f);k=k||"replyto";m="edit"==k?"edit":"replyto";m=p.act=m+"-comment";d("#action",g).val(m);d("#comment_post_ID",g).val(i);d("#comment_ID",g).val(f);if(l>120){d("#replycontent",g).css("height",(35+l)+"px")}if(k=="edit"){d("#author",g).val(d("div.author",j).text());d("#author-email",g).val(d("div.author-email",j).text());d("#author-url",g).val(d("div.author-url",j).text());d("#status",g).val(d("div.comment_status",j).text());d("#replycontent",g).val(d("textarea.comment",j).val());d("#edithead, #savebtn",g).show();d("#replyhead, #replybtn, #addhead, #addbtn",g).hide();n.after(g).fadeOut("fast",function(){d("#replyrow").fadeIn(300,function(){d(this).show()})})}else{if(k=="add"){d("#addhead, #addbtn",g).show();d("#replyhead, #replybtn, #edithead, #editbtn",g).hide();d("#the-comment-list").prepend(g);d("#replyrow").fadeIn(300)}else{o=d("#replybtn",g);d("#edithead, #savebtn, #addhead, #addbtn",g).hide();d("#replyhead, #replybtn",g).show();n.after(g);if(n.hasClass("unapproved")){o.text(adminCommentsL10n.replyApprove)}else{o.text(adminCommentsL10n.reply)}d("#replyrow").fadeIn(300,function(){d(this).show()})}}setTimeout(function(){var s,q,t,h,r;s=d("#replyrow").offset().top;q=s+d("#replyrow").height();t=window.pageYOffset||document.documentElement.scrollTop;h=document.documentElement.clientHeight||self.innerHeight||0;r=t+h;if(r-20<q){window.scroll(0,q-h+35)}else{if(s-20<t){window.scroll(0,s-35)}}d("#replycontent").focus().keyup(function(u){if(u.which==27){commentReply.revert()}})},600);return false},send:function(){var f={};d("#replysubmit .error").hide();d("#replysubmit .waiting").show();d("#replyrow input").not(":button").each(function(){var g=d(this);f[g.attr("name")]=g.val()});f.content=d("#replycontent").val();f.id=f.comment_post_ID;f.comments_listing=this.comments_listing;f.p=d('[name="p"]').val();if(d("#comment-"+d("#comment_ID").val()).hasClass("unapproved")){f.approve_parent=1}d.ajax({type:"POST",url:ajaxurl,data:f,success:function(g){commentReply.show(g)},error:function(g){commentReply.error(g)}});return false},show:function(g){var i=this,j,l,k,h,f;if(typeof(g)=="string"){i.error({responseText:g});return false}j=wpAjax.parseAjaxResponse(g);if(j.errors){i.error({responseText:wpAjax.broken});return false}i.revert();j=j.responses[0];l=j.data;k="#comment-"+j.id;if("edit-comment"==i.act){d(k).remove()}if(j.supplemental.parent_approved){f=d("#comment-"+j.supplemental.parent_approved);e(-1);if(this.comments_listing=="moderated"){f.animate({backgroundColor:"#CCEEBB"},400,function(){f.fadeOut()});return}}d(l).hide();d("#replyrow").after(l);k=d(k);i.addEvents(k);h=k.hasClass("unapproved")?"#FFFFE0":k.closest(".widefat, .postbox").css("backgroundColor");k.animate({backgroundColor:"#CCEEBB"},300).animate({backgroundColor:h},300,function(){if(f&&f.length){f.animate({backgroundColor:"#CCEEBB"},300).animate({backgroundColor:h},300).removeClass("unapproved").addClass("approved").find("div.comment_status").html("1")}})},error:function(f){var g=f.statusText;d("#replysubmit .waiting").hide();if(f.responseText){g=f.responseText.replace(/<.[^<>]*?>/g,"")}if(g){d("#replysubmit .error").html(g).show()}},addcomment:function(f){var g=this;d("#add-new-comment").fadeOut(200,function(){g.open(0,f,"add");d("table.comments-box").css("display","");d("#no-comments").remove()})}};d(document).ready(function(){var i,f,g,h;setCommentsList();commentReply.init();d(document).delegate("span.delete a.delete","click",function(){return false});if(typeof d.table_hotkeys!="undefined"){i=function(j){return function(){var m,k;m="next"==j?"first":"last";k=d(".tablenav-pages ."+j+"-page:not(.disabled)");if(k.length){window.location=k[0].href.replace(/\&hotkeys_highlight_(first|last)=1/g,"")+"&hotkeys_highlight_"+m+"=1"}}};f=function(k,j){window.location=d("span.edit a",j).attr("href")};g=function(){toggleWithKeyboard=true;d("input:checkbox","#cb").click().prop("checked",false);toggleWithKeyboard=false};h=function(j){return function(){var k=d('select[name="action"]');d('option[value="'+j+'"]',k).prop("selected",true);d("#doaction").click()}};d.table_hotkeys(d("table.widefat"),["a","u","s","d","r","q","z",["e",f],["shift+x",g],["shift+a",h("approve")],["shift+s",h("spam")],["shift+d",h("delete")],["shift+t",h("trash")],["shift+z",h("untrash")],["shift+u",h("unapprove")]],{highlight_first:adminCommentsL10n.hotkeys_highlight_first,highlight_last:adminCommentsL10n.hotkeys_highlight_last,prev_page_link_cb:i("prev"),next_page_link_cb:i("next")})}})})(jQuery);
\ No newline at end of file
index 37c792788f443e89fceb5c5fffc8cca06849a5a5..93bb6d4f35676fb8e0d6f8505ac232de3ef42526 100644 (file)
@@ -62,13 +62,22 @@ var switchEditors = {
        },
 
        _wp_Nop : function(content) {
        },
 
        _wp_Nop : function(content) {
-               var blocklist1, blocklist2;
+               var blocklist1, blocklist2, preserve_linebreaks = false, preserve_br = false;
 
                // Protect pre|script tags
                if ( content.indexOf('<pre') != -1 || content.indexOf('<script') != -1 ) {
 
                // Protect pre|script tags
                if ( content.indexOf('<pre') != -1 || content.indexOf('<script') != -1 ) {
+                       preserve_linebreaks = true;
                        content = content.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g, function(a) {
                        content = content.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g, function(a) {
-                               a = a.replace(/<br ?\/?>(\r\n|\n)?/g, '<wp_temp>');
-                               return a.replace(/<\/?p( [^>]*)?>(\r\n|\n)?/g, '<wp_temp>');
+                               a = a.replace(/<br ?\/?>(\r\n|\n)?/g, '<wp-temp-lb>');
+                               return a.replace(/<\/?p( [^>]*)?>(\r\n|\n)?/g, '<wp-temp-lb>');
+                       });
+               }
+
+               // keep <br> tags inside captions and remove line breaks
+               if ( content.indexOf('[caption') != -1 ) {
+                       preserve_br = true;
+                       content = content.replace(/\[caption[\s\S]+?\[\/caption\]/g, function(a) {
+                               return a.replace(/<br([^>]*)>/g, '<wp-temp-br$1>').replace(/[\r\n\t]+/, '');
                        });
                }
 
                        });
                }
 
@@ -119,13 +128,19 @@ var switchEditors = {
                content = content.replace(/[\s\u00a0]+$/, '');
 
                // put back the line breaks in pre|script
                content = content.replace(/[\s\u00a0]+$/, '');
 
                // put back the line breaks in pre|script
-               content = content.replace(/<wp_temp>/g, '\n');
+               if ( preserve_linebreaks )
+                       content = content.replace(/<wp-temp-lb>/g, '\n');
+
+               // and the <br> tags in captions
+               if ( preserve_br )
+                       content = content.replace(/<wp-temp-br([^>]*)>/g, '<br$1>');
 
                return content;
        },
 
        _wp_Autop : function(pee) {
 
                return content;
        },
 
        _wp_Autop : function(pee) {
-               var blocklist = 'table|thead|tfoot|tbody|tr|td|th|caption|col|colgroup|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|address|math|p|h[1-6]|fieldset|legend|hr|noscript|menu|samp|header|footer|article|section|hgroup|nav|aside|details|summary';
+               var preserve_linebreaks = false, preserve_br = false,
+                       blocklist = 'table|thead|tfoot|tbody|tr|td|th|caption|col|colgroup|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|address|math|p|h[1-6]|fieldset|legend|hr|noscript|menu|samp|header|footer|article|section|hgroup|nav|aside|details|summary';
 
                if ( pee.indexOf('<object') != -1 ) {
                        pee = pee.replace(/<object[\s\S]+?<\/object>/g, function(a){
 
                if ( pee.indexOf('<object') != -1 ) {
                        pee = pee.replace(/<object[\s\S]+?<\/object>/g, function(a){
@@ -139,8 +154,24 @@ var switchEditors = {
 
                // Protect pre|script tags
                if ( pee.indexOf('<pre') != -1 || pee.indexOf('<script') != -1 ) {
 
                // Protect pre|script tags
                if ( pee.indexOf('<pre') != -1 || pee.indexOf('<script') != -1 ) {
+                       preserve_linebreaks = true;
                        pee = pee.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g, function(a) {
                        pee = pee.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g, function(a) {
-                               return a.replace(/(\r\n|\n)/g, '<wp_temp_br>');
+                               return a.replace(/(\r\n|\n)/g, '<wp-temp-lb>');
+                       });
+               }
+
+               // keep <br> tags inside captions and convert line breaks
+               if ( pee.indexOf('[caption') != -1 ) {
+                       preserve_br = true;
+                       pee = pee.replace(/\[caption[\s\S]+?\[\/caption\]/g, function(a) {
+                               // keep existing <br>
+                               a = a.replace(/<br([^>]*)>/g, '<wp-temp-br$1>');
+                               // no line breaks inside HTML tags
+                               a = a.replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g, function(b){
+                                       return b.replace(/[\r\n\t]+/, ' ');
+                               });
+                               // convert remaining line breaks to <br>
+                               return a.replace(/\s*\n\s*/g, '<wp-temp-br />');
                        });
                }
 
                        });
                }
 
@@ -172,7 +203,11 @@ var switchEditors = {
                });
 
                // put back the line breaks in pre|script
                });
 
                // put back the line breaks in pre|script
-               pee = pee.replace(/<wp_temp_br>/g, '\n');
+               if ( preserve_linebreaks )
+                       pee = pee.replace(/<wp-temp-lb>/g, '\n');
+
+               if ( preserve_br )
+                       pee = pee.replace(/<wp-temp-br([^>]*)>/g, '<br$1>');
 
                return pee;
        },
 
                return pee;
        },
@@ -203,4 +238,3 @@ var switchEditors = {
                return o.data;
        }
 }
                return o.data;
        }
 }
-
index 6de774f4b23f0dc2306faae4ade385d79fd354aa..905fffdd96fb67a5c812450d19781cee9bba3d0d 100644 (file)
@@ -1 +1 @@
-var switchEditors={switchto:function(b){var c=b.id,a=c.length,e=c.substr(0,a-5),d=c.substr(a-4);this.go(e,d)},go:function(g,f){g=g||"content";f=f||"toggle";var c=this,b=tinyMCE.get(g),a,d,e=tinymce.DOM;a="wp-"+g+"-wrap";d=e.get(g);if("toggle"==f){if(b&&!b.isHidden()){f="html"}else{f="tmce"}}if("tmce"==f||"tinymce"==f){if(b&&!b.isHidden()){return false}if(typeof(QTags)!="undefined"){QTags.closeAllTags(g)}if(tinyMCEPreInit.mceInit[g]&&tinyMCEPreInit.mceInit[g].wpautop){d.value=c.wpautop(d.value)}if(b){b.show()}else{b=new tinymce.Editor(g,tinyMCEPreInit.mceInit[g]);b.render()}e.removeClass(a,"html-active");e.addClass(a,"tmce-active");setUserSetting("editor","tinymce")}else{if("html"==f){if(b&&b.isHidden()){return false}if(b){d.style.height=b.getContentAreaContainer().offsetHeight+20+"px";b.hide()}e.removeClass(a,"tmce-active");e.addClass(a,"html-active");setUserSetting("editor","html")}}return false},_wp_Nop:function(b){var c,a;if(b.indexOf("<pre")!=-1||b.indexOf("<script")!=-1){b=b.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g,function(d){d=d.replace(/<br ?\/?>(\r\n|\n)?/g,"<wp_temp>");return d.replace(/<\/?p( [^>]*)?>(\r\n|\n)?/g,"<wp_temp>")})}c="blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|div|h[1-6]|p|fieldset";b=b.replace(new RegExp("\\s*</("+c+")>\\s*","g"),"</$1>\n");b=b.replace(new RegExp("\\s*<((?:"+c+")(?: [^>]*)?)>","g"),"\n<$1>");b=b.replace(/(<p [^>]+>.*?)<\/p>/g,"$1</p#>");b=b.replace(/<div( [^>]*)?>\s*<p>/gi,"<div$1>\n\n");b=b.replace(/\s*<p>/gi,"");b=b.replace(/\s*<\/p>\s*/gi,"\n\n");b=b.replace(/\n[\s\u00a0]+\n/g,"\n\n");b=b.replace(/\s*<br ?\/?>\s*/gi,"\n");b=b.replace(/\s*<div/g,"\n<div");b=b.replace(/<\/div>\s*/g,"</div>\n");b=b.replace(/\s*\[caption([^\[]+)\[\/caption\]\s*/gi,"\n\n[caption$1[/caption]\n\n");b=b.replace(/caption\]\n\n+\[caption/g,"caption]\n\n[caption");a="blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|h[1-6]|pre|fieldset";b=b.replace(new RegExp("\\s*<((?:"+a+")(?: [^>]*)?)\\s*>","g"),"\n<$1>");b=b.replace(new RegExp("\\s*</("+a+")>\\s*","g"),"</$1>\n");b=b.replace(/<li([^>]*)>/g,"\t<li$1>");if(b.indexOf("<hr")!=-1){b=b.replace(/\s*<hr( [^>]*)?>\s*/g,"\n\n<hr$1>\n\n")}if(b.indexOf("<object")!=-1){b=b.replace(/<object[\s\S]+?<\/object>/g,function(d){return d.replace(/[\r\n]+/g,"")})}b=b.replace(/<\/p#>/g,"</p>\n");b=b.replace(/\s*(<p [^>]+>[\s\S]*?<\/p>)/g,"\n$1");b=b.replace(/^\s+/,"");b=b.replace(/[\s\u00a0]+$/,"");b=b.replace(/<wp_temp>/g,"\n");return b},_wp_Autop:function(a){var b="table|thead|tfoot|tbody|tr|td|th|caption|col|colgroup|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|address|math|p|h[1-6]|fieldset|legend|hr|noscript|menu|samp|header|footer|article|section|hgroup|nav|aside|details|summary";if(a.indexOf("<object")!=-1){a=a.replace(/<object[\s\S]+?<\/object>/g,function(c){return c.replace(/[\r\n]+/g,"")})}a=a.replace(/<[^<>]+>/g,function(c){return c.replace(/[\r\n]+/g," ")});if(a.indexOf("<pre")!=-1||a.indexOf("<script")!=-1){a=a.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g,function(c){return c.replace(/(\r\n|\n)/g,"<wp_temp_br>")})}a=a+"\n\n";a=a.replace(/<br \/>\s*<br \/>/gi,"\n\n");a=a.replace(new RegExp("(<(?:"+b+")(?: [^>]*)?>)","gi"),"\n$1");a=a.replace(new RegExp("(</(?:"+b+")>)","gi"),"$1\n\n");a=a.replace(/<hr( [^>]*)?>/gi,"<hr$1>\n\n");a=a.replace(/\r\n|\r/g,"\n");a=a.replace(/\n\s*\n+/g,"\n\n");a=a.replace(/([\s\S]+?)\n\n/g,"<p>$1</p>\n");a=a.replace(/<p>\s*?<\/p>/gi,"");a=a.replace(new RegExp("<p>\\s*(</?(?:"+b+")(?: [^>]*)?>)\\s*</p>","gi"),"$1");a=a.replace(/<p>(<li.+?)<\/p>/gi,"$1");a=a.replace(/<p>\s*<blockquote([^>]*)>/gi,"<blockquote$1><p>");a=a.replace(/<\/blockquote>\s*<\/p>/gi,"</p></blockquote>");a=a.replace(new RegExp("<p>\\s*(</?(?:"+b+")(?: [^>]*)?>)","gi"),"$1");a=a.replace(new RegExp("(</?(?:"+b+")(?: [^>]*)?>)\\s*</p>","gi"),"$1");a=a.replace(/\s*\n/gi,"<br />\n");a=a.replace(new RegExp("(</?(?:"+b+")[^>]*>)\\s*<br />","gi"),"$1");a=a.replace(/<br \/>(\s*<\/?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)>)/gi,"$1");a=a.replace(/(?:<p>|<br ?\/?>)*\s*\[caption([^\[]+)\[\/caption\]\s*(?:<\/p>|<br ?\/?>)*/gi,"[caption$1[/caption]");a=a.replace(/(<(?:div|th|td|form|fieldset|dd)[^>]*>)(.*?)<\/p>/g,function(e,d,f){if(f.match(/<p( [^>]*)?>/)){return e}return d+"<p>"+f+"</p>"});a=a.replace(/<wp_temp_br>/g,"\n");return a},pre_wpautop:function(b){var a=this,d={o:a,data:b,unfiltered:b},c=typeof(jQuery)!="undefined";if(c){jQuery("body").trigger("beforePreWpautop",[d])}d.data=a._wp_Nop(d.data);if(c){jQuery("body").trigger("afterPreWpautop",[d])}return d.data},wpautop:function(b){var a=this,d={o:a,data:b,unfiltered:b},c=typeof(jQuery)!="undefined";if(c){jQuery("body").trigger("beforeWpautop",[d])}d.data=a._wp_Autop(d.data);if(c){jQuery("body").trigger("afterWpautop",[d])}return d.data}};
\ No newline at end of file
+var switchEditors={switchto:function(b){var c=b.id,a=c.length,e=c.substr(0,a-5),d=c.substr(a-4);this.go(e,d)},go:function(g,f){g=g||"content";f=f||"toggle";var c=this,b=tinyMCE.get(g),a,d,e=tinymce.DOM;a="wp-"+g+"-wrap";d=e.get(g);if("toggle"==f){if(b&&!b.isHidden()){f="html"}else{f="tmce"}}if("tmce"==f||"tinymce"==f){if(b&&!b.isHidden()){return false}if(typeof(QTags)!="undefined"){QTags.closeAllTags(g)}if(tinyMCEPreInit.mceInit[g]&&tinyMCEPreInit.mceInit[g].wpautop){d.value=c.wpautop(d.value)}if(b){b.show()}else{b=new tinymce.Editor(g,tinyMCEPreInit.mceInit[g]);b.render()}e.removeClass(a,"html-active");e.addClass(a,"tmce-active");setUserSetting("editor","tinymce")}else{if("html"==f){if(b&&b.isHidden()){return false}if(b){d.style.height=b.getContentAreaContainer().offsetHeight+20+"px";b.hide()}e.removeClass(a,"tmce-active");e.addClass(a,"html-active");setUserSetting("editor","html")}}return false},_wp_Nop:function(c){var d,b,e=false,a=false;if(c.indexOf("<pre")!=-1||c.indexOf("<script")!=-1){e=true;c=c.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g,function(f){f=f.replace(/<br ?\/?>(\r\n|\n)?/g,"<wp-temp-lb>");return f.replace(/<\/?p( [^>]*)?>(\r\n|\n)?/g,"<wp-temp-lb>")})}if(c.indexOf("[caption")!=-1){a=true;c=c.replace(/\[caption[\s\S]+?\[\/caption\]/g,function(f){return f.replace(/<br([^>]*)>/g,"<wp-temp-br$1>").replace(/[\r\n\t]+/,"")})}d="blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|div|h[1-6]|p|fieldset";c=c.replace(new RegExp("\\s*</("+d+")>\\s*","g"),"</$1>\n");c=c.replace(new RegExp("\\s*<((?:"+d+")(?: [^>]*)?)>","g"),"\n<$1>");c=c.replace(/(<p [^>]+>.*?)<\/p>/g,"$1</p#>");c=c.replace(/<div( [^>]*)?>\s*<p>/gi,"<div$1>\n\n");c=c.replace(/\s*<p>/gi,"");c=c.replace(/\s*<\/p>\s*/gi,"\n\n");c=c.replace(/\n[\s\u00a0]+\n/g,"\n\n");c=c.replace(/\s*<br ?\/?>\s*/gi,"\n");c=c.replace(/\s*<div/g,"\n<div");c=c.replace(/<\/div>\s*/g,"</div>\n");c=c.replace(/\s*\[caption([^\[]+)\[\/caption\]\s*/gi,"\n\n[caption$1[/caption]\n\n");c=c.replace(/caption\]\n\n+\[caption/g,"caption]\n\n[caption");b="blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|h[1-6]|pre|fieldset";c=c.replace(new RegExp("\\s*<((?:"+b+")(?: [^>]*)?)\\s*>","g"),"\n<$1>");c=c.replace(new RegExp("\\s*</("+b+")>\\s*","g"),"</$1>\n");c=c.replace(/<li([^>]*)>/g,"\t<li$1>");if(c.indexOf("<hr")!=-1){c=c.replace(/\s*<hr( [^>]*)?>\s*/g,"\n\n<hr$1>\n\n")}if(c.indexOf("<object")!=-1){c=c.replace(/<object[\s\S]+?<\/object>/g,function(f){return f.replace(/[\r\n]+/g,"")})}c=c.replace(/<\/p#>/g,"</p>\n");c=c.replace(/\s*(<p [^>]+>[\s\S]*?<\/p>)/g,"\n$1");c=c.replace(/^\s+/,"");c=c.replace(/[\s\u00a0]+$/,"");if(e){c=c.replace(/<wp-temp-lb>/g,"\n")}if(a){c=c.replace(/<wp-temp-br([^>]*)>/g,"<br$1>")}return c},_wp_Autop:function(a){var c=false,b=false,d="table|thead|tfoot|tbody|tr|td|th|caption|col|colgroup|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|address|math|p|h[1-6]|fieldset|legend|hr|noscript|menu|samp|header|footer|article|section|hgroup|nav|aside|details|summary";if(a.indexOf("<object")!=-1){a=a.replace(/<object[\s\S]+?<\/object>/g,function(e){return e.replace(/[\r\n]+/g,"")})}a=a.replace(/<[^<>]+>/g,function(e){return e.replace(/[\r\n]+/g," ")});if(a.indexOf("<pre")!=-1||a.indexOf("<script")!=-1){c=true;a=a.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g,function(e){return e.replace(/(\r\n|\n)/g,"<wp-temp-lb>")})}if(a.indexOf("[caption")!=-1){b=true;a=a.replace(/\[caption[\s\S]+?\[\/caption\]/g,function(e){e=e.replace(/<br([^>]*)>/g,"<wp-temp-br$1>");e=e.replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g,function(f){return f.replace(/[\r\n\t]+/," ")});return e.replace(/\s*\n\s*/g,"<wp-temp-br />")})}a=a+"\n\n";a=a.replace(/<br \/>\s*<br \/>/gi,"\n\n");a=a.replace(new RegExp("(<(?:"+d+")(?: [^>]*)?>)","gi"),"\n$1");a=a.replace(new RegExp("(</(?:"+d+")>)","gi"),"$1\n\n");a=a.replace(/<hr( [^>]*)?>/gi,"<hr$1>\n\n");a=a.replace(/\r\n|\r/g,"\n");a=a.replace(/\n\s*\n+/g,"\n\n");a=a.replace(/([\s\S]+?)\n\n/g,"<p>$1</p>\n");a=a.replace(/<p>\s*?<\/p>/gi,"");a=a.replace(new RegExp("<p>\\s*(</?(?:"+d+")(?: [^>]*)?>)\\s*</p>","gi"),"$1");a=a.replace(/<p>(<li.+?)<\/p>/gi,"$1");a=a.replace(/<p>\s*<blockquote([^>]*)>/gi,"<blockquote$1><p>");a=a.replace(/<\/blockquote>\s*<\/p>/gi,"</p></blockquote>");a=a.replace(new RegExp("<p>\\s*(</?(?:"+d+")(?: [^>]*)?>)","gi"),"$1");a=a.replace(new RegExp("(</?(?:"+d+")(?: [^>]*)?>)\\s*</p>","gi"),"$1");a=a.replace(/\s*\n/gi,"<br />\n");a=a.replace(new RegExp("(</?(?:"+d+")[^>]*>)\\s*<br />","gi"),"$1");a=a.replace(/<br \/>(\s*<\/?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)>)/gi,"$1");a=a.replace(/(?:<p>|<br ?\/?>)*\s*\[caption([^\[]+)\[\/caption\]\s*(?:<\/p>|<br ?\/?>)*/gi,"[caption$1[/caption]");a=a.replace(/(<(?:div|th|td|form|fieldset|dd)[^>]*>)(.*?)<\/p>/g,function(f,e,g){if(g.match(/<p( [^>]*)?>/)){return f}return e+"<p>"+g+"</p>"});if(c){a=a.replace(/<wp-temp-lb>/g,"\n")}if(b){a=a.replace(/<wp-temp-br([^>]*)>/g,"<br$1>")}return a},pre_wpautop:function(b){var a=this,d={o:a,data:b,unfiltered:b},c=typeof(jQuery)!="undefined";if(c){jQuery("body").trigger("beforePreWpautop",[d])}d.data=a._wp_Nop(d.data);if(c){jQuery("body").trigger("afterPreWpautop",[d])}return d.data},wpautop:function(b){var a=this,d={o:a,data:b,unfiltered:b},c=typeof(jQuery)!="undefined";if(c){jQuery("body").trigger("beforeWpautop",[d])}d.data=a._wp_Autop(d.data);if(c){jQuery("body").trigger("afterWpautop",[d])}return d.data}};
\ No newline at end of file
index e73c4a009964389976e880ea0528d53d10047837..4b0eb2eeb3a7036e87d9e68f3b7b2aa711cba683 100644 (file)
@@ -117,7 +117,7 @@ inlineEditPost = {
                if ( 'post' == type ) {
                        // support multi taxonomies?
                        tax = 'post_tag';
                if ( 'post' == type ) {
                        // support multi taxonomies?
                        tax = 'post_tag';
-                       $('tr.inline-editor textarea[name="tax_input['+tax+']"]').suggest( 'admin-ajax.php?action=ajax-tag-search&tax='+tax, { delay: 500, minchars: 2, multiple: true, multipleSep: ", " } );
+                       $('tr.inline-editor textarea[name="tax_input['+tax+']"]').suggest( ajaxurl + '?action=ajax-tag-search&tax=' + tax, { delay: 500, minchars: 2, multiple: true, multipleSep: inlineEditL10n.comma + ' ' } );
                }
                $('html, body').animate( { scrollTop: 0 }, 'fast' );
        },
                }
                $('html, body').animate( { scrollTop: 0 }, 'fast' );
        },
@@ -129,9 +129,9 @@ inlineEditPost = {
                if ( typeof(id) == 'object' )
                        id = t.getId(id);
 
                if ( typeof(id) == 'object' )
                        id = t.getId(id);
 
-               fields = ['post_title', 'post_name', 'post_author', '_status', 'jj', 'mm', 'aa', 'hh', 'mn', 'ss', 'post_password', 'post_format'];
+               fields = ['post_title', 'post_name', 'post_author', '_status', 'jj', 'mm', 'aa', 'hh', 'mn', 'ss', 'post_password', 'post_format', 'menu_order'];
                if ( t.type == 'page' )
                if ( t.type == 'page' )
-                       fields.push('post_parent', 'menu_order', 'page_template');
+                       fields.push('post_parent', 'page_template');
 
                // add the new blank row
                editRow = $('#inline-edit').clone(true);
 
                // add the new blank row
                editRow = $('#inline-edit').clone(true);
@@ -184,12 +184,16 @@ inlineEditPost = {
                $('.tags_input', rowData).each(function(){
                        var terms = $(this).text(),
                                taxname = $(this).attr('id').replace('_' + id, ''),
                $('.tags_input', rowData).each(function(){
                        var terms = $(this).text(),
                                taxname = $(this).attr('id').replace('_' + id, ''),
-                               textarea = $('textarea.tax_input_' + taxname, editRow);
+                               textarea = $('textarea.tax_input_' + taxname, editRow),
+                               comma = inlineEditL10n.comma;
 
 
-                       if ( terms )
+                       if ( terms ) {
+                               if ( ',' !== comma )
+                                       terms = terms.replace(/,/g, comma);
                                textarea.val(terms);
                                textarea.val(terms);
+                       }
 
 
-                       textarea.suggest( 'admin-ajax.php?action=ajax-tag-search&tax='+taxname, { delay: 500, minchars: 2, multiple: true, multipleSep: ", " } );
+                       textarea.suggest( ajaxurl + '?action=ajax-tag-search&tax=' + taxname, { delay: 500, minchars: 2, multiple: true, multipleSep: inlineEditL10n.comma + ' ' } );
                });
 
                // handle the post status
                });
 
                // handle the post status
@@ -247,7 +251,7 @@ inlineEditPost = {
                params = fields + '&' + $.param(params);
 
                // make ajax request
                params = fields + '&' + $.param(params);
 
                // make ajax request
-               $.post('admin-ajax.php', params,
+               $.post( ajaxurl, params,
                        function(r) {
                                $('table.widefat .inline-edit-save .waiting').hide();
 
                        function(r) {
                                $('table.widefat .inline-edit-save .waiting').hide();
 
index 61d9f48c3d845b065c9afc729a1bdff5a6b3af69..13430d395349493e2333d79a67e7c8039e114393 100644 (file)
@@ -1 +1 @@
-(function(a){inlineEditPost={init:function(){var c=this,d=a("#inline-edit"),b=a("#bulk-edit");c.type=a("table.widefat").hasClass("pages")?"page":"post";c.what="#post-";d.keyup(function(f){if(f.which==27){return inlineEditPost.revert()}});b.keyup(function(f){if(f.which==27){return inlineEditPost.revert()}});a("a.cancel",d).click(function(){return inlineEditPost.revert()});a("a.save",d).click(function(){return inlineEditPost.save(this)});a("td",d).keydown(function(f){if(f.which==13){return inlineEditPost.save(this)}});a("a.cancel",b).click(function(){return inlineEditPost.revert()});a('#inline-edit .inline-edit-private input[value="private"]').click(function(){var e=a("input.inline-edit-password-input");if(a(this).prop("checked")){e.val("").prop("disabled",true)}else{e.prop("disabled",false)}});a("a.editinline").live("click",function(){inlineEditPost.edit(this);return false});a("#bulk-title-div").parents("fieldset").after(a("#inline-edit fieldset.inline-edit-categories").clone()).siblings("fieldset:last").prepend(a("#inline-edit label.inline-edit-tags").clone());a("span.catshow").click(function(){a(this).hide().next().show().parent().next().addClass("cat-hover")});a("span.cathide").click(function(){a(this).hide().prev().show().parent().next().removeClass("cat-hover")});a('select[name="_status"] option[value="future"]',b).remove();a("#doaction, #doaction2").click(function(f){var g=a(this).attr("id").substr(2);if(a('select[name="'+g+'"]').val()=="edit"){f.preventDefault();c.setBulk()}else{if(a("form#posts-filter tr.inline-editor").length>0){c.revert()}}});a("#post-query-submit").mousedown(function(f){c.revert();a('select[name^="action"]').val("-1")})},toggle:function(c){var b=this;a(b.what+b.getId(c)).css("display")=="none"?b.revert():b.edit(c)},setBulk:function(){var e="",d=this.type,b,f=true;this.revert();a("#bulk-edit td").attr("colspan",a(".widefat:first thead th:visible").length);a("table.widefat tbody").prepend(a("#bulk-edit"));a("#bulk-edit").addClass("inline-editor").show();a('tbody th.check-column input[type="checkbox"]').each(function(g){if(a(this).prop("checked")){f=false;var h=a(this).val(),c;c=a("#inline_"+h+" .post_title").text()||inlineEditL10n.notitle;e+='<div id="ttle'+h+'"><a id="_'+h+'" class="ntdelbutton" title="'+inlineEditL10n.ntdeltitle+'">X</a>'+c+"</div>"}});if(f){return this.revert()}a("#bulk-titles").html(e);a("#bulk-titles a").click(function(){var c=a(this).attr("id").substr(1);a('table.widefat input[value="'+c+'"]').prop("checked",false);a("#ttle"+c).remove()});if("post"==d){b="post_tag";a('tr.inline-editor textarea[name="tax_input['+b+']"]').suggest("admin-ajax.php?action=ajax-tag-search&tax="+b,{delay:500,minchars:2,multiple:true,multipleSep:", "})}a("html, body").animate({scrollTop:0},"fast")},edit:function(c){var n=this,j,e,g,i,h,m,l,d=true,o,b,k;n.revert();if(typeof(c)=="object"){c=n.getId(c)}j=["post_title","post_name","post_author","_status","jj","mm","aa","hh","mn","ss","post_password","post_format"];if(n.type=="page"){j.push("post_parent","menu_order","page_template")}e=a("#inline-edit").clone(true);a("td",e).attr("colspan",a(".widefat:first thead th:visible").length);if(a(n.what+c).hasClass("alternate")){a(e).addClass("alternate")}a(n.what+c).hide().after(e);g=a("#inline_"+c);if(!a(':input[name="post_author"] option[value="'+a(".post_author",g).text()+'"]',e).val()){a(':input[name="post_author"]',e).prepend('<option value="'+a(".post_author",g).text()+'">'+a("#"+n.type+"-"+c+" .author").text()+"</option>")}if(a(':input[name="post_author"] option',e).length==1){a("label.inline-edit-author",e).hide()}b=a(".post_format",g).text();a("option.unsupported",e).each(function(){var f=a(this);if(f.val()!=b){f.remove()}});for(k=0;k<j.length;k++){a(':input[name="'+j[k]+'"]',e).val(a("."+j[k],g).text())}if(a(".comment_status",g).text()=="open"){a('input[name="comment_status"]',e).prop("checked",true)}if(a(".ping_status",g).text()=="open"){a('input[name="ping_status"]',e).prop("checked",true)}if(a(".sticky",g).text()=="sticky"){a('input[name="sticky"]',e).prop("checked",true)}a(".post_category",g).each(function(){var f=a(this).text();if(f){taxname=a(this).attr("id").replace("_"+c,"");a("ul."+taxname+"-checklist :checkbox",e).val(f.split(","))}});a(".tags_input",g).each(function(){var p=a(this).text(),q=a(this).attr("id").replace("_"+c,""),f=a("textarea.tax_input_"+q,e);if(p){f.val(p)}f.suggest("admin-ajax.php?action=ajax-tag-search&tax="+q,{delay:500,minchars:2,multiple:true,multipleSep:", "})});i=a("._status",g).text();if("future"!=i){a('select[name="_status"] option[value="future"]',e).remove()}if("private"==i){a('input[name="keep_private"]',e).prop("checked",true);a("input.inline-edit-password-input").val("").prop("disabled",true)}h=a('select[name="post_parent"] option[value="'+c+'"]',e);if(h.length>0){m=h[0].className.split("-")[1];l=h;while(d){l=l.next("option");if(l.length==0){break}o=l[0].className.split("-")[1];if(o<=m){d=false}else{l.remove();l=h}}h.remove()}a(e).attr("id","edit-"+c).addClass("inline-editor").show();a(".ptitle",e).focus();return false},save:function(e){var d,b,c=a(".post_status_page").val()||"";if(typeof(e)=="object"){e=this.getId(e)}a("table.widefat .inline-edit-save .waiting").show();d={action:"inline-save",post_type:typenow,post_ID:e,edit_date:"true",post_status:c};b=a("#edit-"+e+" :input").serialize();d=b+"&"+a.param(d);a.post("admin-ajax.php",d,function(f){a("table.widefat .inline-edit-save .waiting").hide();if(f){if(-1!=f.indexOf("<tr")){a(inlineEditPost.what+e).remove();a("#edit-"+e).before(f).remove();a(inlineEditPost.what+e).hide().fadeIn()}else{f=f.replace(/<.[^<>]*?>/g,"");a("#edit-"+e+" .inline-edit-save .error").html(f).show()}}else{a("#edit-"+e+" .inline-edit-save .error").html(inlineEditL10n.error).show()}},"html");return false},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");if(b){a("table.widefat .inline-edit-save .waiting").hide();if("bulk-edit"==b){a("table.widefat #bulk-edit").removeClass("inline-editor").hide();a("#bulk-titles").html("");a("#inlineedit").append(a("#bulk-edit"))}else{a("#"+b).remove();b=b.substr(b.lastIndexOf("-")+1);a(this.what+b).show()}}return false},getId:function(c){var d=a(c).closest("tr").attr("id"),b=d.split("-");return b[b.length-1]}};a(document).ready(function(){inlineEditPost.init()})})(jQuery);
\ No newline at end of file
+(function(a){inlineEditPost={init:function(){var c=this,d=a("#inline-edit"),b=a("#bulk-edit");c.type=a("table.widefat").hasClass("pages")?"page":"post";c.what="#post-";d.keyup(function(f){if(f.which==27){return inlineEditPost.revert()}});b.keyup(function(f){if(f.which==27){return inlineEditPost.revert()}});a("a.cancel",d).click(function(){return inlineEditPost.revert()});a("a.save",d).click(function(){return inlineEditPost.save(this)});a("td",d).keydown(function(f){if(f.which==13){return inlineEditPost.save(this)}});a("a.cancel",b).click(function(){return inlineEditPost.revert()});a('#inline-edit .inline-edit-private input[value="private"]').click(function(){var e=a("input.inline-edit-password-input");if(a(this).prop("checked")){e.val("").prop("disabled",true)}else{e.prop("disabled",false)}});a("a.editinline").live("click",function(){inlineEditPost.edit(this);return false});a("#bulk-title-div").parents("fieldset").after(a("#inline-edit fieldset.inline-edit-categories").clone()).siblings("fieldset:last").prepend(a("#inline-edit label.inline-edit-tags").clone());a("span.catshow").click(function(){a(this).hide().next().show().parent().next().addClass("cat-hover")});a("span.cathide").click(function(){a(this).hide().prev().show().parent().next().removeClass("cat-hover")});a('select[name="_status"] option[value="future"]',b).remove();a("#doaction, #doaction2").click(function(f){var g=a(this).attr("id").substr(2);if(a('select[name="'+g+'"]').val()=="edit"){f.preventDefault();c.setBulk()}else{if(a("form#posts-filter tr.inline-editor").length>0){c.revert()}}});a("#post-query-submit").mousedown(function(f){c.revert();a('select[name^="action"]').val("-1")})},toggle:function(c){var b=this;a(b.what+b.getId(c)).css("display")=="none"?b.revert():b.edit(c)},setBulk:function(){var e="",d=this.type,b,f=true;this.revert();a("#bulk-edit td").attr("colspan",a(".widefat:first thead th:visible").length);a("table.widefat tbody").prepend(a("#bulk-edit"));a("#bulk-edit").addClass("inline-editor").show();a('tbody th.check-column input[type="checkbox"]').each(function(g){if(a(this).prop("checked")){f=false;var h=a(this).val(),c;c=a("#inline_"+h+" .post_title").text()||inlineEditL10n.notitle;e+='<div id="ttle'+h+'"><a id="_'+h+'" class="ntdelbutton" title="'+inlineEditL10n.ntdeltitle+'">X</a>'+c+"</div>"}});if(f){return this.revert()}a("#bulk-titles").html(e);a("#bulk-titles a").click(function(){var c=a(this).attr("id").substr(1);a('table.widefat input[value="'+c+'"]').prop("checked",false);a("#ttle"+c).remove()});if("post"==d){b="post_tag";a('tr.inline-editor textarea[name="tax_input['+b+']"]').suggest(ajaxurl+"?action=ajax-tag-search&tax="+b,{delay:500,minchars:2,multiple:true,multipleSep:inlineEditL10n.comma+" "})}a("html, body").animate({scrollTop:0},"fast")},edit:function(c){var n=this,j,e,g,i,h,m,l,d=true,o,b,k;n.revert();if(typeof(c)=="object"){c=n.getId(c)}j=["post_title","post_name","post_author","_status","jj","mm","aa","hh","mn","ss","post_password","post_format","menu_order"];if(n.type=="page"){j.push("post_parent","page_template")}e=a("#inline-edit").clone(true);a("td",e).attr("colspan",a(".widefat:first thead th:visible").length);if(a(n.what+c).hasClass("alternate")){a(e).addClass("alternate")}a(n.what+c).hide().after(e);g=a("#inline_"+c);if(!a(':input[name="post_author"] option[value="'+a(".post_author",g).text()+'"]',e).val()){a(':input[name="post_author"]',e).prepend('<option value="'+a(".post_author",g).text()+'">'+a("#"+n.type+"-"+c+" .author").text()+"</option>")}if(a(':input[name="post_author"] option',e).length==1){a("label.inline-edit-author",e).hide()}b=a(".post_format",g).text();a("option.unsupported",e).each(function(){var f=a(this);if(f.val()!=b){f.remove()}});for(k=0;k<j.length;k++){a(':input[name="'+j[k]+'"]',e).val(a("."+j[k],g).text())}if(a(".comment_status",g).text()=="open"){a('input[name="comment_status"]',e).prop("checked",true)}if(a(".ping_status",g).text()=="open"){a('input[name="ping_status"]',e).prop("checked",true)}if(a(".sticky",g).text()=="sticky"){a('input[name="sticky"]',e).prop("checked",true)}a(".post_category",g).each(function(){var f=a(this).text();if(f){taxname=a(this).attr("id").replace("_"+c,"");a("ul."+taxname+"-checklist :checkbox",e).val(f.split(","))}});a(".tags_input",g).each(function(){var q=a(this).text(),r=a(this).attr("id").replace("_"+c,""),p=a("textarea.tax_input_"+r,e),f=inlineEditL10n.comma;if(q){if(","!==f){q=q.replace(/,/g,f)}p.val(q)}p.suggest(ajaxurl+"?action=ajax-tag-search&tax="+r,{delay:500,minchars:2,multiple:true,multipleSep:inlineEditL10n.comma+" "})});i=a("._status",g).text();if("future"!=i){a('select[name="_status"] option[value="future"]',e).remove()}if("private"==i){a('input[name="keep_private"]',e).prop("checked",true);a("input.inline-edit-password-input").val("").prop("disabled",true)}h=a('select[name="post_parent"] option[value="'+c+'"]',e);if(h.length>0){m=h[0].className.split("-")[1];l=h;while(d){l=l.next("option");if(l.length==0){break}o=l[0].className.split("-")[1];if(o<=m){d=false}else{l.remove();l=h}}h.remove()}a(e).attr("id","edit-"+c).addClass("inline-editor").show();a(".ptitle",e).focus();return false},save:function(e){var d,b,c=a(".post_status_page").val()||"";if(typeof(e)=="object"){e=this.getId(e)}a("table.widefat .inline-edit-save .waiting").show();d={action:"inline-save",post_type:typenow,post_ID:e,edit_date:"true",post_status:c};b=a("#edit-"+e+" :input").serialize();d=b+"&"+a.param(d);a.post(ajaxurl,d,function(f){a("table.widefat .inline-edit-save .waiting").hide();if(f){if(-1!=f.indexOf("<tr")){a(inlineEditPost.what+e).remove();a("#edit-"+e).before(f).remove();a(inlineEditPost.what+e).hide().fadeIn()}else{f=f.replace(/<.[^<>]*?>/g,"");a("#edit-"+e+" .inline-edit-save .error").html(f).show()}}else{a("#edit-"+e+" .inline-edit-save .error").html(inlineEditL10n.error).show()}},"html");return false},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");if(b){a("table.widefat .inline-edit-save .waiting").hide();if("bulk-edit"==b){a("table.widefat #bulk-edit").removeClass("inline-editor").hide();a("#bulk-titles").html("");a("#inlineedit").append(a("#bulk-edit"))}else{a("#"+b).remove();b=b.substr(b.lastIndexOf("-")+1);a(this.what+b).show()}}return false},getId:function(c){var d=a(c).closest("tr").attr("id"),b=d.split("-");return b[b.length-1]}};a(document).ready(function(){inlineEditPost.init()})})(jQuery);
\ No newline at end of file
index 333bf6bae3a5f5416ba15c2451504552783ce578..64c7bab94e75de9088966028822c60bc2a7089c9 100644 (file)
@@ -73,7 +73,7 @@ inlineEditTax = {
                params = fields + '&' + $.param(params);
 
                // make ajax request
                params = fields + '&' + $.param(params);
 
                // make ajax request
-               $.post('admin-ajax.php', params,
+               $.post( ajaxurl, params,
                        function(r) {
                                var row, new_id;
                                $('table.widefat .inline-edit-save .waiting').hide();
                        function(r) {
                                var row, new_id;
                                $('table.widefat .inline-edit-save .waiting').hide();
index 113e5a0e8f33b5396e361d7440448ae091c640d2..cccde57d09549c7c82da193f3a28ba9dec53b771 100644 (file)
@@ -1 +1 @@
-(function(a){inlineEditTax={init:function(){var b=this,c=a("#inline-edit");b.type=a("#the-list").attr("class").substr(5);b.what="#"+b.type+"-";a(".editinline").live("click",function(){inlineEditTax.edit(this);return false});c.keyup(function(d){if(d.which==27){return inlineEditTax.revert()}});a("a.cancel",c).click(function(){return inlineEditTax.revert()});a("a.save",c).click(function(){return inlineEditTax.save(this)});a("input, select",c).keydown(function(d){if(d.which==13){return inlineEditTax.save(this)}});a('#posts-filter input[type="submit"]').mousedown(function(d){b.revert()})},toggle:function(c){var b=this;a(b.what+b.getId(c)).css("display")=="none"?b.revert():b.edit(c)},edit:function(d){var c=this,b;c.revert();if(typeof(d)=="object"){d=c.getId(d)}b=a("#inline-edit").clone(true),rowData=a("#inline_"+d);a("td",b).attr("colspan",a(".widefat:first thead th:visible").length);if(a(c.what+d).hasClass("alternate")){a(b).addClass("alternate")}a(c.what+d).hide().after(b);a(':input[name="name"]',b).val(a(".name",rowData).text());a(':input[name="slug"]',b).val(a(".slug",rowData).text());a(b).attr("id","edit-"+d).addClass("inline-editor").show();a(".ptitle",b).eq(0).focus();return false},save:function(e){var d,b,c=a('input[name="taxonomy"]').val()||"";if(typeof(e)=="object"){e=this.getId(e)}a("table.widefat .inline-edit-save .waiting").show();d={action:"inline-save-tax",tax_type:this.type,tax_ID:e,taxonomy:c};b=a("#edit-"+e+" :input").serialize();d=b+"&"+a.param(d);a.post("admin-ajax.php",d,function(g){var h,f;a("table.widefat .inline-edit-save .waiting").hide();if(g){if(-1!=g.indexOf("<tr")){a(inlineEditTax.what+e).remove();f=a(g).attr("id");a("#edit-"+e).before(g).remove();h=f?a("#"+f):a(inlineEditTax.what+e);h.hide().fadeIn()}else{a("#edit-"+e+" .inline-edit-save .error").html(g).show()}}else{a("#edit-"+e+" .inline-edit-save .error").html(inlineEditL10n.error).show()}});return false},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");if(b){a("table.widefat .inline-edit-save .waiting").hide();a("#"+b).remove();b=b.substr(b.lastIndexOf("-")+1);a(this.what+b).show()}return false},getId:function(c){var d=c.tagName=="TR"?c.id:a(c).parents("tr").attr("id"),b=d.split("-");return b[b.length-1]}};a(document).ready(function(){inlineEditTax.init()})})(jQuery);
\ No newline at end of file
+(function(a){inlineEditTax={init:function(){var b=this,c=a("#inline-edit");b.type=a("#the-list").attr("class").substr(5);b.what="#"+b.type+"-";a(".editinline").live("click",function(){inlineEditTax.edit(this);return false});c.keyup(function(d){if(d.which==27){return inlineEditTax.revert()}});a("a.cancel",c).click(function(){return inlineEditTax.revert()});a("a.save",c).click(function(){return inlineEditTax.save(this)});a("input, select",c).keydown(function(d){if(d.which==13){return inlineEditTax.save(this)}});a('#posts-filter input[type="submit"]').mousedown(function(d){b.revert()})},toggle:function(c){var b=this;a(b.what+b.getId(c)).css("display")=="none"?b.revert():b.edit(c)},edit:function(d){var c=this,b;c.revert();if(typeof(d)=="object"){d=c.getId(d)}b=a("#inline-edit").clone(true),rowData=a("#inline_"+d);a("td",b).attr("colspan",a(".widefat:first thead th:visible").length);if(a(c.what+d).hasClass("alternate")){a(b).addClass("alternate")}a(c.what+d).hide().after(b);a(':input[name="name"]',b).val(a(".name",rowData).text());a(':input[name="slug"]',b).val(a(".slug",rowData).text());a(b).attr("id","edit-"+d).addClass("inline-editor").show();a(".ptitle",b).eq(0).focus();return false},save:function(e){var d,b,c=a('input[name="taxonomy"]').val()||"";if(typeof(e)=="object"){e=this.getId(e)}a("table.widefat .inline-edit-save .waiting").show();d={action:"inline-save-tax",tax_type:this.type,tax_ID:e,taxonomy:c};b=a("#edit-"+e+" :input").serialize();d=b+"&"+a.param(d);a.post(ajaxurl,d,function(g){var h,f;a("table.widefat .inline-edit-save .waiting").hide();if(g){if(-1!=g.indexOf("<tr")){a(inlineEditTax.what+e).remove();f=a(g).attr("id");a("#edit-"+e).before(g).remove();h=f?a("#"+f):a(inlineEditTax.what+e);h.hide().fadeIn()}else{a("#edit-"+e+" .inline-edit-save .error").html(g).show()}}else{a("#edit-"+e+" .inline-edit-save .error").html(inlineEditL10n.error).show()}});return false},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");if(b){a("table.widefat .inline-edit-save .waiting").hide();a("#"+b).remove();b=b.substr(b.lastIndexOf("-")+1);a(this.what+b).show()}return false},getId:function(c){var d=c.tagName=="TR"?c.id:a(c).parents("tr").attr("id"),b=d.split("-");return b[b.length-1]}};a(document).ready(function(){inlineEditTax.init()})})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/media-gallery.dev.js b/wp-admin/js/media-gallery.dev.js
new file mode 100644 (file)
index 0000000..38e4f7b
--- /dev/null
@@ -0,0 +1,25 @@
+jQuery(function($){
+       $( 'body' ).bind( 'click.wp-gallery', function(e){
+               var target = $( e.target ), id, img_size;
+
+               if ( target.hasClass( 'wp-set-header' ) ) {
+                       ( window.dialogArguments || opener || parent || top ).location.href = target.data( 'location' );
+                       e.preventDefault();
+               } else if ( target.hasClass( 'wp-set-background' ) ) {
+                       id = target.data( 'attachment-id' );
+                       img_size = $( 'input[name="attachments[' + id + '][image-size]"]:checked').val();
+
+                       jQuery.post(ajaxurl, {
+                               action: 'set-background-image',
+                               attachment_id: id,
+                               size: img_size
+                       }, function(){
+                               var win = window.dialogArguments || opener || parent || top;
+                               win.tb_remove();
+                               win.location.reload();
+                       });
+
+                       e.preventDefault();
+               }
+       });
+});
diff --git a/wp-admin/js/media-gallery.js b/wp-admin/js/media-gallery.js
new file mode 100644 (file)
index 0000000..81e5113
--- /dev/null
@@ -0,0 +1 @@
+jQuery(function(a){a("body").bind("click.wp-gallery",function(d){var c=a(d.target),f,b;if(c.hasClass("wp-set-header")){(window.dialogArguments||opener||parent||top).location.href=c.data("location");d.preventDefault()}else{if(c.hasClass("wp-set-background")){f=c.data("attachment-id");b=a('input[name="attachments['+f+'][image-size]"]:checked').val();jQuery.post(ajaxurl,{action:"set-background-image",attachment_id:f,size:b},function(){var e=window.dialogArguments||opener||parent||top;e.tb_remove();e.location.reload()});d.preventDefault()}}})});
\ No newline at end of file
index 488e3a01f21c48a67126560fe2f9fed7065a39eb..9b998ff2a3d582b8a3dadff670db2637fde1d795 100644 (file)
@@ -25,8 +25,8 @@ function send_to_editor(h) {
                        ed.selection.moveToBookmark(ed.windowManager.insertimagebookmark);
 
                if ( h.indexOf('[caption') === 0 ) {
                        ed.selection.moveToBookmark(ed.windowManager.insertimagebookmark);
 
                if ( h.indexOf('[caption') === 0 ) {
-                       if ( ed.plugins.wpeditimage )
-                               h = ed.plugins.wpeditimage._do_shcode(h);
+                       if ( ed.wpSetImgCaption )
+                               h = ed.wpSetImgCaption(h);
                } else if ( h.indexOf('[gallery') === 0 ) {
                        if ( ed.plugins.wpgallery )
                                h = ed.plugins.wpgallery._do_gallery(h);
                } else if ( h.indexOf('[gallery') === 0 ) {
                        if ( ed.plugins.wpgallery )
                                h = ed.plugins.wpgallery._do_gallery(h);
index 618d92b3700dae05ddae5e0b63c01114bcc7bc9c..7d1b9beefe1b070a00dc9e38e2c7d2d70738c285 100644 (file)
@@ -1 +1 @@
-var wpActiveEditor;function send_to_editor(c){var b,a=typeof(tinymce)!="undefined",f=typeof(QTags)!="undefined";if(!wpActiveEditor){if(a&&tinymce.activeEditor){b=tinymce.activeEditor;wpActiveEditor=b.id}else{if(!f){return false}}}else{if(a){if(tinymce.activeEditor&&(tinymce.activeEditor.id=="mce_fullscreen"||tinymce.activeEditor.id=="wp_mce_fullscreen")){b=tinymce.activeEditor}else{b=tinymce.get(wpActiveEditor)}}}if(b&&!b.isHidden()){if(tinymce.isIE&&b.windowManager.insertimagebookmark){b.selection.moveToBookmark(b.windowManager.insertimagebookmark)}if(c.indexOf("[caption")===0){if(b.plugins.wpeditimage){c=b.plugins.wpeditimage._do_shcode(c)}}else{if(c.indexOf("[gallery")===0){if(b.plugins.wpgallery){c=b.plugins.wpgallery._do_gallery(c)}}else{if(c.indexOf("[embed")===0){if(b.plugins.wordpress){c=b.plugins.wordpress._setEmbed(c)}}}}b.execCommand("mceInsertContent",false,c)}else{if(f){QTags.insertContent(c)}else{document.getElementById(wpActiveEditor).value+=c}}try{tb_remove()}catch(d){}}var tb_position;(function(a){tb_position=function(){var f=a("#TB_window"),e=a(window).width(),d=a(window).height(),c=(720<e)?720:e,b=0;if(a("body.admin-bar").length){b=28}if(f.size()){f.width(c-50).height(d-45-b);a("#TB_iframeContent").width(c-50).height(d-75-b);f.css({"margin-left":"-"+parseInt(((c-50)/2),10)+"px"});if(typeof document.body.style.maxWidth!="undefined"){f.css({top:20+b+"px","margin-top":"0"})}}return a("a.thickbox").each(function(){var g=a(this).attr("href");if(!g){return}g=g.replace(/&width=[0-9]+/g,"");g=g.replace(/&height=[0-9]+/g,"");a(this).attr("href",g+"&width="+(c-80)+"&height="+(d-85-b))})};a(window).resize(function(){tb_position()});a(document).ready(function(b){b("a.thickbox").click(function(){var c;if(typeof(tinymce)!="undefined"&&tinymce.isIE&&(c=tinymce.get(wpActiveEditor))&&!c.isHidden()){c.focus();c.windowManager.insertimagebookmark=c.selection.getBookmark()}})})})(jQuery);
\ No newline at end of file
+var wpActiveEditor;function send_to_editor(c){var b,a=typeof(tinymce)!="undefined",f=typeof(QTags)!="undefined";if(!wpActiveEditor){if(a&&tinymce.activeEditor){b=tinymce.activeEditor;wpActiveEditor=b.id}else{if(!f){return false}}}else{if(a){if(tinymce.activeEditor&&(tinymce.activeEditor.id=="mce_fullscreen"||tinymce.activeEditor.id=="wp_mce_fullscreen")){b=tinymce.activeEditor}else{b=tinymce.get(wpActiveEditor)}}}if(b&&!b.isHidden()){if(tinymce.isIE&&b.windowManager.insertimagebookmark){b.selection.moveToBookmark(b.windowManager.insertimagebookmark)}if(c.indexOf("[caption")===0){if(b.wpSetImgCaption){c=b.wpSetImgCaption(c)}}else{if(c.indexOf("[gallery")===0){if(b.plugins.wpgallery){c=b.plugins.wpgallery._do_gallery(c)}}else{if(c.indexOf("[embed")===0){if(b.plugins.wordpress){c=b.plugins.wordpress._setEmbed(c)}}}}b.execCommand("mceInsertContent",false,c)}else{if(f){QTags.insertContent(c)}else{document.getElementById(wpActiveEditor).value+=c}}try{tb_remove()}catch(d){}}var tb_position;(function(a){tb_position=function(){var f=a("#TB_window"),e=a(window).width(),d=a(window).height(),c=(720<e)?720:e,b=0;if(a("body.admin-bar").length){b=28}if(f.size()){f.width(c-50).height(d-45-b);a("#TB_iframeContent").width(c-50).height(d-75-b);f.css({"margin-left":"-"+parseInt(((c-50)/2),10)+"px"});if(typeof document.body.style.maxWidth!="undefined"){f.css({top:20+b+"px","margin-top":"0"})}}return a("a.thickbox").each(function(){var g=a(this).attr("href");if(!g){return}g=g.replace(/&width=[0-9]+/g,"");g=g.replace(/&height=[0-9]+/g,"");a(this).attr("href",g+"&width="+(c-80)+"&height="+(d-85-b))})};a(window).resize(function(){tb_position()});a(document).ready(function(b){b("a.thickbox").click(function(){var c;if(typeof(tinymce)!="undefined"&&tinymce.isIE&&(c=tinymce.get(wpActiveEditor))&&!c.isHidden()){c.focus();c.windowManager.insertimagebookmark=c.selection.getBookmark()}})})})(jQuery);
\ No newline at end of file
index 3c221b35debfcf94ccd6ddb684c6c0223ce4340a..6c589ec3713bad3bba2793e0fa07da1939640ed1 100644 (file)
@@ -28,13 +28,10 @@ var findPosts;
                        var post = {
                                ps: $('#find-posts-input').val(),
                                action: 'find_posts',
                        var post = {
                                ps: $('#find-posts-input').val(),
                                action: 'find_posts',
-                               _ajax_nonce: $('#_ajax_nonce').val()
+                               _ajax_nonce: $('#_ajax_nonce').val(),
+                               post_type: $('input[name="find-posts-what"]:checked').val()
                        };
 
                        };
 
-                       var selectedItem;
-                       $("input[@name='itemSelect[]']:checked").each(function() { selectedItem = $(this).val() });
-                       post['post_type'] = selectedItem;
-
                        $.ajax({
                                type : 'POST',
                                url : ajaxurl,
                        $.ajax({
                                type : 'POST',
                                url : ajaxurl,
index d5bd85b995deb0087d873a3424ca727b1cc1a0c7..2fe5c0f9c7ca304f0e32c40df8c3d0ca17d3fa51 100644 (file)
@@ -1 +1 @@
-var findPosts;(function(a){findPosts={open:function(d,c){var b=document.documentElement.scrollTop||a(document).scrollTop();if(d&&c){a("#affected").attr("name",d).val(c)}a("#find-posts").show().draggable({handle:"#find-posts-head"}).css({top:b+50+"px",left:"50%",marginLeft:"-250px"});a("#find-posts-input").focus().keyup(function(f){if(f.which==27){findPosts.close()}});return false},close:function(){a("#find-posts-response").html("");a("#find-posts").draggable("destroy").hide()},send:function(){var b={ps:a("#find-posts-input").val(),action:"find_posts",_ajax_nonce:a("#_ajax_nonce").val()};var c;a("input[@name='itemSelect[]']:checked").each(function(){c=a(this).val()});b.post_type=c;a.ajax({type:"POST",url:ajaxurl,data:b,success:function(d){findPosts.show(d)},error:function(d){findPosts.error(d)}})},show:function(b){if(typeof(b)=="string"){this.error({responseText:b});return}var c=wpAjax.parseAjaxResponse(b);if(c.errors){this.error({responseText:wpAjax.broken})}c=c.responses[0];a("#find-posts-response").html(c.data)},error:function(b){var c=b.statusText;if(b.responseText){c=b.responseText.replace(/<.[^<>]*?>/g,"")}if(c){a("#find-posts-response").html(c)}}};a(document).ready(function(){a("#find-posts-submit").click(function(b){if(""==a("#find-posts-response").html()){b.preventDefault()}});a("#find-posts .find-box-search :input").keypress(function(b){if(13==b.which){findPosts.send();return false}});a("#find-posts-search").click(findPosts.send);a("#find-posts-close").click(findPosts.close);a("#doaction, #doaction2").click(function(b){a('select[name^="action"]').each(function(){if(a(this).val()=="attach"){b.preventDefault();findPosts.open()}})})})})(jQuery);
\ No newline at end of file
+var findPosts;(function(a){findPosts={open:function(d,c){var b=document.documentElement.scrollTop||a(document).scrollTop();if(d&&c){a("#affected").attr("name",d).val(c)}a("#find-posts").show().draggable({handle:"#find-posts-head"}).css({top:b+50+"px",left:"50%",marginLeft:"-250px"});a("#find-posts-input").focus().keyup(function(f){if(f.which==27){findPosts.close()}});return false},close:function(){a("#find-posts-response").html("");a("#find-posts").draggable("destroy").hide()},send:function(){var b={ps:a("#find-posts-input").val(),action:"find_posts",_ajax_nonce:a("#_ajax_nonce").val(),post_type:a('input[name="find-posts-what"]:checked').val()};a.ajax({type:"POST",url:ajaxurl,data:b,success:function(c){findPosts.show(c)},error:function(c){findPosts.error(c)}})},show:function(b){if(typeof(b)=="string"){this.error({responseText:b});return}var c=wpAjax.parseAjaxResponse(b);if(c.errors){this.error({responseText:wpAjax.broken})}c=c.responses[0];a("#find-posts-response").html(c.data)},error:function(b){var c=b.statusText;if(b.responseText){c=b.responseText.replace(/<.[^<>]*?>/g,"")}if(c){a("#find-posts-response").html(c)}}};a(document).ready(function(){a("#find-posts-submit").click(function(b){if(""==a("#find-posts-response").html()){b.preventDefault()}});a("#find-posts .find-box-search :input").keypress(function(b){if(13==b.which){findPosts.send();return false}});a("#find-posts-search").click(findPosts.send);a("#find-posts-close").click(findPosts.close);a("#doaction, #doaction2").click(function(b){a('select[name^="action"]').each(function(){if(a(this).val()=="attach"){b.preventDefault();findPosts.open()}})})})})(jQuery);
\ No newline at end of file
index dd038d8983bf7f16d282c09881846684ede8e365..42cd217dce616413d9c8f45936f5adea36840ca9 100644 (file)
@@ -15,11 +15,19 @@ function array_unique_noempty(a) {
 
 tagBox = {
        clean : function(tags) {
 
 tagBox = {
        clean : function(tags) {
-               return tags.replace(/\s*,\s*/g, ',').replace(/,+/g, ',').replace(/[,\s]+$/, '').replace(/^[,\s]+/, '');
+               var comma = postL10n.comma;
+               if ( ',' !== comma )
+                       tags = tags.replace(new RegExp(comma, 'g'), ',');
+               tags = tags.replace(/\s*,\s*/g, ',').replace(/,+/g, ',').replace(/[,\s]+$/, '').replace(/^[,\s]+/, '');
+               if ( ',' !== comma )
+                       tags = tags.replace(/,/g, comma);
+               return tags;
        },
 
        parseTags : function(el) {
        },
 
        parseTags : function(el) {
-               var id = el.id, num = id.split('-check-num-')[1], taxbox = $(el).closest('.tagsdiv'), thetags = taxbox.find('.the-tags'), current_tags = thetags.val().split(','), new_tags = [];
+               var id = el.id, num = id.split('-check-num-')[1], taxbox = $(el).closest('.tagsdiv'),
+                       thetags = taxbox.find('.the-tags'), comma = postL10n.comma,
+                       current_tags = thetags.val().split(comma), new_tags = [];
                delete current_tags[num];
 
                $.each( current_tags, function(key, val) {
                delete current_tags[num];
 
                $.each( current_tags, function(key, val) {
@@ -29,7 +37,7 @@ tagBox = {
                        }
                });
 
                        }
                });
 
-               thetags.val( this.clean( new_tags.join(',') ) );
+               thetags.val( this.clean( new_tags.join(comma) ) );
 
                this.quickClicks(taxbox);
                return false;
 
                this.quickClicks(taxbox);
                return false;
@@ -46,7 +54,7 @@ tagBox = {
 
                disabled = thetags.prop('disabled');
 
 
                disabled = thetags.prop('disabled');
 
-               current_tags = thetags.val().split(',');
+               current_tags = thetags.val().split(postL10n.comma);
                tagchecklist.empty();
 
                $.each( current_tags, function( key, val ) {
                tagchecklist.empty();
 
                $.each( current_tags, function( key, val ) {
@@ -74,14 +82,17 @@ tagBox = {
 
        flushTags : function(el, a, f) {
                a = a || false;
 
        flushTags : function(el, a, f) {
                a = a || false;
-               var text, tags = $('.the-tags', el), newtag = $('input.newtag', el), newtags;
+               var tags = $('.the-tags', el),
+                       newtag = $('input.newtag', el),
+                       comma = postL10n.comma,
+                       newtags, text;
 
                text = a ? $(a).text() : newtag.val();
                tagsval = tags.val();
 
                text = a ? $(a).text() : newtag.val();
                tagsval = tags.val();
-               newtags = tagsval ? tagsval + ',' + text : text;
+               newtags = tagsval ? tagsval + comma + text : text;
 
                newtags = this.clean( newtags );
 
                newtags = this.clean( newtags );
-               newtags = array_unique_noempty( newtags.split(',') ).join(',');
+               newtags = array_unique_noempty( newtags.split(comma) ).join(comma);
                tags.val(newtags);
                this.quickClicks(el);
 
                tags.val(newtags);
                this.quickClicks(el);
 
@@ -96,7 +107,7 @@ tagBox = {
        get : function(id) {
                var tax = id.substr(id.indexOf('-')+1);
 
        get : function(id) {
                var tax = id.substr(id.indexOf('-')+1);
 
-               $.post(ajaxurl, {'action':'get-tagcloud','tax':tax}, function(r, stat) {
+               $.post(ajaxurl, {'action':'get-tagcloud', 'tax':tax}, function(r, stat) {
                        if ( 0 == r || 'success' != stat )
                                r = wpAjax.broken;
 
                        if ( 0 == r || 'success' != stat )
                                r = wpAjax.broken;
 
@@ -142,7 +153,7 @@ tagBox = {
                        }
                }).each(function(){
                        var tax = $(this).closest('div.tagsdiv').attr('id');
                        }
                }).each(function(){
                        var tax = $(this).closest('div.tagsdiv').attr('id');
-                       $(this).suggest( ajaxurl + '?action=ajax-tag-search&tax=' + tax, { delay: 500, minchars: 2, multiple: true, multipleSep: "," } );
+                       $(this).suggest( ajaxurl + '?action=ajax-tag-search&tax=' + tax, { delay: 500, minchars: 2, multiple: true, multipleSep: postL10n.comma + ' ' } );
                });
 
            // save tags on post save/publish
                });
 
            // save tags on post save/publish
@@ -200,10 +211,11 @@ commentsBox = {
                                        if ( commentsBox.st > commentsBox.total )
                                                $('#show-comments').hide();
                                        else
                                        if ( commentsBox.st > commentsBox.total )
                                                $('#show-comments').hide();
                                        else
-                                               $('#show-comments').html(postL10n.showcomm);
+                                               $('#show-comments').show().children('a').html(postL10n.showcomm);
+
                                        return;
                                } else if ( 1 == r ) {
                                        return;
                                } else if ( 1 == r ) {
-                                       $('#show-comments').parent().html(postL10n.endcomm);
+                                       $('#show-comments').html(postL10n.endcomm);
                                        return;
                                }
 
                                        return;
                                }
 
@@ -302,12 +314,14 @@ jQuery(document).ready( function($) {
                        if ( !$('#new'+taxonomy).val() )
                                return false;
                        s.data += '&' + $( ':checked', '#'+taxonomy+'checklist' ).serialize();
                        if ( !$('#new'+taxonomy).val() )
                                return false;
                        s.data += '&' + $( ':checked', '#'+taxonomy+'checklist' ).serialize();
+                       $( '#' + taxonomy + '-add-submit' ).prop( 'disabled', true );
                        return s;
                };
 
                catAddAfter = function( r, s ) {
                        var sup, drop = $('#new'+taxonomy+'_parent');
 
                        return s;
                };
 
                catAddAfter = function( r, s ) {
                        var sup, drop = $('#new'+taxonomy+'_parent');
 
+                       $( '#' + taxonomy + '-add-submit' ).prop( 'disabled', false );
                        if ( 'undefined' != s.parsed.responses[0] && (sup = s.parsed.responses[0].supplemental.newcat_parent) ) {
                                drop.before(sup);
                                drop.remove();
                        if ( 'undefined' != s.parsed.responses[0] && (sup = s.parsed.responses[0].supplemental.newcat_parent) ) {
                                drop.before(sup);
                                drop.remove();
index c37e6daef79cffde92fb84dee7fc3296b5bb81aa..963337e94b93bc75e99408b9398c6cafffbed606 100644 (file)
@@ -1 +1 @@
-var tagBox,commentsBox,editPermalink,makeSlugeditClickable,WPSetThumbnailHTML,WPSetThumbnailID,WPRemoveThumbnail,wptitlehint;function array_unique_noempty(a){var out=[];jQuery.each(a,function(key,val){val=jQuery.trim(val);if(val&&jQuery.inArray(val,out)==-1){out.push(val);}});return out;}(function($){tagBox={clean:function(tags){return tags.replace(/\s*,\s*/g,",").replace(/,+/g,",").replace(/[,\s]+$/,"").replace(/^[,\s]+/,"");},parseTags:function(el){var id=el.id,num=id.split("-check-num-")[1],taxbox=$(el).closest(".tagsdiv"),thetags=taxbox.find(".the-tags"),current_tags=thetags.val().split(","),new_tags=[];delete current_tags[num];$.each(current_tags,function(key,val){val=$.trim(val);if(val){new_tags.push(val);}});thetags.val(this.clean(new_tags.join(",")));this.quickClicks(taxbox);return false;},quickClicks:function(el){var thetags=$(".the-tags",el),tagchecklist=$(".tagchecklist",el),id=$(el).attr("id"),current_tags,disabled;if(!thetags.length){return;}disabled=thetags.prop("disabled");current_tags=thetags.val().split(",");tagchecklist.empty();$.each(current_tags,function(key,val){var span,xbutton;val=$.trim(val);if(!val){return;}span=$("<span />").text(val);if(!disabled){xbutton=$('<a id="'+id+"-check-num-"+key+'" class="ntdelbutton">X</a>');xbutton.click(function(){tagBox.parseTags(this);});span.prepend("&nbsp;").prepend(xbutton);}tagchecklist.append(span);});},flushTags:function(el,a,f){a=a||false;var text,tags=$(".the-tags",el),newtag=$("input.newtag",el),newtags;text=a?$(a).text():newtag.val();tagsval=tags.val();newtags=tagsval?tagsval+","+text:text;newtags=this.clean(newtags);newtags=array_unique_noempty(newtags.split(",")).join(",");tags.val(newtags);this.quickClicks(el);if(!a){newtag.val("");}if("undefined"==typeof(f)){newtag.focus();}return false;},get:function(id){var tax=id.substr(id.indexOf("-")+1);$.post(ajaxurl,{action:"get-tagcloud",tax:tax},function(r,stat){if(0==r||"success"!=stat){r=wpAjax.broken;}r=$('<p id="tagcloud-'+tax+'" class="the-tagcloud">'+r+"</p>");$("a",r).click(function(){tagBox.flushTags($(this).closest(".inside").children(".tagsdiv"),this);return false;});$("#"+id).after(r);});},init:function(){var t=this,ajaxtag=$("div.ajaxtag");$(".tagsdiv").each(function(){tagBox.quickClicks(this);});$("input.tagadd",ajaxtag).click(function(){t.flushTags($(this).closest(".tagsdiv"));});$("div.taghint",ajaxtag).click(function(){$(this).css("visibility","hidden").parent().siblings(".newtag").focus();});$("input.newtag",ajaxtag).blur(function(){if(this.value==""){$(this).parent().siblings(".taghint").css("visibility","");}}).focus(function(){$(this).parent().siblings(".taghint").css("visibility","hidden");}).keyup(function(e){if(13==e.which){tagBox.flushTags($(this).closest(".tagsdiv"));return false;}}).keypress(function(e){if(13==e.which){e.preventDefault();return false;}}).each(function(){var tax=$(this).closest("div.tagsdiv").attr("id");$(this).suggest(ajaxurl+"?action=ajax-tag-search&tax="+tax,{delay:500,minchars:2,multiple:true,multipleSep:","});});$("#post").submit(function(){$("div.tagsdiv").each(function(){tagBox.flushTags(this,false,1);});});$("a.tagcloud-link").click(function(){tagBox.get($(this).attr("id"));$(this).unbind().click(function(){$(this).siblings(".the-tagcloud").toggle();return false;});return false;});}};commentsBox={st:0,get:function(total,num){var st=this.st,data;if(!num){num=20;}this.st+=num;this.total=total;$("#commentsdiv img.waiting").show();data={action:"get-comments",mode:"single",_ajax_nonce:$("#add_comment_nonce").val(),p:$("#post_ID").val(),start:st,number:num};$.post(ajaxurl,data,function(r){r=wpAjax.parseAjaxResponse(r);$("#commentsdiv .widefat").show();$("#commentsdiv img.waiting").hide();if("object"==typeof r&&r.responses[0]){$("#the-comment-list").append(r.responses[0].data);theList=theExtraList=null;$("a[className*=':']").unbind();if(commentsBox.st>commentsBox.total){$("#show-comments").hide();}else{$("#show-comments").html(postL10n.showcomm);}return;}else{if(1==r){$("#show-comments").parent().html(postL10n.endcomm);return;}}$("#the-comment-list").append('<tr><td colspan="2">'+wpAjax.broken+"</td></tr>");});return false;}};WPSetThumbnailHTML=function(html){$(".inside","#postimagediv").html(html);};WPSetThumbnailID=function(id){var field=$('input[value="_thumbnail_id"]',"#list-table");if(field.size()>0){$("#meta\\["+field.attr("id").match(/[0-9]+/)+"\\]\\[value\\]").text(id);}};WPRemoveThumbnail=function(nonce){$.post(ajaxurl,{action:"set-post-thumbnail",post_id:$("#post_ID").val(),thumbnail_id:-1,_ajax_nonce:nonce,cookie:encodeURIComponent(document.cookie)},function(str){if(str=="0"){alert(setPostThumbnailL10n.error);}else{WPSetThumbnailHTML(str);}});};})(jQuery);jQuery(document).ready(function($){var stamp,visibility,sticky="",last=0,co=$("#content");postboxes.add_postbox_toggles(pagenow);if($("#tagsdiv-post_tag").length){tagBox.init();}else{$("#side-sortables, #normal-sortables, #advanced-sortables").children("div.postbox").each(function(){if(this.id.indexOf("tagsdiv-")===0){tagBox.init();return false;}});}$(".categorydiv").each(function(){var this_id=$(this).attr("id"),noSyncChecks=false,syncChecks,catAddAfter,taxonomyParts,taxonomy,settingName;taxonomyParts=this_id.split("-");taxonomyParts.shift();taxonomy=taxonomyParts.join("-");settingName=taxonomy+"_tab";if(taxonomy=="category"){settingName="cats";}$("a","#"+taxonomy+"-tabs").click(function(){var t=$(this).attr("href");$(this).parent().addClass("tabs").siblings("li").removeClass("tabs");$("#"+taxonomy+"-tabs").siblings(".tabs-panel").hide();$(t).show();if("#"+taxonomy+"-all"==t){deleteUserSetting(settingName);}else{setUserSetting(settingName,"pop");}return false;});if(getUserSetting(settingName)){$('a[href="#'+taxonomy+'-pop"]',"#"+taxonomy+"-tabs").click();}$("#new"+taxonomy).one("focus",function(){$(this).val("").removeClass("form-input-tip");});$("#"+taxonomy+"-add-submit").click(function(){$("#new"+taxonomy).focus();});syncChecks=function(){if(noSyncChecks){return;}noSyncChecks=true;var th=jQuery(this),c=th.is(":checked"),id=th.val().toString();$("#in-"+taxonomy+"-"+id+", #in-"+taxonomy+"-category-"+id).prop("checked",c);noSyncChecks=false;};catAddBefore=function(s){if(!$("#new"+taxonomy).val()){return false;}s.data+="&"+$(":checked","#"+taxonomy+"checklist").serialize();return s;};catAddAfter=function(r,s){var sup,drop=$("#new"+taxonomy+"_parent");if("undefined"!=s.parsed.responses[0]&&(sup=s.parsed.responses[0].supplemental.newcat_parent)){drop.before(sup);drop.remove();}};$("#"+taxonomy+"checklist").wpList({alt:"",response:taxonomy+"-ajax-response",addBefore:catAddBefore,addAfter:catAddAfter});$("#"+taxonomy+"-add-toggle").click(function(){$("#"+taxonomy+"-adder").toggleClass("wp-hidden-children");$('a[href="#'+taxonomy+'-all"]',"#"+taxonomy+"-tabs").click();$("#new"+taxonomy).focus();return false;});$("#"+taxonomy+"checklist li.popular-category :checkbox, #"+taxonomy+"checklist-pop :checkbox").live("click",function(){var t=$(this),c=t.is(":checked"),id=t.val();if(id&&t.parents("#taxonomy-"+taxonomy).length){$("#in-"+taxonomy+"-"+id+", #in-popular-"+taxonomy+"-"+id).prop("checked",c);}});});if($("#postcustom").length){$("#the-list").wpList({addAfter:function(xml,s){$("table#list-table").show();},addBefore:function(s){s.data+="&post_id="+$("#post_ID").val();return s;}});}if($("#submitdiv").length){stamp=$("#timestamp").html();visibility=$("#post-visibility-display").html();function updateVisibility(){var pvSelect=$("#post-visibility-select");if($("input:radio:checked",pvSelect).val()!="public"){$("#sticky").prop("checked",false);$("#sticky-span").hide();}else{$("#sticky-span").show();}if($("input:radio:checked",pvSelect).val()!="password"){$("#password-span").hide();}else{$("#password-span").show();}}function updateText(){var attemptedDate,originalDate,currentDate,publishOn,postStatus=$("#post_status"),optPublish=$('option[value="publish"]',postStatus),aa=$("#aa").val(),mm=$("#mm").val(),jj=$("#jj").val(),hh=$("#hh").val(),mn=$("#mn").val();attemptedDate=new Date(aa,mm-1,jj,hh,mn);originalDate=new Date($("#hidden_aa").val(),$("#hidden_mm").val()-1,$("#hidden_jj").val(),$("#hidden_hh").val(),$("#hidden_mn").val());currentDate=new Date($("#cur_aa").val(),$("#cur_mm").val()-1,$("#cur_jj").val(),$("#cur_hh").val(),$("#cur_mn").val());if(attemptedDate.getFullYear()!=aa||(1+attemptedDate.getMonth())!=mm||attemptedDate.getDate()!=jj||attemptedDate.getMinutes()!=mn){$(".timestamp-wrap","#timestampdiv").addClass("form-invalid");return false;}else{$(".timestamp-wrap","#timestampdiv").removeClass("form-invalid");}if(attemptedDate>currentDate&&$("#original_post_status").val()!="future"){publishOn=postL10n.publishOnFuture;$("#publish").val(postL10n.schedule);}else{if(attemptedDate<=currentDate&&$("#original_post_status").val()!="publish"){publishOn=postL10n.publishOn;$("#publish").val(postL10n.publish);}else{publishOn=postL10n.publishOnPast;$("#publish").val(postL10n.update);}}if(originalDate.toUTCString()==attemptedDate.toUTCString()){$("#timestamp").html(stamp);}else{$("#timestamp").html(publishOn+" <b>"+$('option[value="'+$("#mm").val()+'"]',"#mm").text()+" "+jj+", "+aa+" @ "+hh+":"+mn+"</b> ");}if($("input:radio:checked","#post-visibility-select").val()=="private"){$("#publish").val(postL10n.update);if(optPublish.length==0){postStatus.append('<option value="publish">'+postL10n.privatelyPublished+"</option>");}else{optPublish.html(postL10n.privatelyPublished);}$('option[value="publish"]',postStatus).prop("selected",true);$(".edit-post-status","#misc-publishing-actions").hide();}else{if($("#original_post_status").val()=="future"||$("#original_post_status").val()=="draft"){if(optPublish.length){optPublish.remove();postStatus.val($("#hidden_post_status").val());}}else{optPublish.html(postL10n.published);}if(postStatus.is(":hidden")){$(".edit-post-status","#misc-publishing-actions").show();}}$("#post-status-display").html($("option:selected",postStatus).text());if($("option:selected",postStatus).val()=="private"||$("option:selected",postStatus).val()=="publish"){$("#save-post").hide();}else{$("#save-post").show();if($("option:selected",postStatus).val()=="pending"){$("#save-post").show().val(postL10n.savePending);}else{$("#save-post").show().val(postL10n.saveDraft);}}return true;}$(".edit-visibility","#visibility").click(function(){if($("#post-visibility-select").is(":hidden")){updateVisibility();$("#post-visibility-select").slideDown("fast");$(this).hide();}return false;});$(".cancel-post-visibility","#post-visibility-select").click(function(){$("#post-visibility-select").slideUp("fast");$("#visibility-radio-"+$("#hidden-post-visibility").val()).prop("checked",true);$("#post_password").val($("#hidden_post_password").val());$("#sticky").prop("checked",$("#hidden-post-sticky").prop("checked"));$("#post-visibility-display").html(visibility);$(".edit-visibility","#visibility").show();updateText();return false;});$(".save-post-visibility","#post-visibility-select").click(function(){var pvSelect=$("#post-visibility-select");pvSelect.slideUp("fast");$(".edit-visibility","#visibility").show();updateText();if($("input:radio:checked",pvSelect).val()!="public"){$("#sticky").prop("checked",false);}if(true==$("#sticky").prop("checked")){sticky="Sticky";}else{sticky="";}$("#post-visibility-display").html(postL10n[$("input:radio:checked",pvSelect).val()+sticky]);return false;});$("input:radio","#post-visibility-select").change(function(){updateVisibility();});$("#timestampdiv").siblings("a.edit-timestamp").click(function(){if($("#timestampdiv").is(":hidden")){$("#timestampdiv").slideDown("fast");$(this).hide();}return false;});$(".cancel-timestamp","#timestampdiv").click(function(){$("#timestampdiv").slideUp("fast");$("#mm").val($("#hidden_mm").val());$("#jj").val($("#hidden_jj").val());$("#aa").val($("#hidden_aa").val());$("#hh").val($("#hidden_hh").val());$("#mn").val($("#hidden_mn").val());$("#timestampdiv").siblings("a.edit-timestamp").show();updateText();return false;});$(".save-timestamp","#timestampdiv").click(function(){if(updateText()){$("#timestampdiv").slideUp("fast");$("#timestampdiv").siblings("a.edit-timestamp").show();}return false;});$("#post-status-select").siblings("a.edit-post-status").click(function(){if($("#post-status-select").is(":hidden")){$("#post-status-select").slideDown("fast");$(this).hide();}return false;});$(".save-post-status","#post-status-select").click(function(){$("#post-status-select").slideUp("fast");$("#post-status-select").siblings("a.edit-post-status").show();updateText();return false;});$(".cancel-post-status","#post-status-select").click(function(){$("#post-status-select").slideUp("fast");$("#post_status").val($("#hidden_post_status").val());$("#post-status-select").siblings("a.edit-post-status").show();updateText();return false;});}if($("#edit-slug-box").length){editPermalink=function(post_id){var i,c=0,e=$("#editable-post-name"),revert_e=e.html(),real_slug=$("#post_name"),revert_slug=real_slug.val(),b=$("#edit-slug-buttons"),revert_b=b.html(),full=$("#editable-post-name-full").html();$("#view-post-btn").hide();b.html('<a href="#" class="save button">'+postL10n.ok+'</a> <a class="cancel" href="#">'+postL10n.cancel+"</a>");b.children(".save").click(function(){var new_slug=e.children("input").val();if(new_slug==$("#editable-post-name-full").text()){return $(".cancel","#edit-slug-buttons").click();}$.post(ajaxurl,{action:"sample-permalink",post_id:post_id,new_slug:new_slug,new_title:$("#title").val(),samplepermalinknonce:$("#samplepermalinknonce").val()},function(data){$("#edit-slug-box").html(data);b.html(revert_b);real_slug.val(new_slug);makeSlugeditClickable();$("#view-post-btn").show();});return false;});$(".cancel","#edit-slug-buttons").click(function(){$("#view-post-btn").show();e.html(revert_e);b.html(revert_b);real_slug.val(revert_slug);return false;});for(i=0;i<full.length;++i){if("%"==full.charAt(i)){c++;}}slug_value=(c>full.length/4)?"":full;e.html('<input type="text" id="new-post-slug" value="'+slug_value+'" />').children("input").keypress(function(e){var key=e.keyCode||0;if(13==key){b.children(".save").click();return false;}if(27==key){b.children(".cancel").click();return false;}real_slug.val(this.value);}).focus();};makeSlugeditClickable=function(){$("#editable-post-name").click(function(){$("#edit-slug-buttons").children(".edit-slug").click();});};makeSlugeditClickable();}if(typeof(wpWordCount)!="undefined"){$(document).triggerHandler("wpcountwords",[co.val()]);co.keyup(function(e){var k=e.keyCode||e.charCode;if(k==last){return true;}if(13==k||8==last||46==last){$(document).triggerHandler("wpcountwords",[co.val()]);}last=k;return true;});}wptitlehint=function(id){id=id||"title";var title=$("#"+id),titleprompt=$("#"+id+"-prompt-text");if(title.val()==""){titleprompt.css("visibility","");}titleprompt.click(function(){$(this).css("visibility","hidden");title.focus();});title.blur(function(){if(this.value==""){titleprompt.css("visibility","");}}).focus(function(){titleprompt.css("visibility","hidden");}).keydown(function(e){titleprompt.css("visibility","hidden");$(this).unbind(e);});};wptitlehint();});
\ No newline at end of file
+var tagBox,commentsBox,editPermalink,makeSlugeditClickable,WPSetThumbnailHTML,WPSetThumbnailID,WPRemoveThumbnail,wptitlehint;function array_unique_noempty(b){var c=[];jQuery.each(b,function(a,d){d=jQuery.trim(d);if(d&&jQuery.inArray(d,c)==-1){c.push(d)}});return c}(function(a){tagBox={clean:function(c){var b=postL10n.comma;if(","!==b){c=c.replace(new RegExp(b,"g"),",")}c=c.replace(/\s*,\s*/g,",").replace(/,+/g,",").replace(/[,\s]+$/,"").replace(/^[,\s]+/,"");if(","!==b){c=c.replace(/,/g,b)}return c},parseTags:function(f){var i=f.id,c=i.split("-check-num-")[1],e=a(f).closest(".tagsdiv"),h=e.find(".the-tags"),b=postL10n.comma,d=h.val().split(b),g=[];delete d[c];a.each(d,function(j,k){k=a.trim(k);if(k){g.push(k)}});h.val(this.clean(g.join(b)));this.quickClicks(e);return false},quickClicks:function(d){var g=a(".the-tags",d),e=a(".tagchecklist",d),f=a(d).attr("id"),b,c;if(!g.length){return}c=g.prop("disabled");b=g.val().split(postL10n.comma);e.empty();a.each(b,function(i,k){var j,h;k=a.trim(k);if(!k){return}j=a("<span />").text(k);if(!c){h=a('<a id="'+f+"-check-num-"+i+'" class="ntdelbutton">X</a>');h.click(function(){tagBox.parseTags(this)});j.prepend("&nbsp;").prepend(h)}e.append(j)})},flushTags:function(g,c,h){c=c||false;var d=a(".the-tags",g),j=a("input.newtag",g),b=postL10n.comma,e,i;i=c?a(c).text():j.val();tagsval=d.val();e=tagsval?tagsval+b+i:i;e=this.clean(e);e=array_unique_noempty(e.split(b)).join(b);d.val(e);this.quickClicks(g);if(!c){j.val("")}if("undefined"==typeof(h)){j.focus()}return false},get:function(c){var b=c.substr(c.indexOf("-")+1);a.post(ajaxurl,{action:"get-tagcloud",tax:b},function(e,d){if(0==e||"success"!=d){e=wpAjax.broken}e=a('<p id="tagcloud-'+b+'" class="the-tagcloud">'+e+"</p>");a("a",e).click(function(){tagBox.flushTags(a(this).closest(".inside").children(".tagsdiv"),this);return false});a("#"+c).after(e)})},init:function(){var b=this,c=a("div.ajaxtag");a(".tagsdiv").each(function(){tagBox.quickClicks(this)});a("input.tagadd",c).click(function(){b.flushTags(a(this).closest(".tagsdiv"))});a("div.taghint",c).click(function(){a(this).css("visibility","hidden").parent().siblings(".newtag").focus()});a("input.newtag",c).blur(function(){if(this.value==""){a(this).parent().siblings(".taghint").css("visibility","")}}).focus(function(){a(this).parent().siblings(".taghint").css("visibility","hidden")}).keyup(function(d){if(13==d.which){tagBox.flushTags(a(this).closest(".tagsdiv"));return false}}).keypress(function(d){if(13==d.which){d.preventDefault();return false}}).each(function(){var d=a(this).closest("div.tagsdiv").attr("id");a(this).suggest(ajaxurl+"?action=ajax-tag-search&tax="+d,{delay:500,minchars:2,multiple:true,multipleSep:postL10n.comma+" "})});a("#post").submit(function(){a("div.tagsdiv").each(function(){tagBox.flushTags(this,false,1)})});a("a.tagcloud-link").click(function(){tagBox.get(a(this).attr("id"));a(this).unbind().click(function(){a(this).siblings(".the-tagcloud").toggle();return false});return false})}};commentsBox={st:0,get:function(d,c){var b=this.st,e;if(!c){c=20}this.st+=c;this.total=d;a("#commentsdiv img.waiting").show();e={action:"get-comments",mode:"single",_ajax_nonce:a("#add_comment_nonce").val(),p:a("#post_ID").val(),start:b,number:c};a.post(ajaxurl,e,function(f){f=wpAjax.parseAjaxResponse(f);a("#commentsdiv .widefat").show();a("#commentsdiv img.waiting").hide();if("object"==typeof f&&f.responses[0]){a("#the-comment-list").append(f.responses[0].data);theList=theExtraList=null;a("a[className*=':']").unbind();if(commentsBox.st>commentsBox.total){a("#show-comments").hide()}else{a("#show-comments").show().children("a").html(postL10n.showcomm)}return}else{if(1==f){a("#show-comments").html(postL10n.endcomm);return}}a("#the-comment-list").append('<tr><td colspan="2">'+wpAjax.broken+"</td></tr>")});return false}};WPSetThumbnailHTML=function(b){a(".inside","#postimagediv").html(b)};WPSetThumbnailID=function(c){var b=a('input[value="_thumbnail_id"]',"#list-table");if(b.size()>0){a("#meta\\["+b.attr("id").match(/[0-9]+/)+"\\]\\[value\\]").text(c)}};WPRemoveThumbnail=function(b){a.post(ajaxurl,{action:"set-post-thumbnail",post_id:a("#post_ID").val(),thumbnail_id:-1,_ajax_nonce:b,cookie:encodeURIComponent(document.cookie)},function(c){if(c=="0"){alert(setPostThumbnailL10n.error)}else{WPSetThumbnailHTML(c)}})}})(jQuery);jQuery(document).ready(function(f){var b,a,g="",e=0,h=f("#content");postboxes.add_postbox_toggles(pagenow);if(f("#tagsdiv-post_tag").length){tagBox.init()}else{f("#side-sortables, #normal-sortables, #advanced-sortables").children("div.postbox").each(function(){if(this.id.indexOf("tagsdiv-")===0){tagBox.init();return false}})}f(".categorydiv").each(function(){var n=f(this).attr("id"),j=false,m,o,l,i,k;l=n.split("-");l.shift();i=l.join("-");k=i+"_tab";if(i=="category"){k="cats"}f("a","#"+i+"-tabs").click(function(){var p=f(this).attr("href");f(this).parent().addClass("tabs").siblings("li").removeClass("tabs");f("#"+i+"-tabs").siblings(".tabs-panel").hide();f(p).show();if("#"+i+"-all"==p){deleteUserSetting(k)}else{setUserSetting(k,"pop")}return false});if(getUserSetting(k)){f('a[href="#'+i+'-pop"]',"#"+i+"-tabs").click()}f("#new"+i).one("focus",function(){f(this).val("").removeClass("form-input-tip")});f("#"+i+"-add-submit").click(function(){f("#new"+i).focus()});m=function(){if(j){return}j=true;var p=jQuery(this),r=p.is(":checked"),q=p.val().toString();f("#in-"+i+"-"+q+", #in-"+i+"-category-"+q).prop("checked",r);j=false};catAddBefore=function(p){if(!f("#new"+i).val()){return false}p.data+="&"+f(":checked","#"+i+"checklist").serialize();f("#"+i+"-add-submit").prop("disabled",true);return p};o=function(u,t){var q,p=f("#new"+i+"_parent");f("#"+i+"-add-submit").prop("disabled",false);if("undefined"!=t.parsed.responses[0]&&(q=t.parsed.responses[0].supplemental.newcat_parent)){p.before(q);p.remove()}};f("#"+i+"checklist").wpList({alt:"",response:i+"-ajax-response",addBefore:catAddBefore,addAfter:o});f("#"+i+"-add-toggle").click(function(){f("#"+i+"-adder").toggleClass("wp-hidden-children");f('a[href="#'+i+'-all"]',"#"+i+"-tabs").click();f("#new"+i).focus();return false});f("#"+i+"checklist li.popular-category :checkbox, #"+i+"checklist-pop :checkbox").live("click",function(){var p=f(this),r=p.is(":checked"),q=p.val();if(q&&p.parents("#taxonomy-"+i).length){f("#in-"+i+"-"+q+", #in-popular-"+i+"-"+q).prop("checked",r)}})});if(f("#postcustom").length){f("#the-list").wpList({addAfter:function(i,j){f("table#list-table").show()},addBefore:function(i){i.data+="&post_id="+f("#post_ID").val();return i}})}if(f("#submitdiv").length){b=f("#timestamp").html();a=f("#post-visibility-display").html();function d(){var i=f("#post-visibility-select");if(f("input:radio:checked",i).val()!="public"){f("#sticky").prop("checked",false);f("#sticky-span").hide()}else{f("#sticky-span").show()}if(f("input:radio:checked",i).val()!="password"){f("#password-span").hide()}else{f("#password-span").show()}}function c(){var p,q,j,s,r=f("#post_status"),k=f('option[value="publish"]',r),i=f("#aa").val(),n=f("#mm").val(),o=f("#jj").val(),m=f("#hh").val(),l=f("#mn").val();p=new Date(i,n-1,o,m,l);q=new Date(f("#hidden_aa").val(),f("#hidden_mm").val()-1,f("#hidden_jj").val(),f("#hidden_hh").val(),f("#hidden_mn").val());j=new Date(f("#cur_aa").val(),f("#cur_mm").val()-1,f("#cur_jj").val(),f("#cur_hh").val(),f("#cur_mn").val());if(p.getFullYear()!=i||(1+p.getMonth())!=n||p.getDate()!=o||p.getMinutes()!=l){f(".timestamp-wrap","#timestampdiv").addClass("form-invalid");return false}else{f(".timestamp-wrap","#timestampdiv").removeClass("form-invalid")}if(p>j&&f("#original_post_status").val()!="future"){s=postL10n.publishOnFuture;f("#publish").val(postL10n.schedule)}else{if(p<=j&&f("#original_post_status").val()!="publish"){s=postL10n.publishOn;f("#publish").val(postL10n.publish)}else{s=postL10n.publishOnPast;f("#publish").val(postL10n.update)}}if(q.toUTCString()==p.toUTCString()){f("#timestamp").html(b)}else{f("#timestamp").html(s+" <b>"+f('option[value="'+f("#mm").val()+'"]',"#mm").text()+" "+o+", "+i+" @ "+m+":"+l+"</b> ")}if(f("input:radio:checked","#post-visibility-select").val()=="private"){f("#publish").val(postL10n.update);if(k.length==0){r.append('<option value="publish">'+postL10n.privatelyPublished+"</option>")}else{k.html(postL10n.privatelyPublished)}f('option[value="publish"]',r).prop("selected",true);f(".edit-post-status","#misc-publishing-actions").hide()}else{if(f("#original_post_status").val()=="future"||f("#original_post_status").val()=="draft"){if(k.length){k.remove();r.val(f("#hidden_post_status").val())}}else{k.html(postL10n.published)}if(r.is(":hidden")){f(".edit-post-status","#misc-publishing-actions").show()}}f("#post-status-display").html(f("option:selected",r).text());if(f("option:selected",r).val()=="private"||f("option:selected",r).val()=="publish"){f("#save-post").hide()}else{f("#save-post").show();if(f("option:selected",r).val()=="pending"){f("#save-post").show().val(postL10n.savePending)}else{f("#save-post").show().val(postL10n.saveDraft)}}return true}f(".edit-visibility","#visibility").click(function(){if(f("#post-visibility-select").is(":hidden")){d();f("#post-visibility-select").slideDown("fast");f(this).hide()}return false});f(".cancel-post-visibility","#post-visibility-select").click(function(){f("#post-visibility-select").slideUp("fast");f("#visibility-radio-"+f("#hidden-post-visibility").val()).prop("checked",true);f("#post_password").val(f("#hidden_post_password").val());f("#sticky").prop("checked",f("#hidden-post-sticky").prop("checked"));f("#post-visibility-display").html(a);f(".edit-visibility","#visibility").show();c();return false});f(".save-post-visibility","#post-visibility-select").click(function(){var i=f("#post-visibility-select");i.slideUp("fast");f(".edit-visibility","#visibility").show();c();if(f("input:radio:checked",i).val()!="public"){f("#sticky").prop("checked",false)}if(true==f("#sticky").prop("checked")){g="Sticky"}else{g=""}f("#post-visibility-display").html(postL10n[f("input:radio:checked",i).val()+g]);return false});f("input:radio","#post-visibility-select").change(function(){d()});f("#timestampdiv").siblings("a.edit-timestamp").click(function(){if(f("#timestampdiv").is(":hidden")){f("#timestampdiv").slideDown("fast");f(this).hide()}return false});f(".cancel-timestamp","#timestampdiv").click(function(){f("#timestampdiv").slideUp("fast");f("#mm").val(f("#hidden_mm").val());f("#jj").val(f("#hidden_jj").val());f("#aa").val(f("#hidden_aa").val());f("#hh").val(f("#hidden_hh").val());f("#mn").val(f("#hidden_mn").val());f("#timestampdiv").siblings("a.edit-timestamp").show();c();return false});f(".save-timestamp","#timestampdiv").click(function(){if(c()){f("#timestampdiv").slideUp("fast");f("#timestampdiv").siblings("a.edit-timestamp").show()}return false});f("#post-status-select").siblings("a.edit-post-status").click(function(){if(f("#post-status-select").is(":hidden")){f("#post-status-select").slideDown("fast");f(this).hide()}return false});f(".save-post-status","#post-status-select").click(function(){f("#post-status-select").slideUp("fast");f("#post-status-select").siblings("a.edit-post-status").show();c();return false});f(".cancel-post-status","#post-status-select").click(function(){f("#post-status-select").slideUp("fast");f("#post_status").val(f("#hidden_post_status").val());f("#post-status-select").siblings("a.edit-post-status").show();c();return false})}if(f("#edit-slug-box").length){editPermalink=function(j){var k,n=0,m=f("#editable-post-name"),o=m.html(),r=f("#post_name"),s=r.val(),p=f("#edit-slug-buttons"),q=p.html(),l=f("#editable-post-name-full").html();f("#view-post-btn").hide();p.html('<a href="#" class="save button">'+postL10n.ok+'</a> <a class="cancel" href="#">'+postL10n.cancel+"</a>");p.children(".save").click(function(){var i=m.children("input").val();if(i==f("#editable-post-name-full").text()){return f(".cancel","#edit-slug-buttons").click()}f.post(ajaxurl,{action:"sample-permalink",post_id:j,new_slug:i,new_title:f("#title").val(),samplepermalinknonce:f("#samplepermalinknonce").val()},function(t){f("#edit-slug-box").html(t);p.html(q);r.val(i);makeSlugeditClickable();f("#view-post-btn").show()});return false});f(".cancel","#edit-slug-buttons").click(function(){f("#view-post-btn").show();m.html(o);p.html(q);r.val(s);return false});for(k=0;k<l.length;++k){if("%"==l.charAt(k)){n++}}slug_value=(n>l.length/4)?"":l;m.html('<input type="text" id="new-post-slug" value="'+slug_value+'" />').children("input").keypress(function(t){var i=t.keyCode||0;if(13==i){p.children(".save").click();return false}if(27==i){p.children(".cancel").click();return false}r.val(this.value)}).focus()};makeSlugeditClickable=function(){f("#editable-post-name").click(function(){f("#edit-slug-buttons").children(".edit-slug").click()})};makeSlugeditClickable()}if(typeof(wpWordCount)!="undefined"){f(document).triggerHandler("wpcountwords",[h.val()]);h.keyup(function(j){var i=j.keyCode||j.charCode;if(i==e){return true}if(13==i||8==e||46==e){f(document).triggerHandler("wpcountwords",[h.val()])}e=i;return true})}wptitlehint=function(k){k=k||"title";var i=f("#"+k),j=f("#"+k+"-prompt-text");if(i.val()==""){j.css("visibility","")}j.click(function(){f(this).css("visibility","hidden");i.focus()});i.blur(function(){if(this.value==""){j.css("visibility","")}}).focus(function(){j.css("visibility","hidden")}).keydown(function(l){j.css("visibility","hidden");f(this).unbind(l)})};wptitlehint()});
\ No newline at end of file
index e95b75627e4cbbf8380fec52ac03eaaf976d730f..95b0cb30e92491c0ed7fabb89c4e8416622dc73c 100644 (file)
@@ -1,9 +1,11 @@
-var postboxes, is_iPad = navigator.userAgent.match(/iPad/);
+var postboxes;
 
 (function($) {
        postboxes = {
                add_postbox_toggles : function(page, args) {
 
 (function($) {
        postboxes = {
                add_postbox_toggles : function(page, args) {
-                       this.init(page, args);
+                       var self = this;
+
+                       self.init(page, args);
 
                        $('.postbox h3, .postbox .handlediv').bind('click.postboxes', function() {
                                var p = $(this).parent('.postbox'), id = p.attr('id');
 
                        $('.postbox h3, .postbox .handlediv').bind('click.postboxes', function() {
                                var p = $(this).parent('.postbox'), id = p.attr('id');
@@ -12,13 +14,15 @@ var postboxes, is_iPad = navigator.userAgent.match(/iPad/);
                                        return;
 
                                p.toggleClass('closed');
                                        return;
 
                                p.toggleClass('closed');
-                               postboxes.save_state(page);
+
+                               if ( page != 'press-this' )
+                                       self.save_state(page);
 
                                if ( id ) {
                                        if ( !p.hasClass('closed') && $.isFunction(postboxes.pbshow) )
 
                                if ( id ) {
                                        if ( !p.hasClass('closed') && $.isFunction(postboxes.pbshow) )
-                                               postboxes.pbshow(id);
+                                               self.pbshow(id);
                                        else if ( p.hasClass('closed') && $.isFunction(postboxes.pbhide) )
                                        else if ( p.hasClass('closed') && $.isFunction(postboxes.pbhide) )
-                                               postboxes.pbhide(id);
+                                               self.pbhide(id);
                                }
                        });
 
                                }
                        });
 
@@ -38,27 +42,29 @@ var postboxes, is_iPad = navigator.userAgent.match(/iPad/);
                                if ( $(this).prop('checked') ) {
                                        $('#' + box).show();
                                        if ( $.isFunction( postboxes.pbshow ) )
                                if ( $(this).prop('checked') ) {
                                        $('#' + box).show();
                                        if ( $.isFunction( postboxes.pbshow ) )
-                                               postboxes.pbshow( box );
+                                               self.pbshow( box );
                                } else {
                                        $('#' + box).hide();
                                        if ( $.isFunction( postboxes.pbhide ) )
                                } else {
                                        $('#' + box).hide();
                                        if ( $.isFunction( postboxes.pbhide ) )
-                                               postboxes.pbhide( box );
+                                               self.pbhide( box );
                                }
                                }
-                               postboxes.save_state(page);
-                               postboxes._mark_area();
+                               self.save_state(page);
+                               self._mark_area();
                        });
 
                        $('.columns-prefs input[type="radio"]').bind('click.postboxes', function(){
                        });
 
                        $('.columns-prefs input[type="radio"]').bind('click.postboxes', function(){
-                               var n = parseInt($(this).val(), 10), pb = postboxes;
+                               var n = parseInt($(this).val(), 10);
 
                                if ( n ) {
 
                                if ( n ) {
-                                       pb._pb_edit(n);
-                                       pb.save_order(page);
+                                       self._pb_edit(n);
+                                       self.save_order(page);
                                }
                        });
                },
 
                init : function(page, args) {
                                }
                        });
                },
 
                init : function(page, args) {
+                       var isMobile = $(document.body).hasClass('mobile');
+
                        $.extend( this, args || {} );
                        $('#wpbody-content').css('overflow','hidden');
                        $('.meta-box-sortables').sortable({
                        $.extend( this, args || {} );
                        $('#wpbody-content').css('overflow','hidden');
                        $('.meta-box-sortables').sortable({
@@ -67,6 +73,7 @@ var postboxes, is_iPad = navigator.userAgent.match(/iPad/);
                                items: '.postbox',
                                handle: '.hndle',
                                cursor: 'move',
                                items: '.postbox',
                                handle: '.hndle',
                                cursor: 'move',
+                               delay: ( isMobile ? 200 : 0 ),
                                distance: 2,
                                tolerance: 'pointer',
                                forcePlaceholderSize: true,
                                distance: 2,
                                tolerance: 'pointer',
                                forcePlaceholderSize: true,
@@ -88,8 +95,8 @@ var postboxes, is_iPad = navigator.userAgent.match(/iPad/);
                                }
                        });
 
                                }
                        });
 
-                       if ( navigator.userAgent.match(/iPad/) ) {
-                               $(document.body).bind('orientationchange', function(){ postboxes._pb_change(); });
+                       if ( isMobile ) {
+                               $(document.body).bind('orientationchange.postboxes', function(){ postboxes._pb_change(); });
                                this._pb_change();
                        }
 
                                this._pb_change();
                        }
 
@@ -124,89 +131,29 @@ var postboxes, is_iPad = navigator.userAgent.match(/iPad/);
                        $.post( ajaxurl, postVars );
                },
 
                        $.post( ajaxurl, postVars );
                },
 
-               _colname : function(n) {
-                       switch (n) {
-                               case 1:
-                                       return 'normal';
-                                       break
-                               case 2:
-                                       return 'side';
-                                       break
-                               case 3:
-                                       return 'column3';
-                                       break
-                               case 4:
-                                       return 'column4';
-                                       break
-                               default:
-                                       return '';
-                       }
-               },
-
                _mark_area : function() {
                _mark_area : function() {
-                       $('#side-info-column .meta-box-sortables:visible, #dashboard-widgets .meta-box-sortables:visible').each(function(n, el){
+                       var visible = $('div.postbox:visible').length, side = $('#post-body #side-sortables');
+
+                       $('#dashboard-widgets .meta-box-sortables:visible').each(function(n, el){
                                var t = $(this);
 
                                var t = $(this);
 
-                               if ( !t.children('.postbox:visible').length )
-                                       t.addClass('empty-container');
-                               else
+                               if ( visible == 1 || t.children('.postbox:visible').length )
                                        t.removeClass('empty-container');
                                        t.removeClass('empty-container');
+                               else
+                                       t.addClass('empty-container');
                        });
                        });
+
+                       if ( side.length ) {
+                               if ( side.children('.postbox:visible').length )
+                                       side.removeClass('empty-container');
+                               else if ( $('#postbox-container-1').css('width') == '280px' )
+                                       side.addClass('empty-container');
+                       }
                },
 
                _pb_edit : function(n) {
                },
 
                _pb_edit : function(n) {
-                       var ps = $('#poststuff'), i, el, done, pb = postboxes, visible = $('.postbox-container:visible').length;
-
-                       if ( n == visible )
-                               return;
-
-                       if ( ps.length ) {
-                               if ( n == 2 ) {
-                                       $('.wrap').removeClass('columns-1').addClass('columns-2');
-                                       ps.addClass('has-right-sidebar');
-
-                                       if ( !$('#side-info-column #side-sortables').length )
-                                               $('#side-info-column').append( $('#side-sortables') );
-
-                               } else if ( n == 1 ) {
-                                       $('.wrap').removeClass('columns-2').addClass('columns-1');
-                                       ps.removeClass('has-right-sidebar');
-
-                                       if ( !$('#post-body-content #side-sortables').length )
-                                               $('#normal-sortables').before( $('#side-sortables') );
-                               }
-                       } else {
-                               for ( i = 4; ( i > n && i > 1 ); i-- ) {
-                                       el = $('#' + postboxes._colname(i) + '-sortables');
-                                       $('#' + postboxes._colname(i-1) + '-sortables').append(el.children('.postbox'));
-                                       el.parent().hide();
-                               }
-
-                               for ( i = n; i > 0; i-- ) {
-                                       el = $('#' + postboxes._colname(i) + '-sortables');
-                                       done = false;
-
-                                       if ( el.parent().is(':hidden') ) {
-                                               switch ( i ) {
-                                                       case 4:
-                                                               done = pb._move_one( el, $('.postbox:visible', $('#column3-sortables')) );
-                                                       case 3:
-                                                               if ( !done )
-                                                                       done = pb._move_one( el, $('.postbox:visible', $('#side-sortables')) );
-                                                       case 2:
-                                                               if ( !done )
-                                                                       done = pb._move_one( el, $('.postbox:visible', $('#normal-sortables')) );
-                                                       default:
-                                                               if ( !done )
-                                                                       el.addClass('empty-container')
-                                               }
-
-                                               el.parent().show();
-                                       }
-                               }
-
-                               $('.postbox-container:visible').css('width', 100/n + '%');
-                       }
+                       var el = $('.metabox-holder').get(0);
+                       el.className = el.className.replace(/columns-\d+/, 'columns-' + n);
                },
 
                _pb_change : function() {
                },
 
                _pb_change : function() {
@@ -225,14 +172,6 @@ var postboxes, is_iPad = navigator.userAgent.match(/iPad/);
                        }
                },
 
                        }
                },
 
-               _move_one : function(el, move) {
-                       if ( move.length > 1 ) {
-                               el.append( move.last() );
-                               return true;
-                       }
-                       return false;
-               },
-
                /* Callbacks */
                pbshow : false,
 
                /* Callbacks */
                pbshow : false,
 
index 2c5fe99f977126efa4984690171e089cf9ab3237..ba98f497cb9696bccc65635639591d0f4f211ee4 100644 (file)
@@ -1 +1 @@
-var postboxes,is_iPad=navigator.userAgent.match(/iPad/);(function(a){postboxes={add_postbox_toggles:function(c,b){this.init(c,b);a(".postbox h3, .postbox .handlediv").bind("click.postboxes",function(){var d=a(this).parent(".postbox"),e=d.attr("id");if("dashboard_browser_nag"==e){return}d.toggleClass("closed");postboxes.save_state(c);if(e){if(!d.hasClass("closed")&&a.isFunction(postboxes.pbshow)){postboxes.pbshow(e)}else{if(d.hasClass("closed")&&a.isFunction(postboxes.pbhide)){postboxes.pbhide(e)}}}});a(".postbox h3 a").click(function(d){d.stopPropagation()});a(".postbox a.dismiss").bind("click.postboxes",function(f){var d=a(this).parents(".postbox").attr("id")+"-hide";a("#"+d).prop("checked",false).triggerHandler("click");return false});a(".hide-postbox-tog").bind("click.postboxes",function(){var d=a(this).val();if(a(this).prop("checked")){a("#"+d).show();if(a.isFunction(postboxes.pbshow)){postboxes.pbshow(d)}}else{a("#"+d).hide();if(a.isFunction(postboxes.pbhide)){postboxes.pbhide(d)}}postboxes.save_state(c);postboxes._mark_area()});a('.columns-prefs input[type="radio"]').bind("click.postboxes",function(){var e=parseInt(a(this).val(),10),d=postboxes;if(e){d._pb_edit(e);d.save_order(c)}})},init:function(c,b){a.extend(this,b||{});a("#wpbody-content").css("overflow","hidden");a(".meta-box-sortables").sortable({placeholder:"sortable-placeholder",connectWith:".meta-box-sortables",items:".postbox",handle:".hndle",cursor:"move",distance:2,tolerance:"pointer",forcePlaceholderSize:true,helper:"clone",opacity:0.65,stop:function(f,d){if(a(this).find("#dashboard_browser_nag").is(":visible")&&"dashboard_browser_nag"!=this.firstChild.id){a(this).sortable("cancel");return}postboxes.save_order(c)},receive:function(f,d){if("dashboard_browser_nag"==d.item[0].id){a(d.sender).sortable("cancel")}postboxes._mark_area()}});if(navigator.userAgent.match(/iPad/)){a(document.body).bind("orientationchange",function(){postboxes._pb_change()});this._pb_change()}this._mark_area()},save_state:function(d){var b=a(".postbox").filter(".closed").map(function(){return this.id}).get().join(","),c=a(".postbox").filter(":hidden").map(function(){return this.id}).get().join(",");a.post(ajaxurl,{action:"closed-postboxes",closed:b,hidden:c,closedpostboxesnonce:jQuery("#closedpostboxesnonce").val(),page:d})},save_order:function(c){var b,d=a(".columns-prefs input:checked").val()||0;b={action:"meta-box-order",_ajax_nonce:a("#meta-box-order-nonce").val(),page_columns:d,page:c};a(".meta-box-sortables").each(function(){b["order["+this.id.split("-")[0]+"]"]=a(this).sortable("toArray").join(",")});a.post(ajaxurl,b)},_colname:function(b){switch(b){case 1:return"normal";break;case 2:return"side";break;case 3:return"column3";break;case 4:return"column4";break;default:return""}},_mark_area:function(){a("#side-info-column .meta-box-sortables:visible, #dashboard-widgets .meta-box-sortables:visible").each(function(d,c){var b=a(this);if(!b.children(".postbox:visible").length){b.addClass("empty-container")}else{b.removeClass("empty-container")}})},_pb_edit:function(h){var g=a("#poststuff"),d,e,b,c=postboxes,f=a(".postbox-container:visible").length;if(h==f){return}if(g.length){if(h==2){a(".wrap").removeClass("columns-1").addClass("columns-2");g.addClass("has-right-sidebar");if(!a("#side-info-column #side-sortables").length){a("#side-info-column").append(a("#side-sortables"))}}else{if(h==1){a(".wrap").removeClass("columns-2").addClass("columns-1");g.removeClass("has-right-sidebar");if(!a("#post-body-content #side-sortables").length){a("#normal-sortables").before(a("#side-sortables"))}}}}else{for(d=4;(d>h&&d>1);d--){e=a("#"+postboxes._colname(d)+"-sortables");a("#"+postboxes._colname(d-1)+"-sortables").append(e.children(".postbox"));e.parent().hide()}for(d=h;d>0;d--){e=a("#"+postboxes._colname(d)+"-sortables");b=false;if(e.parent().is(":hidden")){switch(d){case 4:b=c._move_one(e,a(".postbox:visible",a("#column3-sortables")));case 3:if(!b){b=c._move_one(e,a(".postbox:visible",a("#side-sortables")))}case 2:if(!b){b=c._move_one(e,a(".postbox:visible",a("#normal-sortables")))}default:if(!b){e.addClass("empty-container")}}e.parent().show()}}a(".postbox-container:visible").css("width",100/h+"%")}},_pb_change:function(){switch(window.orientation){case 90:case -90:this._pb_edit(2);break;case 0:case 180:if(a("#poststuff").length){this._pb_edit(1)}else{this._pb_edit(2)}break}},_move_one:function(c,b){if(b.length>1){c.append(b.last());return true}return false},pbshow:false,pbhide:false}}(jQuery));
\ No newline at end of file
+var postboxes;(function(a){postboxes={add_postbox_toggles:function(d,c){var b=this;b.init(d,c);a(".postbox h3, .postbox .handlediv").bind("click.postboxes",function(){var e=a(this).parent(".postbox"),f=e.attr("id");if("dashboard_browser_nag"==f){return}e.toggleClass("closed");if(d!="press-this"){b.save_state(d)}if(f){if(!e.hasClass("closed")&&a.isFunction(postboxes.pbshow)){b.pbshow(f)}else{if(e.hasClass("closed")&&a.isFunction(postboxes.pbhide)){b.pbhide(f)}}}});a(".postbox h3 a").click(function(f){f.stopPropagation()});a(".postbox a.dismiss").bind("click.postboxes",function(g){var f=a(this).parents(".postbox").attr("id")+"-hide";a("#"+f).prop("checked",false).triggerHandler("click");return false});a(".hide-postbox-tog").bind("click.postboxes",function(){var e=a(this).val();if(a(this).prop("checked")){a("#"+e).show();if(a.isFunction(postboxes.pbshow)){b.pbshow(e)}}else{a("#"+e).hide();if(a.isFunction(postboxes.pbhide)){b.pbhide(e)}}b.save_state(d);b._mark_area()});a('.columns-prefs input[type="radio"]').bind("click.postboxes",function(){var e=parseInt(a(this).val(),10);if(e){b._pb_edit(e);b.save_order(d)}})},init:function(d,c){var b=a(document.body).hasClass("mobile");a.extend(this,c||{});a("#wpbody-content").css("overflow","hidden");a(".meta-box-sortables").sortable({placeholder:"sortable-placeholder",connectWith:".meta-box-sortables",items:".postbox",handle:".hndle",cursor:"move",delay:(b?200:0),distance:2,tolerance:"pointer",forcePlaceholderSize:true,helper:"clone",opacity:0.65,stop:function(g,f){if(a(this).find("#dashboard_browser_nag").is(":visible")&&"dashboard_browser_nag"!=this.firstChild.id){a(this).sortable("cancel");return}postboxes.save_order(d)},receive:function(g,f){if("dashboard_browser_nag"==f.item[0].id){a(f.sender).sortable("cancel")}postboxes._mark_area()}});if(b){a(document.body).bind("orientationchange.postboxes",function(){postboxes._pb_change()});this._pb_change()}this._mark_area()},save_state:function(d){var b=a(".postbox").filter(".closed").map(function(){return this.id}).get().join(","),c=a(".postbox").filter(":hidden").map(function(){return this.id}).get().join(",");a.post(ajaxurl,{action:"closed-postboxes",closed:b,hidden:c,closedpostboxesnonce:jQuery("#closedpostboxesnonce").val(),page:d})},save_order:function(c){var b,d=a(".columns-prefs input:checked").val()||0;b={action:"meta-box-order",_ajax_nonce:a("#meta-box-order-nonce").val(),page_columns:d,page:c};a(".meta-box-sortables").each(function(){b["order["+this.id.split("-")[0]+"]"]=a(this).sortable("toArray").join(",")});a.post(ajaxurl,b)},_mark_area:function(){var c=a("div.postbox:visible").length,b=a("#post-body #side-sortables");a("#dashboard-widgets .meta-box-sortables:visible").each(function(f,e){var d=a(this);if(c==1||d.children(".postbox:visible").length){d.removeClass("empty-container")}else{d.addClass("empty-container")}});if(b.length){if(b.children(".postbox:visible").length){b.removeClass("empty-container")}else{if(a("#postbox-container-1").css("width")=="280px"){b.addClass("empty-container")}}}},_pb_edit:function(c){var b=a(".metabox-holder").get(0);b.className=b.className.replace(/columns-\d+/,"columns-"+c)},_pb_change:function(){switch(window.orientation){case 90:case -90:this._pb_edit(2);break;case 0:case 180:if(a("#poststuff").length){this._pb_edit(1)}else{this._pb_edit(2)}break}},pbshow:false,pbhide:false}}(jQuery));
\ No newline at end of file
index 045f2b260a200222721d5bb85cbbbf30c3623976..e8ac151a207cf25671dd1bd9e2c9f8d3dbf89eaa 100644 (file)
@@ -33,9 +33,9 @@ jQuery(document).ready(function($) {
                        return false;
 
                $.post(ajaxurl, $('#addtag').serialize(), function(r){
                        return false;
 
                $.post(ajaxurl, $('#addtag').serialize(), function(r){
-                  $('#ajax-response').empty();
+                       $('#ajax-response').empty();
                        var res = wpAjax.parseAjaxResponse(r, 'ajax-response');
                        var res = wpAjax.parseAjaxResponse(r, 'ajax-response');
-                       if ( ! res )
+                       if ( ! res || res.errors )
                                return;
 
                        var parent = form.find('select#parent').val();
                                return;
 
                        var parent = form.find('select#parent').val();
index ddcaeb0c849afe280d330452a2e67c4333d2df9c..b14c79ce2365480c253ae2c37f33fe581a5a071b 100644 (file)
@@ -1 +1 @@
-jQuery(document).ready(function(a){a(".delete-tag").live("click",function(g){var b=a(this),f=b.parents("tr"),c=true,d;if("undefined"!=showNotice){c=showNotice.warn()}if(c){d=b.attr("href").replace(/[^?]*\?/,"").replace(/action=delete/,"action=delete-tag");a.post(ajaxurl,d,function(e){if("1"==e){a("#ajax-response").empty();f.fadeOut("normal",function(){f.remove()});a('select#parent option[value="'+d.match(/tag_ID=(\d+)/)[1]+'"]').remove();a("a.tag-link-"+d.match(/tag_ID=(\d+)/)[1]).remove()}else{if("-1"==e){a("#ajax-response").empty().append('<div class="error"><p>'+tagsl10n.noPerm+"</p></div>");f.children().css("backgroundColor","")}else{a("#ajax-response").empty().append('<div class="error"><p>'+tagsl10n.broken+"</p></div>");f.children().css("backgroundColor","")}}});f.children().css("backgroundColor","#f33")}return false});a("#submit").click(function(){var b=a(this).parents("form");if(!validateForm(b)){return false}a.post(ajaxurl,a("#addtag").serialize(),function(h){a("#ajax-response").empty();var f=wpAjax.parseAjaxResponse(h,"ajax-response");if(!f){return}var g=b.find("select#parent").val();if(g>0&&a("#tag-"+g).length>0){a(".tags #tag-"+g).after(f.responses[0].supplemental.noparents)}else{a(".tags").prepend(f.responses[0].supplemental.parents)}a(".tags .no-items").remove();if(b.find("select#parent")){var e=f.responses[1].supplemental;var c="";for(var d=0;d<f.responses[1].position;d++){c+="&nbsp;&nbsp;&nbsp;"}b.find("select#parent option:selected").after('<option value="'+e.term_id+'">'+c+e.name+"</option>")}a('input[type="text"]:visible, textarea:visible',b).val("")});return false})});
\ No newline at end of file
+jQuery(document).ready(function(a){a(".delete-tag").live("click",function(g){var b=a(this),f=b.parents("tr"),c=true,d;if("undefined"!=showNotice){c=showNotice.warn()}if(c){d=b.attr("href").replace(/[^?]*\?/,"").replace(/action=delete/,"action=delete-tag");a.post(ajaxurl,d,function(e){if("1"==e){a("#ajax-response").empty();f.fadeOut("normal",function(){f.remove()});a('select#parent option[value="'+d.match(/tag_ID=(\d+)/)[1]+'"]').remove();a("a.tag-link-"+d.match(/tag_ID=(\d+)/)[1]).remove()}else{if("-1"==e){a("#ajax-response").empty().append('<div class="error"><p>'+tagsl10n.noPerm+"</p></div>");f.children().css("backgroundColor","")}else{a("#ajax-response").empty().append('<div class="error"><p>'+tagsl10n.broken+"</p></div>");f.children().css("backgroundColor","")}}});f.children().css("backgroundColor","#f33")}return false});a("#submit").click(function(){var b=a(this).parents("form");if(!validateForm(b)){return false}a.post(ajaxurl,a("#addtag").serialize(),function(h){a("#ajax-response").empty();var f=wpAjax.parseAjaxResponse(h,"ajax-response");if(!f||f.errors){return}var g=b.find("select#parent").val();if(g>0&&a("#tag-"+g).length>0){a(".tags #tag-"+g).after(f.responses[0].supplemental.noparents)}else{a(".tags").prepend(f.responses[0].supplemental.parents)}a(".tags .no-items").remove();if(b.find("select#parent")){var e=f.responses[1].supplemental;var c="";for(var d=0;d<f.responses[1].position;d++){c+="&nbsp;&nbsp;&nbsp;"}b.find("select#parent option:selected").after('<option value="'+e.term_id+'">'+c+e.name+"</option>")}a('input[type="text"]:visible, textarea:visible',b).val("")});return false})});
\ No newline at end of file
index 6ba6542929c31895caef647a382b424fbc5b60f4..b7959c501fb686b29f262145c45f203b1ec28677 100644 (file)
@@ -53,12 +53,4 @@ jQuery(document).ready(function($) {
 
                return false;
        } );
 
                return false;
        } );
-
-       // Theme details
-       $('.theme-detail').click(function () {
-               $(this).siblings('.themedetaildiv').toggle();
-               return false;
-       });
-
 });
 });
-
index f942b51fd2bb1c26dfffd2ff90d445e13d755799..78211901036984170c28fc6721f12f19ac45a377 100644 (file)
@@ -1 +1 @@
-var thickDims,tbWidth,tbHeight;jQuery(document).ready(function(a){thickDims=function(){var f=a("#TB_window"),d=a(window).height(),b=a(window).width(),c,e;c=(tbWidth&&tbWidth<b-90)?tbWidth:b-90;e=(tbHeight&&tbHeight<d-60)?tbHeight:d-60;if(f.size()){f.width(c).height(e);a("#TB_iframeContent").width(c).height(e-27);f.css({"margin-left":"-"+parseInt((c/2),10)+"px"});if(typeof document.body.style.maxWidth!="undefined"){f.css({top:"30px","margin-top":"0"})}}};thickDims();a(window).resize(function(){thickDims()});a("a.thickbox-preview").click(function(){tb_click.call(this);var d=a(this).parents(".available-theme").find(".activatelink"),e="",b=a(this).attr("href"),c,f;if(tbWidth=b.match(/&tbWidth=[0-9]+/)){tbWidth=parseInt(tbWidth[0].replace(/[^0-9]+/g,""),10)}else{tbWidth=a(window).width()-90}if(tbHeight=b.match(/&tbHeight=[0-9]+/)){tbHeight=parseInt(tbHeight[0].replace(/[^0-9]+/g,""),10)}else{tbHeight=a(window).height()-60}if(d.length){c=d.attr("href")||"";f=d.attr("title")||"";e='&nbsp; <a href="'+c+'" target="_top" class="tb-theme-preview-link">'+f+"</a>"}else{f=a(this).attr("title")||"";e='&nbsp; <span class="tb-theme-preview-link">'+f+"</span>"}a("#TB_title").css({"background-color":"#222",color:"#dfdfdf"});a("#TB_closeAjaxWindow").css({"float":"left"});a("#TB_ajaxWindowTitle").css({"float":"right"}).html(e);a("#TB_iframeContent").width("100%");thickDims();return false});a(".theme-detail").click(function(){a(this).siblings(".themedetaildiv").toggle();return false})});
\ No newline at end of file
+var thickDims,tbWidth,tbHeight;jQuery(document).ready(function(a){thickDims=function(){var f=a("#TB_window"),d=a(window).height(),b=a(window).width(),c,e;c=(tbWidth&&tbWidth<b-90)?tbWidth:b-90;e=(tbHeight&&tbHeight<d-60)?tbHeight:d-60;if(f.size()){f.width(c).height(e);a("#TB_iframeContent").width(c).height(e-27);f.css({"margin-left":"-"+parseInt((c/2),10)+"px"});if(typeof document.body.style.maxWidth!="undefined"){f.css({top:"30px","margin-top":"0"})}}};thickDims();a(window).resize(function(){thickDims()});a("a.thickbox-preview").click(function(){tb_click.call(this);var d=a(this).parents(".available-theme").find(".activatelink"),e="",b=a(this).attr("href"),c,f;if(tbWidth=b.match(/&tbWidth=[0-9]+/)){tbWidth=parseInt(tbWidth[0].replace(/[^0-9]+/g,""),10)}else{tbWidth=a(window).width()-90}if(tbHeight=b.match(/&tbHeight=[0-9]+/)){tbHeight=parseInt(tbHeight[0].replace(/[^0-9]+/g,""),10)}else{tbHeight=a(window).height()-60}if(d.length){c=d.attr("href")||"";f=d.attr("title")||"";e='&nbsp; <a href="'+c+'" target="_top" class="tb-theme-preview-link">'+f+"</a>"}else{f=a(this).attr("title")||"";e='&nbsp; <span class="tb-theme-preview-link">'+f+"</span>"}a("#TB_title").css({"background-color":"#222",color:"#dfdfdf"});a("#TB_closeAjaxWindow").css({"float":"left"});a("#TB_ajaxWindowTitle").css({"float":"right"}).html(e);a("#TB_iframeContent").width("100%");thickDims();return false})});
\ No newline at end of file
index c575429566ef039d6e3a04530673cd94b7e96105..ae779c68039037645fd0dc7b0df3f187d7fad9ad 100644 (file)
@@ -1,3 +1,63 @@
+/**
+ * Theme Browsing
+ *
+ * Controls visibility of theme details on manage and install themes pages.
+ */
+jQuery( function($) {
+       $('#availablethemes').on( 'click', '.theme-detail', function (event) {
+               var theme   = $(this).closest('.available-theme'),
+                       details = theme.find('.themedetaildiv');
+
+               if ( ! details.length ) {
+                       details = theme.find('.install-theme-info .theme-details');
+                       details = details.clone().addClass('themedetaildiv').appendTo( theme ).hide();
+               }
+
+               details.toggle();
+               event.preventDefault();
+       });
+});
+
+/**
+ * Theme Install
+ *
+ * Displays theme previews on theme install pages.
+ */
+jQuery( function($) {
+       if( ! window.postMessage )
+               return;
+
+       var preview = $('#theme-installer'),
+               info    = preview.find('.install-theme-info'),
+               panel   = preview.find('.wp-full-overlay-main'),
+               body    = $( document.body );
+
+       preview.on( 'click', '.close-full-overlay', function( event ) {
+               preview.fadeOut( 200, function() {
+                       panel.empty();
+                       body.removeClass('theme-installer-active full-overlay-active');
+               });
+               event.preventDefault();
+       });
+
+       preview.on( 'click', '.collapse-sidebar', function( event ) {
+               preview.toggleClass( 'collapsed' ).toggleClass( 'expanded' );
+               event.preventDefault();
+       });
+
+       $('#availablethemes').on( 'click', '.install-theme-preview', function( event ) {
+               var src;
+
+               info.html( $(this).closest('.installable-theme').find('.install-theme-info').html() );
+               src = info.find( '.theme-preview-url' ).val();
+               panel.html( '<iframe src="' + src + '" />');
+               preview.fadeIn( 200, function() {
+                       body.addClass('theme-installer-active full-overlay-active');
+               });
+               event.preventDefault();
+       });
+});
+
 var ThemeViewer;
 
 (function($){
 var ThemeViewer;
 
 (function($){
@@ -45,7 +105,7 @@ var ThemeViewer;
                        init: init
                };
 
                        init: init
                };
 
-       return api;
+       return api;
        }
 })(jQuery);
 
        }
 })(jQuery);
 
@@ -53,3 +113,142 @@ jQuery( document ).ready( function($) {
        theme_viewer = new ThemeViewer();
        theme_viewer.init();
 });
        theme_viewer = new ThemeViewer();
        theme_viewer.init();
 });
+
+
+/**
+ * Class that provides infinite scroll for Themes admin screens
+ *
+ * @since 3.4
+ *
+ * @uses ajaxurl
+ * @uses list_args
+ * @uses theme_list_args
+ * @uses $('#_ajax_fetch_list_nonce').val()
+* */
+var ThemeScroller;
+(function($){
+       ThemeScroller = {
+               querying: false,
+               scrollPollingDelay: 500,
+               failedRetryDelay: 4000,
+               outListBottomThreshold: 300,
+
+               /**
+                * Initializer
+                *
+                * @since 3.4
+                * @access private
+                */
+               init: function() {
+                       var self = this;
+
+                       // Get out early if we don't have the required arguments.
+                       if ( typeof ajaxurl === 'undefined' ||
+                                typeof list_args === 'undefined' ||
+                                typeof theme_list_args === 'undefined' ) {
+                                       $('.pagination-links').show();
+                                       return;
+                       }
+
+                       // Handle inputs
+                       this.nonce = $('#_ajax_fetch_list_nonce').val();
+                       this.nextPage = ( theme_list_args.paged + 1 );
+
+                       // Cache jQuery selectors
+                       this.$outList = $('#availablethemes');
+                       this.$spinner = $('div.tablenav.bottom').children( 'img.ajax-loading' );
+                       this.$window = $(window);
+                       this.$document = $(document);
+
+                       /**
+                        * If there are more pages to query, then start polling to track
+                        * when user hits the bottom of the current page
+                        */
+                       if ( theme_list_args.total_pages >= this.nextPage )
+                               this.pollInterval =
+                                       setInterval( function() {
+                                               return self.poll();
+                                       }, this.scrollPollingDelay );
+               },
+
+               /**
+                * Checks to see if user has scrolled to bottom of page.
+                * If so, requests another page of content from self.ajax().
+                *
+                * @since 3.4
+                * @access private
+                */
+               poll: function() {
+                       var bottom = this.$document.scrollTop() + this.$window.innerHeight();
+
+                       if ( this.querying ||
+                               ( bottom < this.$outList.height() - this.outListBottomThreshold ) )
+                               return;
+
+                       this.ajax();
+               },
+
+               /**
+                * Applies results passed from this.ajax() to $outList
+                *
+                * @since 3.4
+                * @access private
+                *
+                * @param results Array with results from this.ajax() query.
+                */
+               process: function( results ) {
+                       if ( results === undefined ) {
+                               clearInterval( this.pollInterval );
+                               return;
+                       }
+
+                       if ( this.nextPage > theme_list_args.total_pages )
+                               clearInterval( this.pollInterval );
+
+                       if ( this.nextPage <= ( theme_list_args.total_pages + 1 ) )
+                               this.$outList.append( results.rows );
+               },
+
+               /**
+                * Queries next page of themes
+                *
+                * @since 3.4
+                * @access private
+                */
+               ajax: function() {
+                       var self = this;
+
+                       this.querying = true;
+
+                       var query = {
+                               action: 'fetch-list',
+                               paged: this.nextPage,
+                               s: theme_list_args.search,
+                               tab: theme_list_args.tab,
+                               type: theme_list_args.type,
+                               _ajax_fetch_list_nonce: this.nonce,
+                               'features[]': theme_list_args.features,
+                               'list_args': list_args
+                       };
+
+                       this.$spinner.css( 'visibility', 'visible' );
+                       $.getJSON( ajaxurl, query )
+                               .done( function( response ) {
+                                       self.nextPage++;
+                                       self.process( response );
+                                       self.$spinner.css( 'visibility', 'hidden' );
+                                       self.querying = false;
+                               })
+                               .fail( function() {
+                                       self.$spinner.css( 'visibility', 'hidden' );
+                                       self.querying = false;
+                                       setTimeout( function() { self.ajax(); }, self.failedRetryDelay );
+                               });
+               }
+       }
+
+       $(document).ready( function($) {
+               ThemeScroller.init();
+       });
+
+})(jQuery);
index bc076f738d7ebcb2fe9f68515341d1bd1d656f4e..fcfd80904398d83fcce392ed7ffdda951e224a70 100644 (file)
@@ -1 +1 @@
-var ThemeViewer;(function(a){ThemeViewer=function(b){function d(){a("#filter-click, #mini-filter-click").unbind("click").click(function(){a("#filter-click").toggleClass("current");a("#filter-box").slideToggle();a("#current-theme").slideToggle(300);return false});a("#filter-box :checkbox").unbind("click").click(function(){var e=a("#filter-box :checked").length,f=a("#filter-click").text();if(f.indexOf("(")!=-1){f=f.substr(0,f.indexOf("("))}if(e==0){a("#filter-click").text(f)}else{a("#filter-click").text(f+" ("+e+")")}})}var c={init:d};return c}})(jQuery);jQuery(document).ready(function(a){theme_viewer=new ThemeViewer();theme_viewer.init()});
\ No newline at end of file
+jQuery(function(a){a("#availablethemes").on("click",".theme-detail",function(c){var d=a(this).closest(".available-theme"),b=d.find(".themedetaildiv");if(!b.length){b=d.find(".install-theme-info .theme-details");b=b.clone().addClass("themedetaildiv").appendTo(d).hide()}b.toggle();c.preventDefault()})});jQuery(function(c){if(!window.postMessage){return}var e=c("#theme-installer"),d=e.find(".install-theme-info"),b=e.find(".wp-full-overlay-main"),a=c(document.body);e.on("click",".close-full-overlay",function(f){e.fadeOut(200,function(){b.empty();a.removeClass("theme-installer-active full-overlay-active")});f.preventDefault()});e.on("click",".collapse-sidebar",function(f){e.toggleClass("collapsed").toggleClass("expanded");f.preventDefault()});c("#availablethemes").on("click",".install-theme-preview",function(f){var g;d.html(c(this).closest(".installable-theme").find(".install-theme-info").html());g=d.find(".theme-preview-url").val();b.html('<iframe src="'+g+'" />');e.fadeIn(200,function(){a.addClass("theme-installer-active full-overlay-active")});f.preventDefault()})});var ThemeViewer;(function(a){ThemeViewer=function(b){function d(){a("#filter-click, #mini-filter-click").unbind("click").click(function(){a("#filter-click").toggleClass("current");a("#filter-box").slideToggle();a("#current-theme").slideToggle(300);return false});a("#filter-box :checkbox").unbind("click").click(function(){var e=a("#filter-box :checked").length,f=a("#filter-click").text();if(f.indexOf("(")!=-1){f=f.substr(0,f.indexOf("("))}if(e==0){a("#filter-click").text(f)}else{a("#filter-click").text(f+" ("+e+")")}})}var c={init:d};return c}})(jQuery);jQuery(document).ready(function(a){theme_viewer=new ThemeViewer();theme_viewer.init()});var ThemeScroller;(function(a){ThemeScroller={querying:false,scrollPollingDelay:500,failedRetryDelay:4000,outListBottomThreshold:300,init:function(){var b=this;if(typeof ajaxurl==="undefined"||typeof list_args==="undefined"||typeof theme_list_args==="undefined"){a(".pagination-links").show();return}this.nonce=a("#_ajax_fetch_list_nonce").val();this.nextPage=(theme_list_args.paged+1);this.$outList=a("#availablethemes");this.$spinner=a("div.tablenav.bottom").children("img.ajax-loading");this.$window=a(window);this.$document=a(document);if(theme_list_args.total_pages>=this.nextPage){this.pollInterval=setInterval(function(){return b.poll()},this.scrollPollingDelay)}},poll:function(){var b=this.$document.scrollTop()+this.$window.innerHeight();if(this.querying||(b<this.$outList.height()-this.outListBottomThreshold)){return}this.ajax()},process:function(b){if(b===undefined){clearInterval(this.pollInterval);return}if(this.nextPage>theme_list_args.total_pages){clearInterval(this.pollInterval)}if(this.nextPage<=(theme_list_args.total_pages+1)){this.$outList.append(b.rows)}},ajax:function(){var b=this;this.querying=true;var c={action:"fetch-list",paged:this.nextPage,s:theme_list_args.search,tab:theme_list_args.tab,type:theme_list_args.type,_ajax_fetch_list_nonce:this.nonce,"features[]":theme_list_args.features,list_args:list_args};this.$spinner.css("visibility","visible");a.getJSON(ajaxurl,c).done(function(d){b.nextPage++;b.process(d);b.$spinner.css("visibility","hidden");b.querying=false}).fail(function(){b.$spinner.css("visibility","hidden");b.querying=false;setTimeout(function(){b.ajax()},b.failedRetryDelay)})}};a(document).ready(function(b){ThemeScroller.init()})})(jQuery);
\ No newline at end of file
index 3c60a4593df93660554bb0366fa0e893dee0d823..bd4885525015a85ce259dd1215de50a3527b4270 100644 (file)
                }
        }
 
                }
        }
 
-       $(document).ready(function() {
+       $(document).ready( function() {
+               var select = $('#display_name');
+
                $('#pass1').val('').keyup( check_pass_strength );
                $('#pass2').val('').keyup( check_pass_strength );
                $('#pass-strength-result').show();
                $('#pass1').val('').keyup( check_pass_strength );
                $('#pass2').val('').keyup( check_pass_strength );
                $('#pass-strength-result').show();
-               $('.color-palette').click(function(){$(this).siblings('input[name="admin_color"]').prop('checked', true)});
-               $('#first_name, #last_name, #nickname').blur(function(){
-                       var select = $('#display_name'), current = select.find('option:selected').attr('id'), dub = [],
-                               inputs = {
-                                       display_nickname : $('#nickname').val(),
-                                       display_username : $('#user_login').val(),
-                                       display_firstname : $('#first_name').val(),
-                                       display_lastname : $('#last_name').val()
-                               };
-
-                       if ( inputs.display_firstname && inputs.display_lastname ) {
-                               inputs['display_firstlast'] = inputs.display_firstname + ' ' + inputs.display_lastname;
-                               inputs['display_lastfirst'] = inputs.display_lastname + ' ' + inputs.display_firstname;
-                       }
+               $('.color-palette').click( function() {
+                       $(this).siblings('input[name="admin_color"]').prop('checked', true);
+               });
 
 
-                       $('option', select).remove();
-                       $.each(inputs, function( id, value ) {
-                               var val = value.replace(/<\/?[a-z][^>]*>/gi, '');
+               if ( select.length ) {
+                       $('#first_name, #last_name, #nickname').bind( 'blur.user_profile', function() {
+                               var dub = [],
+                                       inputs = {
+                                               display_nickname  : $('#nickname').val() || '',
+                                               display_username  : $('#user_login').val() || '',
+                                               display_firstname : $('#first_name').val() || '',
+                                               display_lastname  : $('#last_name').val() || ''
+                                       };
 
 
-                               if ( inputs[id].length && $.inArray( val, dub ) == -1 ) {
-                                       dub.push(val);
-                                       $('<option />', {
-                                               'id': id,
-                                               'text': val,
-                                               'selected': (id == current)
-                                       }).appendTo( select );
+                               if ( inputs.display_firstname && inputs.display_lastname ) {
+                                       inputs['display_firstlast'] = inputs.display_firstname + ' ' + inputs.display_lastname;
+                                       inputs['display_lastfirst'] = inputs.display_lastname + ' ' + inputs.display_firstname;
                                }
                                }
+
+                               $.each( $('option', select), function( i, el ){
+                                       dub.push( el.value );
+                               });
+
+                               $.each(inputs, function( id, value ) {
+                                       if ( ! value )
+                                               return;
+
+                                       var val = value.replace(/<\/?[a-z][^>]*>/gi, '');
+
+                                       if ( inputs[id].length && $.inArray( val, dub ) == -1 ) {
+                                               dub.push(val);
+                                               $('<option />', {
+                                                       'text': val
+                                               }).appendTo( select );
+                                       }
+                               });
                        });
                        });
-               });
+               }
        });
 
 })(jQuery);
        });
 
 })(jQuery);
index 9f36f78febb8a5d5f96395491d8d408b2c2948ad..9ae96482d25175133acf372abe72712a3f8fabd3 100644 (file)
@@ -1 +1 @@
-(function(a){function b(){var e=a("#pass1").val(),d=a("#user_login").val(),c=a("#pass2").val(),f;a("#pass-strength-result").removeClass("short bad good strong");if(!e){a("#pass-strength-result").html(pwsL10n.empty);return}f=passwordStrength(e,d,c);switch(f){case 2:a("#pass-strength-result").addClass("bad").html(pwsL10n.bad);break;case 3:a("#pass-strength-result").addClass("good").html(pwsL10n.good);break;case 4:a("#pass-strength-result").addClass("strong").html(pwsL10n.strong);break;case 5:a("#pass-strength-result").addClass("short").html(pwsL10n.mismatch);break;default:a("#pass-strength-result").addClass("short").html(pwsL10n["short"])}}a(document).ready(function(){a("#pass1").val("").keyup(b);a("#pass2").val("").keyup(b);a("#pass-strength-result").show();a(".color-palette").click(function(){a(this).siblings('input[name="admin_color"]').prop("checked",true)});a("#first_name, #last_name, #nickname").blur(function(){var c=a("#display_name"),e=c.find("option:selected").attr("id"),f=[],d={display_nickname:a("#nickname").val(),display_username:a("#user_login").val(),display_firstname:a("#first_name").val(),display_lastname:a("#last_name").val()};if(d.display_firstname&&d.display_lastname){d.display_firstlast=d.display_firstname+" "+d.display_lastname;d.display_lastfirst=d.display_lastname+" "+d.display_firstname}a("option",c).remove();a.each(d,function(i,g){var h=g.replace(/<\/?[a-z][^>]*>/gi,"");if(d[i].length&&a.inArray(h,f)==-1){f.push(h);a("<option />",{id:i,text:h,selected:(i==e)}).appendTo(c)}})})})})(jQuery);
\ No newline at end of file
+(function(a){function b(){var e=a("#pass1").val(),d=a("#user_login").val(),c=a("#pass2").val(),f;a("#pass-strength-result").removeClass("short bad good strong");if(!e){a("#pass-strength-result").html(pwsL10n.empty);return}f=passwordStrength(e,d,c);switch(f){case 2:a("#pass-strength-result").addClass("bad").html(pwsL10n.bad);break;case 3:a("#pass-strength-result").addClass("good").html(pwsL10n.good);break;case 4:a("#pass-strength-result").addClass("strong").html(pwsL10n.strong);break;case 5:a("#pass-strength-result").addClass("short").html(pwsL10n.mismatch);break;default:a("#pass-strength-result").addClass("short").html(pwsL10n["short"])}}a(document).ready(function(){var c=a("#display_name");a("#pass1").val("").keyup(b);a("#pass2").val("").keyup(b);a("#pass-strength-result").show();a(".color-palette").click(function(){a(this).siblings('input[name="admin_color"]').prop("checked",true)});if(c.length){a("#first_name, #last_name, #nickname").bind("blur.user_profile",function(){var e=[],d={display_nickname:a("#nickname").val()||"",display_username:a("#user_login").val()||"",display_firstname:a("#first_name").val()||"",display_lastname:a("#last_name").val()||""};if(d.display_firstname&&d.display_lastname){d.display_firstlast=d.display_firstname+" "+d.display_lastname;d.display_lastfirst=d.display_lastname+" "+d.display_firstname}a.each(a("option",c),function(f,g){e.push(g.value)});a.each(d,function(h,f){if(!f){return}var g=f.replace(/<\/?[a-z][^>]*>/gi,"");if(d[h].length&&a.inArray(g,e)==-1){e.push(g);a("<option />",{text:g}).appendTo(c)}})})}})})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/user-suggest.dev.js b/wp-admin/js/user-suggest.dev.js
new file mode 100644 (file)
index 0000000..0bcfada
--- /dev/null
@@ -0,0 +1,13 @@
+(function($) {
+       var id = 'undefined' !== typeof current_site_id ? '&site_id=' + current_site_id : '';
+       $(document).ready( function() {
+               $( '.wp-suggest-user' ).autocomplete({
+                       source:    ajaxurl + '?action=autocomplete-user&autocomplete_type=add' + id,
+                       delay:     500,
+                       minLength: 2,
+                       position:  ( 'undefined' !== typeof isRtl && isRtl ) ? { my: 'right top', at: 'right bottom', offset: '0, -1' } : { offset: '0, -1' },
+                       open:      function() { $(this).addClass('open'); },
+                       close:     function() { $(this).removeClass('open'); }
+               });
+       });
+})(jQuery);
\ No newline at end of file
diff --git a/wp-admin/js/user-suggest.js b/wp-admin/js/user-suggest.js
new file mode 100644 (file)
index 0000000..5f17b52
--- /dev/null
@@ -0,0 +1 @@
+(function(a){var b="undefined"!==typeof current_site_id?"&site_id="+current_site_id:"";a(document).ready(function(){a(".wp-suggest-user").autocomplete({source:ajaxurl+"?action=autocomplete-user&autocomplete_type=add"+b,delay:500,minLength:2,position:("undefined"!==typeof isRtl&&isRtl)?{my:"right top",at:"right bottom",offset:"0, -1"}:{offset:"0, -1"},open:function(){a(this).addClass("open")},close:function(){a(this).removeClass("open")}})})})(jQuery);
\ No newline at end of file
index 30446c1debdeafe486ee387d697d3027bbe55d6c..d7566362a405ab5822722aa3af4d5d3aa6a895cd 100644 (file)
@@ -3,23 +3,23 @@
 var wpCookies = {
 // The following functions are from Cookie.js class in TinyMCE, Moxiecode, used under LGPL.
 
 var wpCookies = {
 // The following functions are from Cookie.js class in TinyMCE, Moxiecode, used under LGPL.
 
-       each : function(o, cb, s) {
+       each : function(obj, cb, scope) {
                var n, l;
 
                var n, l;
 
-               if (!o)
+               if ( !obj )
                        return 0;
 
                        return 0;
 
-               s = s || o;
+               scope = scope || obj;
 
 
-               if (typeof(o.length) != 'undefined') {
-                       for (n=0, l = o.length; n<l; n++) {
-                               if (cb.call(s, o[n], n, o) === false)
+               if ( typeof(obj.length) != 'undefined' ) {
+                       for ( n = 0, l = obj.length; n < l; n++ ) {
+                               if ( cb.call(scope, obj[n], n, obj) === false )
                                        return 0;
                        }
                } else {
                                        return 0;
                        }
                } else {
-                       for (n in o) {
-                               if (o.hasOwnProperty(n)) {
-                                       if (cb.call(s, o[n], n, o) === false) {
+                       for ( n in obj ) {
+                               if ( obj.hasOwnProperty(n) ) {
+                                       if ( cb.call(scope, obj[n], n, obj) === false ) {
                                                return 0;
                                        }
                                }
                                                return 0;
                                        }
                                }
@@ -28,78 +28,108 @@ var wpCookies = {
                return 1;
        },
 
                return 1;
        },
 
-       getHash : function(n) {
-               var v = this.get(n), h;
-
-               if (v) {
-                       this.each(v.split('&'), function(v) {
-                               v = v.split('=');
-                               h = h || {};
-                               h[v[0]] = v[1];
+       /**
+        * Get a multi-values cookie.
+        * Returns a JS object with the name: 'value' pairs.
+        */
+       getHash : function(name) {
+               var all = this.get(name), ret;
+
+               if ( all ) {
+                       this.each( all.split('&'), function(pair) {
+                               pair = pair.split('=');
+                               ret = ret || {};
+                               ret[pair[0]] = pair[1];
                        });
                }
                        });
                }
-               return h;
+               return ret;
        },
 
        },
 
-       setHash : function(n, v, e, p, d, s) {
-               var o = '';
+       /**
+        * Set a multi-values cookie.
+        *
+        * 'values_obj' is the JS object that is stored. It is encoded as URI in wpCookies.set().
+        */
+       setHash : function(name, values_obj, expires, path, domain, secure) {
+               var str = '';
 
 
-               this.each(v, function(v, k) {
-                       o += (!o ? '' : '&') + k + '=' + v;
+               this.each(values_obj, function(val, key) {
+                       str += (!str ? '' : '&') + key + '=' + val;
                });
 
                });
 
-               this.set(n, o, e, p, d, s);
+               this.set(name, str, expires, path, domain, secure);
        },
 
        },
 
-       get : function(n) {
-               var c = document.cookie, e, p = n + "=", b;
+       /**
+        * Get a cookie.
+        */
+       get : function(name) {
+               var cookie = document.cookie, e, p = name + "=", b;
 
 
-               if (!c)
+               if ( !cookie )
                        return;
 
                        return;
 
-               b = c.indexOf("; " + p);
+               b = cookie.indexOf("; " + p);
 
 
-               if (b == -1) {
-                       b = c.indexOf(p);
+               if ( b == -1 ) {
+                       b = cookie.indexOf(p);
 
 
-                       if (b != 0)
+                       if ( b != 0 )
                                return null;
 
                } else {
                        b += 2;
                }
 
                                return null;
 
                } else {
                        b += 2;
                }
 
-               e = c.indexOf(";", b);
-
-               if (e == -1)
-                       e = c.length;
+               e = cookie.indexOf(";", b);
 
 
-               return decodeURIComponent(c.substring(b + p.length, e));
-       },
+               if ( e == -1 )
+                       e = cookie.length;
 
 
-       set : function(n, v, e, p, d, s) {
-               document.cookie = n + "=" + encodeURIComponent(v) +
-                       ((e) ? "; expires=" + e.toGMTString() : "") +
-                       ((p) ? "; path=" + p : "") +
-                       ((d) ? "; domain=" + d : "") +
-                       ((s) ? "; secure" : "");
+               return decodeURIComponent( cookie.substring(b + p.length, e) );
        },
 
        },
 
-       remove : function(n, p) {
+       /**
+        * Set a cookie.
+        *
+        * The 'expires' arg can be either a JS Date() object set to the expiration date (back-compat)
+        * or the number of seconds until expiration
+        */
+       set : function(name, value, expires, path, domain, secure) {
                var d = new Date();
 
                var d = new Date();
 
-               d.setTime(d.getTime() - 1000);
+               if ( typeof(expires) == 'object' && expires.toGMTString ) {
+                       expires = expires.toGMTString();
+               } else if ( parseInt(expires, 10) ) {
+                       d.setTime( d.getTime() + ( parseInt(expires, 10) * 1000 ) ); // time must be in miliseconds
+                       expires = d.toGMTString();
+               } else {
+                       expires = '';
+               }
+
+               document.cookie = name + "=" + encodeURIComponent(value) +
+                       ((expires) ? "; expires=" + expires : "") +
+                       ((path) ? "; path=" + path : "") +
+                       ((domain) ? "; domain=" + domain : "") +
+                       ((secure) ? "; secure" : "");
+       },
 
 
-               this.set(n, '', d, p, d);
+       /**
+        * Remove a cookie.
+        *
+        * This is done by setting it to an empty value and setting the expiration time in the past.
+        */
+       remove : function(name, path) {
+               this.set(name, '', -1000, path);
        }
 };
 
 // Returns the value as string. Second arg or empty string is returned when value is not set.
 function getUserSetting( name, def ) {
        }
 };
 
 // Returns the value as string. Second arg or empty string is returned when value is not set.
 function getUserSetting( name, def ) {
-       var o = getAllUserSettings();
+       var obj = getAllUserSettings();
 
 
-       if ( o.hasOwnProperty(name) )
-               return o[name];
+       if ( obj.hasOwnProperty(name) )
+               return obj[name];
 
        if ( typeof def != 'undefined' )
                return def;
 
        if ( typeof def != 'undefined' )
                return def;
@@ -109,24 +139,21 @@ function getUserSetting( name, def ) {
 
 // Both name and value must be only ASCII letters, numbers or underscore
 // and the shorter, the better (cookies can store maximum 4KB). Not suitable to store text.
 
 // Both name and value must be only ASCII letters, numbers or underscore
 // and the shorter, the better (cookies can store maximum 4KB). Not suitable to store text.
-function setUserSetting( name, value, del ) {
+function setUserSetting( name, value, _del ) {
        if ( 'object' !== typeof userSettings )
                return false;
 
        if ( 'object' !== typeof userSettings )
                return false;
 
-       var c = 'wp-settings-' + userSettings.uid, o = wpCookies.getHash(c) || {}, d = new Date(), p,
+       var cookie = 'wp-settings-' + userSettings.uid, all = wpCookies.getHash(cookie) || {}, path = userSettings.url,
        n = name.toString().replace(/[^A-Za-z0-9_]/, ''), v = value.toString().replace(/[^A-Za-z0-9_]/, '');
 
        n = name.toString().replace(/[^A-Za-z0-9_]/, ''), v = value.toString().replace(/[^A-Za-z0-9_]/, '');
 
-       if ( del ) {
-               delete o[n];
+       if ( _del ) {
+               delete all[n];
        } else {
        } else {
-               o[n] = v;
+               all[n] = v;
        }
 
        }
 
-       d.setTime( d.getTime() + 31536000000 );
-       p = userSettings.url;
-
-       wpCookies.setHash(c, o, d, p);
-       wpCookies.set('wp-settings-time-'+userSettings.uid, userSettings.time, d, p);
+       wpCookies.setHash(cookie, all, 31536000, path);
+       wpCookies.set('wp-settings-time-'+userSettings.uid, userSettings.time, 31536000, path);
 
        return name;
 }
 
        return name;
 }
index 598c2db37d49f864c6d92bbc88c20404ab1a121a..941ac2ef6f80d3363ba9f3e2c7474094c0998631 100644 (file)
@@ -1 +1 @@
-var wpCookies={each:function(d,a,c){var e,b;if(!d){return 0}c=c||d;if(typeof(d.length)!="undefined"){for(e=0,b=d.length;e<b;e++){if(a.call(c,d[e],e,d)===false){return 0}}}else{for(e in d){if(d.hasOwnProperty(e)){if(a.call(c,d[e],e,d)===false){return 0}}}}return 1},getHash:function(c){var a=this.get(c),b;if(a){this.each(a.split("&"),function(d){d=d.split("=");b=b||{};b[d[0]]=d[1]})}return b},setHash:function(i,a,f,c,h,b){var g="";this.each(a,function(e,d){g+=(!g?"":"&")+d+"="+e});this.set(i,g,f,c,h,b)},get:function(h){var g=document.cookie,f,d=h+"=",a;if(!g){return}a=g.indexOf("; "+d);if(a==-1){a=g.indexOf(d);if(a!=0){return null}}else{a+=2}f=g.indexOf(";",a);if(f==-1){f=g.length}return decodeURIComponent(g.substring(a+d.length,f))},set:function(h,a,f,c,g,b){document.cookie=h+"="+encodeURIComponent(a)+((f)?"; expires="+f.toGMTString():"")+((c)?"; path="+c:"")+((g)?"; domain="+g:"")+((b)?"; secure":"")},remove:function(c,a){var b=new Date();b.setTime(b.getTime()-1000);this.set(c,"",b,a,b)}};function getUserSetting(a,b){var c=getAllUserSettings();if(c.hasOwnProperty(a)){return c[a]}if(typeof b!="undefined"){return b}return""}function setUserSetting(a,i,k){if("object"!==typeof userSettings){return false}var h="wp-settings-"+userSettings.uid,e=wpCookies.getHash(h)||{},g=new Date(),b,f=a.toString().replace(/[^A-Za-z0-9_]/,""),j=i.toString().replace(/[^A-Za-z0-9_]/,"");if(k){delete e[f]}else{e[f]=j}g.setTime(g.getTime()+31536000000);b=userSettings.url;wpCookies.setHash(h,e,g,b);wpCookies.set("wp-settings-time-"+userSettings.uid,userSettings.time,g,b);return a}function deleteUserSetting(a){return setUserSetting(a,"",1)}function getAllUserSettings(){if("object"!==typeof userSettings){return{}}return wpCookies.getHash("wp-settings-"+userSettings.uid)||{}};
\ No newline at end of file
+var wpCookies={each:function(d,a,c){var e,b;if(!d){return 0}c=c||d;if(typeof(d.length)!="undefined"){for(e=0,b=d.length;e<b;e++){if(a.call(c,d[e],e,d)===false){return 0}}}else{for(e in d){if(d.hasOwnProperty(e)){if(a.call(c,d[e],e,d)===false){return 0}}}}return 1},getHash:function(b){var c=this.get(b),a;if(c){this.each(c.split("&"),function(d){d=d.split("=");a=a||{};a[d[0]]=d[1]})}return a},setHash:function(b,c,a,f,d,e){var g="";this.each(c,function(i,h){g+=(!g?"":"&")+h+"="+i});this.set(b,g,a,f,d,e)},get:function(c){var d=document.cookie,g,f=c+"=",a;if(!d){return}a=d.indexOf("; "+f);if(a==-1){a=d.indexOf(f);if(a!=0){return null}}else{a+=2}g=d.indexOf(";",a);if(g==-1){g=d.length}return decodeURIComponent(d.substring(a+f.length,g))},set:function(b,e,a,g,c,f){var h=new Date();if(typeof(a)=="object"&&a.toGMTString){a=a.toGMTString()}else{if(parseInt(a,10)){h.setTime(h.getTime()+(parseInt(a,10)*1000));a=h.toGMTString()}else{a=""}}document.cookie=b+"="+encodeURIComponent(e)+((a)?"; expires="+a:"")+((g)?"; path="+g:"")+((c)?"; domain="+c:"")+((f)?"; secure":"")},remove:function(a,b){this.set(a,"",-1000,b)}};function getUserSetting(a,b){var c=getAllUserSettings();if(c.hasOwnProperty(a)){return c[a]}if(typeof b!="undefined"){return b}return""}function setUserSetting(c,f,b){if("object"!==typeof userSettings){return false}var d="wp-settings-"+userSettings.uid,e=wpCookies.getHash(d)||{},g=userSettings.url,h=c.toString().replace(/[^A-Za-z0-9_]/,""),a=f.toString().replace(/[^A-Za-z0-9_]/,"");if(b){delete e[h]}else{e[h]=a}wpCookies.setHash(d,e,31536000,g);wpCookies.set("wp-settings-time-"+userSettings.uid,userSettings.time,31536000,g);return c}function deleteUserSetting(a){return setUserSetting(a,"",1)}function getAllUserSettings(){if("object"!==typeof userSettings){return{}}return wpCookies.getHash("wp-settings-"+userSettings.uid)||{}};
\ No newline at end of file
index 73b7eeb70b7635675efd7373cac4408b4d44ea2a..8e3a05dd1428afda8a8de3f8ff55295991364c51 100644 (file)
@@ -248,12 +248,14 @@ wpWidgets = {
        },
 
        appendTitle : function(widget) {
        },
 
        appendTitle : function(widget) {
-               var title = $('input[id*="-title"]', widget);
-               if ( title = title.val() ) {
-                       title = title.replace(/<[^<>]+>/g, '').replace(/</g, '&lt;').replace(/>/g, '&gt;');
-                       $(widget).children('.widget-top').children('.widget-title').children()
-                               .children('.in-widget-title').html(': ' + title);
-               }
+               var title = $('input[id*="-title"]', widget).val() || '';
+
+               if ( title )
+                       title = ': ' + title.replace(/<[^<>]+>/g, '').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+
+               $(widget).children('.widget-top').children('.widget-title').children()
+                               .children('.in-widget-title').html(title);
+
        },
 
        resize : function() {
        },
 
        resize : function() {
index f88994f1dadbb093ebf52cd2543bedeea3d32f4a..5f741f691caa89c8b7f9d18773ed263c2640fef0 100644 (file)
@@ -1 +1 @@
-var wpWidgets;(function(a){wpWidgets={init:function(){var f,d=a("div.widgets-sortables"),c=!!("undefined"!=typeof isRtl&&isRtl),e=(isRtl?"marginRight":"marginLeft"),b;a("#widgets-right").children(".widgets-holder-wrap").children(".sidebar-name").click(function(){var h=a(this).siblings(".widgets-sortables"),g=a(this).parent();if(!g.hasClass("closed")){h.sortable("disable");g.addClass("closed")}else{g.removeClass("closed");h.sortable("enable").sortable("refresh")}});a("#widgets-left").children(".widgets-holder-wrap").children(".sidebar-name").click(function(){a(this).parent().toggleClass("closed")});d.each(function(){if(a(this).parent().hasClass("inactive")){return true}var i=50,g=a(this).children(".widget").length;i=i+parseInt(g*48,10);a(this).css("minHeight",i+"px")});a("a.widget-action").live("click",function(){var i={},j=a(this).closest("div.widget"),g=j.children(".widget-inside"),h=parseInt(j.find("input.widget-width").val(),10);if(g.is(":hidden")){if(h>250&&g.closest("div.widgets-sortables").length){i.width=h+30+"px";if(g.closest("div.widget-liquid-right").length){i[e]=235-h+"px"}j.css(i)}wpWidgets.fixLabels(j);g.slideDown("fast")}else{g.slideUp("fast",function(){j.css({width:"",margin:""})})}return false});a("input.widget-control-save").live("click",function(){wpWidgets.save(a(this).closest("div.widget"),0,1,0);return false});a("a.widget-control-remove").live("click",function(){wpWidgets.save(a(this).closest("div.widget"),1,1,0);return false});a("a.widget-control-close").live("click",function(){wpWidgets.close(a(this).closest("div.widget"));return false});d.children(".widget").each(function(){wpWidgets.appendTitle(this);if(a("p.widget-error",this).length){a("a.widget-action",this).click()}});a("#widget-list").children(".widget").draggable({connectToSortable:"div.widgets-sortables",handle:"> .widget-top > .widget-title",distance:2,helper:"clone",zIndex:5,containment:"document",start:function(h,g){g.helper.find("div.widget-description").hide();b=this.id},stop:function(h,g){if(f){a(f).hide()}f=""}});d.sortable({placeholder:"widget-placeholder",items:"> .widget",handle:"> .widget-top > .widget-title",cursor:"move",distance:2,containment:"document",start:function(h,g){g.item.children(".widget-inside").hide();g.item.css({margin:"",width:""})},stop:function(i,g){if(g.item.hasClass("ui-draggable")&&g.item.data("draggable")){g.item.draggable("destroy")}if(g.item.hasClass("deleting")){wpWidgets.save(g.item,1,0,1);g.item.remove();return}var h=g.item.find("input.add_new").val(),l=g.item.find("input.multi_number").val(),k=b,j=a(this).attr("id");g.item.css({margin:"",width:""});b="";if(h){if("multi"==h){g.item.html(g.item.html().replace(/<[^<>]+>/g,function(n){return n.replace(/__i__|%i%/g,l)}));g.item.attr("id",k.replace("__i__",l));l++;a("div#"+k).find("input.multi_number").val(l)}else{if("single"==h){g.item.attr("id","new-"+k);f="div#"+k}}wpWidgets.save(g.item,0,0,1);g.item.find("input.add_new").val("");g.item.find("a.widget-action").click();return}wpWidgets.saveOrder(j)},receive:function(i,h){var g=a(h.sender);if(!a(this).is(":visible")||this.id.indexOf("orphaned_widgets")!=-1){g.sortable("cancel")}if(g.attr("id").indexOf("orphaned_widgets")!=-1&&!g.children(".widget").length){g.parents(".orphan-sidebar").slideUp(400,function(){a(this).remove()})}}}).sortable("option","connectWith","div.widgets-sortables").parent().filter(".closed").children(".widgets-sortables").sortable("disable");a("#available-widgets").droppable({tolerance:"pointer",accept:function(g){return a(g).parent().attr("id")!="widget-list"},drop:function(h,g){g.draggable.addClass("deleting");a("#removing-widget").hide().children("span").html("")},over:function(h,g){g.draggable.addClass("deleting");a("div.widget-placeholder").hide();if(g.draggable.hasClass("ui-sortable-helper")){a("#removing-widget").show().children("span").html(g.draggable.find("div.widget-title").children("h4").html())}},out:function(h,g){g.draggable.removeClass("deleting");a("div.widget-placeholder").show();a("#removing-widget").hide().children("span").html("")}})},saveOrder:function(c){if(c){a("#"+c).closest("div.widgets-holder-wrap").find("img.ajax-feedback").css("visibility","visible")}var b={action:"widgets-order",savewidgets:a("#_wpnonce_widgets").val(),sidebars:[]};a("div.widgets-sortables").each(function(){if(a(this).sortable){b["sidebars["+a(this).attr("id")+"]"]=a(this).sortable("toArray").join(",")}});a.post(ajaxurl,b,function(){a("img.ajax-feedback").css("visibility","hidden")});this.resize()},save:function(g,d,e,b){var h=g.closest("div.widgets-sortables").attr("id"),f=g.find("form").serialize(),c;g=a(g);a(".ajax-feedback",g).css("visibility","visible");c={action:"save-widget",savewidgets:a("#_wpnonce_widgets").val(),sidebar:h};if(d){c.delete_widget=1}f+="&"+a.param(c);a.post(ajaxurl,f,function(i){var j;if(d){if(!a("input.widget_number",g).val()){j=a("input.widget-id",g).val();a("#available-widgets").find("input.widget-id").each(function(){if(a(this).val()==j){a(this).closest("div.widget").show()}})}if(e){b=0;g.slideUp("fast",function(){a(this).remove();wpWidgets.saveOrder()})}else{g.remove();wpWidgets.resize()}}else{a(".ajax-feedback").css("visibility","hidden");if(i&&i.length>2){a("div.widget-content",g).html(i);wpWidgets.appendTitle(g);wpWidgets.fixLabels(g)}}if(b){wpWidgets.saveOrder()}})},appendTitle:function(b){var c=a('input[id*="-title"]',b);if(c=c.val()){c=c.replace(/<[^<>]+>/g,"").replace(/</g,"&lt;").replace(/>/g,"&gt;");a(b).children(".widget-top").children(".widget-title").children().children(".in-widget-title").html(": "+c)}},resize:function(){a("div.widgets-sortables").each(function(){if(a(this).parent().hasClass("inactive")){return true}var c=50,b=a(this).children(".widget").length;c=c+parseInt(b*48,10);a(this).css("minHeight",c+"px")})},fixLabels:function(b){b.children(".widget-inside").find("label").each(function(){var c=a(this).attr("for");if(c&&c==a("input",this).attr("id")){a(this).removeAttr("for")}})},close:function(b){b.children(".widget-inside").slideUp("fast",function(){b.css({width:"",margin:""})})}};a(document).ready(function(b){wpWidgets.init()})})(jQuery);
\ No newline at end of file
+var wpWidgets;(function(a){wpWidgets={init:function(){var f,d=a("div.widgets-sortables"),c=!!("undefined"!=typeof isRtl&&isRtl),e=(isRtl?"marginRight":"marginLeft"),b;a("#widgets-right").children(".widgets-holder-wrap").children(".sidebar-name").click(function(){var h=a(this).siblings(".widgets-sortables"),g=a(this).parent();if(!g.hasClass("closed")){h.sortable("disable");g.addClass("closed")}else{g.removeClass("closed");h.sortable("enable").sortable("refresh")}});a("#widgets-left").children(".widgets-holder-wrap").children(".sidebar-name").click(function(){a(this).parent().toggleClass("closed")});d.each(function(){if(a(this).parent().hasClass("inactive")){return true}var i=50,g=a(this).children(".widget").length;i=i+parseInt(g*48,10);a(this).css("minHeight",i+"px")});a("a.widget-action").live("click",function(){var i={},j=a(this).closest("div.widget"),g=j.children(".widget-inside"),h=parseInt(j.find("input.widget-width").val(),10);if(g.is(":hidden")){if(h>250&&g.closest("div.widgets-sortables").length){i.width=h+30+"px";if(g.closest("div.widget-liquid-right").length){i[e]=235-h+"px"}j.css(i)}wpWidgets.fixLabels(j);g.slideDown("fast")}else{g.slideUp("fast",function(){j.css({width:"",margin:""})})}return false});a("input.widget-control-save").live("click",function(){wpWidgets.save(a(this).closest("div.widget"),0,1,0);return false});a("a.widget-control-remove").live("click",function(){wpWidgets.save(a(this).closest("div.widget"),1,1,0);return false});a("a.widget-control-close").live("click",function(){wpWidgets.close(a(this).closest("div.widget"));return false});d.children(".widget").each(function(){wpWidgets.appendTitle(this);if(a("p.widget-error",this).length){a("a.widget-action",this).click()}});a("#widget-list").children(".widget").draggable({connectToSortable:"div.widgets-sortables",handle:"> .widget-top > .widget-title",distance:2,helper:"clone",zIndex:5,containment:"document",start:function(h,g){g.helper.find("div.widget-description").hide();b=this.id},stop:function(h,g){if(f){a(f).hide()}f=""}});d.sortable({placeholder:"widget-placeholder",items:"> .widget",handle:"> .widget-top > .widget-title",cursor:"move",distance:2,containment:"document",start:function(h,g){g.item.children(".widget-inside").hide();g.item.css({margin:"",width:""})},stop:function(i,g){if(g.item.hasClass("ui-draggable")&&g.item.data("draggable")){g.item.draggable("destroy")}if(g.item.hasClass("deleting")){wpWidgets.save(g.item,1,0,1);g.item.remove();return}var h=g.item.find("input.add_new").val(),l=g.item.find("input.multi_number").val(),k=b,j=a(this).attr("id");g.item.css({margin:"",width:""});b="";if(h){if("multi"==h){g.item.html(g.item.html().replace(/<[^<>]+>/g,function(n){return n.replace(/__i__|%i%/g,l)}));g.item.attr("id",k.replace("__i__",l));l++;a("div#"+k).find("input.multi_number").val(l)}else{if("single"==h){g.item.attr("id","new-"+k);f="div#"+k}}wpWidgets.save(g.item,0,0,1);g.item.find("input.add_new").val("");g.item.find("a.widget-action").click();return}wpWidgets.saveOrder(j)},receive:function(i,h){var g=a(h.sender);if(!a(this).is(":visible")||this.id.indexOf("orphaned_widgets")!=-1){g.sortable("cancel")}if(g.attr("id").indexOf("orphaned_widgets")!=-1&&!g.children(".widget").length){g.parents(".orphan-sidebar").slideUp(400,function(){a(this).remove()})}}}).sortable("option","connectWith","div.widgets-sortables").parent().filter(".closed").children(".widgets-sortables").sortable("disable");a("#available-widgets").droppable({tolerance:"pointer",accept:function(g){return a(g).parent().attr("id")!="widget-list"},drop:function(h,g){g.draggable.addClass("deleting");a("#removing-widget").hide().children("span").html("")},over:function(h,g){g.draggable.addClass("deleting");a("div.widget-placeholder").hide();if(g.draggable.hasClass("ui-sortable-helper")){a("#removing-widget").show().children("span").html(g.draggable.find("div.widget-title").children("h4").html())}},out:function(h,g){g.draggable.removeClass("deleting");a("div.widget-placeholder").show();a("#removing-widget").hide().children("span").html("")}})},saveOrder:function(c){if(c){a("#"+c).closest("div.widgets-holder-wrap").find("img.ajax-feedback").css("visibility","visible")}var b={action:"widgets-order",savewidgets:a("#_wpnonce_widgets").val(),sidebars:[]};a("div.widgets-sortables").each(function(){if(a(this).sortable){b["sidebars["+a(this).attr("id")+"]"]=a(this).sortable("toArray").join(",")}});a.post(ajaxurl,b,function(){a("img.ajax-feedback").css("visibility","hidden")});this.resize()},save:function(g,d,e,b){var h=g.closest("div.widgets-sortables").attr("id"),f=g.find("form").serialize(),c;g=a(g);a(".ajax-feedback",g).css("visibility","visible");c={action:"save-widget",savewidgets:a("#_wpnonce_widgets").val(),sidebar:h};if(d){c.delete_widget=1}f+="&"+a.param(c);a.post(ajaxurl,f,function(i){var j;if(d){if(!a("input.widget_number",g).val()){j=a("input.widget-id",g).val();a("#available-widgets").find("input.widget-id").each(function(){if(a(this).val()==j){a(this).closest("div.widget").show()}})}if(e){b=0;g.slideUp("fast",function(){a(this).remove();wpWidgets.saveOrder()})}else{g.remove();wpWidgets.resize()}}else{a(".ajax-feedback").css("visibility","hidden");if(i&&i.length>2){a("div.widget-content",g).html(i);wpWidgets.appendTitle(g);wpWidgets.fixLabels(g)}}if(b){wpWidgets.saveOrder()}})},appendTitle:function(b){var c=a('input[id*="-title"]',b).val()||"";if(c){c=": "+c.replace(/<[^<>]+>/g,"").replace(/</g,"&lt;").replace(/>/g,"&gt;")}a(b).children(".widget-top").children(".widget-title").children().children(".in-widget-title").html(c)},resize:function(){a("div.widgets-sortables").each(function(){if(a(this).parent().hasClass("inactive")){return true}var c=50,b=a(this).children(".widget").length;c=c+parseInt(b*48,10);a(this).css("minHeight",c+"px")})},fixLabels:function(b){b.children(".widget-inside").find("label").each(function(){var c=a(this).attr("for");if(c&&c==a("input",this).attr("id")){a(this).removeAttr("for")}})},close:function(b){b.children(".widget-inside").slideUp("fast",function(){b.css({width:"",margin:""})})}};a(document).ready(function(b){wpWidgets.init()})})(jQuery);
\ No newline at end of file
index bb987af0ae76f44508ce873df9fb876f166e6d1c..b42f5c3b49b554ec61b5fed8f56bc26f29bcea01 100644 (file)
@@ -1,18 +1,23 @@
-
-(function($) {
+(function($,undefined) {
        wpWordCount = {
 
                settings : {
                        strip : /<[a-zA-Z\/][^<>]*>/g, // strip HTML tags
                        clean : /[0-9.(),;:!?%#$¿'"_+=\\/-]+/g, // regexp to remove punctuation, etc.
        wpWordCount = {
 
                settings : {
                        strip : /<[a-zA-Z\/][^<>]*>/g, // strip HTML tags
                        clean : /[0-9.(),;:!?%#$¿'"_+=\\/-]+/g, // regexp to remove punctuation, etc.
-                       count : /\S\s+/g // counting regexp
+                       w : /\S\s+/g, // word-counting regexp
+                       c : /\S/g // char-counting regexp for asian languages
                },
 
                block : 0,
 
                },
 
                block : 0,
 
-               wc : function(tx) {
+               wc : function(tx, type) {
                        var t = this, w = $('.word-count'), tc = 0;
 
                        var t = this, w = $('.word-count'), tc = 0;
 
+                       if ( type === undefined )
+                               type = wordCountL10n.type;
+                       if ( type !== 'w' && type !== 'c' )
+                               type = 'w';
+
                        if ( t.block )
                                return;
 
                        if ( t.block )
                                return;
 
@@ -22,7 +27,7 @@
                                if ( tx ) {
                                        tx = tx.replace( t.settings.strip, ' ' ).replace( /&nbsp;|&#160;/gi, ' ' );
                                        tx = tx.replace( t.settings.clean, '' );
                                if ( tx ) {
                                        tx = tx.replace( t.settings.strip, ' ' ).replace( /&nbsp;|&#160;/gi, ' ' );
                                        tx = tx.replace( t.settings.clean, '' );
-                                       tx.replace( t.settings.count, function(){tc++;} );
+                                       tx.replace( t.settings[type], function(){tc++;} );
                                }
                                w.html(tc.toString());
 
                                }
                                w.html(tc.toString());
 
index dbd88446020419d1ce03de7dbc89e6636ef2345a..ad5db1bf8169f99966c968432694f59e8aa0c3c5 100644 (file)
@@ -1 +1 @@
-(function(a){wpWordCount={settings:{strip:/<[a-zA-Z\/][^<>]*>/g,clean:/[0-9.(),;:!?%#$¿'"_+=\\/-]+/g,count:/\S\s+/g},block:0,wc:function(d){var e=this,c=a(".word-count"),b=0;if(e.block){return}e.block=1;setTimeout(function(){if(d){d=d.replace(e.settings.strip," ").replace(/&nbsp;|&#160;/gi," ");d=d.replace(e.settings.clean,"");d.replace(e.settings.count,function(){b++})}c.html(b.toString());setTimeout(function(){e.block=0},2000)},1)}};a(document).bind("wpcountwords",function(c,b){wpWordCount.wc(b)})}(jQuery));
\ No newline at end of file
+(function(a,b){wpWordCount={settings:{strip:/<[a-zA-Z\/][^<>]*>/g,clean:/[0-9.(),;:!?%#$¿'"_+=\\/-]+/g,w:/\S\s+/g,c:/\S/g},block:0,wc:function(e,g){var f=this,d=a(".word-count"),c=0;if(g===b){g=wordCountL10n.type}if(g!=="w"&&g!=="c"){g="w"}if(f.block){return}f.block=1;setTimeout(function(){if(e){e=e.replace(f.settings.strip," ").replace(/&nbsp;|&#160;/gi," ");e=e.replace(f.settings.clean,"");e.replace(f.settings[g],function(){c++})}d.html(c.toString());setTimeout(function(){f.block=0},2000)},1)}};a(document).bind("wpcountwords",function(d,c){wpWordCount.wc(c)})}(jQuery));
\ No newline at end of file
index 9ebfb6ae6c5ff1682adf27eb1469c59967c8a54d..4d4d8c487d365d6831a49100552121b423da2334 100644 (file)
@@ -138,21 +138,17 @@ PubSub.prototype.publish = function( topic, args ) {
                        return;
 
                // Settings can be added or changed by defining "wp_fullscreen_settings" JS object.
                        return;
 
                // Settings can be added or changed by defining "wp_fullscreen_settings" JS object.
-               // This can be done by defining it as PHP associative array, json encoding it and passing it to JS with:
-               // wp_add_script_before( 'wp-fullscreen', 'wp_fullscreen_settings = ' . $json_encoded_array . ';' );
                if ( typeof(wp_fullscreen_settings) == 'object' )
                        $.extend( s, wp_fullscreen_settings );
 
                s.editor_id = wpActiveEditor || 'content';
 
                if ( typeof(wp_fullscreen_settings) == 'object' )
                        $.extend( s, wp_fullscreen_settings );
 
                s.editor_id = wpActiveEditor || 'content';
 
-               if ( !s.title_id ) {
-                       if ( $('input#title').length && s.editor_id == 'content' )
-                               s.title_id = 'title';
-                       else if ( $('input#' + s.editor_id + '-title').length ) // the title input field should have [editor_id]-title HTML ID to be auto detected
-                               s.title_id = s.editor_id + '-title';
-                       else
-                               $('#wp-fullscreen-title, #wp-fullscreen-title-prompt-text').hide();
-               }
+               if ( $('input#title').length && s.editor_id == 'content' )
+                       s.title_id = 'title';
+               else if ( $('input#' + s.editor_id + '-title').length ) // the title input field should have [editor_id]-title HTML ID to be auto detected
+                       s.title_id = s.editor_id + '-title';
+               else
+                       $('#wp-fullscreen-title, #wp-fullscreen-title-prompt-text').hide();
 
                s.mode = $('#' + s.editor_id).is(':hidden') ? 'tinymce' : 'html';
                s.qt_canvas = $('#' + s.editor_id).get(0);
 
                s.mode = $('#' + s.editor_id).is(':hidden') ? 'tinymce' : 'html';
                s.qt_canvas = $('#' + s.editor_id).get(0);
@@ -708,7 +704,6 @@ PubSub.prototype.publish = function( topic, args ) {
                })()
        };
 
                })()
        };
 
-
        /**
         * Resize API
         *
        /**
         * Resize API
         *
index 6ac49b93b42aeacc72f1a179358eac304a9b8f61..ac7fb17a969297d240a570291aa75afbef83e1e9 100644 (file)
@@ -1 +1 @@
-var PubSub,fullscreen,wptitlehint;PubSub=function(){this.topics={}};PubSub.prototype.subscribe=function(a,b){if(!this.topics[a]){this.topics[a]=[]}this.topics[a].push(b);return b};PubSub.prototype.unsubscribe=function(b,e){var c,a,d=this.topics[b];if(!d){return e||[]}if(e){for(c=0,a=d.length;c<a;c++){if(e==d[c]){d.splice(c,1)}}return e}else{this.topics[b]=[];return d}};PubSub.prototype.publish=function(c,b){var d,a,e,f=this.topics[c];if(!f){return}b=b||[];for(d=0,a=f.length;d<a;d++){e=(f[d].apply(null,b)===false||e)}return !e};(function(c){var b,e,d,a;fullscreen=b={};e=b.pubsub=new PubSub();timer=0;block=false;a=b.settings={visible:false,mode:"tinymce",editor_id:"content",title_id:"",timer:0,toolbar_shown:false};d=b.bounder=function(l,h,g,j){var k,i;g=g||1250;if(j){k=j.pageY||j.clientY||j.offsetY;i=c(document).scrollTop();if(!j.isDefaultPrevented){k=135+k}if(k-i>120){return}}if(block){return}block=true;setTimeout(function(){block=false},400);if(a.timer){clearTimeout(a.timer)}else{e.publish(l)}function f(){e.publish(h);a.timer=0}a.timer=setTimeout(f,g)};b.on=function(){if(a.visible){return}if(typeof(wp_fullscreen_settings)=="object"){c.extend(a,wp_fullscreen_settings)}a.editor_id=wpActiveEditor||"content";if(!a.title_id){if(c("input#title").length&&a.editor_id=="content"){a.title_id="title"}else{if(c("input#"+a.editor_id+"-title").length){a.title_id=a.editor_id+"-title"}else{c("#wp-fullscreen-title, #wp-fullscreen-title-prompt-text").hide()}}}a.mode=c("#"+a.editor_id).is(":hidden")?"tinymce":"html";a.qt_canvas=c("#"+a.editor_id).get(0);if(!a.element){b.ui.init()}a.is_mce_on=a.has_tinymce&&typeof(tinyMCE.get(a.editor_id))!="undefined";b.ui.fade("show","showing","shown")};b.off=function(){if(!a.visible){return}b.ui.fade("hide","hiding","hidden")};b.switchmode=function(g){var f=a.mode;if(!g||!a.visible||!a.has_tinymce){return f}if(f==g){return f}e.publish("switchMode",[f,g]);a.mode=g;e.publish("switchedMode",[f,g]);return g};b.save=function(){var h=c("#hiddenaction"),f=h.val(),i=c("#wp-fullscreen-save img"),g=c("#wp-fullscreen-save span");i.show();b.savecontent();h.val("wp-fullscreen-save-post");c.post(ajaxurl,c("form#post").serialize(),function(j){i.hide();g.show();setTimeout(function(){g.fadeOut(1000)},3000);if(j.last_edited){c("#wp-fullscreen-save input").attr("title",j.last_edited)}},"json");h.val(f)};b.savecontent=function(){var f,g;if(a.title_id){c("#"+a.title_id).val(c("#wp-fullscreen-title").val())}if(a.mode==="tinymce"&&(f=tinyMCE.get("wp_mce_fullscreen"))){g=f.save()}else{g=c("#wp_mce_fullscreen").val()}c("#"+a.editor_id).val(g);c(document).triggerHandler("wpcountwords",[g])};set_title_hint=function(f){if(!f.val().length){f.siblings("label").css("visibility","")}else{f.siblings("label").css("visibility","hidden")}};b.dfw_width=function(h){var g=c("#wp-fullscreen-wrap"),f=g.width();if(!h){g.width(c("#wp-fullscreen-central-toolbar").width());deleteUserSetting("dfw_width");return}f=h+f;if(f<200||f>1200){return}g.width(f);setUserSetting("dfw_width",f)};e.subscribe("showToolbar",function(){a.toolbars.removeClass("fade-1000").addClass("fade-300");b.fade.In(a.toolbars,300,function(){e.publish("toolbarShown")},true);c("#wp-fullscreen-body").addClass("wp-fullscreen-focus");a.toolbar_shown=true});e.subscribe("hideToolbar",function(){a.toolbars.removeClass("fade-300").addClass("fade-1000");b.fade.Out(a.toolbars,1000,function(){e.publish("toolbarHidden")},true);c("#wp-fullscreen-body").removeClass("wp-fullscreen-focus")});e.subscribe("toolbarShown",function(){a.toolbars.removeClass("fade-300")});e.subscribe("toolbarHidden",function(){a.toolbars.removeClass("fade-1000");a.toolbar_shown=false});e.subscribe("show",function(){var f;if(a.title_id){f=c("#wp-fullscreen-title").val(c("#"+a.title_id).val());set_title_hint(f)}c("#wp-fullscreen-save input").attr("title",c("#last-edit").text());a.textarea_obj.value=a.qt_canvas.value;if(a.has_tinymce&&a.mode==="tinymce"){tinyMCE.execCommand("wpFullScreenInit")}a.orig_y=c(window).scrollTop()});e.subscribe("showing",function(){c(document.body).addClass("fullscreen-active");b.refresh_buttons();c(document).bind("mousemove.fullscreen",function(f){d("showToolbar","hideToolbar",2000,f)});d("showToolbar","hideToolbar",2000);b.bind_resize();setTimeout(b.resize_textarea,200);scrollTo(0,0);c("#wpadminbar").hide()});e.subscribe("shown",function(){var f;a.visible=true;if(a.has_tinymce&&!a.is_mce_on){f=function(g,h){var k=h.getElement(),i=k.value,j=tinyMCEPreInit.mceInit[a.editor_id];if(j&&j.wpautop&&typeof(switchEditors)!="undefined"){k.value=switchEditors.wpautop(k.value)}h.onInit.add(function(l){l.hide();l.getElement().value=i;tinymce.onAddEditor.remove(f)})};tinymce.onAddEditor.add(f);tinyMCE.init(tinyMCEPreInit.mceInit[a.editor_id]);a.is_mce_on=true}wpActiveEditor="wp_mce_fullscreen"});e.subscribe("hide",function(){var f=c("#"+a.editor_id).is(":hidden");if(a.has_tinymce&&a.mode==="tinymce"&&!f){switchEditors.go(a.editor_id,"tmce")}else{if(a.mode==="html"&&f){switchEditors.go(a.editor_id,"html")}}b.savecontent();c(document).unbind(".fullscreen");c(a.textarea_obj).unbind(".grow");if(a.has_tinymce&&a.mode==="tinymce"){tinyMCE.execCommand("wpFullScreenSave")}if(a.title_id){set_title_hint(c("#"+a.title_id))}a.qt_canvas.value=a.textarea_obj.value});e.subscribe("hiding",function(){c(document.body).removeClass("fullscreen-active");scrollTo(0,a.orig_y);c("#wpadminbar").show()});e.subscribe("hidden",function(){a.visible=false;c("#wp_mce_fullscreen, #wp-fullscreen-title").removeAttr("style");if(a.has_tinymce&&a.is_mce_on){tinyMCE.execCommand("wpFullScreenClose")}a.textarea_obj.value="";b.oldheight=0;wpActiveEditor=a.editor_id});e.subscribe("switchMode",function(h,g){var f;if(!a.has_tinymce||!a.is_mce_on){return}f=tinyMCE.get("wp_mce_fullscreen");if(h==="html"&&g==="tinymce"){if(tinyMCE.get(a.editor_id).getParam("wpautop")&&typeof(switchEditors)!="undefined"){a.textarea_obj.value=switchEditors.wpautop(a.textarea_obj.value)}if("undefined"==typeof(f)){tinyMCE.execCommand("wpFullScreenInit")}else{f.show()}}else{if(h==="tinymce"&&g==="html"){if(f){f.hide()}}}});e.subscribe("switchedMode",function(g,f){b.refresh_buttons(true);if(f==="html"){setTimeout(b.resize_textarea,200)}});b.b=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("Bold")}};b.i=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("Italic")}};b.ul=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("InsertUnorderedList")}};b.ol=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("InsertOrderedList")}};b.link=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("WP_Link")}else{wpLink.open()}};b.unlink=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("unlink")}};b.atd=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("mceWritingImprovementTool")}};b.help=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("WP_Help")}};b.blockquote=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("mceBlockQuote")}};b.medialib=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("WP_Medialib")}else{var f=c("#wp-"+a.editor_id+"-media-buttons a.thickbox").attr("href")||"";if(f){tb_show("",f)}}};b.refresh_buttons=function(f){f=f||false;if(a.mode==="html"){c("#wp-fullscreen-mode-bar").removeClass("wp-tmce-mode").addClass("wp-html-mode");if(f){c("#wp-fullscreen-button-bar").fadeOut(150,function(){c(this).addClass("wp-html-mode").fadeIn(150)})}else{c("#wp-fullscreen-button-bar").addClass("wp-html-mode")}}else{if(a.mode==="tinymce"){c("#wp-fullscreen-mode-bar").removeClass("wp-html-mode").addClass("wp-tmce-mode");if(f){c("#wp-fullscreen-button-bar").fadeOut(150,function(){c(this).removeClass("wp-html-mode").fadeIn(150)})}else{c("#wp-fullscreen-button-bar").removeClass("wp-html-mode")}}}};b.ui={init:function(){var f=c("#fullscreen-topbar"),h=c("#wp_mce_fullscreen"),g=0;a.toolbars=f.add(c("#wp-fullscreen-status"));a.element=c("#fullscreen-fader");a.textarea_obj=h[0];a.has_tinymce=typeof(tinymce)!="undefined";if(!a.has_tinymce){c("#wp-fullscreen-mode-bar").hide()}if(wptitlehint&&c("#wp-fullscreen-title").length){wptitlehint("wp-fullscreen-title")}c(document).keyup(function(k){var l=k.keyCode||k.charCode,i,j;if(!fullscreen.settings.visible){return true}if(navigator.platform&&navigator.platform.indexOf("Mac")!=-1){i=k.ctrlKey}else{i=k.altKey}if(27==l){j={event:k,what:"dfw",cb:fullscreen.off,condition:function(){if(c("#TB_window").is(":visible")||c(".wp-dialog").is(":visible")){return false}return true}};if(!jQuery(document).triggerHandler("wp_CloseOnEscape",[j])){fullscreen.off()}}if(i&&(61==l||107==l||187==l)){b.dfw_width(25)}if(i&&(45==l||109==l||189==l)){b.dfw_width(-25)}if(i&&48==l){b.dfw_width(0)}return false});if(typeof(wpWordCount)!="undefined"){h.keyup(function(j){var i=j.keyCode||j.charCode;if(i==g){return true}if(13==i||8==g||46==g){c(document).triggerHandler("wpcountwords",[h.val()])}g=i;return true})}f.mouseenter(function(i){a.toolbars.addClass("fullscreen-make-sticky");c(document).unbind(".fullscreen");clearTimeout(a.timer);a.timer=0}).mouseleave(function(i){a.toolbars.removeClass("fullscreen-make-sticky");if(a.visible){c(document).bind("mousemove.fullscreen",function(j){d("showToolbar","hideToolbar",2000,j)})}})},fade:function(g,f,h){if(!a.element){b.ui.init()}if(g&&!e.publish(g)){return}b.fade.In(a.element,600,function(){if(f){e.publish(f)}b.fade.Out(a.element,600,function(){if(h){e.publish(h)}})})}};b.fade={transitionend:"transitionend webkitTransitionEnd oTransitionEnd",sensitivity:100,In:function(g,h,i,f){i=i||c.noop;h=h||400;f=f||false;if(b.fade.transitions){if(g.is(":visible")){g.addClass("fade-trigger");return g}g.show();g.first().one(this.transitionend,function(){i()});setTimeout(function(){g.addClass("fade-trigger")},this.sensitivity)}else{if(f){g.stop()}g.css("opacity",1);g.first().fadeIn(h,i);if(g.length>1){g.not(":first").fadeIn(h)}}return g},Out:function(g,h,i,f){i=i||c.noop;h=h||400;f=f||false;if(!g.is(":visible")){return g}if(b.fade.transitions){g.first().one(b.fade.transitionend,function(){if(g.hasClass("fade-trigger")){return}g.hide();i()});setTimeout(function(){g.removeClass("fade-trigger")},this.sensitivity)}else{if(f){g.stop()}g.first().fadeOut(h,i);if(g.length>1){g.not(":first").fadeOut(h)}}return g},transitions:(function(){var f=document.documentElement.style;return(typeof(f.WebkitTransition)=="string"||typeof(f.MozTransition)=="string"||typeof(f.OTransition)=="string"||typeof(f.transition)=="string")})()};b.bind_resize=function(){c(a.textarea_obj).bind("keypress.grow click.grow paste.grow",function(){setTimeout(b.resize_textarea,200)})};b.oldheight=0;b.resize_textarea=function(){var f=a.textarea_obj,g;g=f.scrollHeight>300?f.scrollHeight:300;if(g!=b.oldheight){f.style.height=g+"px";b.oldheight=g}}})(jQuery);
\ No newline at end of file
+var PubSub,fullscreen,wptitlehint;PubSub=function(){this.topics={}};PubSub.prototype.subscribe=function(a,b){if(!this.topics[a]){this.topics[a]=[]}this.topics[a].push(b);return b};PubSub.prototype.unsubscribe=function(b,e){var c,a,d=this.topics[b];if(!d){return e||[]}if(e){for(c=0,a=d.length;c<a;c++){if(e==d[c]){d.splice(c,1)}}return e}else{this.topics[b]=[];return d}};PubSub.prototype.publish=function(c,b){var d,a,e,f=this.topics[c];if(!f){return}b=b||[];for(d=0,a=f.length;d<a;d++){e=(f[d].apply(null,b)===false||e)}return !e};(function(c){var b,e,d,a;fullscreen=b={};e=b.pubsub=new PubSub();timer=0;block=false;a=b.settings={visible:false,mode:"tinymce",editor_id:"content",title_id:"",timer:0,toolbar_shown:false};d=b.bounder=function(l,h,g,j){var k,i;g=g||1250;if(j){k=j.pageY||j.clientY||j.offsetY;i=c(document).scrollTop();if(!j.isDefaultPrevented){k=135+k}if(k-i>120){return}}if(block){return}block=true;setTimeout(function(){block=false},400);if(a.timer){clearTimeout(a.timer)}else{e.publish(l)}function f(){e.publish(h);a.timer=0}a.timer=setTimeout(f,g)};b.on=function(){if(a.visible){return}if(typeof(wp_fullscreen_settings)=="object"){c.extend(a,wp_fullscreen_settings)}a.editor_id=wpActiveEditor||"content";if(c("input#title").length&&a.editor_id=="content"){a.title_id="title"}else{if(c("input#"+a.editor_id+"-title").length){a.title_id=a.editor_id+"-title"}else{c("#wp-fullscreen-title, #wp-fullscreen-title-prompt-text").hide()}}a.mode=c("#"+a.editor_id).is(":hidden")?"tinymce":"html";a.qt_canvas=c("#"+a.editor_id).get(0);if(!a.element){b.ui.init()}a.is_mce_on=a.has_tinymce&&typeof(tinyMCE.get(a.editor_id))!="undefined";b.ui.fade("show","showing","shown")};b.off=function(){if(!a.visible){return}b.ui.fade("hide","hiding","hidden")};b.switchmode=function(g){var f=a.mode;if(!g||!a.visible||!a.has_tinymce){return f}if(f==g){return f}e.publish("switchMode",[f,g]);a.mode=g;e.publish("switchedMode",[f,g]);return g};b.save=function(){var h=c("#hiddenaction"),f=h.val(),i=c("#wp-fullscreen-save img"),g=c("#wp-fullscreen-save span");i.show();b.savecontent();h.val("wp-fullscreen-save-post");c.post(ajaxurl,c("form#post").serialize(),function(j){i.hide();g.show();setTimeout(function(){g.fadeOut(1000)},3000);if(j.last_edited){c("#wp-fullscreen-save input").attr("title",j.last_edited)}},"json");h.val(f)};b.savecontent=function(){var f,g;if(a.title_id){c("#"+a.title_id).val(c("#wp-fullscreen-title").val())}if(a.mode==="tinymce"&&(f=tinyMCE.get("wp_mce_fullscreen"))){g=f.save()}else{g=c("#wp_mce_fullscreen").val()}c("#"+a.editor_id).val(g);c(document).triggerHandler("wpcountwords",[g])};set_title_hint=function(f){if(!f.val().length){f.siblings("label").css("visibility","")}else{f.siblings("label").css("visibility","hidden")}};b.dfw_width=function(h){var g=c("#wp-fullscreen-wrap"),f=g.width();if(!h){g.width(c("#wp-fullscreen-central-toolbar").width());deleteUserSetting("dfw_width");return}f=h+f;if(f<200||f>1200){return}g.width(f);setUserSetting("dfw_width",f)};e.subscribe("showToolbar",function(){a.toolbars.removeClass("fade-1000").addClass("fade-300");b.fade.In(a.toolbars,300,function(){e.publish("toolbarShown")},true);c("#wp-fullscreen-body").addClass("wp-fullscreen-focus");a.toolbar_shown=true});e.subscribe("hideToolbar",function(){a.toolbars.removeClass("fade-300").addClass("fade-1000");b.fade.Out(a.toolbars,1000,function(){e.publish("toolbarHidden")},true);c("#wp-fullscreen-body").removeClass("wp-fullscreen-focus")});e.subscribe("toolbarShown",function(){a.toolbars.removeClass("fade-300")});e.subscribe("toolbarHidden",function(){a.toolbars.removeClass("fade-1000");a.toolbar_shown=false});e.subscribe("show",function(){var f;if(a.title_id){f=c("#wp-fullscreen-title").val(c("#"+a.title_id).val());set_title_hint(f)}c("#wp-fullscreen-save input").attr("title",c("#last-edit").text());a.textarea_obj.value=a.qt_canvas.value;if(a.has_tinymce&&a.mode==="tinymce"){tinyMCE.execCommand("wpFullScreenInit")}a.orig_y=c(window).scrollTop()});e.subscribe("showing",function(){c(document.body).addClass("fullscreen-active");b.refresh_buttons();c(document).bind("mousemove.fullscreen",function(f){d("showToolbar","hideToolbar",2000,f)});d("showToolbar","hideToolbar",2000);b.bind_resize();setTimeout(b.resize_textarea,200);scrollTo(0,0);c("#wpadminbar").hide()});e.subscribe("shown",function(){var f;a.visible=true;if(a.has_tinymce&&!a.is_mce_on){f=function(g,h){var k=h.getElement(),i=k.value,j=tinyMCEPreInit.mceInit[a.editor_id];if(j&&j.wpautop&&typeof(switchEditors)!="undefined"){k.value=switchEditors.wpautop(k.value)}h.onInit.add(function(l){l.hide();l.getElement().value=i;tinymce.onAddEditor.remove(f)})};tinymce.onAddEditor.add(f);tinyMCE.init(tinyMCEPreInit.mceInit[a.editor_id]);a.is_mce_on=true}wpActiveEditor="wp_mce_fullscreen"});e.subscribe("hide",function(){var f=c("#"+a.editor_id).is(":hidden");if(a.has_tinymce&&a.mode==="tinymce"&&!f){switchEditors.go(a.editor_id,"tmce")}else{if(a.mode==="html"&&f){switchEditors.go(a.editor_id,"html")}}b.savecontent();c(document).unbind(".fullscreen");c(a.textarea_obj).unbind(".grow");if(a.has_tinymce&&a.mode==="tinymce"){tinyMCE.execCommand("wpFullScreenSave")}if(a.title_id){set_title_hint(c("#"+a.title_id))}a.qt_canvas.value=a.textarea_obj.value});e.subscribe("hiding",function(){c(document.body).removeClass("fullscreen-active");scrollTo(0,a.orig_y);c("#wpadminbar").show()});e.subscribe("hidden",function(){a.visible=false;c("#wp_mce_fullscreen, #wp-fullscreen-title").removeAttr("style");if(a.has_tinymce&&a.is_mce_on){tinyMCE.execCommand("wpFullScreenClose")}a.textarea_obj.value="";b.oldheight=0;wpActiveEditor=a.editor_id});e.subscribe("switchMode",function(h,g){var f;if(!a.has_tinymce||!a.is_mce_on){return}f=tinyMCE.get("wp_mce_fullscreen");if(h==="html"&&g==="tinymce"){if(tinyMCE.get(a.editor_id).getParam("wpautop")&&typeof(switchEditors)!="undefined"){a.textarea_obj.value=switchEditors.wpautop(a.textarea_obj.value)}if("undefined"==typeof(f)){tinyMCE.execCommand("wpFullScreenInit")}else{f.show()}}else{if(h==="tinymce"&&g==="html"){if(f){f.hide()}}}});e.subscribe("switchedMode",function(g,f){b.refresh_buttons(true);if(f==="html"){setTimeout(b.resize_textarea,200)}});b.b=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("Bold")}};b.i=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("Italic")}};b.ul=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("InsertUnorderedList")}};b.ol=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("InsertOrderedList")}};b.link=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("WP_Link")}else{wpLink.open()}};b.unlink=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("unlink")}};b.atd=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("mceWritingImprovementTool")}};b.help=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("WP_Help")}};b.blockquote=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("mceBlockQuote")}};b.medialib=function(){if(a.has_tinymce&&"tinymce"===a.mode){tinyMCE.execCommand("WP_Medialib")}else{var f=c("#wp-"+a.editor_id+"-media-buttons a.thickbox").attr("href")||"";if(f){tb_show("",f)}}};b.refresh_buttons=function(f){f=f||false;if(a.mode==="html"){c("#wp-fullscreen-mode-bar").removeClass("wp-tmce-mode").addClass("wp-html-mode");if(f){c("#wp-fullscreen-button-bar").fadeOut(150,function(){c(this).addClass("wp-html-mode").fadeIn(150)})}else{c("#wp-fullscreen-button-bar").addClass("wp-html-mode")}}else{if(a.mode==="tinymce"){c("#wp-fullscreen-mode-bar").removeClass("wp-html-mode").addClass("wp-tmce-mode");if(f){c("#wp-fullscreen-button-bar").fadeOut(150,function(){c(this).removeClass("wp-html-mode").fadeIn(150)})}else{c("#wp-fullscreen-button-bar").removeClass("wp-html-mode")}}}};b.ui={init:function(){var f=c("#fullscreen-topbar"),h=c("#wp_mce_fullscreen"),g=0;a.toolbars=f.add(c("#wp-fullscreen-status"));a.element=c("#fullscreen-fader");a.textarea_obj=h[0];a.has_tinymce=typeof(tinymce)!="undefined";if(!a.has_tinymce){c("#wp-fullscreen-mode-bar").hide()}if(wptitlehint&&c("#wp-fullscreen-title").length){wptitlehint("wp-fullscreen-title")}c(document).keyup(function(k){var l=k.keyCode||k.charCode,i,j;if(!fullscreen.settings.visible){return true}if(navigator.platform&&navigator.platform.indexOf("Mac")!=-1){i=k.ctrlKey}else{i=k.altKey}if(27==l){j={event:k,what:"dfw",cb:fullscreen.off,condition:function(){if(c("#TB_window").is(":visible")||c(".wp-dialog").is(":visible")){return false}return true}};if(!jQuery(document).triggerHandler("wp_CloseOnEscape",[j])){fullscreen.off()}}if(i&&(61==l||107==l||187==l)){b.dfw_width(25)}if(i&&(45==l||109==l||189==l)){b.dfw_width(-25)}if(i&&48==l){b.dfw_width(0)}return false});if(typeof(wpWordCount)!="undefined"){h.keyup(function(j){var i=j.keyCode||j.charCode;if(i==g){return true}if(13==i||8==g||46==g){c(document).triggerHandler("wpcountwords",[h.val()])}g=i;return true})}f.mouseenter(function(i){a.toolbars.addClass("fullscreen-make-sticky");c(document).unbind(".fullscreen");clearTimeout(a.timer);a.timer=0}).mouseleave(function(i){a.toolbars.removeClass("fullscreen-make-sticky");if(a.visible){c(document).bind("mousemove.fullscreen",function(j){d("showToolbar","hideToolbar",2000,j)})}})},fade:function(g,f,h){if(!a.element){b.ui.init()}if(g&&!e.publish(g)){return}b.fade.In(a.element,600,function(){if(f){e.publish(f)}b.fade.Out(a.element,600,function(){if(h){e.publish(h)}})})}};b.fade={transitionend:"transitionend webkitTransitionEnd oTransitionEnd",sensitivity:100,In:function(g,h,i,f){i=i||c.noop;h=h||400;f=f||false;if(b.fade.transitions){if(g.is(":visible")){g.addClass("fade-trigger");return g}g.show();g.first().one(this.transitionend,function(){i()});setTimeout(function(){g.addClass("fade-trigger")},this.sensitivity)}else{if(f){g.stop()}g.css("opacity",1);g.first().fadeIn(h,i);if(g.length>1){g.not(":first").fadeIn(h)}}return g},Out:function(g,h,i,f){i=i||c.noop;h=h||400;f=f||false;if(!g.is(":visible")){return g}if(b.fade.transitions){g.first().one(b.fade.transitionend,function(){if(g.hasClass("fade-trigger")){return}g.hide();i()});setTimeout(function(){g.removeClass("fade-trigger")},this.sensitivity)}else{if(f){g.stop()}g.first().fadeOut(h,i);if(g.length>1){g.not(":first").fadeOut(h)}}return g},transitions:(function(){var f=document.documentElement.style;return(typeof(f.WebkitTransition)=="string"||typeof(f.MozTransition)=="string"||typeof(f.OTransition)=="string"||typeof(f.transition)=="string")})()};b.bind_resize=function(){c(a.textarea_obj).bind("keypress.grow click.grow paste.grow",function(){setTimeout(b.resize_textarea,200)})};b.oldheight=0;b.resize_textarea=function(){var f=a.textarea_obj,g;g=f.scrollHeight>300?f.scrollHeight:300;if(g!=b.oldheight){f.style.height=g+"px";b.oldheight=g}}})(jQuery);
\ No newline at end of file
index 9b1cae7c1ec3d243b039c99140adf667eab6834d..2abd79952ffa5788c2412f56482ddae1f475a0a2 100644 (file)
@@ -23,8 +23,10 @@ wp_reset_vars(array('action', 'cat_id', 'linkurl', 'name', 'image',
 wp_enqueue_script('link');
 wp_enqueue_script('xfn');
 
 wp_enqueue_script('link');
 wp_enqueue_script('xfn');
 
+if ( wp_is_mobile() )
+       wp_enqueue_script( 'jquery-touch-punch' );
+
 $link = get_default_link_to_edit();
 include('./edit-link-form.php');
 
 require('./admin-footer.php');
 $link = get_default_link_to_edit();
 include('./edit-link-form.php');
 
 require('./admin-footer.php');
-?>
index e0d9ffabaf584c98c82dc1b0b82a907d5df54d78..f24f420d832f4ac007962e3cbb92972cbc4f490f 100644 (file)
@@ -11,7 +11,7 @@ if ( ! defined('ABSPATH') )
 
 global $opml, $map;
 
 
 global $opml, $map;
 
-// columns we wish to find are:  link_url, link_name, link_target, link_description
+// columns we wish to find are: link_url, link_name, link_target, link_description
 // we need to map XML attribute names to our columns
 $opml_map = array('URL'         => 'link_url',
        'HTMLURL'     => 'link_url',
 // we need to map XML attribute names to our columns
 $opml_map = array('URL'         => 'link_url',
        'HTMLURL'     => 'link_url',
@@ -94,4 +94,3 @@ if (!xml_parse($xml_parser, $opml, true)) {
 
 // Free up memory used by the XML parser
 xml_parser_free($xml_parser);
 
 // Free up memory used by the XML parser
 xml_parser_free($xml_parser);
-?>
index 922f96cccc4119767234c3ecb11ceef768bf1fe1..9e2d6a86a6bf536b1e8f37198264c0b861f16d2e 100644 (file)
@@ -99,6 +99,9 @@ switch ($action) {
                wp_enqueue_script('link');
                wp_enqueue_script('xfn');
 
                wp_enqueue_script('link');
                wp_enqueue_script('xfn');
 
+               if ( wp_is_mobile() )
+                       wp_enqueue_script( 'jquery-touch-punch' );
+
                $parent_file = 'link-manager.php';
                $submenu_file = 'link-manager.php';
                $title = __('Edit Link');
                $parent_file = 'link-manager.php';
                $submenu_file = 'link-manager.php';
                $title = __('Edit Link');
@@ -115,4 +118,3 @@ switch ($action) {
        default :
                break;
 }
        default :
                break;
 }
-?>
index 833677c2d70c1aba0295d569a8a9277d756aebb9..065ea9c9acd13f45cb2e18a5edbf886e37bd309a 100644 (file)
@@ -21,7 +21,6 @@ function __() {}
  */
 function _x() {}
 
  */
 function _x() {}
 
-
 /**
  * @ignore
  */
 /**
  * @ignore
  */
index 4adc3677fb6c6805bedc7db72ae2ac6047ddc3ec..bdacc21ce364d2f0efb0ca664d6fcc16956368fc 100644 (file)
@@ -21,7 +21,6 @@ function __() {}
  */
 function _x() {}
 
  */
 function _x() {}
 
-
 /**
  * @ignore
  */
 /**
  * @ignore
  */
index 3f5718876d92fba8cccd9b75d8cfb982392844c7..e0c594e6abae282746a47ba818adbb85436a7cf6 100644 (file)
@@ -1,5 +1,10 @@
 <?php
 <?php
-
+/**
+ * Database Repair and Optimization Script.
+ *
+ * @package WordPress
+ * @subpackage Database
+ */
 define('WP_REPAIRING', true);
 
 require_once('../../wp-load.php');
 define('WP_REPAIRING', true);
 
 require_once('../../wp-load.php');
@@ -10,24 +15,18 @@ header( 'Content-Type: text/html; charset=utf-8' );
 <html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
 <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
 <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-       <title><?php _e('WordPress &rsaquo; Database Repair'); ?></title>
+       <title><?php _e( 'WordPress &rsaquo; Database Repair' ); ?></title>
        <?php wp_admin_css( 'install', true ); ?>
 </head>
 <body>
        <?php wp_admin_css( 'install', true ); ?>
 </head>
 <body>
-<h1 id="logo"><img alt="WordPress" src="../images/wordpress-logo.png" /></h1>
+<h1 id="logo"><img alt="WordPress" src="../images/wordpress-logo.png?ver=20120216" /></h1>
 
 <?php
 
 
 <?php
 
-if ( !defined('WP_ALLOW_REPAIR') ) {
-       echo '<p>'.__('To allow use of this page to automatically repair database problems, please add the following line to your wp-config.php file.  Once this line is added to your config, reload this page.')."</p><code>define('WP_ALLOW_REPAIR', true);</code>";
-} elseif ( isset($_GET['repair']) ) {
-       check_admin_referer('repair_db');
-
-       if ( 2 == $_GET['repair'] )
-               $optimize = true;
-       else
-               $optimize = false;
-
+if ( ! defined( 'WP_ALLOW_REPAIR' ) ) {
+       echo '<p>' . __( 'To allow use of this page to automatically repair database problems, please add the following line to your <code>wp-config.php</code> file. Once this line is added to your config, reload this page.' ) . "</p><code>define('WP_ALLOW_REPAIR', true);</code>";
+} elseif ( isset( $_GET['repair'] ) ) {
+       $optimize = 2 == $_GET['repair'];
        $okay = true;
        $problems = array();
 
        $okay = true;
        $problems = array();
 
@@ -41,71 +40,71 @@ if ( !defined('WP_ALLOW_REPAIR') ) {
 
        // Loop over the tables, checking and repairing as needed.
        foreach ( $tables as $table ) {
 
        // Loop over the tables, checking and repairing as needed.
        foreach ( $tables as $table ) {
-               $check = $wpdb->get_row("CHECK TABLE $table");
+               $check = $wpdb->get_row( "CHECK TABLE $table" );
 
                echo '<p>';
                if ( 'OK' == $check->Msg_text ) {
                        /* translators: %s: table name */
 
                echo '<p>';
                if ( 'OK' == $check->Msg_text ) {
                        /* translators: %s: table name */
-                       printf( __( 'The %s table is okay.' ), $table );
+                       printf( __( 'The %s table is okay.' ), "<code>$table</code>" );
                } else {
                        /* translators: 1: table name, 2: error message, */
                } else {
                        /* translators: 1: table name, 2: error message, */
-                       printf( __( 'The %1$s table is not okay. It is reporting the following error: %2$s.  WordPress will attempt to repair this table&hellip;' ) , $table, "<code>$check->Msg_text</code>" );
+                       printf( __( 'The %1$s table is not okay. It is reporting the following error: %2$s. WordPress will attempt to repair this table&hellip;' ) , "<code>$table</code>", "<code>$check->Msg_text</code>" );
 
 
-                       $repair = $wpdb->get_row("REPAIR TABLE $table");
+                       $repair = $wpdb->get_row( "REPAIR TABLE $table" );
 
                        echo '<br />&nbsp;&nbsp;&nbsp;&nbsp;';
                        if ( 'OK' == $check->Msg_text ) {
                                /* translators: %s: table name */
 
                        echo '<br />&nbsp;&nbsp;&nbsp;&nbsp;';
                        if ( 'OK' == $check->Msg_text ) {
                                /* translators: %s: table name */
-                               printf( __( 'Successfully repaired the %s table.' ), $table );
+                               printf( __( 'Successfully repaired the %s table.' ), "<code>$table</code>" );
                        } else {
                                /* translators: 1: table name, 2: error message, */
                        } else {
                                /* translators: 1: table name, 2: error message, */
-                               echo sprintf( __( 'Failed to repair the  %1$s table. Error: %2$s' ), $table, "<code>$check->Msg_text</code>" ) . '<br />';
+                               echo sprintf( __( 'Failed to repair the %1$s table. Error: %2$s' ), "<code>$table</code>", "<code>$check->Msg_text</code>" ) . '<br />';
                                $problems[$table] = $check->Msg_text;
                                $okay = false;
                        }
                }
 
                if ( $okay && $optimize ) {
                                $problems[$table] = $check->Msg_text;
                                $okay = false;
                        }
                }
 
                if ( $okay && $optimize ) {
-                       $check = $wpdb->get_row("ANALYZE TABLE $table");
+                       $check = $wpdb->get_row( "ANALYZE TABLE $table" );
 
 
-                       echo '<br />&nbsp;&nbsp;&nbsp;&nbsp';
+                       echo '<br />&nbsp;&nbsp;&nbsp;&nbsp;';
                        if ( 'Table is already up to date' == $check->Msg_text )  {
                                /* translators: %s: table name */
                        if ( 'Table is already up to date' == $check->Msg_text )  {
                                /* translators: %s: table name */
-                               printf( __( 'The %s table is already optimized.' ), $table );
+                               printf( __( 'The %s table is already optimized.' ), "<code>$table</code>" );
                        } else {
                        } else {
-                               $check = $wpdb->get_row("OPTIMIZE TABLE $table");
+                               $check = $wpdb->get_row( "OPTIMIZE TABLE $table" );
 
 
-                               echo '<br />&nbsp;&nbsp;&nbsp;&nbsp';
+                               echo '<br />&nbsp;&nbsp;&nbsp;&nbsp;';
                                if ( 'OK' == $check->Msg_text || 'Table is already up to date' == $check->Msg_text ) {
                                        /* translators: %s: table name */
                                if ( 'OK' == $check->Msg_text || 'Table is already up to date' == $check->Msg_text ) {
                                        /* translators: %s: table name */
-                                       printf( __( 'Successfully optimized the %s table.' ), $table );
+                                       printf( __( 'Successfully optimized the %s table.' ), "<code>$table</code>" );
                                } else {
                                        /* translators: 1: table name, 2: error message, */
                                } else {
                                        /* translators: 1: table name, 2: error message, */
-                                       printf( __( 'Failed to optimize the %1$s table. Error: %2$s' ), $table, "<code>$check->Msg_text</code>" );
+                                       printf( __( 'Failed to optimize the %1$s table. Error: %2$s' ), "<code>$table</code>", "<code>$check->Msg_text</code>" );
                                }
                        }
                }
                echo '</p>';
        }
 
                                }
                        }
                }
                echo '</p>';
        }
 
-       if ( !empty($problems) ) {
-               printf('<p>'.__('Some database problems could not be repaired. Please copy-and-paste the following list of errors to the <a href="%s">WordPress support forums</a> to get additional assistance.').'</p>', 'http://wordpress.org/support/forum/3');
-               $problem_output = array();
+       if ( $problems ) {
+               printf( '<p>' . __('Some database problems could not be repaired. Please copy-and-paste the following list of errors to the <a href="%s">WordPress support forums</a> to get additional assistance.') . '</p>', __( 'http://wordpress.org/support/forum/how-to-and-troubleshooting' ) );
+               $problem_output = '';
                foreach ( $problems as $table => $problem )
                foreach ( $problems as $table => $problem )
-                       $problem_output[] = "$table: $problem";
-               echo '<textarea name="errors" id="errors" rows="20" cols="60">' . esc_textarea( implode("\n", $problem_output) ) . '</textarea>';
+                       $problem_output .= "$table: $problem\n";
+               echo '<p><textarea name="errors" id="errors" rows="20" cols="60">' . esc_textarea( $problem_output ) . '</textarea></p>';
        } else {
        } else {
-               echo '<p>'.__('Repairs complete.  Please remove the following line from wp-config.php to prevent this page from being used by unauthorized users.')."</p><code>define('WP_ALLOW_REPAIR', true);</code>";
+               echo '<p>' . __( 'Repairs complete. Please remove the following line from wp-config.php to prevent this page from being used by unauthorized users.' ) . "</p><code>define('WP_ALLOW_REPAIR', true);</code>";
        }
 } else {
        }
 } else {
-       if ( isset($_GET['referrer']) && 'is_blog_installed' == $_GET['referrer'] )
-               _e('One or more database tables are unavailable. To allow WordPress to attempt to repair these tables, press the &#8220;Repair Database&#8221; button. Repairing can take a while, so please be patient.');
+       if ( isset( $_GET['referrer'] ) && 'is_blog_installed' == $_GET['referrer'] )
+               echo '<p>' . __( 'One or more database tables are unavailable. To allow WordPress to attempt to repair these tables, press the &#8220;Repair Database&#8221; button. Repairing can take a while, so please be patient.' ) . '</p>';
        else
        else
-               _e('WordPress can automatically look for some common database problems and repair them.  Repairing can take a while, so please be patient.')
+               echo '<p>' . __( 'WordPress can automatically look for some common database problems and repair them. Repairing can take a while, so please be patient.' ) . '</p>';
 ?>
 ?>
-       <p class="step"><a class="button" href="<?php echo wp_nonce_url('repair.php?repair=1', 'repair_db') ?>"><?php _e( 'Repair Database' ); ?></a></p>
-       <?php _e('WordPress can also attempt to optimize the database.  This improves performance in some situations.  Repairing and optimizing the database can take a long time and the database will be locked while optimizing.'); ?>
-       <p class="step"><a class="button" href="<?php echo wp_nonce_url('repair.php?repair=2', 'repair_db') ?>"><?php _e( 'Repair and Optimize Database' ); ?></a></p>
+       <p class="step"><a class="button" href="repair.php?repair=1"><?php _e( 'Repair Database' ); ?></a></p>
+       <p><?php _e( 'WordPress can also attempt to optimize the database. This improves performance in some situations. Repairing and optimizing the database can take a long time and the database will be locked while optimizing.' ); ?></p>
+       <p class="step"><a class="button" href="repair.php?repair=2"><?php _e( 'Repair and Optimize Database' ); ?></a></p>
 <?php
 }
 ?>
 <?php
 }
 ?>
index a257f94589727273bae415543e981e537f6c9e60..4b4f622d95289adfe612c7e346297ea880952a6c 100644 (file)
@@ -6,14 +6,7 @@
  * @subpackage Administration
  */
 
  * @subpackage Administration
  */
 
-global $is_iphone;
-
-if ( $is_iphone ) // cannot upload files from iPhone/iPad
-       return;
-
 $_GET['inline'] = 'true';
 /** Administration bootstrap */
 require_once('./admin.php');
 require_once('./media-upload.php');
 $_GET['inline'] = 'true';
 /** Administration bootstrap */
 require_once('./admin.php');
 require_once('./media-upload.php');
-
-?>
index 666c3f37e252a178b0797a1dc235ba7f2bbfa869..6246176b88399343f469276f4e8242223526f74d 100644 (file)
@@ -22,6 +22,7 @@ wp_enqueue_script('plupload-handlers');
 wp_enqueue_script('image-edit');
 wp_enqueue_script('set-post-thumbnail' );
 wp_enqueue_style('imgareaselect');
 wp_enqueue_script('image-edit');
 wp_enqueue_script('set-post-thumbnail' );
 wp_enqueue_style('imgareaselect');
+wp_enqueue_script( 'media-gallery' );
 
 @header('Content-Type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset'));
 
 
 @header('Content-Type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset'));
 
@@ -31,11 +32,14 @@ $post_id = isset($post_id)? (int) $post_id : 0;
 
 // Require an ID for the edit screen
 if ( isset($action) && $action == 'edit' && !$ID )
 
 // Require an ID for the edit screen
 if ( isset($action) && $action == 'edit' && !$ID )
-       wp_die(__("You are not allowed to be here"));
+       wp_die( __( 'Cheatin&#8217; uh?' ) );
 
 if ( isset($_GET['inline']) ) {
        $errors = array();
 
 
 if ( isset($_GET['inline']) ) {
        $errors = array();
 
+       if ( ! empty( $_REQUEST['post_id'] ) && ! current_user_can( 'edit_post' , $_REQUEST['post_id'] ) )
+               wp_die( __( 'Cheatin&#8217; uh?' ) );
+
        if ( isset($_POST['html-upload']) && !empty($_FILES) ) {
                check_admin_referer('media-form');
                // Upload File button was clicked
        if ( isset($_POST['html-upload']) && !empty($_FILES) ) {
                check_admin_referer('media-form');
                // Upload File button was clicked
@@ -58,6 +62,9 @@ if ( isset($_GET['inline']) ) {
                exit;
        }
 
                exit;
        }
 
+       if ( isset( $_REQUEST['post_id'] ) )
+               wp_die( __( 'Cheatin&#8217; uh?' ) );
+
        $title = __('Upload New Media');
        $parent_file = 'upload.php';
        get_current_screen()->add_help_tab( array(
        $title = __('Upload New Media');
        $parent_file = 'upload.php';
        get_current_screen()->add_help_tab( array(
@@ -67,8 +74,8 @@ if ( isset($_GET['inline']) ) {
                '<p>' . __('You can upload media files here without creating a post first. This allows you to upload files to use with posts and pages later and/or to get a web link for a particular file that you can share. There are three options for uploading files:') . '</p>' .
                '<ul>' .
                        '<li>' . __('<strong>Drag and drop</strong> your files into the area below. Multiple files are allowed.') . '</li>' .
                '<p>' . __('You can upload media files here without creating a post first. This allows you to upload files to use with posts and pages later and/or to get a web link for a particular file that you can share. There are three options for uploading files:') . '</p>' .
                '<ul>' .
                        '<li>' . __('<strong>Drag and drop</strong> your files into the area below. Multiple files are allowed.') . '</li>' .
-                       '<li>' . __('<strong>Select Files</strong> will open the multi-file uploader, or you can use the <strong>Browser Uploader</strong>.') . '</li>' .
                        '<li>' . __('Clicking <strong>Select Files</strong> opens a navigation window showing you files in your operating system. Selecting <strong>Open</strong> after clicking on the file you want activates a progress bar on the uploader screen.') . '</li>' .
                        '<li>' . __('Clicking <strong>Select Files</strong> opens a navigation window showing you files in your operating system. Selecting <strong>Open</strong> after clicking on the file you want activates a progress bar on the uploader screen.') . '</li>' .
+                       '<li>' . __('Revert to the <strong>Browser Uploader</strong> by clicking the link below the drag and drop box.') . '</li>' .
                '</ul>' .
                '<p>' . __('Basic image editing is available after upload is complete. Make sure you click Save before leaving this screen.') . '</p>'
        ) );
                '</ul>' .
                '<p>' . __('Basic image editing is available after upload is complete. Make sure you click Save before leaving this screen.') . '</p>'
        ) );
@@ -115,6 +122,8 @@ if ( isset($_GET['inline']) ) {
        include('./admin-footer.php');
 
 } else {
        include('./admin-footer.php');
 
 } else {
+       if ( ! empty( $_REQUEST['post_id'] ) && ! current_user_can( 'edit_post' , $_REQUEST['post_id'] ) )
+               wp_die( __( 'Cheatin&#8217; uh?' ) );
 
        // upload type: image, video, file, ..?
        if ( isset($_GET['type']) )
 
        // upload type: image, video, file, ..?
        if ( isset($_GET['type']) )
@@ -136,4 +145,3 @@ if ( isset($_GET['inline']) ) {
        else
                do_action("media_upload_$tab");
 }
        else
                do_action("media_upload_$tab");
 }
-?>
index 1b750d585a7218919f16d8c1b10fbbfeb7d96400..15d4323876a0b351ca664591564b260d2220c828 100644 (file)
@@ -59,6 +59,7 @@ case 'edit' :
        $att = get_post($att_id);
 
        if ( empty($att->ID) ) wp_die( __('You attempted to edit an attachment that doesn&#8217;t exist. Perhaps it was deleted?') );
        $att = get_post($att_id);
 
        if ( empty($att->ID) ) wp_die( __('You attempted to edit an attachment that doesn&#8217;t exist. Perhaps it was deleted?') );
+       if ( 'attachment' !== $att->post_type ) wp_die( __('You attempted to edit an item that isn&#8217;t an attachment. Please go back and try again.') );
        if ( $att->post_status == 'trash' ) wp_die( __('You can&#8217;t edit this attachment because it is in the Trash. Please move it out of the Trash and try again.') );
 
        add_filter('attachment_fields_to_edit', 'media_single_attachment_fields_to_edit', 10, 2);
        if ( $att->post_status == 'trash' ) wp_die( __('You can&#8217;t edit this attachment because it is in the Trash. Please move it out of the Trash and try again.') );
 
        add_filter('attachment_fields_to_edit', 'media_single_attachment_fields_to_edit', 10, 2);
@@ -144,6 +145,3 @@ default:
        exit;
 
 endswitch;
        exit;
 
 endswitch;
-
-
-?>
index cdd81b2ad7da57964ba1dbd2dc5c753e69cca45b..017f676acfb88c55ff48c0baad5b04da79cd34a5 100644 (file)
@@ -73,6 +73,7 @@ function _wp_menu_output( $menu, $submenu, $submenu_as_parent = true ) {
                $arrow = '<div class="wp-menu-arrow"><div></div></div>';
 
                $title = wptexturize( $item[0] );
                $arrow = '<div class="wp-menu-arrow"><div></div></div>';
 
                $title = wptexturize( $item[0] );
+               $aria_label = esc_attr( strip_tags( $item[0] ) ); // strip the comment/plugins/updates bubbles spans but keep the pending number if any
 
                echo "\n\t<li$class$id>";
 
 
                echo "\n\t<li$class$id>";
 
@@ -86,9 +87,9 @@ function _wp_menu_output( $menu, $submenu, $submenu_as_parent = true ) {
                                $menu_file = substr( $menu_file, 0, $pos );
                        if ( ! empty( $menu_hook ) || ( ('index.php' != $submenu_items[0][2]) && file_exists( WP_PLUGIN_DIR . "/$menu_file" ) ) ) {
                                $admin_is_parent = true;
                                $menu_file = substr( $menu_file, 0, $pos );
                        if ( ! empty( $menu_hook ) || ( ('index.php' != $submenu_items[0][2]) && file_exists( WP_PLUGIN_DIR . "/$menu_file" ) ) ) {
                                $admin_is_parent = true;
-                               echo "<div class='wp-menu-image'><a href='admin.php?page={$submenu_items[0][2]}'>$img</a></div>$arrow<a href='admin.php?page={$submenu_items[0][2]}'$class $aria_attributes>$title</a>";
+                               echo "<div class='wp-menu-image'><a href='admin.php?page={$submenu_items[0][2]}' aria-label='$aria_label'>$img</a></div>$arrow<a href='admin.php?page={$submenu_items[0][2]}'$class $aria_attributes>$title</a>";
                        } else {
                        } else {
-                               echo "\n\t<div class='wp-menu-image'><a href='{$submenu_items[0][2]}'>$img</a></div>$arrow<a href='{$submenu_items[0][2]}'$class $aria_attributes>$title</a>";
+                               echo "\n\t<div class='wp-menu-image'><a href='{$submenu_items[0][2]}' aria-label='$aria_label'>$img</a></div>$arrow<a href='{$submenu_items[0][2]}'$class $aria_attributes>$title</a>";
                        }
                } elseif ( ! empty( $item[2] ) && current_user_can( $item[1] ) ) {
                        $menu_hook = get_plugin_page_hook( $item[2], 'admin.php' );
                        }
                } elseif ( ! empty( $item[2] ) && current_user_can( $item[1] ) ) {
                        $menu_hook = get_plugin_page_hook( $item[2], 'admin.php' );
@@ -97,9 +98,9 @@ function _wp_menu_output( $menu, $submenu, $submenu_as_parent = true ) {
                                $menu_file = substr( $menu_file, 0, $pos );
                        if ( ! empty( $menu_hook ) || ( ('index.php' != $item[2]) && file_exists( WP_PLUGIN_DIR . "/$menu_file" ) ) ) {
                                $admin_is_parent = true;
                                $menu_file = substr( $menu_file, 0, $pos );
                        if ( ! empty( $menu_hook ) || ( ('index.php' != $item[2]) && file_exists( WP_PLUGIN_DIR . "/$menu_file" ) ) ) {
                                $admin_is_parent = true;
-                               echo "\n\t<div class='wp-menu-image'><a href='admin.php?page={$item[2]}'>$img</a></div>$arrow<a href='admin.php?page={$item[2]}'$class $aria_attributes>{$item[0]}</a>";
+                               echo "\n\t<div class='wp-menu-image'><a href='admin.php?page={$item[2]}' aria-label='$aria_label'>$img</a></div>$arrow<a href='admin.php?page={$item[2]}'$class $aria_attributes>{$item[0]}</a>";
                        } else {
                        } else {
-                               echo "\n\t<div class='wp-menu-image'><a href='{$item[2]}'>$img</a></div>$arrow<a href='{$item[2]}'$class $aria_attributes>{$item[0]}</a>";
+                               echo "\n\t<div class='wp-menu-image'><a href='{$item[2]}' aria-label='$aria_label'>$img</a></div>$arrow<a href='{$item[2]}'$class $aria_attributes>{$item[0]}</a>";
                        }
                }
 
                        }
                }
 
index 050bbd1666a929e919a244e2af13cbc7f1f7eb49..81947af5a833c3a5d4acef17bc93b4a682f8a9c9 100644 (file)
@@ -56,8 +56,7 @@ $menu[5] = array( __('Posts'), 'edit_posts', 'edit.php', '', 'open-if-no-js menu
 $menu[10] = array( __('Media'), 'upload_files', 'upload.php', '', 'menu-top menu-icon-media', 'menu-media', 'div' );
        $submenu['upload.php'][5] = array( __('Library'), 'upload_files', 'upload.php');
        /* translators: add new file */
 $menu[10] = array( __('Media'), 'upload_files', 'upload.php', '', 'menu-top menu-icon-media', 'menu-media', 'div' );
        $submenu['upload.php'][5] = array( __('Library'), 'upload_files', 'upload.php');
        /* translators: add new file */
-       if ( !$is_iphone )
-               $submenu['upload.php'][10] = array( _x('Add New', 'file'), 'upload_files', 'media-new.php');
+       $submenu['upload.php'][10] = array( _x('Add New', 'file'), 'upload_files', 'media-new.php');
 
 $menu[15] = array( __('Links'), 'manage_links', 'link-manager.php', '', 'menu-top menu-icon-links', 'menu-links', 'div' );
        $submenu['link-manager.php'][5] = array( _x('All Links', 'admin menu'), 'manage_links', 'link-manager.php' );
 
 $menu[15] = array( __('Links'), 'manage_links', 'link-manager.php', '', 'menu-top menu-icon-links', 'menu-links', 'div' );
        $submenu['link-manager.php'][5] = array( _x('All Links', 'admin menu'), 'manage_links', 'link-manager.php' );
@@ -232,5 +231,3 @@ $compat = array(
        );
 
 require_once(ABSPATH . 'wp-admin/includes/menu.php');
        );
 
 require_once(ABSPATH . 'wp-admin/includes/menu.php');
-
-?>
index d3c9afc55fdfedf49bfc3d893deace6ba58efeec..9129795de6a3e53efe8cd114b2e17f93d0f61d64 100644 (file)
@@ -10,4 +10,3 @@
 require_once('../wp-load.php');
 wp_redirect( admin_url('edit-comments.php?comment_status=moderated') );
 exit;
 require_once('../wp-load.php');
 wp_redirect( admin_url('edit-comments.php?comment_status=moderated') );
 exit;
-?>
index 5ebb14c24b8c5092f7491db9a8b1b354951ee3c0..fe5e19bc87e1b6003218dd295845d5a535758e63 100644 (file)
@@ -11,4 +11,3 @@ require_once( './admin.php' );
 
 wp_redirect( network_admin_url() );
 exit;
 
 wp_redirect( network_admin_url() );
 exit;
-?>
index 2ae22339b73b55d89536a965ce7691863c13d42b..95f0aa091d3b09eed515b93d23ccb5bcf0fc1fb4 100644 (file)
@@ -80,4 +80,3 @@ Webmaster
 echo '</div>';
 
 include( './admin-footer.php' );
 echo '</div>';
 
 include( './admin-footer.php' );
-?>
index 6c0e04fe5dab360c449d2eb66def147e7068bd68..6e56e026a920ba5cc4133565d6bfbc2ef9f18903 100644 (file)
@@ -11,4 +11,3 @@ require_once( './admin.php' );
 
 wp_redirect( network_admin_url() );
 exit;
 
 wp_redirect( network_admin_url() );
 exit;
-?>
index 9b788e3c97239148049347921d1f41cf2c16303e..00502c915ae2a5e5df0bf31b00e3b53849996ef1 100644 (file)
@@ -11,5 +11,3 @@ require_once( './admin.php' );
 
 wp_redirect( network_admin_url('sites.php') );
 exit;
 
 wp_redirect( network_admin_url('sites.php') );
 exit;
-
-?>
index ad54efe2e5c9987f9827be5da10a354227818c1c..ad873babb482538079aa839db4d3a646c0fabeac 100644 (file)
@@ -11,4 +11,3 @@ require_once( './admin.php' );
 
 wp_redirect( network_admin_url('themes.php') );
 exit;
 
 wp_redirect( network_admin_url('themes.php') );
 exit;
-?>
index 0a4ea56ab1018989090b694720674586eca2d958..3d36a2cc59f31d78cf757e58e244e281da501f27 100644 (file)
@@ -11,5 +11,3 @@ require_once('admin.php');
 
 wp_redirect( network_admin_url('upgrade.php') );
 exit;
 
 wp_redirect( network_admin_url('upgrade.php') );
 exit;
-
-?>
index 5b4f1c52b24ed188cce3c6a8a85df06f54889279..a3be929ac7cc32f16535f4e59959f32b20af4570 100644 (file)
@@ -11,4 +11,3 @@ require_once( './admin.php' );
 
 wp_redirect( network_admin_url('users.php') );
 exit;
 
 wp_redirect( network_admin_url('users.php') );
 exit;
-?>
index 873b03cf954346fea8d7b1c504f548036ca0d849..2ef4ca77e81b0966e4b7a6ba501a52888b56ca44 100644 (file)
@@ -118,4 +118,3 @@ else :
        </div>
 <?php
 include( './admin-footer.php' );
        </div>
 <?php
 include( './admin-footer.php' );
-?>
index 90a1e873a9f43df5f77e1fd16cc33165fca931f8..6b4b032389d13fc16f39e59eaa9f73dee6db7ef4 100644 (file)
@@ -35,6 +35,9 @@ wp_enqueue_script( 'common' );
 wp_enqueue_script( 'wp-lists' );
 wp_enqueue_script( 'postbox' );
 
 wp_enqueue_script( 'wp-lists' );
 wp_enqueue_script( 'postbox' );
 
+if ( wp_is_mobile() )
+       wp_enqueue_script( 'jquery-touch-punch' );
+
 // Container for any messages displayed to the user
 $messages = array();
 
 // Container for any messages displayed to the user
 $messages = array();
 
@@ -117,7 +120,6 @@ switch ( $action ) {
                                                wp_update_post($next_item_data);
                                        }
 
                                                wp_update_post($next_item_data);
                                        }
 
-
                                // the item is last but still has a parent, so bubble up
                                } elseif (
                                        ! empty( $menu_item_data['menu_item_parent'] ) &&
                                // the item is last but still has a parent, so bubble up
                                } elseif (
                                        ! empty( $menu_item_data['menu_item_parent'] ) &&
@@ -152,7 +154,6 @@ switch ( $action ) {
                                        }
                                }
 
                                        }
                                }
 
-
                                // if this menu item is not first
                                if ( ! empty( $dbids_to_orders[$menu_item_id] ) && ! empty( $orders_to_dbids[$dbids_to_orders[$menu_item_id] - 1] ) ) {
 
                                // if this menu item is not first
                                if ( ! empty( $dbids_to_orders[$menu_item_id] ) && ! empty( $orders_to_dbids[$dbids_to_orders[$menu_item_id] - 1] ) ) {
 
@@ -228,7 +229,6 @@ switch ( $action ) {
 
                check_admin_referer( 'delete-menu_item_' . $menu_item_id );
 
 
                check_admin_referer( 'delete-menu_item_' . $menu_item_id );
 
-
                if ( is_nav_menu_item( $menu_item_id ) && wp_delete_post( $menu_item_id, true ) )
                        $messages[] = '<div id="message" class="updated"><p>' . __('The menu item has been successfully deleted.') . '</p></div>';
                break;
                if ( is_nav_menu_item( $menu_item_id ) && wp_delete_post( $menu_item_id, true ) )
                        $messages[] = '<div id="message" class="updated"><p>' . __('The menu item has been successfully deleted.') . '</p></div>';
                break;
@@ -430,7 +430,7 @@ $_wp_nav_menu_max_depth = 0;
 
 // Calling wp_get_nav_menu_to_edit generates $_wp_nav_menu_max_depth
 if ( is_nav_menu( $nav_menu_selected_id ) )
 
 // Calling wp_get_nav_menu_to_edit generates $_wp_nav_menu_max_depth
 if ( is_nav_menu( $nav_menu_selected_id ) )
-       $edit_markup = wp_get_nav_menu_to_edit( $nav_menu_selected_id  );
+       $edit_markup = wp_get_nav_menu_to_edit( $nav_menu_selected_id );
 
 function wp_nav_menu_max_depth($classes) {
        global $_wp_nav_menu_max_depth;
 
 function wp_nav_menu_max_depth($classes) {
        global $_wp_nav_menu_max_depth;
@@ -545,7 +545,7 @@ require_once( './admin-header.php' );
                                                        <div class="major-publishing-actions">
                                                                <label class="menu-name-label howto open-label" for="menu-name">
                                                                        <span><?php _e('Menu Name'); ?></span>
                                                        <div class="major-publishing-actions">
                                                                <label class="menu-name-label howto open-label" for="menu-name">
                                                                        <span><?php _e('Menu Name'); ?></span>
-                                                                       <input name="menu-name" id="menu-name" type="text" class="menu-name regular-text menu-item-textbox input-with-default-title" title="<?php esc_attr_e('Enter menu name here'); ?>" value="<?php echo esc_attr( $nav_menu_selected_title  ); ?>" />
+                                                                       <input name="menu-name" id="menu-name" type="text" class="menu-name regular-text menu-item-textbox input-with-default-title" title="<?php esc_attr_e('Enter menu name here'); ?>" value="<?php echo esc_attr( $nav_menu_selected_title ); ?>" />
                                                                </label>
                                                                <?php if ( !empty( $nav_menu_selected_id ) ) :
                                                                        if ( ! isset( $auto_add ) ) {
                                                                </label>
                                                                <?php if ( !empty( $nav_menu_selected_id ) ) :
                                                                        if ( ! isset( $auto_add ) ) {
@@ -615,5 +615,4 @@ require_once( './admin-header.php' );
        </div><!-- /#nav-menus-frame -->
 </div><!-- /.wrap-->
 
        </div><!-- /#nav-menus-frame -->
 </div><!-- /.wrap-->
 
-
 <?php include( './admin-footer.php' ); ?>
 <?php include( './admin-footer.php' ); ?>
index a3b09e8182ec0bf15627c9e3cc69e78f9e138a74..2931cbbc82a9dfbdfc210a6de3dba4de33c6f76a 100644 (file)
@@ -367,13 +367,13 @@ function network_step2( $errors = false ) {
                        ?></p></li>
                        <li><p><?php printf( __( 'Add the following to your <code>wp-config.php</code> file in <code>%s</code> <strong>above</strong> the line reading <code>/* That&#8217;s all, stop editing! Happy blogging. */</code>:' ), ABSPATH ); ?></p>
                                <textarea class="code" readonly="readonly" cols="100" rows="7">
                        ?></p></li>
                        <li><p><?php printf( __( 'Add the following to your <code>wp-config.php</code> file in <code>%s</code> <strong>above</strong> the line reading <code>/* That&#8217;s all, stop editing! Happy blogging. */</code>:' ), ABSPATH ); ?></p>
                                <textarea class="code" readonly="readonly" cols="100" rows="7">
-define( 'MULTISITE', true );
-define( 'SUBDOMAIN_INSTALL', <?php echo $subdomain_install ? 'true' : 'false'; ?> );
+define('MULTISITE', true);
+define('SUBDOMAIN_INSTALL', <?php echo $subdomain_install ? 'true' : 'false'; ?>);
 $base = '<?php echo $base; ?>';
 $base = '<?php echo $base; ?>';
-define( 'DOMAIN_CURRENT_SITE', '<?php echo $hostname; ?>' );
-define( 'PATH_CURRENT_SITE', '<?php echo $base; ?>' );
-define( 'SITE_ID_CURRENT_SITE', 1 );
-define( 'BLOG_ID_CURRENT_SITE', 1 );</textarea>
+define('DOMAIN_CURRENT_SITE', '<?php echo $hostname; ?>');
+define('PATH_CURRENT_SITE', '<?php echo $base; ?>');
+define('SITE_ID_CURRENT_SITE', 1);
+define('BLOG_ID_CURRENT_SITE', 1);</textarea>
 <?php
        $keys_salts = array( 'AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '' );
        foreach ( $keys_salts as $c => $v ) {
 <?php
        $keys_salts = array( 'AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '' );
        foreach ( $keys_salts as $c => $v ) {
diff --git a/wp-admin/network/about.php b/wp-admin/network/about.php
new file mode 100644 (file)
index 0000000..e8bbe99
--- /dev/null
@@ -0,0 +1,16 @@
+<?php
+/**
+ * Network About administration panel.
+ *
+ * @package WordPress
+ * @subpackage Multisite
+ * @since 3.4.0
+ */
+
+/** Load WordPress Administration Bootstrap */
+require_once( './admin.php' );
+
+if ( ! is_multisite() )
+       wp_die( __( 'Multisite support is not enabled.' ) );
+
+require( '../about.php' );
\ No newline at end of file
index d6de38d13ec2968d4bf92960d2d31f75e98ff4f4..01e6ea70c987e75390d28ad671bf6bcc4ad9d661 100644 (file)
@@ -7,7 +7,7 @@
  * @since 3.1.0
  */
 
  * @since 3.1.0
  */
 
-define( 'WP_NETWORK_ADMIN', TRUE );
+define( 'WP_NETWORK_ADMIN', true );
 
 /** Load WordPress Administration Bootstrap */
 require_once( dirname( dirname( __FILE__ ) ) . '/admin.php' );
 
 /** Load WordPress Administration Bootstrap */
 require_once( dirname( dirname( __FILE__ ) ) . '/admin.php' );
@@ -22,4 +22,3 @@ if ( $redirect_network_admin_request ) {
        exit;
 }
 unset( $redirect_network_admin_request );
        exit;
 }
 unset( $redirect_network_admin_request );
-?>
diff --git a/wp-admin/network/credits.php b/wp-admin/network/credits.php
new file mode 100644 (file)
index 0000000..82caa3a
--- /dev/null
@@ -0,0 +1,16 @@
+<?php
+/**
+ * Network Credits administration panel.
+ *
+ * @package WordPress
+ * @subpackage Multisite
+ * @since 3.4.0
+ */
+
+/** Load WordPress Administration Bootstrap */
+require_once( './admin.php' );
+
+if ( ! is_multisite() )
+       wp_die( __( 'Multisite support is not enabled.' ) );
+
+require( '../credits.php' );
\ No newline at end of file
index 5ccba2a0c7c8303a4dcc0805c796f44b93c9a533..e76f25878c9cf14987cc59d15d882c89268abcb9 100644 (file)
@@ -25,5 +25,3 @@ do_action( 'network_admin_edit_' . $_GET['action'] );
 
 wp_redirect( network_admin_url() );
 exit();
 
 wp_redirect( network_admin_url() );
 exit();
-
-?>
diff --git a/wp-admin/network/freedoms.php b/wp-admin/network/freedoms.php
new file mode 100644 (file)
index 0000000..a15a4c3
--- /dev/null
@@ -0,0 +1,16 @@
+<?php
+/**
+ * Network Freedoms administration panel.
+ *
+ * @package WordPress
+ * @subpackage Multisite
+ * @since 3.4.0
+ */
+
+/** Load WordPress Administration Bootstrap */
+require_once( './admin.php' );
+
+if ( ! is_multisite() )
+       wp_die( __( 'Multisite support is not enabled.' ) );
+
+require( '../freedoms.php' );
\ No newline at end of file
diff --git a/wp-admin/network/index-extra.php b/wp-admin/network/index-extra.php
deleted file mode 100644 (file)
index 17ead78..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-/**
- * Handle default network dashboard widgets options AJAX.
- *
- * @package WordPress
- * @subpackage Multisite
- * @since 3.1.0
- */
-
-/** Load WordPress Administration Bootstrap */
-require_once( './admin.php' );
-
-require( '../index-extra.php' );
index 449e1b37a860e01f4a8e5189ddae0a446747462d..a35a2802e78e643a3ca9a0ea33749f9854d6f7cb 100644 (file)
@@ -41,7 +41,6 @@ $submenu['plugins.php'][5]  = array( __('Installed Plugins'), 'manage_network_pl
 $submenu['plugins.php'][10] = array( _x('Add New', 'plugin editor'), 'install_plugins', 'plugin-install.php' );
 $submenu['plugins.php'][15] = array( _x('Editor', 'plugin editor'), 'edit_plugins', 'plugin-editor.php' );
 
 $submenu['plugins.php'][10] = array( _x('Add New', 'plugin editor'), 'install_plugins', 'plugin-install.php' );
 $submenu['plugins.php'][15] = array( _x('Editor', 'plugin editor'), 'edit_plugins', 'plugin-editor.php' );
 
-
 $menu[25] = array(__('Settings'), 'manage_network_options', 'settings.php', '', 'menu-top menu-icon-settings', 'menu-settings', 'div');
 if ( defined( 'MULTISITE' ) && defined( 'WP_ALLOW_MULTISITE' ) && WP_ALLOW_MULTISITE ) {
        $submenu['settings.php'][5]  = array( __('Network Settings'), 'manage_network_options', 'settings.php' );
 $menu[25] = array(__('Settings'), 'manage_network_options', 'settings.php', '', 'menu-top menu-icon-settings', 'menu-settings', 'div');
 if ( defined( 'MULTISITE' ) && defined( 'WP_ALLOW_MULTISITE' ) && WP_ALLOW_MULTISITE ) {
        $submenu['settings.php'][5]  = array( __('Network Settings'), 'manage_network_options', 'settings.php' );
@@ -56,11 +55,9 @@ if ( $update_data['counts']['total'] ) {
 
 unset($update_data);
 
 
 unset($update_data);
 
-$submenu[ 'upgrade.php' ][10] = array( __( 'Available Updates' ), 'update_core',  'update-core.php' );
+$submenu[ 'upgrade.php' ][10] = array( __( 'Available Updates' ), 'update_core', 'update-core.php' );
 $submenu[ 'upgrade.php' ][15] = array( __( 'Update Network' ), 'manage_network', 'upgrade.php' );
 
 $menu[99] = array( '', 'read', 'separator-last', '', 'wp-menu-separator-last' );
 
 require_once(ABSPATH . 'wp-admin/includes/menu.php');
 $submenu[ 'upgrade.php' ][15] = array( __( 'Update Network' ), 'manage_network', 'upgrade.php' );
 
 $menu[99] = array( '', 'read', 'separator-last', '', 'wp-menu-separator-last' );
 
 require_once(ABSPATH . 'wp-admin/includes/menu.php');
-
-?>
index 7f04e1a5af8af2fef897d8db4b11fe71f432b310..e75d95fc799039576a47f73df58fa516cec5d2b2 100644 (file)
@@ -29,7 +29,6 @@ get_current_screen()->add_help_tab( array(
                        '<p>' . __('Registration settings can disable/enable public signups. If you let others sign up for a site, install spam plugins. Spaces, not commas, should separate names banned as sites for this network.') . '</p>' .
                        '<p>' . __('New site settings are defaults applied when a new site is created in the network. These include welcome email for when a new site or user account is registered, and what&#8127;s put in the first post, page, comment, comment author, and comment URL.') . '</p>' .
                        '<p>' . __('Upload settings control the size of the uploaded files and the amount of available upload space for each site. You can change the default value for specific sites when you edit a particular site. Allowed file types are also listed (space separated only).') . '</p>' .
                        '<p>' . __('Registration settings can disable/enable public signups. If you let others sign up for a site, install spam plugins. Spaces, not commas, should separate names banned as sites for this network.') . '</p>' .
                        '<p>' . __('New site settings are defaults applied when a new site is created in the network. These include welcome email for when a new site or user account is registered, and what&#8127;s put in the first post, page, comment, comment author, and comment URL.') . '</p>' .
                        '<p>' . __('Upload settings control the size of the uploaded files and the amount of available upload space for each site. You can change the default value for specific sites when you edit a particular site. Allowed file types are also listed (space separated only).') . '</p>' .
-                       '<p>' . __('Checkboxes for media upload buttons set which are shown in the visual editor. If unchecked, a generic upload button is still visible; other media types can still be uploaded if on the allowed file types list.') . '</p>' .
                        '<p>' . __('Menu setting enables/disables the plugin menus from appearing for non super admins, so that only super admins, not site admins, have access to activate plugins.') . '</p>' .
                        '<p>' . __('Super admins can no longer be added on the Options screen. You must now go to the list of existing users on Network Admin > Users and click on Username or the Edit action link below that name. This goes to an Edit User page where you can check a box to grant super admin privileges.') . '</p>'
 ) );
                        '<p>' . __('Menu setting enables/disables the plugin menus from appearing for non super admins, so that only super admins, not site admins, have access to activate plugins.') . '</p>' .
                        '<p>' . __('Super admins can no longer be added on the Options screen. You must now go to the list of existing users on Network Admin > Users and click on Username or the Edit action link below that name. This goes to an Edit User page where you can check a box to grant super admin privileges.') . '</p>'
 ) );
@@ -51,17 +50,17 @@ if ( $_POST ) {
        if ( is_email( $_POST['admin_email'] ) )
                update_site_option( 'admin_email', $_POST['admin_email'] );
 
        if ( is_email( $_POST['admin_email'] ) )
                update_site_option( 'admin_email', $_POST['admin_email'] );
 
-       $illegal_names = split( ' ', $_POST['illegal_names'] );
+       $illegal_names = explode( ' ', $_POST['illegal_names'] );
        foreach ( (array) $illegal_names as $name ) {
                $name = trim( $name );
                if ( $name != '' )
                        $names[] = trim( $name );
        foreach ( (array) $illegal_names as $name ) {
                $name = trim( $name );
                if ( $name != '' )
                        $names[] = trim( $name );
-               }
+       }
        update_site_option( 'illegal_names', $names );
 
        if ( $_POST['limited_email_domains'] != '' ) {
                $limited_email_domains = str_replace( ' ', "\n", $_POST['limited_email_domains'] );
        update_site_option( 'illegal_names', $names );
 
        if ( $_POST['limited_email_domains'] != '' ) {
                $limited_email_domains = str_replace( ' ', "\n", $_POST['limited_email_domains'] );
-               $limited_email_domains = split( "\n", stripslashes( $limited_email_domains ) );
+               $limited_email_domains = explode( "\n", stripslashes( $limited_email_domains ) );
                $limited_email = array();
                foreach ( (array) $limited_email_domains as $domain ) {
                        $domain = trim( $domain );
                $limited_email = array();
                foreach ( (array) $limited_email_domains as $domain ) {
                        $domain = trim( $domain );
@@ -70,11 +69,11 @@ if ( $_POST ) {
                }
                update_site_option( 'limited_email_domains', $limited_email );
        } else {
                }
                update_site_option( 'limited_email_domains', $limited_email );
        } else {
-                       update_site_option( 'limited_email_domains', '' );
+               update_site_option( 'limited_email_domains', '' );
        }
 
        if ( $_POST['banned_email_domains'] != '' ) {
        }
 
        if ( $_POST['banned_email_domains'] != '' ) {
-               $banned_email_domains = split( "\n", stripslashes( $_POST['banned_email_domains'] ) );
+               $banned_email_domains = explode( "\n", stripslashes( $_POST['banned_email_domains'] ) );
                $banned = array();
                foreach ( (array) $banned_email_domains as $domain ) {
                        $domain = trim( $domain );
                $banned = array();
                foreach ( (array) $banned_email_domains as $domain ) {
                        $domain = trim( $domain );
@@ -125,7 +124,7 @@ if ( isset( $_GET['updated'] ) ) {
                                <td>
                                        <input name="site_name" type="text" id="site_name" class="regular-text" value="<?php echo esc_attr( $current_site->site_name ) ?>" />
                                        <br />
                                <td>
                                        <input name="site_name" type="text" id="site_name" class="regular-text" value="<?php echo esc_attr( $current_site->site_name ) ?>" />
                                        <br />
-                                       <?php _e( 'What you would like to call this website.' ) ?>
+                                       <?php _e( 'What you would like to call this network.' ) ?>
                                </td>
                        </tr>
 
                                </td>
                        </tr>
 
@@ -278,7 +277,7 @@ if ( isset( $_GET['updated'] ) ) {
                        <tr valign="top">
                                <th scope="row"><?php _e( 'Site upload space' ) ?></th>
                                <td>
                        <tr valign="top">
                                <th scope="row"><?php _e( 'Site upload space' ) ?></th>
                                <td>
-                               <label><input type="checkbox" id="upload_space_check_disabled" name="upload_space_check_disabled" value="0"<?php checked( get_site_option( 'upload_space_check_disabled' ), 0 ) ?>/> <?php printf( __( 'Limit total size of files uploaded to %s MB' ), '</label><label><input name="blog_upload_space" type="text" id="blog_upload_space" value="' . esc_attr( get_site_option('blog_upload_space', 10) ) . '" size="3" />' ); ?></label><br />
+                               <label><input type="checkbox" id="upload_space_check_disabled" name="upload_space_check_disabled" value="0"<?php checked( get_site_option( 'upload_space_check_disabled' ), 0 ) ?>/> <?php printf( __( 'Limit total size of files uploaded to %s MB' ), '</label><label><input name="blog_upload_space" type="number" min="0" style="width: 100px" id="blog_upload_space" value="' . esc_attr( get_site_option('blog_upload_space', 100) ) . '" />' ); ?></label><br />
                                </td>
                        </tr>
 
                                </td>
                        </tr>
 
@@ -289,7 +288,7 @@ if ( isset( $_GET['updated'] ) ) {
 
                        <tr valign="top">
                                <th scope="row"><label for="fileupload_maxk"><?php _e( 'Max upload file size' ) ?></label></th>
 
                        <tr valign="top">
                                <th scope="row"><label for="fileupload_maxk"><?php _e( 'Max upload file size' ) ?></label></th>
-                               <td><?php printf( _x( '%s KB', 'File size in kilobytes' ), '<input name="fileupload_maxk" type="text" id="fileupload_maxk" value="' . esc_attr( get_site_option( 'fileupload_maxk', 300 ) ) . '" size="5" />' ); ?></td>
+                               <td><?php printf( _x( '%s KB', 'File size in kilobytes' ), '<input name="fileupload_maxk" type="number" min="0" style="width: 100px" id="fileupload_maxk" value="' . esc_attr( get_site_option( 'fileupload_maxk', 300 ) ) . '" />' ); ?></td>
                        </tr>
                </table>
 
                        </tr>
                </table>
 
@@ -322,7 +321,7 @@ if ( isset( $_GET['updated'] ) ) {
                        $menu_perms = get_site_option( 'menu_items' );
                        $menu_items = apply_filters( 'mu_menu_items', array( 'plugins' => __( 'Plugins' ) ) );
                        foreach ( (array) $menu_items as $key => $val ) {
                        $menu_perms = get_site_option( 'menu_items' );
                        $menu_items = apply_filters( 'mu_menu_items', array( 'plugins' => __( 'Plugins' ) ) );
                        foreach ( (array) $menu_items as $key => $val ) {
-                               echo "<label><input type='checkbox' name='menu_items[" . $key . "]' value='1'" .  ( isset( $menu_perms[$key] ) ? checked( $menu_perms[$key], '1', false ) : '' ) . " /> " . esc_html( $val ) . "</label><br/>";
+                               echo "<label><input type='checkbox' name='menu_items[" . $key . "]' value='1'" . ( isset( $menu_perms[$key] ) ? checked( $menu_perms[$key], '1', false ) : '' ) . " /> " . esc_html( $val ) . "</label><br/>";
                        }
                        ?>
                                </td>
                        }
                        ?>
                                </td>
index 8cf9a5ee6ba0bf0955a1193d284241a879dc8f45..ff78e83bb3b9b1d3436a07f5523b1add1ae7fcdf 100644 (file)
@@ -29,7 +29,7 @@ if ( ! current_user_can( 'manage_sites' ) )
 
 get_current_screen()->set_help_sidebar(
        '<p><strong>' . __('For more information:') . '</strong></p>' .
 
 get_current_screen()->set_help_sidebar(
        '<p><strong>' . __('For more information:') . '</strong></p>' .
-       '<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Sites_Screens" target="_blank">Documentation on Site Management</a>') . '</p>' .
+       '<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Sites_Screen" target="_blank">Documentation on Site Management</a>') . '</p>' .
        '<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
 );
 
        '<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
 );
 
@@ -108,7 +108,7 @@ $tabs = array(
 );
 foreach ( $tabs as $tab_id => $tab ) {
        $class = ( $tab['url'] == $pagenow ) ? ' nav-tab-active' : '';
 );
 foreach ( $tabs as $tab_id => $tab ) {
        $class = ( $tab['url'] == $pagenow ) ? ' nav-tab-active' : '';
-       echo '<a href="' . $tab['url'] . '?id=' . $id .'" class="nav-tab' . $class . '">' .  esc_html( $tab['label'] ) . '</a>';
+       echo '<a href="' . $tab['url'] . '?id=' . $id .'" class="nav-tab' . $class . '">' . esc_html( $tab['label'] ) . '</a>';
 }
 ?>
 </h3>
 }
 ?>
 </h3>
index 3abcca1a4b21f390db88d30269c35ae7b4789475..b3cc84e5048e4677f95570fa5fe25cb15825ba72 100644 (file)
@@ -26,7 +26,7 @@ if ( ! current_user_can( 'manage_sites' ) )
 
 get_current_screen()->set_help_sidebar(
        '<p><strong>' . __('For more information:') . '</strong></p>' .
 
 get_current_screen()->set_help_sidebar(
        '<p><strong>' . __('For more information:') . '</strong></p>' .
-       '<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Sites_Screens" target="_blank">Documentation on Site Management</a>') . '</p>' .
+       '<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Sites_Screen" target="_blank">Documentation on Site Management</a>') . '</p>' .
        '<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
 );
 
        '<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
 );
 
@@ -123,7 +123,7 @@ if ( ! empty( $messages ) ) {
                        <th scope="row"><?php _e( 'Site Address' ) ?></th>
                        <td>
                        <?php if ( is_subdomain_install() ) { ?>
                        <th scope="row"><?php _e( 'Site Address' ) ?></th>
                        <td>
                        <?php if ( is_subdomain_install() ) { ?>
-                               <input name="blog[domain]" type="text" class="regular-text" title="<?php esc_attr_e( 'Domain' ) ?>"/>.<?php echo preg_replace( '|^www\.|', '', $current_site->domain );?>
+                               <input name="blog[domain]" type="text" class="regular-text" title="<?php esc_attr_e( 'Domain' ) ?>"/><span class="no-break">.<?php echo preg_replace( '|^www\.|', '', $current_site->domain ); ?></span>
                        <?php } else {
                                echo $current_site->domain . $current_site->path ?><input name="blog[domain]" class="regular-text" type="text" title="<?php esc_attr_e( 'Domain' ) ?>"/>
                        <?php }
                        <?php } else {
                                echo $current_site->domain . $current_site->path ?><input name="blog[domain]" class="regular-text" type="text" title="<?php esc_attr_e( 'Domain' ) ?>"/>
                        <?php }
@@ -148,4 +148,3 @@ if ( ! empty( $messages ) ) {
 </div>
 <?php
 require('../admin-footer.php');
 </div>
 <?php
 require('../admin-footer.php');
-?>
index 09ebeaad7db39ace4df1976c937055bfcbfa715f..f807fcf2c5eea37c682cf4b14d1fb58eef2e5339 100644 (file)
@@ -29,7 +29,7 @@ get_current_screen()->add_help_tab( array(
 
 get_current_screen()->set_help_sidebar(
        '<p><strong>' . __('For more information:') . '</strong></p>' .
 
 get_current_screen()->set_help_sidebar(
        '<p><strong>' . __('For more information:') . '</strong></p>' .
-       '<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Sites_Screens" target="_blank">Documentation on Site Management</a>') . '</p>' .
+       '<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Sites_Screen" target="_blank">Documentation on Site Management</a>') . '</p>' .
        '<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
 );
 
        '<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
 );
 
@@ -98,7 +98,7 @@ $tabs = array(
 );
 foreach ( $tabs as $tab_id => $tab ) {
        $class = ( $tab['url'] == $pagenow ) ? ' nav-tab-active' : '';
 );
 foreach ( $tabs as $tab_id => $tab ) {
        $class = ( $tab['url'] == $pagenow ) ? ' nav-tab-active' : '';
-       echo '<a href="' . $tab['url'] . '?id=' . $id .'" class="nav-tab' . $class . '">' .  esc_html( $tab['label'] ) . '</a>';
+       echo '<a href="' . $tab['url'] . '?id=' . $id .'" class="nav-tab' . $class . '">' . esc_html( $tab['label'] ) . '</a>';
 }
 ?>
 </h3>
 }
 ?>
 </h3>
index 0ff479acb7947d2390ebef9861b19c37c177928e..279456936822d7834453475639f5efbaa9fc0b94 100644 (file)
@@ -34,7 +34,7 @@ get_current_screen()->add_help_tab( array(
 
 get_current_screen()->set_help_sidebar(
        '<p><strong>' . __('For more information:') . '</strong></p>' .
 
 get_current_screen()->set_help_sidebar(
        '<p><strong>' . __('For more information:') . '</strong></p>' .
-       '<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Sites_Screens" target="_blank">Documentation on Site Management</a>') . '</p>' .
+       '<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Sites_Screen" target="_blank">Documentation on Site Management</a>') . '</p>' .
        '<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
 );
 
        '<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
 );
 
@@ -152,7 +152,7 @@ $tabs = array(
 );
 foreach ( $tabs as $tab_id => $tab ) {
        $class = ( $tab['url'] == $pagenow ) ? ' nav-tab-active' : '';
 );
 foreach ( $tabs as $tab_id => $tab ) {
        $class = ( $tab['url'] == $pagenow ) ? ' nav-tab-active' : '';
-       echo '<a href="' . $tab['url'] . '?id=' . $id .'" class="nav-tab' . $class . '">' .  esc_html( $tab['label'] ) . '</a>';
+       echo '<a href="' . $tab['url'] . '?id=' . $id .'" class="nav-tab' . $class . '">' . esc_html( $tab['label'] ) . '</a>';
 }
 ?>
 </h3><?php
 }
 ?>
 </h3><?php
index 743e9053e0b6ec5136466a50bb11f9e86029a3fd..58796b258d36157a217abbe969cc15e593d048c5 100644 (file)
@@ -32,7 +32,7 @@ get_current_screen()->add_help_tab( array(
 
 get_current_screen()->set_help_sidebar(
        '<p><strong>' . __('For more information:') . '</strong></p>' .
 
 get_current_screen()->set_help_sidebar(
        '<p><strong>' . __('For more information:') . '</strong></p>' .
-       '<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Sites_Screens" target="_blank">Documentation on Site Management</a>') . '</p>' .
+       '<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Sites_Screen" target="_blank">Documentation on Site Management</a>') . '</p>' .
        '<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
 );
 
        '<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
 );
 
@@ -171,8 +171,18 @@ $title = sprintf( __('Edit Site: %s'), $site_url_no_http );
 $parent_file = 'sites.php';
 $submenu_file = 'sites.php';
 
 $parent_file = 'sites.php';
 $submenu_file = 'sites.php';
 
+if ( ! wp_is_large_network( 'users' ) && apply_filters( 'show_network_site_users_add_existing_form', true ) )
+       wp_enqueue_script( 'user-suggest' );
+
 require('../admin-header.php'); ?>
 
 require('../admin-header.php'); ?>
 
+<script type='text/javascript'>
+/* <![CDATA[ */
+var current_site_id = <?php echo $id; ?>;
+/* ]]> */
+</script>
+
+
 <div class="wrap">
 <?php screen_icon('ms-admin'); ?>
 <h2 id="edit-site"><?php echo $title_site_url_linked ?></h2>
 <div class="wrap">
 <?php screen_icon('ms-admin'); ?>
 <h2 id="edit-site"><?php echo $title_site_url_linked ?></h2>
@@ -186,7 +196,7 @@ $tabs = array(
 );
 foreach ( $tabs as $tab_id => $tab ) {
        $class = ( $tab['url'] == $pagenow ) ? ' nav-tab-active' : '';
 );
 foreach ( $tabs as $tab_id => $tab ) {
        $class = ( $tab['url'] == $pagenow ) ? ' nav-tab-active' : '';
-       echo '<a href="' . $tab['url'] . '?id=' . $id .'" class="nav-tab' . $class . '">' .  esc_html( $tab['label'] ) . '</a>';
+       echo '<a href="' . $tab['url'] . '?id=' . $id .'" class="nav-tab' . $class . '">' . esc_html( $tab['label'] ) . '</a>';
 }
 ?>
 </h3><?php
 }
 ?>
 </h3><?php
@@ -257,7 +267,7 @@ endif; ?>
        <table class="form-table">
                <tr>
                        <th scope="row"><?php _e( 'Username' ); ?></th>
        <table class="form-table">
                <tr>
                        <th scope="row"><?php _e( 'Username' ); ?></th>
-                       <td><input type="text" class="regular-text" name="newuser" id="newuser" /></td>
+                       <td><input type="text" class="regular-text wp-suggest-user" name="newuser" id="newuser" /></td>
                </tr>
                <tr>
                        <th scope="row"><?php _e( 'Role'); ?></th>
                </tr>
                <tr>
                        <th scope="row"><?php _e( 'Role'); ?></th>
index 95902ebbd42dd7209a39fce3917a4786131f532d..4bee9e1afdb0ff0eccdf070d4252dcc69a0e0fd4 100644 (file)
@@ -42,7 +42,7 @@ get_current_screen()->add_help_tab( array(
 
 get_current_screen()->set_help_sidebar(
        '<p><strong>' . __('For more information:') . '</strong></p>' .
 
 get_current_screen()->set_help_sidebar(
        '<p><strong>' . __('For more information:') . '</strong></p>' .
-       '<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Sites_Screens" target="_blank">Documentation on Site Management</a>') . '</p>' .
+       '<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Sites_Screen" target="_blank">Documentation on Site Management</a>') . '</p>' .
        '<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
 );
 
        '<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
 );
 
@@ -78,9 +78,7 @@ if ( isset( $_GET['action'] ) ) {
                                if ( ! current_user_can( 'manage_sites' ) )
                                        wp_die( __( 'You do not have permission to access this page.' ) );
 
                                if ( ! current_user_can( 'manage_sites' ) )
                                        wp_die( __( 'You do not have permission to access this page.' ) );
 
-                               if ( $_GET['action'] != -1 || $_POST['action2'] != -1 )
-                                       $doaction = $_POST['action'] != -1 ? $_POST['action'] : $_POST['action2'];
-
+                               $doaction = $_POST['action'] != -1 ? $_POST['action'] : $_POST['action2'];
                                $blogfunction = '';
 
                                foreach ( (array) $_POST['allblogs'] as $key => $val ) {
                                $blogfunction = '';
 
                                foreach ( (array) $_POST['allblogs'] as $key => $val ) {
@@ -210,7 +208,7 @@ if ( isset( $_GET['action'] ) ) {
                                wp_die( __( 'You are not allowed to change the current site.' ) );
                        ?>
                        <!DOCTYPE html>
                                wp_die( __( 'You are not allowed to change the current site.' ) );
                        ?>
                        <!DOCTYPE html>
-                       <html xmlns="http://www.w3.org/1999/xhtml" <?php if ( function_exists( 'language_attributes' ) ) language_attributes(); ?>>
+                       <html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
                                <head>
                                        <title><?php _e( 'WordPress &rsaquo; Confirm your action' ); ?></title>
 
                                <head>
                                        <title><?php _e( 'WordPress &rsaquo; Confirm your action' ); ?></title>
 
@@ -221,7 +219,7 @@ if ( isset( $_GET['action'] ) ) {
                                        ?>
                                </head>
                                <body>
                                        ?>
                                </head>
                                <body>
-                                       <h1 id="logo"><img alt="WordPress" src="<?php echo esc_attr( admin_url( 'images/wordpress-logo.png' ) ); ?>" /></h1>
+                                       <h1 id="logo"><img alt="WordPress" src="<?php echo esc_attr( admin_url( 'images/wordpress-logo.png?ver=20120216' ) ); ?>" /></h1>
                                        <form action="sites.php?action=<?php echo esc_attr( $_GET['action2'] ) ?>" method="post">
                                                <input type="hidden" name="action" value="<?php echo esc_attr( $_GET['action2'] ) ?>" />
                                                <input type="hidden" name="id" value="<?php echo esc_attr( $id ); ?>" />
                                        <form action="sites.php?action=<?php echo esc_attr( $_GET['action2'] ) ?>" method="post">
                                                <input type="hidden" name="action" value="<?php echo esc_attr( $_GET['action2'] ) ?>" />
                                                <input type="hidden" name="id" value="<?php echo esc_attr( $id ); ?>" />
index 611c0957f462ea8da68c99d2c156841b1adbe091..ba56a4a483e9eab02dc2a274fe267747d7ceafc3 100644 (file)
@@ -40,7 +40,10 @@ if ( $action ) {
                        check_admin_referer('enable-theme_' . $_GET['theme']);
                        $allowed_themes[ $_GET['theme'] ] = true;
                        update_site_option( 'allowedthemes', $allowed_themes );
                        check_admin_referer('enable-theme_' . $_GET['theme']);
                        $allowed_themes[ $_GET['theme'] ] = true;
                        update_site_option( 'allowedthemes', $allowed_themes );
-                       wp_redirect( network_admin_url( 'themes.php?enabled=1' ) );
+                       if ( false === strpos( $referer, '/network/themes.php' ) )
+                               wp_redirect( network_admin_url( 'themes.php?enabled=1' ) );
+                       else
+                               wp_safe_redirect( add_query_arg( 'enabled', 1, $referer ) );
                        exit;
                        break;
                case 'disable':
                        exit;
                        break;
                case 'disable':
@@ -95,7 +98,6 @@ if ( $action ) {
                        screen_icon();
                        echo '<h2>' . esc_html( $title ) . '</h2>';
 
                        screen_icon();
                        echo '<h2>' . esc_html( $title ) . '</h2>';
 
-
                        $url = self_admin_url('update.php?action=update-selected-themes&amp;themes=' . urlencode( join(',', $themes) ));
                        $url = wp_nonce_url($url, 'bulk-update-themes');
 
                        $url = self_admin_url('update.php?action=update-selected-themes&amp;themes=' . urlencode( join(',', $themes) ));
                        $url = wp_nonce_url($url, 'bulk-update-themes');
 
@@ -111,26 +113,17 @@ if ( $action ) {
 
                        $themes = isset( $_REQUEST['checked'] ) ? (array) $_REQUEST['checked'] : array();
 
 
                        $themes = isset( $_REQUEST['checked'] ) ? (array) $_REQUEST['checked'] : array();
 
-                       if ( isset( $themes[ get_option( 'template' ) ] ) )
-                               unset( $themes[ get_option( 'template' ) ] );
-                       if ( isset( $themes[ get_option( 'stylesheet' ) ] ) )
-                               unset( $themes[ get_option( 'stylesheet' ) ] );
+                       unset( $themes[ get_option( 'stylesheet' ) ], $themes[ get_option( 'template' ) ] );
 
                        if ( empty( $themes ) ) {
                                wp_safe_redirect( add_query_arg( 'error', 'none', $referer ) );
                                exit;
                        }
 
 
                        if ( empty( $themes ) ) {
                                wp_safe_redirect( add_query_arg( 'error', 'none', $referer ) );
                                exit;
                        }
 
-                       $main_theme = get_current_theme();
                        $files_to_delete = $theme_info = array();
                        foreach ( $themes as $key => $theme ) {
                        $files_to_delete = $theme_info = array();
                        foreach ( $themes as $key => $theme ) {
-                               $data = get_theme_data( WP_CONTENT_DIR . '/themes/' . $theme . '/style.css' );
-                               if ( $data['Name'] == $main_theme ) {
-                                       unset( $themes[$key] );
-                               } else {
-                                       $files_to_delete = array_merge( $files_to_delete, list_files( WP_CONTENT_DIR . "/themes/$theme" ) );
-                                       $theme_info[ $theme ] = $data;
-                               }
+                               $theme_info[ $theme ] = wp_get_theme( $theme );
+                               $files_to_delete = array_merge( $files_to_delete, list_files( $theme_info[ $theme ]->get_stylesheet_directory() ) );
                        }
 
                        if ( empty( $themes ) ) {
                        }
 
                        if ( empty( $themes ) ) {
@@ -156,7 +149,7 @@ if ( $action ) {
                                <p><?php echo _n( 'You are about to remove the following theme:', 'You are about to remove the following themes:', $themes_to_delete ); ?></p>
                                        <ul class="ul-disc">
                                                <?php foreach ( $theme_info as $theme )
                                <p><?php echo _n( 'You are about to remove the following theme:', 'You are about to remove the following themes:', $themes_to_delete ); ?></p>
                                        <ul class="ul-disc">
                                                <?php foreach ( $theme_info as $theme )
-                                                       echo '<li>', sprintf( __('<strong>%1$s</strong> by <em>%2$s</em>' ), esc_html( $theme['Name'] ), esc_html( $theme['AuthorName'] ) ), '</li>'; /* translators: 1: theme name, 2: theme author */ ?>
+                                                       echo '<li>', sprintf( __('<strong>%1$s</strong> by <em>%2$s</em>' ), $theme->display('Name'), $theme->display('Author') ), '</li>'; /* translators: 1: theme name, 2: theme author */ ?>
                                        </ul>
                                <p><?php _e('Are you sure you wish to delete these themes?'); ?></p>
                                <form method="post" action="<?php echo esc_url($_SERVER['REQUEST_URI']); ?>" style="display:inline;">
                                        </ul>
                                <p><?php _e('Are you sure you wish to delete these themes?'); ?></p>
                                <form method="post" action="<?php echo esc_url($_SERVER['REQUEST_URI']); ?>" style="display:inline;">
@@ -254,7 +247,12 @@ if ( isset( $_GET['enabled'] ) ) {
 <?php $wp_list_table->search_box( __( 'Search Installed Themes' ), 'theme' ); ?>
 </form>
 
 <?php $wp_list_table->search_box( __( 'Search Installed Themes' ), 'theme' ); ?>
 </form>
 
-<?php $wp_list_table->views(); ?>
+<?php
+$wp_list_table->views();
+
+if ( 'broken' == $status )
+       echo '<p class="clear">' . __('The following themes are installed but incomplete. Themes must have a stylesheet and a template.') . '</p>';
+?>
 
 <form method="post" action="">
 <input type="hidden" name="theme_status" value="<?php echo esc_attr($status) ?>" />
 
 <form method="post" action="">
 <input type="hidden" name="theme_status" value="<?php echo esc_attr($status) ?>" />
index 03dadce8c35e7c06d7f806c841a6b31517802dd6..204491451276797bd98f72a6060db02c30606839 100644 (file)
@@ -16,7 +16,6 @@ if ( ! is_multisite() )
 if ( ! current_user_can('create_users') )
        wp_die(__('You do not have sufficient permissions to add users to this network.'));
 
 if ( ! current_user_can('create_users') )
        wp_die(__('You do not have sufficient permissions to add users to this network.'));
 
-
 get_current_screen()->add_help_tab( array(
        'id'      => 'overview',
        'title'   => __('Overview'),
 get_current_screen()->add_help_tab( array(
        'id'      => 'overview',
        'title'   => __('Overview'),
@@ -106,4 +105,3 @@ if ( isset( $add_user_errors ) && is_wp_error( $add_user_errors ) ) { ?>
 </div>
 <?php
 require('../admin-footer.php');
 </div>
 <?php
 require('../admin-footer.php');
-?>
index 25d853d9f0be930fea064c3b0088ce3d777ab5a7..98246c3fbfb6727c4dbc91d3d772dbf8153a1b88 100644 (file)
@@ -40,7 +40,7 @@ function confirm_delete_users( $users ) {
                                wp_die( sprintf( __( 'Warning! User %s cannot be deleted.' ), $delete_user->user_login ) );
 
                        if ( in_array( $delete_user->user_login, $site_admins ) )
                                wp_die( sprintf( __( 'Warning! User %s cannot be deleted.' ), $delete_user->user_login ) );
 
                        if ( in_array( $delete_user->user_login, $site_admins ) )
-                               wp_die( sprintf( __( 'Warning! User cannot be deleted. The user %s is a network admnistrator.' ), $delete_user->user_login ) );
+                               wp_die( sprintf( __( 'Warning! User cannot be deleted. The user %s is a network administrator.' ), $delete_user->user_login ) );
 
                        echo "<input type='hidden' name='user[]' value='{$val}'/>\n";
                        $blogs = get_blogs_of_user( $val, true );
 
                        echo "<input type='hidden' name='user[]' value='{$val}'/>\n";
                        $blogs = get_blogs_of_user( $val, true );
@@ -119,9 +119,7 @@ if ( isset( $_GET['action'] ) ) {
                        if ( ( isset( $_POST['action']) || isset($_POST['action2'] ) ) && isset( $_POST['allusers'] ) ) {
                                check_admin_referer( 'bulk-users-network' );
 
                        if ( ( isset( $_POST['action']) || isset($_POST['action2'] ) ) && isset( $_POST['allusers'] ) ) {
                                check_admin_referer( 'bulk-users-network' );
 
-                               if ( $_GET['action'] != -1 || $_POST['action2'] != -1 )
-                                       $doaction = $_POST['action'] != -1 ? $_POST['action'] : $_POST['action2'];
-
+                               $doaction = $_POST['action'] != -1 ? $_POST['action'] : $_POST['action2'];
                                $userfunction = '';
 
                                foreach ( (array) $_POST['allusers'] as $key => $val ) {
                                $userfunction = '';
 
                                foreach ( (array) $_POST['allusers'] as $key => $val ) {
@@ -136,9 +134,9 @@ if ( isset( $_GET['action'] ) ) {
                                                                echo '<div class="wrap">';
                                                                confirm_delete_users( $_POST['allusers'] );
                                                                echo '</div>';
                                                                echo '<div class="wrap">';
                                                                confirm_delete_users( $_POST['allusers'] );
                                                                echo '</div>';
-                                                   require_once( '../admin-footer.php' );
-                                                   exit();
-                                               break;
+                                                               require_once( '../admin-footer.php' );
+                                                               exit();
+                                                       break;
 
                                                        case 'spam':
                                                                $user = new WP_User( $val );
 
                                                        case 'spam':
                                                                $user = new WP_User( $val );
@@ -290,7 +288,7 @@ if ( isset( $_REQUEST['updated'] ) && $_REQUEST['updated'] == 'true' && ! empty(
        <?php $wp_list_table->views(); ?>
 
        <form action="" method="get" class="search-form">
        <?php $wp_list_table->views(); ?>
 
        <form action="" method="get" class="search-form">
-               <?php $wp_list_table->search_box( __( 'Search Users' ), 'user' ); ?>
+               <?php $wp_list_table->search_box( __( 'Search Users' ), 'all-user' ); ?>
        </form>
 
        <form id="form-user-list" action='users.php?action=allusers' method='post'>
        </form>
 
        <form id="form-user-list" action='users.php?action=allusers' method='post'>
index 6270f99f98e79de878bf3b3fb3cf344774fb8ddb..22039fd4271a2cf5054e55779b4d142b45f15b15 100644 (file)
@@ -71,7 +71,7 @@ include('./admin-header.php');
 
 <label for="close_comments_for_old_posts">
 <input name="close_comments_for_old_posts" type="checkbox" id="close_comments_for_old_posts" value="1" <?php checked('1', get_option('close_comments_for_old_posts')); ?> />
 
 <label for="close_comments_for_old_posts">
 <input name="close_comments_for_old_posts" type="checkbox" id="close_comments_for_old_posts" value="1" <?php checked('1', get_option('close_comments_for_old_posts')); ?> />
-<?php printf( __('Automatically close comments on articles older than %s days'), '</label><input name="close_comments_days_old" type="text" id="close_comments_days_old" value="' . esc_attr(get_option('close_comments_days_old')) . '" class="small-text" />'); ?>
+<?php printf( __('Automatically close comments on articles older than %s days'), '</label><input name="close_comments_days_old" type="number" min="0" step="1" id="close_comments_days_old" value="' . esc_attr(get_option('close_comments_days_old')) . '" class="small-text" />'); ?>
 <br />
 <label for="thread_comments">
 <input name="thread_comments" type="checkbox" id="thread_comments" value="1" <?php checked('1', get_option('thread_comments')); ?> />
 <br />
 <label for="thread_comments">
 <input name="thread_comments" type="checkbox" id="thread_comments" value="1" <?php checked('1', get_option('thread_comments')); ?> />
@@ -100,7 +100,7 @@ $default_comments_page .= '>' . __('last') . '</option><option value="oldest"';
 if ( 'oldest' == get_option('default_comments_page') ) $default_comments_page .= ' selected="selected"';
 $default_comments_page .= '>' . __('first') . '</option></select>';
 
 if ( 'oldest' == get_option('default_comments_page') ) $default_comments_page .= ' selected="selected"';
 $default_comments_page .= '>' . __('first') . '</option></select>';
 
-printf( __('Break comments into pages with %1$s top level comments per page and the %2$s page displayed by default'), '</label><label for="comments_per_page"><input name="comments_per_page" type="text" id="comments_per_page" value="' . esc_attr(get_option('comments_per_page')) . '" class="small-text" />', $default_comments_page );
+printf( __('Break comments into pages with %1$s top level comments per page and the %2$s page displayed by default'), '</label><label for="comments_per_page"><input name="comments_per_page" type="number" step="1" min="0" id="comments_per_page" value="' . esc_attr(get_option('comments_per_page')) . '" class="small-text" />', $default_comments_page );
 
 ?></label>
 <br />
 
 ?></label>
 <br />
@@ -142,7 +142,7 @@ printf( __('Comments should be displayed with the %s comments at the top of each
 <tr valign="top">
 <th scope="row"><?php _e('Comment Moderation'); ?></th>
 <td><fieldset><legend class="screen-reader-text"><span><?php _e('Comment Moderation'); ?></span></legend>
 <tr valign="top">
 <th scope="row"><?php _e('Comment Moderation'); ?></th>
 <td><fieldset><legend class="screen-reader-text"><span><?php _e('Comment Moderation'); ?></span></legend>
-<p><label for="comment_max_links"><?php printf(__('Hold a comment in the queue if it contains %s or more links. (A common characteristic of comment spam is a large number of hyperlinks.)'), '<input name="comment_max_links" type="text" id="comment_max_links" value="' . esc_attr(get_option('comment_max_links')) . '" class="small-text" />' ); ?></label></p>
+<p><label for="comment_max_links"><?php printf(__('Hold a comment in the queue if it contains %s or more links. (A common characteristic of comment spam is a large number of hyperlinks.)'), '<input name="comment_max_links" type="number" step="1" min="0" id="comment_max_links" value="' . esc_attr(get_option('comment_max_links')) . '" class="small-text" />' ); ?></label></p>
 
 <p><label for="moderation_keys"><?php _e('When a comment contains any of these words in its content, name, URL, e-mail, or IP, it will be held in the <a href="edit-comments.php?comment_status=moderated">moderation queue</a>. One word or IP per line. It will match inside words, so &#8220;press&#8221; will match &#8220;WordPress&#8221;.'); ?></label></p>
 <p>
 
 <p><label for="moderation_keys"><?php _e('When a comment contains any of these words in its content, name, URL, e-mail, or IP, it will be held in the <a href="edit-comments.php?comment_status=moderated">moderation queue</a>. One word or IP per line. It will match inside words, so &#8220;press&#8221; will match &#8220;WordPress&#8221;.'); ?></label></p>
 <p>
@@ -164,7 +164,7 @@ printf( __('Comments should be displayed with the %s comments at the top of each
 
 <h3><?php _e('Avatars'); ?></h3>
 
 
 <h3><?php _e('Avatars'); ?></h3>
 
-<p><?php _e('An avatar is an image that follows you from weblog to weblog appearing beside your name when you comment on avatar enabled sites.  Here you can enable the display of avatars for people who comment on your site.'); ?></p>
+<p><?php _e('An avatar is an image that follows you from weblog to weblog appearing beside your name when you comment on avatar enabled sites. Here you can enable the display of avatars for people who comment on your site.'); ?></p>
 
 <?php // the above would be a good place to link to codex documentation on the gravatar functions, for putting it in themes. anything like that? ?>
 
 
 <?php // the above would be a good place to link to codex documentation on the gravatar functions, for putting it in themes. anything like that? ?>
 
@@ -228,7 +228,7 @@ $size = 32;
 $avatar_list = '';
 foreach ( $avatar_defaults as $default_key => $default_name ) {
        $selected = ($default == $default_key) ? 'checked="checked" ' : '';
 $avatar_list = '';
 foreach ( $avatar_defaults as $default_key => $default_name ) {
        $selected = ($default == $default_key) ? 'checked="checked" ' : '';
-       $avatar_list .= "\n\t<label><input type='radio' name='avatar_default' id='avatar_{$default_key}' value='" . esc_attr($default_key)  . "' {$selected}/> ";
+       $avatar_list .= "\n\t<label><input type='radio' name='avatar_default' id='avatar_{$default_key}' value='" . esc_attr($default_key) . "' {$selected}/> ";
 
        $avatar = get_avatar( $user_email, $size, $default_key );
        $avatar_list .= preg_replace("/src='(.+?)'/", "src='\$1&amp;forcedefault=1'", $avatar);
 
        $avatar = get_avatar( $user_email, $size, $default_key );
        $avatar_list .= preg_replace("/src='(.+?)'/", "src='\$1&amp;forcedefault=1'", $avatar);
index fff360c62fbd6b1ab6382b08bcf51df8f20c83a5..d8a8b805ff96e414a9ee7d0196f3e6eb9e368b13 100644 (file)
@@ -98,8 +98,8 @@ include('./admin-header.php');
 </tr>
 <tr valign="top">
 <th scope="row"><label for="blogdescription"><?php _e('Tagline') ?></label></th>
 </tr>
 <tr valign="top">
 <th scope="row"><label for="blogdescription"><?php _e('Tagline') ?></label></th>
-<td><input name="blogdescription" type="text" id="blogdescription"  value="<?php form_option('blogdescription'); ?>" class="regular-text" />
-<span class="description"><?php _e('In a few words, explain what this site is about.') ?></span></td>
+<td><input name="blogdescription" type="text" id="blogdescription" value="<?php form_option('blogdescription'); ?>" class="regular-text" />
+<p class="description"><?php _e('In a few words, explain what this site is about.') ?></p></td>
 </tr>
 <?php if ( !is_multisite() ) { ?>
 <tr valign="top">
 </tr>
 <?php if ( !is_multisite() ) { ?>
 <tr valign="top">
@@ -109,12 +109,12 @@ include('./admin-header.php');
 <tr valign="top">
 <th scope="row"><label for="home"><?php _e('Site Address (URL)') ?></label></th>
 <td><input name="home" type="text" id="home" value="<?php form_option('home'); ?>"<?php disabled( defined( 'WP_HOME' ) ); ?> class="regular-text code<?php if ( defined( 'WP_HOME' ) ) echo ' disabled' ?>" />
 <tr valign="top">
 <th scope="row"><label for="home"><?php _e('Site Address (URL)') ?></label></th>
 <td><input name="home" type="text" id="home" value="<?php form_option('home'); ?>"<?php disabled( defined( 'WP_HOME' ) ); ?> class="regular-text code<?php if ( defined( 'WP_HOME' ) ) echo ' disabled' ?>" />
-<span class="description"><?php _e('Enter the address here if you want your site homepage <a href="http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory">to be different from the directory</a> you installed WordPress.'); ?></span></td>
+<p class="description"><?php _e('Enter the address here if you want your site homepage <a href="http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory">to be different from the directory</a> you installed WordPress.'); ?></p></td>
 </tr>
 <tr valign="top">
 <th scope="row"><label for="admin_email"><?php _e('E-mail Address') ?> </label></th>
 </tr>
 <tr valign="top">
 <th scope="row"><label for="admin_email"><?php _e('E-mail Address') ?> </label></th>
-<td><input name="admin_email" type="text" id="admin_email" value="<?php form_option('admin_email'); ?>" class="regular-text" />
-<span class="description"><?php _e('This address is used for admin purposes, like new user notification.') ?></span></td>
+<td><input name="admin_email" type="text" id="admin_email" value="<?php form_option('admin_email'); ?>" class="regular-text ltr" />
+<p class="description"><?php _e('This address is used for admin purposes, like new user notification.') ?></p></td>
 </tr>
 <tr valign="top">
 <th scope="row"><?php _e('Membership') ?></th>
 </tr>
 <tr valign="top">
 <th scope="row"><?php _e('Membership') ?></th>
@@ -132,8 +132,8 @@ include('./admin-header.php');
 <?php } else { ?>
 <tr valign="top">
 <th scope="row"><label for="new_admin_email"><?php _e('E-mail Address') ?> </label></th>
 <?php } else { ?>
 <tr valign="top">
 <th scope="row"><label for="new_admin_email"><?php _e('E-mail Address') ?> </label></th>
-<td><input name="new_admin_email" type="text" id="new_admin_email" value="<?php form_option('admin_email'); ?>" class="regular-text code" />
-<span class="description"><?php _e('This address is used for admin purposes. If you change this we will send you an e-mail at your new address to confirm it. <strong>The new address will not become active until confirmed.</strong>') ?></span>
+<td><input name="new_admin_email" type="text" id="new_admin_email" value="<?php form_option('admin_email'); ?>" class="regular-text ltr" />
+<p class="description"><?php _e('This address is used for admin purposes. If you change this we will send you an e-mail at your new address to confirm it. <strong>The new address will not become active until confirmed.</strong>') ?></p>
 <?php
 $new_admin_email = get_option( 'new_admin_email' );
 if ( $new_admin_email && $new_admin_email != get_option('admin_email') ) : ?>
 <?php
 $new_admin_email = get_option( 'new_admin_email' );
 if ( $new_admin_email && $new_admin_email != get_option('admin_email') ) : ?>
@@ -151,7 +151,7 @@ $tzstring = get_option('timezone_string');
 
 $check_zone_info = true;
 
 
 $check_zone_info = true;
 
-// Remove old Etc mappings.  Fallback to gmt_offset.
+// Remove old Etc mappings. Fallback to gmt_offset.
 if ( false !== strpos($tzstring,'Etc/GMT') )
        $tzstring = '';
 
 if ( false !== strpos($tzstring,'Etc/GMT') )
        $tzstring = '';
 
@@ -177,8 +177,7 @@ if ( empty($tzstring) ) { // Create a UTC+- zone if no timezone string exists
 <?php if ( get_option('timezone_string') || !empty($current_offset) ) : ?>
        <span id="local-time"><?php printf(__('Local time is <code>%1$s</code>'), date_i18n($timezone_format)); ?></span>
 <?php endif; ?>
 <?php if ( get_option('timezone_string') || !empty($current_offset) ) : ?>
        <span id="local-time"><?php printf(__('Local time is <code>%1$s</code>'), date_i18n($timezone_format)); ?></span>
 <?php endif; ?>
-<br />
-<span class="description"><?php _e('Choose a city in the same timezone as you.'); ?></span>
+<p class="description"><?php _e('Choose a city in the same timezone as you.'); ?></p>
 <?php if ($check_zone_info && $tzstring) : ?>
 <br />
 <span>
 <?php if ($check_zone_info && $tzstring) : ?>
 <br />
 <span>
@@ -211,7 +210,7 @@ if ( empty($tzstring) ) { // Create a UTC+- zone if no timezone string exists
                        echo ' ';
                        $message = $tr['isdst'] ?
                                __('Daylight saving time begins on: <code>%s</code>.') :
                        echo ' ';
                        $message = $tr['isdst'] ?
                                __('Daylight saving time begins on: <code>%s</code>.') :
-                               __('Standard time begins  on: <code>%s</code>.');
+                               __('Standard time begins on: <code>%s</code>.');
                        // Add the difference between the current offset and the new offset to ts to get the correct transition time from date_i18n().
                        printf( $message, date_i18n(get_option('date_format') . ' ' . get_option('time_format'), $tr['ts'] + ($tz_offset - $tr['offset']) ) );
                } else {
                        // Add the difference between the current offset and the new offset to ts to get the correct transition time from date_i18n().
                        printf( $message, date_i18n(get_option('date_format') . ' ' . get_option('time_format'), $tr['ts'] + ($tz_offset - $tr['offset']) ) );
                } else {
index 7f2cc74d0874976b50c28d75bf4f7ce5e855ee2c..066caafbbe47b20c770c214bed445e544305119b 100644 (file)
@@ -17,5 +17,3 @@ if ( isset( $_GET['updated'] ) && isset( $_GET['page'] ) ) {
 }
 
 settings_errors();
 }
 
 settings_errors();
-
-?>
\ No newline at end of file
index 83eacabed517ea2bfe5356e60ce5d80c54dab9d3..ee3240107de072c0f456c84a560c754a9cf5a955 100644 (file)
@@ -60,9 +60,9 @@ include('./admin-header.php');
 <th scope="row"><?php _e('Thumbnail size') ?></th>
 <td>
 <label for="thumbnail_size_w"><?php _e('Width'); ?></label>
 <th scope="row"><?php _e('Thumbnail size') ?></th>
 <td>
 <label for="thumbnail_size_w"><?php _e('Width'); ?></label>
-<input name="thumbnail_size_w" type="text" id="thumbnail_size_w" value="<?php form_option('thumbnail_size_w'); ?>" class="small-text" />
+<input name="thumbnail_size_w" type="number" step="1" min="0" id="thumbnail_size_w" value="<?php form_option('thumbnail_size_w'); ?>" class="small-text" />
 <label for="thumbnail_size_h"><?php _e('Height'); ?></label>
 <label for="thumbnail_size_h"><?php _e('Height'); ?></label>
-<input name="thumbnail_size_h" type="text" id="thumbnail_size_h" value="<?php form_option('thumbnail_size_h'); ?>" class="small-text" /><br />
+<input name="thumbnail_size_h" type="number" step="1" min="0" id="thumbnail_size_h" value="<?php form_option('thumbnail_size_h'); ?>" class="small-text" /><br />
 <input name="thumbnail_crop" type="checkbox" id="thumbnail_crop" value="1" <?php checked('1', get_option('thumbnail_crop')); ?>/>
 <label for="thumbnail_crop"><?php _e('Crop thumbnail to exact dimensions (normally thumbnails are proportional)'); ?></label>
 </td>
 <input name="thumbnail_crop" type="checkbox" id="thumbnail_crop" value="1" <?php checked('1', get_option('thumbnail_crop')); ?>/>
 <label for="thumbnail_crop"><?php _e('Crop thumbnail to exact dimensions (normally thumbnails are proportional)'); ?></label>
 </td>
@@ -72,9 +72,9 @@ include('./admin-header.php');
 <th scope="row"><?php _e('Medium size') ?></th>
 <td><fieldset><legend class="screen-reader-text"><span><?php _e('Medium size'); ?></span></legend>
 <label for="medium_size_w"><?php _e('Max Width'); ?></label>
 <th scope="row"><?php _e('Medium size') ?></th>
 <td><fieldset><legend class="screen-reader-text"><span><?php _e('Medium size'); ?></span></legend>
 <label for="medium_size_w"><?php _e('Max Width'); ?></label>
-<input name="medium_size_w" type="text" id="medium_size_w" value="<?php form_option('medium_size_w'); ?>" class="small-text" />
+<input name="medium_size_w" type="number" step="1" min="0" id="medium_size_w" value="<?php form_option('medium_size_w'); ?>" class="small-text" />
 <label for="medium_size_h"><?php _e('Max Height'); ?></label>
 <label for="medium_size_h"><?php _e('Max Height'); ?></label>
-<input name="medium_size_h" type="text" id="medium_size_h" value="<?php form_option('medium_size_h'); ?>" class="small-text" />
+<input name="medium_size_h" type="number" step="1" min="0" id="medium_size_h" value="<?php form_option('medium_size_h'); ?>" class="small-text" />
 </fieldset></td>
 </tr>
 
 </fieldset></td>
 </tr>
 
@@ -82,9 +82,9 @@ include('./admin-header.php');
 <th scope="row"><?php _e('Large size') ?></th>
 <td><fieldset><legend class="screen-reader-text"><span><?php _e('Large size'); ?></span></legend>
 <label for="large_size_w"><?php _e('Max Width'); ?></label>
 <th scope="row"><?php _e('Large size') ?></th>
 <td><fieldset><legend class="screen-reader-text"><span><?php _e('Large size'); ?></span></legend>
 <label for="large_size_w"><?php _e('Max Width'); ?></label>
-<input name="large_size_w" type="text" id="large_size_w" value="<?php form_option('large_size_w'); ?>" class="small-text" />
+<input name="large_size_w" type="number" step="1" min="0" id="large_size_w" value="<?php form_option('large_size_w'); ?>" class="small-text" />
 <label for="large_size_h"><?php _e('Max Height'); ?></label>
 <label for="large_size_h"><?php _e('Max Height'); ?></label>
-<input name="large_size_h" type="text" id="large_size_h" value="<?php form_option('large_size_h'); ?>" class="small-text" />
+<input name="large_size_h" type="number" step="1" min="0" id="large_size_h" value="<?php form_option('large_size_h'); ?>" class="small-text" />
 </fieldset></td>
 </tr>
 
 </fieldset></td>
 </tr>
 
@@ -106,10 +106,12 @@ include('./admin-header.php');
 <th scope="row"><?php _e('Maximum embed size') ?></th>
 <td>
 <label for="embed_size_w"><?php _e('Width'); ?></label>
 <th scope="row"><?php _e('Maximum embed size') ?></th>
 <td>
 <label for="embed_size_w"><?php _e('Width'); ?></label>
-<input name="embed_size_w" type="text" id="embed_size_w" value="<?php form_option('embed_size_w'); ?>" class="small-text" />
+<input name="embed_size_w" type="number" step="1" min="0" id="embed_size_w" value="<?php form_option('embed_size_w'); ?>" class="small-text" />
 <label for="embed_size_h"><?php _e('Height'); ?></label>
 <label for="embed_size_h"><?php _e('Height'); ?></label>
-<input name="embed_size_h" type="text" id="embed_size_h" value="<?php form_option('embed_size_h'); ?>" class="small-text" />
-<?php if ( !empty($content_width) ) echo '<br />' . __("If the width value is left blank, embeds will default to the max width of your theme."); ?>
+<input name="embed_size_h" type="number" step="1" min="0" id="embed_size_h" value="<?php form_option('embed_size_h'); ?>" class="small-text" />
+<?php if ( ! empty( $content_width ) )
+       echo '<p class="description">' . __( 'If the width value is left blank, embeds will default to the max width of your theme.' ) . '</p>';
+?>
 </td>
 </tr>
 
 </td>
 </tr>
 
@@ -122,14 +124,14 @@ include('./admin-header.php');
 <tr valign="top">
 <th scope="row"><label for="upload_path"><?php _e('Store uploads in this folder'); ?></label></th>
 <td><input name="upload_path" type="text" id="upload_path" value="<?php echo esc_attr(get_option('upload_path')); ?>" class="regular-text code" />
 <tr valign="top">
 <th scope="row"><label for="upload_path"><?php _e('Store uploads in this folder'); ?></label></th>
 <td><input name="upload_path" type="text" id="upload_path" value="<?php echo esc_attr(get_option('upload_path')); ?>" class="regular-text code" />
-<span class="description"><?php _e('Default is <code>wp-content/uploads</code>'); ?></span>
+<p class="description"><?php _e('Default is <code>wp-content/uploads</code>'); ?></p>
 </td>
 </tr>
 
 <tr valign="top">
 <th scope="row"><label for="upload_url_path"><?php _e('Full URL path to files'); ?></label></th>
 <td><input name="upload_url_path" type="text" id="upload_url_path" value="<?php echo esc_attr( get_option('upload_url_path')); ?>" class="regular-text code" />
 </td>
 </tr>
 
 <tr valign="top">
 <th scope="row"><label for="upload_url_path"><?php _e('Full URL path to files'); ?></label></th>
 <td><input name="upload_url_path" type="text" id="upload_url_path" value="<?php echo esc_attr( get_option('upload_url_path')); ?>" class="regular-text code" />
-<span class="description"><?php _e('Configuring this is optional. By default, it should be blank.'); ?></span>
+<p class="description"><?php _e('Configuring this is optional. By default, it should be blank.'); ?></p>
 </td>
 </tr>
 
 </td>
 </tr>
 
index 7db14487f12bebbe9f7c01944ce18c0f872e3a3a..9ccb62f263753ecee97cd24fdcf5d1ff2b86dcc5 100644 (file)
@@ -140,19 +140,18 @@ if ( $wp_rewrite->using_index_permalinks() )
 else
        $usingpi = false;
 
 else
        $usingpi = false;
 
-$wp_rewrite->flush_rules();
-
+flush_rewrite_rules();
 
 if (isset($_POST['submit'])) : ?>
 <div id="message" class="updated"><p><?php
 if ( ! is_multisite() ) {
        if ( $iis7_permalinks ) {
                if ( $permalink_structure && ! $usingpi && ! $writable )
 
 if (isset($_POST['submit'])) : ?>
 <div id="message" class="updated"><p><?php
 if ( ! is_multisite() ) {
        if ( $iis7_permalinks ) {
                if ( $permalink_structure && ! $usingpi && ! $writable )
-                       _e('You should update your web.config now');
+                       _e('You should update your web.config now.');
                else if ( $permalink_structure && ! $usingpi && $writable )
                        _e('Permalink structure updated. Remove write access on web.config file now!');
                else
                else if ( $permalink_structure && ! $usingpi && $writable )
                        _e('Permalink structure updated. Remove write access on web.config file now!');
                else
-                       _e('Permalink structure updated');
+                       _e('Permalink structure updated.');
        } else {
                if ( $permalink_structure && ! $usingpi && ! $writable )
                        _e('You should update your .htaccess now.');
        } else {
                if ( $permalink_structure && ! $usingpi && ! $writable )
                        _e('You should update your .htaccess now.');
@@ -226,11 +225,14 @@ $structures = array(
 </table>
 
 <h3><?php _e('Optional'); ?></h3>
 </table>
 
 <h3><?php _e('Optional'); ?></h3>
-<?php if ( $is_apache || $iis7_permalinks ) : ?>
-       <p><?php _e('If you like, you may enter custom structures for your category and tag <abbr title="Universal Resource Locator">URL</abbr>s here. For example, using <kbd>topics</kbd> as your category base would make your category links like <code>http://example.org/topics/uncategorized/</code>. If you leave these blank the defaults will be used.') ?></p>
-<?php else : ?>
-       <p><?php _e('If you like, you may enter custom structures for your category and tag <abbr title="Universal Resource Locator">URL</abbr>s here. For example, using <code>topics</code> as your category base would make your category links like <code>http://example.org/index.php/topics/uncategorized/</code>. If you leave these blank the defaults will be used.') ?></p>
-<?php endif; ?>
+<?php
+$suffix = '';
+if ( ! $is_apache && ! $iis7_permalinks )
+       $suffix = 'index.php/';
+?>
+<p><?php
+/* translators: %s is a placeholder that must come at the start of the URL path. */
+printf( __('If you like, you may enter custom structures for your category and tag <abbr title="Universal Resource Locator">URL</abbr>s here. For example, using <code>topics</code> as your category base would make your category links like <code>http://example.org/%stopics/uncategorized/</code>. If you leave these blank the defaults will be used.'), $suffix ); ?></p>
 
 <table class="form-table">
        <tr>
 
 <table class="form-table">
        <tr>
@@ -257,14 +259,14 @@ $structures = array(
 <?php wp_nonce_field('update-permalink') ?>
        <p><textarea rows="9" class="large-text readonly" name="rules" id="rules" readonly="readonly"><?php echo esc_textarea( $wp_rewrite->iis7_url_rewrite_rules() ); ?></textarea></p>
 </form>
 <?php wp_nonce_field('update-permalink') ?>
        <p><textarea rows="9" class="large-text readonly" name="rules" id="rules" readonly="readonly"><?php echo esc_textarea( $wp_rewrite->iis7_url_rewrite_rules() ); ?></textarea></p>
 </form>
-<p><?php _e('If you temporarily make your <code>web.config</code> file writable for us to generate rewrite rules automatically, do not forget to revert the permissions after rule has been saved.')  ?></p>
+<p><?php _e('If you temporarily make your <code>web.config</code> file writable for us to generate rewrite rules automatically, do not forget to revert the permissions after rule has been saved.') ?></p>
                <?php else : ?>
 <p><?php _e('If the root directory of your site were <a href="http://codex.wordpress.org/Changing_File_Permissions">writable</a>, we could do this automatically, but it isn&#8217;t so this is the url rewrite rule you should have in your <code>web.config</code> file. Create a new file, called <code>web.config</code> in the root directory of your site. Click in the field and press <kbd>CTRL + a</kbd> to select all. Then insert this code into the <code>web.config</code> file.') ?></p>
 <form action="options-permalink.php" method="post">
 <?php wp_nonce_field('update-permalink') ?>
        <p><textarea rows="18" class="large-text readonly" name="rules" id="rules" readonly="readonly"><?php echo esc_textarea( $wp_rewrite->iis7_url_rewrite_rules(true) ); ?></textarea></p>
 </form>
                <?php else : ?>
 <p><?php _e('If the root directory of your site were <a href="http://codex.wordpress.org/Changing_File_Permissions">writable</a>, we could do this automatically, but it isn&#8217;t so this is the url rewrite rule you should have in your <code>web.config</code> file. Create a new file, called <code>web.config</code> in the root directory of your site. Click in the field and press <kbd>CTRL + a</kbd> to select all. Then insert this code into the <code>web.config</code> file.') ?></p>
 <form action="options-permalink.php" method="post">
 <?php wp_nonce_field('update-permalink') ?>
        <p><textarea rows="18" class="large-text readonly" name="rules" id="rules" readonly="readonly"><?php echo esc_textarea( $wp_rewrite->iis7_url_rewrite_rules(true) ); ?></textarea></p>
 </form>
-<p><?php _e('If you temporarily make your site&#8217;s root directory writable for us to generate the <code>web.config</code> file automatically, do not forget to revert the permissions after the file has been created.')  ?></p>
+<p><?php _e('If you temporarily make your site&#8217;s root directory writable for us to generate the <code>web.config</code> file automatically, do not forget to revert the permissions after the file has been created.') ?></p>
                <?php endif; ?>
        <?php endif; ?>
 <?php else :
                <?php endif; ?>
        <?php endif; ?>
 <?php else :
index e87348095cd0ee9bbda82dd1bc7ca596b21e32db..28897c18d0a73785ec815cedd94d1407600ab46b 100644 (file)
@@ -105,17 +105,17 @@ else :
 <tr valign="top">
 <th scope="row"><label for="posts_per_page"><?php _e( 'Blog pages show at most' ); ?></label></th>
 <td>
 <tr valign="top">
 <th scope="row"><label for="posts_per_page"><?php _e( 'Blog pages show at most' ); ?></label></th>
 <td>
-<input name="posts_per_page" type="text" id="posts_per_page" value="<?php form_option( 'posts_per_page' ); ?>" class="small-text" /> <?php _e( 'posts' ); ?>
+<input name="posts_per_page" type="number" step="1" min="1" id="posts_per_page" value="<?php form_option( 'posts_per_page' ); ?>" class="small-text" /> <?php _e( 'posts' ); ?>
 </td>
 </tr>
 <tr valign="top">
 <th scope="row"><label for="posts_per_rss"><?php _e( 'Syndication feeds show the most recent' ); ?></label></th>
 </td>
 </tr>
 <tr valign="top">
 <th scope="row"><label for="posts_per_rss"><?php _e( 'Syndication feeds show the most recent' ); ?></label></th>
-<td><input name="posts_per_rss" type="text" id="posts_per_rss" value="<?php form_option( 'posts_per_rss' ); ?>" class="small-text" /> <?php _e( 'items' ); ?></td>
+<td><input name="posts_per_rss" type="number" step="1" min="1" id="posts_per_rss" value="<?php form_option( 'posts_per_rss' ); ?>" class="small-text" /> <?php _e( 'items' ); ?></td>
 </tr>
 <tr valign="top">
 <th scope="row"><?php _e( 'For each article in a feed, show' ); ?> </th>
 <td><fieldset><legend class="screen-reader-text"><span><?php _e( 'For each article in a feed, show' ); ?> </span></legend>
 </tr>
 <tr valign="top">
 <th scope="row"><?php _e( 'For each article in a feed, show' ); ?> </th>
 <td><fieldset><legend class="screen-reader-text"><span><?php _e( 'For each article in a feed, show' ); ?> </span></legend>
-<p><label><input name="rss_use_excerpt"  type="radio" value="0" <?php checked( 0, get_option( 'rss_use_excerpt' ) ); ?>        /> <?php _e( 'Full text' ); ?></label><br />
+<p><label><input name="rss_use_excerpt" type="radio" value="0" <?php checked( 0, get_option( 'rss_use_excerpt' ) ); ?> /> <?php _e( 'Full text' ); ?></label><br />
 <label><input name="rss_use_excerpt" type="radio" value="1" <?php checked( 1, get_option( 'rss_use_excerpt' ) ); ?> /> <?php _e( 'Summary' ); ?></label></p>
 </fieldset></td>
 </tr>
 <label><input name="rss_use_excerpt" type="radio" value="1" <?php checked( 1, get_option( 'rss_use_excerpt' ) ); ?> /> <?php _e( 'Summary' ); ?></label></p>
 </fieldset></td>
 </tr>
@@ -123,7 +123,7 @@ else :
 <tr valign="top">
 <th scope="row"><label for="blog_charset"><?php _e( 'Encoding for pages and feeds' ); ?></label></th>
 <td><input name="blog_charset" type="text" id="blog_charset" value="<?php form_option( 'blog_charset' ); ?>" class="regular-text" />
 <tr valign="top">
 <th scope="row"><label for="blog_charset"><?php _e( 'Encoding for pages and feeds' ); ?></label></th>
 <td><input name="blog_charset" type="text" id="blog_charset" value="<?php form_option( 'blog_charset' ); ?>" class="regular-text" />
-<span class="description"><?php _e( 'The <a href="http://codex.wordpress.org/Glossary#Character_set">character encoding</a> of your site (UTF-8 is recommended, if you are adventurous there are some <a href="http://en.wikipedia.org/wiki/Character_set">other encodings</a>)' ); ?></span></td>
+<p class="description"><?php _e( 'The <a href="http://codex.wordpress.org/Glossary#Character_set">character encoding</a> of your site (UTF-8 is recommended, if you are adventurous there are some <a href="http://en.wikipedia.org/wiki/Character_set">other encodings</a>)' ); ?></p></td>
 </tr>
 <?php do_settings_fields( 'reading', 'default' ); ?>
 </table>
 </tr>
 <?php do_settings_fields( 'reading', 'default' ); ?>
 </table>
index 15fd1d1115fe742675f419f64efde24ff52e6510..fdf3a08f78d67844201c67db6a0104ded87fd254 100644 (file)
@@ -28,11 +28,10 @@ get_current_screen()->add_help_tab( array(
        'content' => '<p>' . __('Press This is a bookmarklet that makes it easy to blog about something you come across on the web. You can use it to just grab a link, or to post an excerpt. Press This will even allow you to choose from images included on the page and use them in your post. Just drag the Press This link on this screen to your bookmarks bar in your browser, and you&#8217;ll be on your way to easier content creation. Clicking on it while on another website opens a popup window with all these options.') . '</p>',
 ) );
 
        'content' => '<p>' . __('Press This is a bookmarklet that makes it easy to blog about something you come across on the web. You can use it to just grab a link, or to post an excerpt. Press This will even allow you to choose from images included on the page and use them in your post. Just drag the Press This link on this screen to your bookmarks bar in your browser, and you&#8217;ll be on your way to easier content creation. Clicking on it while on another website opens a popup window with all these options.') . '</p>',
 ) );
 
-
 if ( is_multisite() ) {
        $post_email_help = '<p>' . __('Due to security issues, you cannot use Post By Email on Multisite Installs.') . '</p>';
 } else {
 if ( is_multisite() ) {
        $post_email_help = '<p>' . __('Due to security issues, you cannot use Post By Email on Multisite Installs.') . '</p>';
 } else {
-       $post_email_help = '<p>' . __('Post via email settings allow you to send your WordPress install an email with the content of your post.  You must set up a secret e-mail account with POP3 access to use this, and any mail received at this address will be posted, so it&#8217;s a good idea to keep this address very secret.') . '</p>';
+       $post_email_help = '<p>' . __('Post via email settings allow you to send your WordPress install an email with the content of your post. You must set up a secret e-mail account with POP3 access to use this, and any mail received at this address will be posted, so it&#8217;s a good idea to keep this address very secret.') . '</p>';
 }
 
 get_current_screen()->add_help_tab( array(
 }
 
 get_current_screen()->add_help_tab( array(
@@ -120,7 +119,6 @@ wp_dropdown_categories(array('hide_empty' => 0, 'name' => 'default_link_category
 <?php do_settings_fields('writing', 'default'); ?>
 </table>
 
 <?php do_settings_fields('writing', 'default'); ?>
 </table>
 
-
 <h3 class="title"><?php _e('Press This') ?></h3>
 <p><?php _e('Press This is a bookmarklet: a little app that runs in your browser and lets you grab bits of the web.');?></p>
 <p><?php _e('Use Press This to clip text, images and videos from any web page. Then edit and add more straight from Press This before you save or publish it in a post on your site.'); ?></p>
 <h3 class="title"><?php _e('Press This') ?></h3>
 <p><?php _e('Press This is a bookmarklet: a little app that runs in your browser and lets you grab bits of the web.');?></p>
 <p><?php _e('Use Press This to clip text, images and videos from any web page. Then edit and add more straight from Press This before you save or publish it in a post on your site.'); ?></p>
@@ -145,12 +143,12 @@ wp_dropdown_categories(array('hide_empty' => 0, 'name' => 'default_link_category
 </tr>
 <tr valign="top">
 <th scope="row"><label for="mailserver_login"><?php _e('Login Name') ?></label></th>
 </tr>
 <tr valign="top">
 <th scope="row"><label for="mailserver_login"><?php _e('Login Name') ?></label></th>
-<td><input name="mailserver_login" type="text" id="mailserver_login" value="<?php form_option('mailserver_login'); ?>" class="regular-text" /></td>
+<td><input name="mailserver_login" type="text" id="mailserver_login" value="<?php form_option('mailserver_login'); ?>" class="regular-text ltr" /></td>
 </tr>
 <tr valign="top">
 <th scope="row"><label for="mailserver_pass"><?php _e('Password') ?></label></th>
 <td>
 </tr>
 <tr valign="top">
 <th scope="row"><label for="mailserver_pass"><?php _e('Password') ?></label></th>
 <td>
-<input name="mailserver_pass" type="text" id="mailserver_pass" value="<?php form_option('mailserver_pass'); ?>" class="regular-text" />
+<input name="mailserver_pass" type="text" id="mailserver_pass" value="<?php form_option('mailserver_pass'); ?>" class="regular-text ltr" />
 </td>
 </tr>
 <tr valign="top">
 </td>
 </tr>
 <tr valign="top">
index 8eb283a84bfa673ff511b5276bc292c021418f0c..e141995cef94318b960198453f72bd60ab99ca8a 100644 (file)
@@ -151,7 +151,7 @@ if ( 'update' == $action ) {
        }
 
        /**
        }
 
        /**
-        *  Handle settings errors and return to options page
+        * Handle settings errors and return to options page
         */
        // If no settings errors were registered add a general 'updated' message.
        if ( !count( get_settings_errors() ) )
         */
        // If no settings errors were registered add a general 'updated' message.
        if ( !count( get_settings_errors() ) )
@@ -221,7 +221,5 @@ endforeach;
   </form>
 </div>
 
   </form>
 </div>
 
-
 <?php
 include('./admin-footer.php');
 <?php
 include('./admin-footer.php');
-?>
index ef2c641010da0adbe9128103cf43005d582e5013..b7758d225d7d61da226a43c0a9732aae08d9da98 100644 (file)
@@ -65,7 +65,8 @@ case 'update':
                        if ( is_plugin_active($file) )
                                deactivate_plugins($file, true);
 
                        if ( is_plugin_active($file) )
                                deactivate_plugins($file, true);
 
-                       update_option('recently_activated', array($file => time()) + (array)get_option('recently_activated'));
+                       if ( ! is_network_admin() )
+                               update_option( 'recently_activated', array( $file => time() ) + (array) get_option( 'recently_activated' ) );
 
                        wp_redirect(add_query_arg('_wpnonce', wp_create_nonce('edit-plugin-test_' . $file), "plugin-editor.php?file=$file&liveupdate=1&scrollto=$scrollto&networkwide=" . $network_wide));
                        exit;
 
                        wp_redirect(add_query_arg('_wpnonce', wp_create_nonce('edit-plugin-test_' . $file), "plugin-editor.php?file=$file&liveupdate=1&scrollto=$scrollto&networkwide=" . $network_wide));
                        exit;
@@ -236,7 +237,7 @@ foreach ( $plugin_files as $plugin_file ) :
                <?php endif; ?>
 <?php if ( is_writeable($real_file) ) : ?>
        <?php if ( in_array( $file, (array) get_option( 'active_plugins', array() ) ) ) { ?>
                <?php endif; ?>
 <?php if ( is_writeable($real_file) ) : ?>
        <?php if ( in_array( $file, (array) get_option( 'active_plugins', array() ) ) ) { ?>
-               <p><?php _e('<strong>Warning:</strong> Making changes to active plugins is not recommended.  If your changes cause a fatal error, the plugin will be automatically deactivated.'); ?></p>
+               <p><?php _e('<strong>Warning:</strong> Making changes to active plugins is not recommended. If your changes cause a fatal error, the plugin will be automatically deactivated.'); ?></p>
        <?php } ?>
        <p class="submit">
        <?php
        <?php } ?>
        <p class="submit">
        <?php
index 87f563b09a83186dfc6bc0e9a07325ce55118d50..d341541ce3f0679444d2bdf6a5d94ca8c1c4ae17 100644 (file)
@@ -46,7 +46,7 @@ get_current_screen()->add_help_tab( array(
 'title'                => __('Adding Plugins'),
 'content'      =>
        '<p>' . __('If you know what you&#8217;re looking for, Search is your best bet. The Search screen has options to search the WordPress.org Plugin Directory for a particular Term, Author, or Tag. You can also search the directory by selecting a popular tags. Tags in larger type mean more plugins have been labeled with that tag.') . '</p>' .
 'title'                => __('Adding Plugins'),
 'content'      =>
        '<p>' . __('If you know what you&#8217;re looking for, Search is your best bet. The Search screen has options to search the WordPress.org Plugin Directory for a particular Term, Author, or Tag. You can also search the directory by selecting a popular tags. Tags in larger type mean more plugins have been labeled with that tag.') . '</p>' .
-       '<p>' . __('If you just want to get an idea of what&#8217;s available, you can browse Featured, Popular, Newest, and Recently Updated plugins by using the links in the upper left of the screen. These sections rotate regularly.') . '</p>' .
+       '<p>' . __('If you just want to get an idea of what&#8217;s available, you can browse Featured, Popular, and Newest plugins by using the links in the upper left of the screen. These sections rotate regularly.') . '</p>' .
        '<p>' . __('If you want to install a plugin that you&#8217;ve downloaded elsewhere, click the Upload in the upper left. You will be prompted to upload the .zip package, and once uploaded, you can activate the new plugin.') . '</p>'
 ) );
 
        '<p>' . __('If you want to install a plugin that you&#8217;ve downloaded elsewhere, click the Upload in the upper left. You will be prompted to upload the .zip package, and once uploaded, you can activate the new plugin.') . '</p>'
 ) );
 
@@ -69,4 +69,3 @@ include(ABSPATH . 'wp-admin/admin-header.php');
 </div>
 <?php
 include(ABSPATH . 'wp-admin/admin-footer.php');
 </div>
 <?php
 include(ABSPATH . 'wp-admin/admin-footer.php');
-
index d339899bb21720b407e5356d7646ad54c2860edf..1acad9cf4de9f37f68a8c921807ec3dcd315c61d 100644 (file)
@@ -12,7 +12,7 @@ require_once('./admin.php');
 if ( is_multisite() ) {
        $menu_perms = get_site_option( 'menu_items', array() );
 
 if ( is_multisite() ) {
        $menu_perms = get_site_option( 'menu_items', array() );
 
-       if ( empty( $menu_perms['plugins'] ) && ! is_super_admin() )
+       if ( empty( $menu_perms['plugins'] ) && ! current_user_can( 'manage_network_plugins' ) )
                wp_die( __( 'Cheatin&#8217; uh?' ) );
 }
 
                wp_die( __( 'Cheatin&#8217; uh?' ) );
 }
 
@@ -31,9 +31,6 @@ $s = isset($_REQUEST['s']) ? urlencode($_REQUEST['s']) : '';
 $_SERVER['REQUEST_URI'] = remove_query_arg(array('error', 'deleted', 'activate', 'activate-multi', 'deactivate', 'deactivate-multi', '_error_nonce'), $_SERVER['REQUEST_URI']);
 
 if ( $action ) {
 $_SERVER['REQUEST_URI'] = remove_query_arg(array('error', 'deleted', 'activate', 'activate-multi', 'deactivate', 'deactivate-multi', '_error_nonce'), $_SERVER['REQUEST_URI']);
 
 if ( $action ) {
-       $network_wide = false;
-       if ( ( isset( $_GET['networkwide'] ) || 'network-activate-selected' == $action ) && is_multisite() && current_user_can( 'manage_network_plugins' ) )
-               $network_wide = true;
 
        switch ( $action ) {
                case 'activate':
 
        switch ( $action ) {
                case 'activate':
@@ -42,7 +39,7 @@ if ( $action ) {
 
                        check_admin_referer('activate-plugin_' . $plugin);
 
 
                        check_admin_referer('activate-plugin_' . $plugin);
 
-                       $result = activate_plugin($plugin, self_admin_url('plugins.php?error=true&plugin=' . $plugin), $network_wide);
+                       $result = activate_plugin($plugin, self_admin_url('plugins.php?error=true&plugin=' . $plugin), is_network_admin() );
                        if ( is_wp_error( $result ) ) {
                                if ( 'unexpected_output' == $result->get_error_code() ) {
                                        $redirect = self_admin_url('plugins.php?error=true&charsout=' . strlen($result->get_error_data()) . '&plugin=' . $plugin . "&plugin_status=$status&paged=$page&s=$s");
                        if ( is_wp_error( $result ) ) {
                                if ( 'unexpected_output' == $result->get_error_code() ) {
                                        $redirect = self_admin_url('plugins.php?error=true&charsout=' . strlen($result->get_error_data()) . '&plugin=' . $plugin . "&plugin_status=$status&paged=$page&s=$s");
@@ -53,11 +50,12 @@ if ( $action ) {
                                }
                        }
 
                                }
                        }
 
-                       $recent = (array)get_option('recently_activated');
-                       if ( isset($recent[ $plugin ]) ) {
-                               unset($recent[ $plugin ]);
-                               update_option('recently_activated', $recent);
+                       if ( ! is_network_admin() ) {
+                               $recent = (array) get_option( 'recently_activated' );
+                               unset( $recent[ $plugin ] );
+                               update_option( 'recently_activated', $recent );
                        }
                        }
+
                        if ( isset($_GET['from']) && 'import' == $_GET['from'] ) {
                                wp_redirect( self_admin_url("import.php?import=" . str_replace('-importer', '', dirname($plugin))) ); // overrides the ?error=true one above and redirects to the Imports page, stripping the -importer suffix
                        } else {
                        if ( isset($_GET['from']) && 'import' == $_GET['from'] ) {
                                wp_redirect( self_admin_url("import.php?import=" . str_replace('-importer', '', dirname($plugin))) ); // overrides the ?error=true one above and redirects to the Imports page, stripping the -importer suffix
                        } else {
@@ -66,7 +64,6 @@ if ( $action ) {
                        exit;
                        break;
                case 'activate-selected':
                        exit;
                        break;
                case 'activate-selected':
-               case 'network-activate-selected':
                        if ( ! current_user_can('activate_plugins') )
                                wp_die(__('You do not have sufficient permissions to activate plugins for this site.'));
 
                        if ( ! current_user_can('activate_plugins') )
                                wp_die(__('You do not have sufficient permissions to activate plugins for this site.'));
 
@@ -75,7 +72,7 @@ if ( $action ) {
                        $plugins = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array();
 
                        // Only activate plugins which are not already active.
                        $plugins = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array();
 
                        // Only activate plugins which are not already active.
-                       $check = $network_wide ? 'is_plugin_active_for_network' : 'is_plugin_active';
+                       $check = is_network_admin() ? 'is_plugin_active_for_network' : 'is_plugin_active';
                        foreach ( $plugins as $i => $plugin )
                                if ( $check( $plugin ) )
                                        unset( $plugins[ $i ] );
                        foreach ( $plugins as $i => $plugin )
                                if ( $check( $plugin ) )
                                        unset( $plugins[ $i ] );
@@ -85,14 +82,14 @@ if ( $action ) {
                                exit;
                        }
 
                                exit;
                        }
 
-                       activate_plugins($plugins, self_admin_url('plugins.php?error=true'), $network_wide);
-
-                       $recent = (array)get_option('recently_activated');
-                       foreach ( $plugins as $plugin => $time)
-                               if ( isset($recent[ $plugin ]) )
-                                       unset($recent[ $plugin ]);
+                       activate_plugins($plugins, self_admin_url('plugins.php?error=true'), is_network_admin() );
 
 
-                       update_option('recently_activated', $recent);
+                       if ( ! is_network_admin() ) {
+                               $recent = (array) get_option('recently_activated' );
+                               foreach ( $plugins as $plugin )
+                                       unset( $recent[ $plugin ] );
+                               update_option( 'recently_activated', $recent );
+                       }
 
                        wp_redirect( self_admin_url("plugins.php?activate-multi=true&plugin_status=$status&paged=$page&s=$s") );
                        exit;
 
                        wp_redirect( self_admin_url("plugins.php?activate-multi=true&plugin_status=$status&paged=$page&s=$s") );
                        exit;
@@ -117,7 +114,6 @@ if ( $action ) {
                        screen_icon();
                        echo '<h2>' . esc_html( $title ) . '</h2>';
 
                        screen_icon();
                        echo '<h2>' . esc_html( $title ) . '</h2>';
 
-
                        $url = self_admin_url('update.php?action=update-selected&amp;plugins=' . urlencode( join(',', $plugins) ));
                        $url = wp_nonce_url($url, 'bulk-update-plugins');
 
                        $url = self_admin_url('update.php?action=update-selected&amp;plugins=' . urlencode( join(',', $plugins) ));
                        $url = wp_nonce_url($url, 'bulk-update-plugins');
 
@@ -154,12 +150,15 @@ if ( $action ) {
                                wp_die(__('You do not have sufficient permissions to deactivate plugins for this site.'));
 
                        check_admin_referer('deactivate-plugin_' . $plugin);
                                wp_die(__('You do not have sufficient permissions to deactivate plugins for this site.'));
 
                        check_admin_referer('deactivate-plugin_' . $plugin);
+
                        if ( ! is_network_admin() && is_plugin_active_for_network( $plugin ) ) {
                                wp_redirect( self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s") );
                                exit;
                        }
                        if ( ! is_network_admin() && is_plugin_active_for_network( $plugin ) ) {
                                wp_redirect( self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s") );
                                exit;
                        }
-                       deactivate_plugins($plugin);
-                       update_option('recently_activated', array($plugin => time()) + (array)get_option('recently_activated'));
+
+                       deactivate_plugins( $plugin, false, is_network_admin() );
+                       if ( ! is_network_admin() )
+                               update_option( 'recently_activated', array( $plugin => time() ) + (array) get_option( 'recently_activated' ) );
                        if ( headers_sent() )
                                echo "<meta http-equiv='refresh' content='" . esc_attr( "0;url=plugins.php?deactivate=true&plugin_status=$status&paged=$page&s=$s" ) . "' />";
                        else
                        if ( headers_sent() )
                                echo "<meta http-equiv='refresh' content='" . esc_attr( "0;url=plugins.php?deactivate=true&plugin_status=$status&paged=$page&s=$s" ) . "' />";
                        else
@@ -185,13 +184,15 @@ if ( $action ) {
                                exit;
                        }
 
                                exit;
                        }
 
-                       deactivate_plugins($plugins);
+                       deactivate_plugins( $plugins, false, is_network_admin() );
 
 
-                       $deactivated = array();
-                       foreach ( $plugins as $plugin )
-                               $deactivated[ $plugin ] = time();
+                       if ( ! is_network_admin() ) {
+                               $deactivated = array();
+                               foreach ( $plugins as $plugin )
+                                       $deactivated[ $plugin ] = time();
+                               update_option( 'recently_activated', $deactivated + (array) get_option( 'recently_activated' ) );
+                       }
 
 
-                       update_option('recently_activated', $deactivated + (array)get_option('recently_activated'));
                        wp_redirect( self_admin_url("plugins.php?deactivate-multi=true&plugin_status=$status&paged=$page&s=$s") );
                        exit;
                        break;
                        wp_redirect( self_admin_url("plugins.php?deactivate-multi=true&plugin_status=$status&paged=$page&s=$s") );
                        exit;
                        break;
@@ -316,7 +317,8 @@ if ( $action ) {
                        exit;
                        break;
                case 'clear-recent-list':
                        exit;
                        break;
                case 'clear-recent-list':
-                       update_option('recently_activated', array());
+                       if ( ! is_network_admin() )
+                               update_option( 'recently_activated', array() );
                        break;
        }
 }
                        break;
        }
 }
@@ -365,7 +367,7 @@ if ( !empty($invalid) )
        if ( isset( $_GET['main'] ) )
                $errmsg = __( 'You cannot delete a plugin while it is active on the main site.' );
        elseif ( isset($_GET['charsout']) )
        if ( isset( $_GET['main'] ) )
                $errmsg = __( 'You cannot delete a plugin while it is active on the main site.' );
        elseif ( isset($_GET['charsout']) )
-               $errmsg = sprintf(__('The plugin generated %d characters of <strong>unexpected output</strong> during activation.  If you notice &#8220;headers already sent&#8221; messages, problems with syndication feeds or other issues, try deactivating or removing this plugin.'), $_GET['charsout']);
+               $errmsg = sprintf(__('The plugin generated %d characters of <strong>unexpected output</strong> during activation. If you notice &#8220;headers already sent&#8221; messages, problems with syndication feeds or other issues, try deactivating or removing this plugin.'), $_GET['charsout']);
        else
                $errmsg = __('Plugin could not be activated because it triggered a <strong>fatal error</strong>.');
        ?>
        else
                $errmsg = __('Plugin could not be activated because it triggered a <strong>fatal error</strong>.');
        ?>
@@ -402,7 +404,7 @@ if ( !empty($invalid) )
 <?php screen_icon(); ?>
 <h2><?php echo esc_html( $title );
 if ( ( ! is_multisite() || is_network_admin() ) && current_user_can('install_plugins') ) { ?>
 <?php screen_icon(); ?>
 <h2><?php echo esc_html( $title );
 if ( ( ! is_multisite() || is_network_admin() ) && current_user_can('install_plugins') ) { ?>
-<a href="<?php echo self_admin_url( 'plugin-install.php' ); ?>" class="add-new-h2"><?php echo esc_html_x('Add New', 'plugin'); ?></a>
+ <a href="<?php echo self_admin_url( 'plugin-install.php' ); ?>" class="add-new-h2"><?php echo esc_html_x('Add New', 'plugin'); ?></a>
 <?php }
 if ( $s )
        printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', esc_html( $s ) ); ?>
 <?php }
 if ( $s )
        printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', esc_html( $s ) ); ?>
index a5d74e8b5be9d821d27864303a32c6d18ac79b55..deb41907e27a15a4217b929e39254f80d9b91c9b 100644 (file)
@@ -39,6 +39,10 @@ $editing = true;
 if ( ! current_user_can( $post_type_object->cap->edit_posts ) )
        wp_die( __( 'Cheatin&#8217; uh?' ) );
 
 if ( ! current_user_can( $post_type_object->cap->edit_posts ) )
        wp_die( __( 'Cheatin&#8217; uh?' ) );
 
+// Schedule auto-draft cleanup
+if ( ! wp_next_scheduled( 'wp_scheduled_auto_draft_delete' ) )
+       wp_schedule_event( time(), 'daily', 'wp_scheduled_auto_draft_delete' );
+
 wp_enqueue_script('autosave');
 
 // Show post form.
 wp_enqueue_script('autosave');
 
 // Show post form.
@@ -46,4 +50,3 @@ $post = get_default_post_to_edit( $post_type, true );
 $post_ID = $post->ID;
 include('edit-form-advanced.php');
 include('./admin-footer.php');
 $post_ID = $post->ID;
 include('edit-form-advanced.php');
 include('./admin-footer.php');
-?>
index c3bca7020f3c117a271fb32ccadb4789f88cb0e2..035a185540a119ad5afef3e5d40a3c2797a27294 100644 (file)
@@ -134,15 +134,15 @@ case 'edit':
        if ( empty($post->ID) )
                wp_die( __('You attempted to edit an item that doesn&#8217;t exist. Perhaps it was deleted?') );
 
        if ( empty($post->ID) )
                wp_die( __('You attempted to edit an item that doesn&#8217;t exist. Perhaps it was deleted?') );
 
+       if ( null == $post_type_object )
+               wp_die( __('Unknown post type.') );
+
        if ( !current_user_can($post_type_object->cap->edit_post, $post_id) )
                wp_die( __('You are not allowed to edit this item.') );
 
        if ( 'trash' == $post->post_status )
                wp_die( __('You can&#8217;t edit this item because it is in the Trash. Please restore it and try again.') );
 
        if ( !current_user_can($post_type_object->cap->edit_post, $post_id) )
                wp_die( __('You are not allowed to edit this item.') );
 
        if ( 'trash' == $post->post_status )
                wp_die( __('You can&#8217;t edit this item because it is in the Trash. Please restore it and try again.') );
 
-       if ( null == $post_type_object )
-               wp_die( __('Unknown post type.') );
-
        $post_type = $post->post_type;
        if ( 'post' == $post_type ) {
                $parent_file = "edit.php";
        $post_type = $post->post_type;
        if ( 'post' == $post_type ) {
                $parent_file = "edit.php";
@@ -262,4 +262,3 @@ default:
        break;
 } // end switch
 include('./admin-footer.php');
        break;
 } // end switch
 include('./admin-footer.php');
-?>
index b84025290540df380c1bfccf648300e3ca217e36..facae8a86d33c443f0493e92eed7140ae5cf0019 100644 (file)
@@ -304,7 +304,7 @@ die;
 //<![CDATA[
 addLoadEvent = function(func){if(typeof jQuery!="undefined")jQuery(document).ready(func);else if(typeof wpOnload!='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}};
 var userSettings = {'url':'<?php echo SITECOOKIEPATH; ?>','uid':'<?php if ( ! isset($current_user) ) $current_user = wp_get_current_user(); echo $current_user->ID; ?>','time':'<?php echo time() ?>'};
 //<![CDATA[
 addLoadEvent = function(func){if(typeof jQuery!="undefined")jQuery(document).ready(func);else if(typeof wpOnload!='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}};
 var userSettings = {'url':'<?php echo SITECOOKIEPATH; ?>','uid':'<?php if ( ! isset($current_user) ) $current_user = wp_get_current_user(); echo $current_user->ID; ?>','time':'<?php echo time() ?>'};
-var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>', pagenow = 'press-this', isRtl = <?php echo (int) is_rtl(); ?>;
+var ajaxurl = '<?php echo admin_url( 'admin-ajax.php', 'relative' ); ?>', pagenow = 'press-this', isRtl = <?php echo (int) is_rtl(); ?>;
 var photostorage = false;
 //]]>
 </script>
 var photostorage = false;
 //]]>
 </script>
@@ -314,20 +314,6 @@ var photostorage = false;
        do_action('admin_print_scripts');
        do_action('admin_head');
 ?>
        do_action('admin_print_scripts');
        do_action('admin_head');
 ?>
-       <style type="text/css">
-       #message {
-               margin: 10px 0;
-       }
-       #title,
-       .press-this #wphead {
-               margin-left: 0;
-               margin-right: 0;
-       }
-       .rtl.press-this #header-logo,
-       .rtl.press-this #wphead h1 {
-               float: right;
-       }
-       </style>
        <script type="text/javascript">
        var wpActiveEditor = 'content';
 
        <script type="text/javascript">
        var wpActiveEditor = 'content';
 
@@ -365,12 +351,12 @@ var photostorage = false;
                                        <?php
                                        $content = '';
                                        if ( preg_match("/youtube\.com\/watch/i", $url) ) {
                                        <?php
                                        $content = '';
                                        if ( preg_match("/youtube\.com\/watch/i", $url) ) {
-                                               list($domain, $video_id) = split("v=", $url);
+                                               list($domain, $video_id) = explode("v=", $url);
                                                $video_id = esc_attr($video_id);
                                                $content = '<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/' . $video_id . '"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/' . $video_id . '" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>';
 
                                        } elseif ( preg_match("/vimeo\.com\/[0-9]+/i", $url) ) {
                                                $video_id = esc_attr($video_id);
                                                $content = '<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/' . $video_id . '"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/' . $video_id . '" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>';
 
                                        } elseif ( preg_match("/vimeo\.com\/[0-9]+/i", $url) ) {
-                                               list($domain, $video_id) = split(".com/", $url);
+                                               list($domain, $video_id) = explode(".com/", $url);
                                                $video_id = esc_attr($video_id);
                                                $content = '<object width="400" height="225"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=' . $video_id . '&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" />      <embed src="http://www.vimeo.com/moogaloop.swf?clip_id=' . $video_id . '&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="225"></embed></object>';
 
                                                $video_id = esc_attr($video_id);
                                                $content = '<object width="400" height="225"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=' . $video_id . '&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" />      <embed src="http://www.vimeo.com/moogaloop.swf?clip_id=' . $video_id . '&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="225"></embed></object>';
 
@@ -437,7 +423,7 @@ var photostorage = false;
                        show('video');
                <?php } elseif ( preg_match("/vimeo\.com\/[0-9]+/i", $url) ) { ?>
                        show('video');
                        show('video');
                <?php } elseif ( preg_match("/vimeo\.com\/[0-9]+/i", $url) ) { ?>
                        show('video');
-               <?php  } elseif ( preg_match("/flickr\.com/i", $url) ) { ?>
+               <?php } elseif ( preg_match("/flickr\.com/i", $url) ) { ?>
                        show('photo');
                <?php } ?>
                jQuery('#title').unbind();
                        show('photo');
                <?php } ?>
                jQuery('#title').unbind();
@@ -449,7 +435,11 @@ var photostorage = false;
        });
 </script>
 </head>
        });
 </script>
 </head>
-<body class="press-this wp-admin<?php if ( is_rtl() ) echo ' rtl'; ?>">
+<?php
+$admin_body_class = ( is_rtl() ) ? 'rtl' : '';
+$admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace( '_', '-', get_locale() ) ) );
+?>
+<body class="press-this wp-admin <?php echo $admin_body_class; ?>">
 <form action="press-this.php?action=post" method="post">
 <div id="poststuff" class="metabox-holder">
        <div id="side-sortables" class="press-this-sidebar">
 <form action="press-this.php?action=post" method="post">
 <div id="poststuff" class="metabox-holder">
        <div id="side-sortables" class="press-this-sidebar">
@@ -538,7 +528,7 @@ var photostorage = false;
                                                                        <?php echo $tax->labels->parent_item_colon; ?>
                                                                </label>
                                                                <?php wp_dropdown_categories( array( 'taxonomy' => 'category', 'hide_empty' => 0, 'name' => 'newcategory_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '&mdash; ' . $tax->labels->parent_item . ' &mdash;', 'tab_index' => 3 ) ); ?>
                                                                        <?php echo $tax->labels->parent_item_colon; ?>
                                                                </label>
                                                                <?php wp_dropdown_categories( array( 'taxonomy' => 'category', 'hide_empty' => 0, 'name' => 'newcategory_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '&mdash; ' . $tax->labels->parent_item . ' &mdash;', 'tab_index' => 3 ) ); ?>
-                                                               <input type="button" id="category-add-submit" class="add:categorychecklist:category-add button category-add-sumbit" value="<?php echo esc_attr( $tax->labels->add_new_item ); ?>" tabindex="3" />
+                                                               <input type="button" id="category-add-submit" class="add:categorychecklist:category-add button category-add-submit" value="<?php echo esc_attr( $tax->labels->add_new_item ); ?>" tabindex="3" />
                                                                <?php wp_nonce_field( 'add-category', '_ajax_nonce-add-category', false ); ?>
                                                                <span id="category-ajax-response"></span>
                                                        </p>
                                                                <?php wp_nonce_field( 'add-category', '_ajax_nonce-add-category', false ); ?>
                                                                <span id="category-ajax-response"></span>
                                                        </p>
@@ -610,7 +600,7 @@ var photostorage = false;
 
                $content = '';
                if ( $selection )
 
                $content = '';
                if ( $selection )
-                       $content .=  $selection;
+                       $content .= $selection;
 
                if ( $url ) {
                        $content .= '<p>';
 
                if ( $url ) {
                        $content .= '<p>';
index 71a1b0466ffe87817e120565c217c2cb4e8d507c..c5021f169e040c288d3ce9a7dfc9889dedce469a 100644 (file)
@@ -16,4 +16,3 @@ define('IS_PROFILE_PAGE', true);
 
 /** Load User Editing Page */
 require_once('./user-edit.php');
 
 /** Load User Editing Page */
 require_once('./user-edit.php');
-?>
index e3067ac7a22e7e4114db6ab1d54ae788703c50bf..6201b00451c1d8b447973809cd9b8ad5a1f25a39 100644 (file)
@@ -41,34 +41,39 @@ define('WP_CONTENT_DIR', ABSPATH . 'wp-content');
 define('WP_DEBUG', false);
 /**#@-*/
 
 define('WP_DEBUG', false);
 /**#@-*/
 
-require_once(ABSPATH . WPINC . '/load.php');
-require_once(ABSPATH . WPINC . '/version.php');
+require(ABSPATH . WPINC . '/load.php');
+require(ABSPATH . WPINC . '/version.php');
+
+// Also loads functions.php, plugin.php, l10n.php, pomo/mo.php (all required by setup-config.php)
+wp_load_translations_early();
+
+// Check for the required PHP version and for the MySQL extension or a database drop-in.
 wp_check_php_mysql_versions();
 wp_check_php_mysql_versions();
+
+// Turn register_globals off.
 wp_unregister_GLOBALS();
 
 require_once(ABSPATH . WPINC . '/compat.php');
 wp_unregister_GLOBALS();
 
 require_once(ABSPATH . WPINC . '/compat.php');
-require_once(ABSPATH . WPINC . '/functions.php');
 require_once(ABSPATH . WPINC . '/class-wp-error.php');
 require_once(ABSPATH . WPINC . '/formatting.php');
 require_once(ABSPATH . WPINC . '/class-wp-error.php');
 require_once(ABSPATH . WPINC . '/formatting.php');
+
+// Add magic quotes and set up $_REQUEST ( $_GET + $_POST )
 wp_magic_quotes();
 
 wp_magic_quotes();
 
-if (!file_exists(ABSPATH . 'wp-config-sample.php'))
-       wp_die('Sorry, I need a wp-config-sample.php file to work from. Please re-upload this file from your WordPress installation.');
+if ( ! file_exists( ABSPATH . 'wp-config-sample.php' ) )
+       wp_die( __( 'Sorry, I need a wp-config-sample.php file to work from. Please re-upload this file from your WordPress installation.' ) );
 
 
-$configFile = file(ABSPATH . 'wp-config-sample.php');
+$config_file = file(ABSPATH . 'wp-config-sample.php');
 
 // Check if wp-config.php has been created
 
 // Check if wp-config.php has been created
-if (file_exists(ABSPATH . 'wp-config.php'))
-       wp_die("<p>The file 'wp-config.php' already exists. If you need to reset any of the configuration items in this file, please delete it first. You may try <a href='install.php'>installing now</a>.</p>");
+if ( file_exists( ABSPATH . 'wp-config.php' ) )
+       wp_die( '<p>' . sprintf( __( "The file 'wp-config.php' already exists. If you need to reset any of the configuration items in this file, please delete it first. You may try <a href='%s'>installing now</a>." ), 'install.php' ) . '</p>' );
 
 // Check if wp-config.php exists above the root directory but is not part of another install
 
 // Check if wp-config.php exists above the root directory but is not part of another install
-if (file_exists(ABSPATH . '../wp-config.php') && ! file_exists(ABSPATH . '../wp-settings.php'))
-       wp_die("<p>The file 'wp-config.php' already exists one level above your WordPress installation. If you need to reset any of the configuration items in this file, please delete it first. You may try <a href='install.php'>installing now</a>.</p>");
+if ( file_exists(ABSPATH . '../wp-config.php' ) && ! file_exists( ABSPATH . '../wp-settings.php' ) )
+       wp_die( '<p>' . sprintf( __( "The file 'wp-config.php' already exists one level above your WordPress installation. If you need to reset any of the configuration items in this file, please delete it first. You may try <a href='install.php'>installing now</a>."), 'install.php' ) . '</p>' );
 
 
-if (isset($_GET['step']))
-       $step = $_GET['step'];
-else
-       $step = 0;
+$step = isset( $_GET['step'] ) ? (int) $_GET['step'] : 0;
 
 /**
  * Display setup wp-config.php file header.
 
 /**
  * Display setup wp-config.php file header.
@@ -79,18 +84,20 @@ else
  * @subpackage Installer_WP_Config
  */
 function display_header() {
  * @subpackage Installer_WP_Config
  */
 function display_header() {
+       global $wp_version;
+
        header( 'Content-Type: text/html; charset=utf-8' );
 ?>
 <!DOCTYPE html>
        header( 'Content-Type: text/html; charset=utf-8' );
 ?>
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml"<?php if ( is_rtl() ) echo ' dir="rtl"'; ?>>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<title>WordPress &rsaquo; Setup Configuration File</title>
-<link rel="stylesheet" href="css/install.css" type="text/css" />
+<title><?php _e( 'WordPress &rsaquo; Setup Configuration File' ); ?></title>
+<link rel="stylesheet" href="css/install.css?ver=<?php echo preg_replace( '/[^0-9a-z\.-]/i', '', $wp_version ); ?>" type="text/css" />
 
 </head>
 
 </head>
-<body>
-<h1 id="logo"><img alt="WordPress" src="images/wordpress-logo.png" /></h1>
+<body<?php if ( is_rtl() ) echo ' class="rtl"'; ?>>
+<h1 id="logo"><img alt="WordPress" src="images/wordpress-logo.png?ver=20120216" /></h1>
 <?php
 }//end function display_header();
 
 <?php
 }//end function display_header();
 
@@ -99,18 +106,18 @@ switch($step) {
                display_header();
 ?>
 
                display_header();
 ?>
 
-<p>Welcome to WordPress. Before getting started, we need some information on the database. You will need to know the following items before proceeding.</p>
+<p><?php _e( 'Welcome to WordPress. Before getting started, we need some information on the database. You will need to know the following items before proceeding.' ) ?></p>
 <ol>
 <ol>
-       <li>Database name</li>
-       <li>Database username</li>
-       <li>Database password</li>
-       <li>Database host</li>
-       <li>Table prefix (if you want to run more than one WordPress in a single database) </li>
+       <li><?php _e( 'Database name' ); ?></li>
+       <li><?php _e( 'Database username' ); ?></li>
+       <li><?php _e( 'Database password' ); ?></li>
+       <li><?php _e( 'Database host' ); ?></li>
+       <li><?php _e( 'Table prefix (if you want to run more than one WordPress in a single database)' ); ?></li>
 </ol>
 </ol>
-<p><strong>If for any reason this automatic file creation doesn't work, don't worry. All this does is fill in the database information to a configuration file. You may also simply open <code>wp-config-sample.php</code> in a text editor, fill in your information, and save it as <code>wp-config.php</code>. </strong></p>
-<p>In all likelihood, these items were supplied to you by your Web Host. If you do not have this information, then you will need to contact them before you can continue. If you&#8217;re all ready&hellip;</p>
+<p><strong><?php _e( "If for any reason this automatic file creation doesn't work, don't worry. All this does is fill in the database information to a configuration file. You may also simply open <code>wp-config-sample.php</code> in a text editor, fill in your information, and save it as <code>wp-config.php</code>." ); ?></strong></p>
+<p><?php _e( "In all likelihood, these items were supplied to you by your Web Host. If you do not have this information, then you will need to contact them before you can continue. If you&#8217;re all ready&hellip;" ); ?></p>
 
 
-<p class="step"><a href="setup-config.php?step=1<?php if ( isset( $_GET['noapi'] ) ) echo '&amp;noapi'; ?>" class="button">Let&#8217;s go!</a></p>
+<p class="step"><a href="setup-config.php?step=1<?php if ( isset( $_GET['noapi'] ) ) echo '&amp;noapi'; ?>" class="button"><?php _e( 'Let&#8217;s go!' ); ?></a></p>
 <?php
        break;
 
 <?php
        break;
 
@@ -118,52 +125,52 @@ switch($step) {
                display_header();
        ?>
 <form method="post" action="setup-config.php?step=2">
                display_header();
        ?>
 <form method="post" action="setup-config.php?step=2">
-       <p>Below you should enter your database connection details. If you're not sure about these, contact your host. </p>
+       <p><?php _e( "Below you should enter your database connection details. If you're not sure about these, contact your host." ); ?></p>
        <table class="form-table">
                <tr>
        <table class="form-table">
                <tr>
-                       <th scope="row"><label for="dbname">Database Name</label></th>
+                       <th scope="row"><label for="dbname"><?php _e( 'Database Name' ); ?></label></th>
                        <td><input name="dbname" id="dbname" type="text" size="25" value="wordpress" /></td>
                        <td><input name="dbname" id="dbname" type="text" size="25" value="wordpress" /></td>
-                       <td>The name of the database you want to run WP in. </td>
+                       <td><?php _e( 'The name of the database you want to run WP in.' ); ?></td>
                </tr>
                <tr>
                </tr>
                <tr>
-                       <th scope="row"><label for="uname">User Name</label></th>
-                       <td><input name="uname" id="uname" type="text" size="25" value="username" /></td>
-                       <td>Your MySQL username</td>
+                       <th scope="row"><label for="uname"><?php _e( 'User Name' ); ?></label></th>
+                       <td><input name="uname" id="uname" type="text" size="25" value="<?php echo htmlspecialchars( _x( 'username', 'example username' ), ENT_QUOTES ); ?>" /></td>
+                       <td><?php _e( 'Your MySQL username' ); ?></td>
                </tr>
                <tr>
                </tr>
                <tr>
-                       <th scope="row"><label for="pwd">Password</label></th>
-                       <td><input name="pwd" id="pwd" type="text" size="25" value="password" /></td>
-                       <td>...and your MySQL password.</td>
+                       <th scope="row"><label for="pwd"><?php _e( 'Password' ); ?></label></th>
+                       <td><input name="pwd" id="pwd" type="text" size="25" value="<?php echo htmlspecialchars( _x( 'password', 'example password' ), ENT_QUOTES ); ?>" /></td>
+                       <td><?php _e( '&hellip;and your MySQL password.' ); ?></td>
                </tr>
                <tr>
                </tr>
                <tr>
-                       <th scope="row"><label for="dbhost">Database Host</label></th>
+                       <th scope="row"><label for="dbhost"><?php _e( 'Database Host' ); ?></label></th>
                        <td><input name="dbhost" id="dbhost" type="text" size="25" value="localhost" /></td>
                        <td><input name="dbhost" id="dbhost" type="text" size="25" value="localhost" /></td>
-                       <td>You should be able to get this info from your web host, if <code>localhost</code> does not work.</td>
+                       <td><?php _e( 'You should be able to get this info from your web host, if <code>localhost</code> does not work.' ); ?></td>
                </tr>
                <tr>
                </tr>
                <tr>
-                       <th scope="row"><label for="prefix">Table Prefix</label></th>
+                       <th scope="row"><label for="prefix"><?php _e( 'Table Prefix' ); ?></label></th>
                        <td><input name="prefix" id="prefix" type="text" value="wp_" size="25" /></td>
                        <td><input name="prefix" id="prefix" type="text" value="wp_" size="25" /></td>
-                       <td>If you want to run multiple WordPress installations in a single database, change this.</td>
+                       <td><?php _e( 'If you want to run multiple WordPress installations in a single database, change this.' ); ?></td>
                </tr>
        </table>
                </tr>
        </table>
-       <?php if ( isset( $_GET['noapi'] ) ) { ?><input name="noapi" type="hidden" value="true" /><?php } ?>
-       <p class="step"><input name="submit" type="submit" value="Submit" class="button" /></p>
+       <?php if ( isset( $_GET['noapi'] ) ) { ?><input name="noapi" type="hidden" value="1" /><?php } ?>
+       <p class="step"><input name="submit" type="submit" value="<?php echo htmlspecialchars( __( 'Submit' ), ENT_QUOTES ); ?>" class="button" /></p>
 </form>
 <?php
        break;
 
        case 2:
 </form>
 <?php
        break;
 
        case 2:
-       $dbname  = trim($_POST['dbname']);
-       $uname   = trim($_POST['uname']);
-       $passwrd = trim($_POST['pwd']);
-       $dbhost  = trim($_POST['dbhost']);
-       $prefix  = trim($_POST['prefix']);
-       if ( empty($prefix) )
-               $prefix = 'wp_';
-
-       // Validate $prefix: it can only contain letters, numbers and underscores
+       foreach ( array( 'dbname', 'uname', 'pwd', 'dbhost', 'prefix' ) as $key )
+               $$key = trim( stripslashes( $_POST[ $key ] ) );
+
+       $tryagain_link = '</p><p class="step"><a href="setup-config.php?step=1" onclick="javascript:history.go(-1);return false;" class="button">' . __( 'Try Again' ) . '</a>';
+
+       if ( empty( $prefix ) )
+               wp_die( __( '<strong>ERROR</strong>: "Table Prefix" must not be empty.' . $tryagain_link ) );
+
+       // Validate $prefix: it can only contain letters, numbers and underscores.
        if ( preg_match( '|[^a-z0-9_]|i', $prefix ) )
        if ( preg_match( '|[^a-z0-9_]|i', $prefix ) )
-               wp_die( /*WP_I18N_BAD_PREFIX*/'<strong>ERROR</strong>: "Table Prefix" can only contain numbers, letters, and underscores.'/*/WP_I18N_BAD_PREFIX*/ );
+               wp_die( __( '<strong>ERROR</strong>: "Table Prefix" can only contain numbers, letters, and underscores.' . $tryagain_link ) );
 
        // Test the db connection.
        /**#@+
 
        // Test the db connection.
        /**#@+
@@ -171,22 +178,17 @@ switch($step) {
         */
        define('DB_NAME', $dbname);
        define('DB_USER', $uname);
         */
        define('DB_NAME', $dbname);
        define('DB_USER', $uname);
-       define('DB_PASSWORD', $passwrd);
+       define('DB_PASSWORD', $pwd);
        define('DB_HOST', $dbhost);
        /**#@-*/
 
        // We'll fail here if the values are no good.
        require_wp_db();
        define('DB_HOST', $dbhost);
        /**#@-*/
 
        // We'll fail here if the values are no good.
        require_wp_db();
-       if ( ! empty( $wpdb->error ) ) {
-               $back = '<p class="step"><a href="setup-config.php?step=1" onclick="javascript:history.go(-1);return false;" class="button">Try Again</a></p>';
-               wp_die( $wpdb->error->get_error_message() . $back );
-       }
+       if ( ! empty( $wpdb->error ) )
+               wp_die( $wpdb->error->get_error_message() . $tryagain_link );
 
        // Fetch or generate keys and salts.
        $no_api = isset( $_POST['noapi'] );
 
        // Fetch or generate keys and salts.
        $no_api = isset( $_POST['noapi'] );
-       require_once( ABSPATH . WPINC . '/plugin.php' );
-       require_once( ABSPATH . WPINC . '/l10n.php' );
-       require_once( ABSPATH . WPINC . '/pomo/translations.php' );
        if ( ! $no_api ) {
                require_once( ABSPATH . WPINC . '/class-http.php' );
                require_once( ABSPATH . WPINC . '/http.php' );
        if ( ! $no_api ) {
                require_once( ABSPATH . WPINC . '/class-http.php' );
                require_once( ABSPATH . WPINC . '/http.php' );
@@ -213,62 +215,66 @@ switch($step) {
                        $secret_keys[$k] = substr( $v, 28, 64 );
                }
        }
                        $secret_keys[$k] = substr( $v, 28, 64 );
                }
        }
+
        $key = 0;
        $key = 0;
+       foreach ( $config_file as &$line ) {
+               if ( '$table_prefix  =' == substr( $line, 0, 16 ) ) {
+                       $line = '$table_prefix  = \'' . addcslashes( $prefix, "\\'" ) . "';\r\n";
+                       continue;
+               }
 
 
-       foreach ($configFile as $line_num => $line) {
-               switch (substr($line,0,16)) {
-                       case "define('DB_NAME'":
-                               $configFile[$line_num] = str_replace("database_name_here", $dbname, $line);
-                               break;
-                       case "define('DB_USER'":
-                               $configFile[$line_num] = str_replace("'username_here'", "'$uname'", $line);
-                               break;
-                       case "define('DB_PASSW":
-                               $configFile[$line_num] = str_replace("'password_here'", "'$passwrd'", $line);
-                               break;
-                       case "define('DB_HOST'":
-                               $configFile[$line_num] = str_replace("localhost", $dbhost, $line);
-                               break;
-                       case '$table_prefix  =':
-                               $configFile[$line_num] = str_replace('wp_', $prefix, $line);
+               if ( ! preg_match( '/^define\(\'([A-Z_]+)\',([ ]+)/', $line, $match ) )
+                       continue;
+
+               $constant = $match[1];
+               $padding  = $match[2];
+
+               switch ( $constant ) {
+                       case 'DB_NAME'     :
+                       case 'DB_USER'     :
+                       case 'DB_PASSWORD' :
+                       case 'DB_HOST'     :
+                               $line = "define('" . $constant . "'," . $padding . "'" . addcslashes( constant( $constant ), "\\'" ) . "');\r\n";
                                break;
                                break;
-                       case "define('AUTH_KEY":
-                       case "define('SECURE_A":
-                       case "define('LOGGED_I":
-                       case "define('NONCE_KE":
-                       case "define('AUTH_SAL":
-                       case "define('SECURE_A":
-                       case "define('LOGGED_I":
-                       case "define('NONCE_SA":
-                               $configFile[$line_num] = str_replace('put your unique phrase here', $secret_keys[$key++], $line );
+                       case 'AUTH_KEY'         :
+                       case 'SECURE_AUTH_KEY'  :
+                       case 'LOGGED_IN_KEY'    :
+                       case 'NONCE_KEY'        :
+                       case 'AUTH_SALT'        :
+                       case 'SECURE_AUTH_SALT' :
+                       case 'LOGGED_IN_SALT'   :
+                       case 'NONCE_SALT'       :
+                               $line = "define('" . $constant . "'," . $padding . "'" . $secret_keys[$key++] . "');\r\n";
                                break;
                }
        }
                                break;
                }
        }
+       unset( $line );
+
        if ( ! is_writable(ABSPATH) ) :
                display_header();
 ?>
        if ( ! is_writable(ABSPATH) ) :
                display_header();
 ?>
-<p>Sorry, but I can't write the <code>wp-config.php</code> file.</p>
-<p>You can create the <code>wp-config.php</code> manually and paste the following text into it.</p>
+<p><?php _e( "Sorry, but I can't write the <code>wp-config.php</code> file." ); ?></p>
+<p><?php _e( 'You can create the <code>wp-config.php</code> manually and paste the following text into it.' ); ?></p>
 <textarea cols="98" rows="15" class="code"><?php
 <textarea cols="98" rows="15" class="code"><?php
-               foreach( $configFile as $line ) {
+               foreach( $config_file as $line ) {
                        echo htmlentities($line, ENT_COMPAT, 'UTF-8');
                }
 ?></textarea>
                        echo htmlentities($line, ENT_COMPAT, 'UTF-8');
                }
 ?></textarea>
-<p>After you've done that, click "Run the install."</p>
-<p class="step"><a href="install.php" class="button">Run the install</a></p>
+<p><?php _e( 'After you\'ve done that, click "Run the install."' ); ?></p>
+<p class="step"><a href="install.php" class="button"><?php _e( 'Run the install' ); ?></a></p>
 <?php
        else :
                $handle = fopen(ABSPATH . 'wp-config.php', 'w');
 <?php
        else :
                $handle = fopen(ABSPATH . 'wp-config.php', 'w');
-               foreach( $configFile as $line ) {
+               foreach( $config_file as $line ) {
                        fwrite($handle, $line);
                }
                fclose($handle);
                chmod(ABSPATH . 'wp-config.php', 0666);
                display_header();
 ?>
                        fwrite($handle, $line);
                }
                fclose($handle);
                chmod(ABSPATH . 'wp-config.php', 0666);
                display_header();
 ?>
-<p>All right sparky! You've made it through this part of the installation. WordPress can now communicate with your database. If you are ready, time now to&hellip;</p>
+<p><?php _e( "All right sparky! You've made it through this part of the installation. WordPress can now communicate with your database. If you are ready, time now to&hellip;" ); ?></p>
 
 
-<p class="step"><a href="install.php" class="button">Run the install</a></p>
+<p class="step"><a href="install.php" class="button"><?php _e( 'Run the install' ); ?></a></p>
 <?php
        endif;
        break;
 <?php
        endif;
        break;
index 7b31745b4d43de3a3a2de9f2a37bc443beb6dedd..8eab0751d315fdab26e295dbaaada4ef4279b8b2 100644 (file)
@@ -42,80 +42,68 @@ get_current_screen()->set_help_sidebar(
        '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
 );
 
        '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
 );
 
-wp_reset_vars(array('action', 'redirect', 'profile', 'error', 'warning', 'a', 'file', 'theme', 'dir'));
+wp_reset_vars( array( 'action', 'error', 'file', 'theme' ) );
 
 
-$themes = get_themes();
+if ( $theme )
+       $stylesheet = urldecode( $theme );
+else
+       $stylesheet = get_stylesheet();
 
 
-if (empty($theme)) {
-       $theme = get_current_theme();
-} else {
-       $theme = stripslashes($theme);
-}
+$theme = wp_get_theme( $stylesheet );
 
 
-if ( ! isset($themes[$theme]) )
-       wp_die(__('The requested theme does not exist.'));
+if ( ! $theme->exists() )
+       wp_die( __( 'The requested theme does not exist.' ) );
 
 
-$allowed_files = array_merge( $themes[$theme]['Stylesheet Files'], $themes[$theme]['Template Files'] );
+if ( $theme->errors() && 'theme_no_stylesheet' == $theme->errors()->get_error_code() )
+       wp_die( __( 'The requested theme does not exist.' ) . ' ' . $theme->errors()->get_error_message() );
+
+$allowed_files = $theme->get_files( 'php', 1 );
+$has_templates = ! empty( $allowed_files );
+$style_files = $theme->get_files( 'css' );
+$allowed_files['style.css'] = $style_files['style.css'];
+$allowed_files += $style_files;
 
 if ( empty( $file ) ) {
 
 if ( empty( $file ) ) {
-       if ( false !== array_search( $themes[$theme]['Stylesheet Dir'] . '/style.css', $allowed_files ) )
-               $file = $themes[$theme]['Stylesheet Dir'] . '/style.css';
-       else
-               $file = $allowed_files[0];
+       $relative_file = 'style.css';
+       $file = $allowed_files['style.css'];
 } else {
 } else {
-       $file = stripslashes($file);
-       if ( 'theme' == $dir ) {
-               $file = dirname(dirname($themes[$theme]['Template Dir'])) . $file ;
-       } else if ( 'style' == $dir) {
-               $file = dirname(dirname($themes[$theme]['Stylesheet Dir'])) . $file ;
-       }
+       $relative_file = urldecode( stripslashes( $file ) );
+       $file = $theme->get_stylesheet_directory() . '/' . $relative_file;
 }
 
 }
 
-validate_file_to_edit($file, $allowed_files);
-$scrollto = isset($_REQUEST['scrollto']) ? (int) $_REQUEST['scrollto'] : 0;
-$file_show = basename( $file );
-
-switch($action) {
+validate_file_to_edit( $file, $allowed_files );
+$scrollto = isset( $_REQUEST['scrollto'] ) ? (int) $_REQUEST['scrollto'] : 0;
 
 
+switch( $action ) {
 case 'update':
 case 'update':
-
-       check_admin_referer('edit-theme_' . $file . $theme);
-
-       $newcontent = stripslashes($_POST['newcontent']);
-       $theme = urlencode($theme);
-       if (is_writeable($file)) {
+       check_admin_referer( 'edit-theme_' . $file . $stylesheet );
+       $newcontent = stripslashes( $_POST['newcontent'] );
+       $location = 'theme-editor.php?file=' . urlencode( $relative_file ) . '&theme=' . urlencode( $stylesheet ) . '&scrollto=' . $scrollto;
+       if ( is_writeable( $file ) ) {
                //is_writable() not always reliable, check return value. see comments @ http://uk.php.net/is_writable
                //is_writable() not always reliable, check return value. see comments @ http://uk.php.net/is_writable
-               $f = fopen($file, 'w+');
-               if ($f !== FALSE) {
-                       fwrite($f, $newcontent);
-                       fclose($f);
-                       $location = "theme-editor.php?file=$file&theme=$theme&a=te&scrollto=$scrollto";
-               } else {
-                       $location = "theme-editor.php?file=$file&theme=$theme&scrollto=$scrollto";
+               $f = fopen( $file, 'w+' );
+               if ( $f !== false ) {
+                       fwrite( $f, $newcontent );
+                       fclose( $f );
+                       $location .= '&updated=true';
+                       $theme->cache_delete();
                }
                }
-       } else {
-               $location = "theme-editor.php?file=$file&theme=$theme&scrollto=$scrollto";
        }
        }
-
-       $location = wp_kses_no_null($location);
-       $strip = array('%0d', '%0a', '%0D', '%0A');
-       $location = _deep_replace($strip, $location);
-       header("Location: $location");
-       exit();
-
+       wp_redirect( $location );
+       exit;
 break;
 
 default:
 
 break;
 
 default:
 
-       require_once(ABSPATH . 'wp-admin/admin-header.php');
+       require_once( ABSPATH . 'wp-admin/admin-header.php' );
 
 
-       update_recently_edited($file);
+       update_recently_edited( $file );
 
 
-       if ( !is_file($file) )
-               $error = 1;
+       if ( ! is_file( $file ) )
+               $error = true;
 
        $content = '';
 
        $content = '';
-       if ( !$error && filesize($file) > 0 ) {
+       if ( ! $error && filesize( $file ) > 0 ) {
                $f = fopen($file, 'r');
                $content = fread($f, filesize($file));
 
                $f = fopen($file, 'r');
                $content = fread($f, filesize($file));
 
@@ -134,14 +122,14 @@ default:
        }
 
        ?>
        }
 
        ?>
-<?php if (isset($_GET['a'])) : ?>
- <div id="message" class="updated"><p><?php _e('File edited successfully.') ?></p></div>
+<?php if ( isset( $_GET['updated'] ) ) : ?>
+ <div id="message" class="updated"><p><?php _e( 'File edited successfully.' ) ?></p></div>
 <?php endif;
 
 <?php endif;
 
-$description = get_file_description($file);
-$desc_header = ( $description != $file_show ) ? "$description <span>($file_show)</span>" : $file_show;
-
-$is_child_theme = $themes[$theme]['Template'] != $themes[$theme]['Stylesheet'];
+$description = get_file_description( $file );
+$file_show = array_search( $file, array_filter( $allowed_files ) );
+if ( $description != $file_show )
+       $description .= ' <span>(' . $file_show . ')</span>';
 ?>
 <div class="wrap">
 <?php screen_icon(); ?>
 ?>
 <div class="wrap">
 <?php screen_icon(); ?>
@@ -149,19 +137,19 @@ $is_child_theme = $themes[$theme]['Template'] != $themes[$theme]['Stylesheet'];
 
 <div class="fileedit-sub">
 <div class="alignleft">
 
 <div class="fileedit-sub">
 <div class="alignleft">
-<h3><?php echo $themes[$theme]['Name'] . ': ' . $desc_header; ?></h3>
+<h3><?php echo $theme->display('Name'); if ( $description ) echo ': ' . $description; ?></h3>
 </div>
 <div class="alignright">
        <form action="theme-editor.php" method="post">
                <strong><label for="theme"><?php _e('Select theme to edit:'); ?> </label></strong>
                <select name="theme" id="theme">
 <?php
 </div>
 <div class="alignright">
        <form action="theme-editor.php" method="post">
                <strong><label for="theme"><?php _e('Select theme to edit:'); ?> </label></strong>
                <select name="theme" id="theme">
 <?php
-       foreach ($themes as $a_theme) {
-       $theme_name = $a_theme['Name'];
-       if ($theme_name == $theme) $selected = " selected='selected'";
-       else $selected = '';
-       $theme_name = esc_attr($theme_name);
-       echo "\n\t<option value=\"$theme_name\" $selected>$theme_name</option>";
+foreach ( wp_get_themes( array( 'errors' => null ) ) as $a_stylesheet => $a_theme ) {
+       if ( $a_theme->errors() && 'theme_no_stylesheet' == $a_theme->errors()->get_error_code() )
+               continue;
+
+       $selected = $a_stylesheet == $stylesheet ? ' selected="selected"' : '';
+       echo "\n\t" . '<option value="' . esc_attr( $a_stylesheet ) . '"' . $selected . '>' . $a_theme->display('Name') . '</option>';
 }
 ?>
                </select>
 }
 ?>
                </select>
@@ -170,78 +158,62 @@ $is_child_theme = $themes[$theme]['Template'] != $themes[$theme]['Stylesheet'];
 </div>
 <br class="clear" />
 </div>
 </div>
 <br class="clear" />
 </div>
+<?php
+if ( $theme->errors() )
+       echo '<div class="error"><p><strong>' . __( 'This theme is broken.' ) . '</strong> ' . $theme->errors()->get_error_message() . '</p></div>';
+?>
        <div id="templateside">
 <?php
        <div id="templateside">
 <?php
-if ($allowed_files) :
+if ( $allowed_files ) :
+       if ( $has_templates || $theme->parent() ) :
 ?>
        <h3><?php _e('Templates'); ?></h3>
 ?>
        <h3><?php _e('Templates'); ?></h3>
-       <?php if ( $is_child_theme ) : ?>
-       <p class="howto"><?php printf( __( 'This child theme inherits templates from a parent theme, %s.' ), $themes[$theme]['Parent Theme'] ); ?></p>
+       <?php if ( $theme->parent() ) : ?>
+       <p class="howto"><?php printf( __( 'This child theme inherits templates from a parent theme, %s.' ), '<a href="' . self_admin_url('theme-editor.php?theme=' . urlencode( $theme->get_template() ) ) . '">' . $theme->parent()->display('Name') . '</a>' ); ?></p>
        <?php endif; ?>
        <ul>
 <?php
        <?php endif; ?>
        <ul>
 <?php
-       $template_mapping = array();
-       $template_dir = $themes[$theme]['Template Dir'];
-       foreach ( $themes[$theme]['Template Files'] as $template_file ) {
-               // Don't show parent templates.
-               if ( $is_child_theme && strpos( $template_file, trailingslashit( $template_dir ) ) === 0 )
-                       continue;
-
-               $description = trim( get_file_description($template_file) );
-               $template_show = basename($template_file);
-               $filedesc = ( $description != $template_file ) ? "$description<br /><span class='nonessential'>($template_show)</span>" : "$description";
-               $filedesc = ( $template_file == $file ) ? "<span class='highlight'>$description<br /><span class='nonessential'>($template_show)</span></span>" : $filedesc;
-               $template_mapping[ $description ] = array( _get_template_edit_filename($template_file, $template_dir), $filedesc );
-       }
-       ksort( $template_mapping );
-       while ( list( $template_sorted_key, list( $template_file, $filedesc ) ) = each( $template_mapping ) ) :
-       ?>
-               <li><a href="theme-editor.php?file=<?php echo urlencode( $template_file ) ?>&amp;theme=<?php echo urlencode( $theme ) ?>&amp;dir=theme"><?php echo $filedesc ?></a></li>
-<?php endwhile; ?>
-       </ul>
-       <h3><?php /* translators: Theme stylesheets in theme editor */ _ex('Styles', 'Theme stylesheets in theme editor'); ?></h3>
-       <ul>
+       endif;
+
+       foreach ( $allowed_files as $filename => $absolute_filename ) :
+               if ( 'style.css' == $filename )
+                       echo "\t</ul>\n\t<h3>" . _x( 'Styles', 'Theme stylesheets in theme editor' ) . "</h3>\n\t<ul>\n";
+
+               $file_description = get_file_description( $absolute_filename );
+               if ( $file_description != basename( $filename ) )
+                       $file_description .= '<br /><span class="nonessential">(' . $filename . ')</span>';
+
+               if ( $absolute_filename == $file )
+                       $file_description = '<span class="highlight">' . $file_description . '</span>';
+?>
+               <li><a href="theme-editor.php?file=<?php echo urlencode( $filename ) ?>&amp;theme=<?php echo urlencode( $stylesheet ) ?>"><?php echo $file_description; ?></a></li>
 <?php
 <?php
-       $template_mapping = array();
-       $stylesheet_dir = $themes[$theme]['Stylesheet Dir'];
-       foreach ( $themes[$theme]['Stylesheet Files'] as $style_file ) {
-               // Don't show parent styles.
-               if ( $is_child_theme && strpos( $style_file, trailingslashit( $template_dir ) ) === 0 )
-                       continue;
-
-               $description = trim( get_file_description($style_file) );
-               $style_show = basename($style_file);
-               $filedesc = ( $description != $style_file ) ? "$description<br /><span class='nonessential'>($style_show)</span>" : "$description";
-               $filedesc = ( $style_file == $file ) ? "<span class='highlight'>$description<br /><span class='nonessential'>($style_show)</span></span>" : $filedesc;
-               $template_mapping[ $description ] = array( _get_template_edit_filename($style_file, $stylesheet_dir), $filedesc );
-       }
-       ksort( $template_mapping );
-       while ( list( $template_sorted_key, list( $style_file, $filedesc ) ) = each( $template_mapping ) ) :
-               ?>
-               <li><a href="theme-editor.php?file=<?php echo urlencode( $style_file ) ?>&amp;theme=<?php echo urlencode($theme) ?>&amp;dir=style"><?php echo $filedesc ?></a></li>
-<?php endwhile; ?>
-       </ul>
+       endforeach;
+?>
+</ul>
 <?php endif; ?>
 </div>
 <?php endif; ?>
 </div>
-<?php if (!$error) { ?>
+<?php if ( $error ) :
+       echo '<div class="error"><p>' . __('Oops, no such file exists! Double check the name and try again, merci.') . '</p></div>';
+else : ?>
        <form name="template" id="template" action="theme-editor.php" method="post">
        <form name="template" id="template" action="theme-editor.php" method="post">
-       <?php wp_nonce_field('edit-theme_' . $file . $theme) ?>
-                <div><textarea cols="70" rows="25" name="newcontent" id="newcontent" tabindex="1"><?php echo $content ?></textarea>
+       <?php wp_nonce_field( 'edit-theme_' . $file . $stylesheet ); ?>
+                <div><textarea cols="70" rows="30" name="newcontent" id="newcontent" tabindex="1"><?php echo $content ?></textarea>
                 <input type="hidden" name="action" value="update" />
                 <input type="hidden" name="action" value="update" />
-                <input type="hidden" name="file" value="<?php echo esc_attr($file) ?>" />
-                <input type="hidden" name="theme" value="<?php echo esc_attr($theme) ?>" />
+                <input type="hidden" name="file" value="<?php echo esc_attr( $relative_file ); ?>" />
+                <input type="hidden" name="theme" value="<?php echo esc_attr( $theme->get_stylesheet() ); ?>" />
                 <input type="hidden" name="scrollto" id="scrollto" value="<?php echo $scrollto; ?>" />
                 </div>
                 <input type="hidden" name="scrollto" id="scrollto" value="<?php echo $scrollto; ?>" />
                 </div>
-       <?php if ( isset($functions ) && count($functions) ) { ?>
+       <?php if ( ! empty( $functions ) ) : ?>
                <div id="documentation" class="hide-if-no-js">
                <label for="docs-list"><?php _e('Documentation:') ?></label>
                <?php echo $docs_select; ?>
                <input type="button" class="button" value=" <?php esc_attr_e( 'Lookup' ); ?> " onclick="if ( '' != jQuery('#docs-list').val() ) { window.open( 'http://api.wordpress.org/core/handbook/1.0/?function=' + escape( jQuery( '#docs-list' ).val() ) + '&amp;locale=<?php echo urlencode( get_locale() ) ?>&amp;version=<?php echo urlencode( $wp_version ) ?>&amp;redirect=true'); }" />
                </div>
                <div id="documentation" class="hide-if-no-js">
                <label for="docs-list"><?php _e('Documentation:') ?></label>
                <?php echo $docs_select; ?>
                <input type="button" class="button" value=" <?php esc_attr_e( 'Lookup' ); ?> " onclick="if ( '' != jQuery('#docs-list').val() ) { window.open( 'http://api.wordpress.org/core/handbook/1.0/?function=' + escape( jQuery( '#docs-list' ).val() ) + '&amp;locale=<?php echo urlencode( get_locale() ) ?>&amp;version=<?php echo urlencode( $wp_version ) ?>&amp;redirect=true'); }" />
                </div>
-       <?php } ?>
+       <?php endif; ?>
 
                <div>
 
                <div>
-               <?php if ( is_child_theme() && ! $is_child_theme && $themes[$theme]['Template'] == get_option('template') ) : ?>
+               <?php if ( is_child_theme() && $theme->get_stylesheet() == get_template() ) : ?>
                        <p><?php if ( is_writeable( $file ) ) { ?><strong><?php _e( 'Caution:' ); ?></strong><?php } ?>
                        <?php _e( 'This is a file in your current parent theme.' ); ?></p>
                <?php endif; ?>
                        <p><?php if ( is_writeable( $file ) ) { ?><strong><?php _e( 'Caution:' ); ?></strong><?php } ?>
                        <?php _e( 'This is a file in your current parent theme.' ); ?></p>
                <?php endif; ?>
@@ -254,9 +226,7 @@ if ($allowed_files) :
                </div>
        </form>
 <?php
                </div>
        </form>
 <?php
-       } else {
-               echo '<div class="error"><p>' . __('Oops, no such file exists! Double check the name and try again, merci.') . '</p></div>';
-       }
+endif; // $error
 ?>
 <br class="clear" />
 </div>
 ?>
 <br class="clear" />
 </div>
@@ -272,4 +242,4 @@ jQuery(document).ready(function($){
 break;
 }
 
 break;
 }
 
-include(ABSPATH . "wp-admin/admin-footer.php");
+include(ABSPATH . 'wp-admin/admin-footer.php' );
index 333ac44f01081c36fa2af3f4546100a4633e23da..8680a54668f88cdfe4bf4f5e46a3739d6e10338f 100644 (file)
@@ -30,22 +30,31 @@ if ( !is_network_admin() )
        $submenu_file = 'themes.php';
 
 wp_enqueue_script( 'theme-install' );
        $submenu_file = 'themes.php';
 
 wp_enqueue_script( 'theme-install' );
-
-add_thickbox();
-wp_enqueue_script( 'theme-preview' );
+wp_enqueue_script( 'theme' );
 
 $body_id = $tab;
 
 do_action('install_themes_pre_' . $tab); //Used to override the general interface, Eg, install or theme information.
 
 
 $body_id = $tab;
 
 do_action('install_themes_pre_' . $tab); //Used to override the general interface, Eg, install or theme information.
 
-$help = '<p>' . sprintf(__('You can find additional themes for your site by using the Theme Browser/Installer on this screen, which will display themes from the <a href="%s" target="_blank">WordPress.org Theme Directory</a>. These themes are designed and developed by third parties, are available free of charge, and are compatible with the license WordPress uses.'), 'http://wordpress.org/extend/themes/') . '</p>';
-$help .= '<p>' . __('You can Search for themes by keyword, author, or tag, or can get more specific and search by criteria listed in the feature filter. Alternately, you can browse the themes that are Featured, Newest, or Recently Updated. When you find a theme you like, you can preview it or install it.') . '</p>';
-$help .= '<p>' . __('You can Upload a theme manually if you have already downloaded its ZIP archive onto your computer (make sure it is from a trusted and original source). You can also do it the old-fashioned way and copy a downloaded theme&#8217;s folder via FTP into your <code>/wp-content/themes</code> directory.') . '</p>';
+$help_overview =
+       '<p>' . sprintf(__('You can find additional themes for your site by using the Theme Browser/Installer on this screen, which will display themes from the <a href="%s" target="_blank">WordPress.org Theme Directory</a>. These themes are designed and developed by third parties, are available free of charge, and are compatible with the license WordPress uses.'), 'http://wordpress.org/extend/themes/') . '</p>' .
+       '<p>' . __('You can Search for themes by keyword, author, or tag, or can get more specific and search by criteria listed in the feature filter. Alternately, you can browse the themes that are Featured, Newest, or Recently Updated. When you find a theme you like, you can preview it or install it.') . '</p>' .
+       '<p>' . __('You can Upload a theme manually if you have already downloaded its ZIP archive onto your computer (make sure it is from a trusted and original source). You can also do it the old-fashioned way and copy a downloaded theme&#8217;s folder via FTP into your <code>/wp-content/themes</code> directory.') . '</p>';
 
 get_current_screen()->add_help_tab( array(
        'id'      => 'overview',
        'title'   => __('Overview'),
 
 get_current_screen()->add_help_tab( array(
        'id'      => 'overview',
        'title'   => __('Overview'),
-       'content' => $help
+       'content' => $help_overview
+) );
+
+$help_installing =
+       '<p>' . __('Once you have generated a list of themes, you can preview and install any of them. Click on the thumbnail of the theme you&#8217;re interested in previewing. It will open up in a full-screen Preview page to give you a better idea of how that theme will look.') . '</p>' .
+       '<p>' . __('To install the theme so you can preview it with your site&#8217;s content and customize its theme options, click the "Install" button at the top of the left-hand pane. The theme files will be downloaded to your website automatically. When this is complete, the theme is now available for activation, which you can do by clicking the "Activate" link, or by navigating to your Installed Themes page and clicking the "Live Preview" link under any installed theme&#8217;s thumbnail image.') . '</p>';
+
+get_current_screen()->add_help_tab( array(
+       'id'      => 'installing',
+       'title'   => __('Previewing and Installing'),
+       'content' => $help_installing
 ) );
 
 get_current_screen()->set_help_sidebar(
 ) );
 
 get_current_screen()->set_help_sidebar(
@@ -75,4 +84,3 @@ $wp_list_table->views(); ?>
 </div>
 <?php
 include(ABSPATH . 'wp-admin/admin-footer.php');
 </div>
 <?php
 include(ABSPATH . 'wp-admin/admin-footer.php');
-
index bb84ca114361fa4c69c028524d4378b2aec958a9..c892705ee48750b80d57285edf244877d5175ac7 100644 (file)
@@ -16,15 +16,19 @@ $wp_list_table = _get_list_table('WP_Themes_List_Table');
 
 if ( current_user_can( 'switch_themes' ) && isset($_GET['action'] ) ) {
        if ( 'activate' == $_GET['action'] ) {
 
 if ( current_user_can( 'switch_themes' ) && isset($_GET['action'] ) ) {
        if ( 'activate' == $_GET['action'] ) {
-               check_admin_referer('switch-theme_' . $_GET['template']);
+               check_admin_referer('switch-theme_' . $_GET['stylesheet']);
+               $theme = wp_get_theme( $_GET['stylesheet'] );
+               if ( ! $theme->exists() || ! $theme->is_allowed() )
+                       wp_die( __( 'Cheatin&#8217; uh?' ) );
                switch_theme($_GET['template'], $_GET['stylesheet']);
                wp_redirect( admin_url('themes.php?activated=true') );
                exit;
        } elseif ( 'delete' == $_GET['action'] ) {
                switch_theme($_GET['template'], $_GET['stylesheet']);
                wp_redirect( admin_url('themes.php?activated=true') );
                exit;
        } elseif ( 'delete' == $_GET['action'] ) {
-               check_admin_referer('delete-theme_' . $_GET['template']);
-               if ( !current_user_can('delete_themes') )
+               check_admin_referer('delete-theme_' . $_GET['stylesheet']);
+               $theme = wp_get_theme( $_GET['stylesheet'] );
+               if ( !current_user_can('delete_themes') || ! $theme->exists() )
                        wp_die( __( 'Cheatin&#8217; uh?' ) );
                        wp_die( __( 'Cheatin&#8217; uh?' ) );
-               delete_theme($_GET['template']);
+               delete_theme($_GET['stylesheet']);
                wp_redirect( admin_url('themes.php?deleted=true') );
                exit;
        }
                wp_redirect( admin_url('themes.php?deleted=true') );
                exit;
        }
@@ -38,12 +42,12 @@ $parent_file = 'themes.php';
 if ( current_user_can( 'switch_themes' ) ) :
 
 $help_manage = '<p>' . __('Aside from the default theme included with your WordPress installation, themes are designed and developed by third parties.') . '</p>' .
 if ( current_user_can( 'switch_themes' ) ) :
 
 $help_manage = '<p>' . __('Aside from the default theme included with your WordPress installation, themes are designed and developed by third parties.') . '</p>' .
-       '<p>' . __('You can see your active theme at the top of the screen. Below are the other themes you have installed that are not currently in use. You can see what your site would look like with one of these themes by clicking the Preview link. To change themes, click the Activate link.') . '</p>';
+       '<p>' . __('You can see your active theme at the top of the screen. Below are the other themes you have installed that are not currently in use. You can see what your site would look like with one of these themes by clicking the Live Preview link (see "Previewing and Customizing" help tab). To change themes, click the Activate link.') . '</p>';
 
 get_current_screen()->add_help_tab( array(
        'id'      => 'overview',
        'title'   => __('Overview'),
 
 get_current_screen()->add_help_tab( array(
        'id'      => 'overview',
        'title'   => __('Overview'),
-       'content' => $help_manage,
+       'content' => $help_manage
 ) );
 
 if ( current_user_can( 'install_themes' ) ) {
 ) );
 
 if ( current_user_can( 'install_themes' ) ) {
@@ -56,7 +60,23 @@ if ( current_user_can( 'install_themes' ) ) {
        get_current_screen()->add_help_tab( array(
                'id'      => 'adding-themes',
                'title'   => __('Adding Themes'),
        get_current_screen()->add_help_tab( array(
                'id'      => 'adding-themes',
                'title'   => __('Adding Themes'),
-               'content' => $help_install,
+               'content' => $help_install
+       ) );
+}
+
+endif; // switch_themes
+
+if ( current_user_can( 'edit_theme_options' ) ) {
+       $help_customize =
+               '<p>' . __('Click on the "Live Preview" link under any theme to preview that theme and change theme options in a separate, full-screen view. Any installed theme can be previewed and customized in this way.') . '</p>'.
+               '<p>' . __('The theme being previewed is fully interactive &mdash; navigate to different pages to see how the theme handles posts, archives, and other page templates.') . '</p>' .
+               '<p>' . __('In the left-hand pane you can edit the theme settings. The settings will differ, depending on what theme features the theme being previewed supports. To accept the new settings and activate the theme all in one step, click the "Save &amp; Activate" button at the top of the left-hand pane.') . '</p>' .
+               '<p>' . __('When previewing on smaller monitors, you can use the "Collapse" icon at the bottom of the left-hand pane. This will hide the pane, giving you more room to preview your site in the new theme. To bring the pane back, click on the Collapse icon again.') . '</p>';
+
+       get_current_screen()->add_help_tab( array(
+               'id'            => 'customize-preview-themes',
+               'title'         => __('Previewing and Customizing'),
+               'content'       => $help_customize
        ) );
 }
 
        ) );
 }
 
@@ -66,27 +86,12 @@ get_current_screen()->set_help_sidebar(
        '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
 );
 
        '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
 );
 
-add_thickbox();
-wp_enqueue_script( 'theme-preview' );
 wp_enqueue_script( 'theme' );
 wp_enqueue_script( 'theme' );
-
-endif;
+wp_enqueue_script( 'customize-loader' );
 
 require_once('./admin-header.php');
 ?>
 
 
 require_once('./admin-header.php');
 ?>
 
-<?php if ( ! validate_current_theme() ) : ?>
-<div id="message1" class="updated"><p><?php _e('The active theme is broken.  Reverting to the default theme.'); ?></p></div>
-<?php elseif ( isset($_GET['activated']) ) :
-               if ( isset($wp_registered_sidebars) && count( (array) $wp_registered_sidebars ) && current_user_can('edit_theme_options') ) { ?>
-<div id="message2" class="updated"><p><?php printf( __('New theme activated. This theme supports widgets, please visit the <a href="%s">widgets settings</a> screen to configure them.'), admin_url( 'widgets.php' ) ); ?></p></div><?php
-               } else { ?>
-<div id="message2" class="updated"><p><?php printf( __( 'New theme activated. <a href="%s">Visit site</a>' ), home_url( '/' ) ); ?></p></div><?php
-               }
-       elseif ( isset($_GET['deleted']) ) : ?>
-<div id="message3" class="updated"><p><?php _e('Theme deleted.') ?></p></div>
-<?php endif; ?>
-
 <div class="wrap"><?php
 screen_icon();
 if ( ! is_multisite() && current_user_can( 'install_themes' ) ) : ?>
 <div class="wrap"><?php
 screen_icon();
 if ( ! is_multisite() && current_user_can( 'install_themes' ) ) : ?>
@@ -96,18 +101,53 @@ if ( ! is_multisite() && current_user_can( 'install_themes' ) ) : ?>
 <h2><?php echo esc_html( $title ); ?>
 <?php endif; ?>
 </h2>
 <h2><?php echo esc_html( $title ); ?>
 <?php endif; ?>
 </h2>
+<?php
+if ( ! validate_current_theme() || isset( $_GET['broken'] ) ) : ?>
+<div id="message1" class="updated"><p><?php _e('The active theme is broken. Reverting to the default theme.'); ?></p></div>
+<?php elseif ( isset($_GET['activated']) ) :
+               if ( isset( $_GET['previewed'] ) ) { ?>
+               <div id="message2" class="updated"><p><?php printf( __( 'Settings saved and theme activated. <a href="%s">Visit site</a>.' ), home_url( '/' ) ); ?></p></div>
+               <?php } elseif ( isset($wp_registered_sidebars) && count( (array) $wp_registered_sidebars ) && current_user_can('edit_theme_options') ) { ?>
+<div id="message2" class="updated"><p><?php printf( __('New theme activated. This theme supports widgets, please visit the <a href="%s">widgets settings</a> screen to configure them.'), admin_url( 'widgets.php' ) ); ?></p></div><?php
+               } else { ?>
+<div id="message2" class="updated"><p><?php printf( __( 'New theme activated. <a href="%s">Visit site</a>' ), home_url( '/' ) ); ?></p></div><?php
+               }
+       elseif ( isset($_GET['deleted']) ) : ?>
+<div id="message3" class="updated"><p><?php _e('Theme deleted.') ?></p></div>
+<?php
+endif;
+
+$ct = wp_get_theme();
+$screenshot = $ct->get_screenshot();
+$class = $screenshot ? 'has-screenshot' : '';
+
+$customize_title = sprintf( __( 'Customize &#8220;%s&#8221;' ), $ct->display('Name') );
+
+?>
+<div id="current-theme" class="<?php echo esc_attr( $class ); ?>">
+       <?php if ( $screenshot ) : ?>
+               <?php if ( current_user_can( 'edit_theme_options' ) ) : ?>
+               <a href="<?php echo wp_customize_url(); ?>" class="load-customize hide-if-no-customize" title="<?php echo esc_attr( $customize_title ); ?>">
+                       <img src="<?php echo esc_url( $screenshot ); ?>" alt="<?php esc_attr_e( 'Current theme preview' ); ?>" />
+               </a>
+               <?php endif; ?>
+               <img class="hide-if-customize" src="<?php echo esc_url( $screenshot ); ?>" alt="<?php esc_attr_e( 'Current theme preview' ); ?>" />
+       <?php endif; ?>
+
+       <h3><?php _e('Current Theme'); ?></h3>
+       <h4>
+               <?php echo $ct->display('Name'); ?>
+       </h4>
+
+       <div>
+               <ul class="theme-info">
+                       <li><?php printf( __('By %s'), $ct->display('Author') ); ?></li>
+                       <li><?php printf( __('Version %s'), $ct->display('Version') ); ?></li>
+               </ul>
+               <p class="theme-description"><?php echo $ct->display('Description'); ?></p>
+               <?php theme_update_available( $ct ); ?>
+       </div>
 
 
-<h3><?php _e('Current Theme'); ?></h3>
-<div id="current-theme">
-<?php if ( $ct->screenshot ) : ?>
-<img src="<?php echo $ct->theme_root_uri . '/' . $ct->stylesheet . '/' . $ct->screenshot; ?>" alt="<?php esc_attr_e('Current theme preview'); ?>" />
-<?php endif; ?>
-<h4><?php
-       /* translators: 1: theme title, 2: theme version, 3: theme author */
-       printf(__('%1$s %2$s by %3$s'), $ct->title, $ct->version, $ct->author) ; ?></h4>
-<p class="theme-description"><?php echo $ct->description; ?></p>
-<div class="theme-options">
-       <span><?php _e( 'Options:' )?></span>
        <?php
        // Pretend you didn't see this.
        $options = array();
        <?php
        // Pretend you didn't see this.
        $options = array();
@@ -117,10 +157,10 @@ if ( ! is_multisite() && current_user_can( 'install_themes' ) ) : ?>
                        if ( 'themes.php' == $item[2] || 'theme-editor.php' == $item[2] )
                                continue;
                        // 0 = name, 1 = capability, 2 = file
                        if ( 'themes.php' == $item[2] || 'theme-editor.php' == $item[2] )
                                continue;
                        // 0 = name, 1 = capability, 2 = file
-                       if ( ( strcmp($self, $item[2]) == 0 && empty($parent_file)) || ($parent_file && ($item[2] == $parent_file)) ) $class = ' class="current"';
-
+                       if ( ( strcmp($self, $item[2]) == 0 && empty($parent_file)) || ($parent_file && ($item[2] == $parent_file)) )
+                               $class = ' class="current"';
                        if ( !empty($submenu[$item[2]]) ) {
                        if ( !empty($submenu[$item[2]]) ) {
-                               $submenu[$item[2]] = array_values($submenu[$item[2]]);  // Re-index.
+                               $submenu[$item[2]] = array_values($submenu[$item[2]]); // Re-index.
                                $menu_hook = get_plugin_page_hook($submenu[$item[2]][0][2], $item[2]);
                                if ( file_exists(WP_PLUGIN_DIR . "/{$submenu[$item[2]][0][2]}") || !empty($menu_hook))
                                        $options[] = "<a href='admin.php?page={$submenu[$item[2]][0][2]}'$class>{$item[0]}</a>";
                                $menu_hook = get_plugin_page_hook($submenu[$item[2]][0][2], $item[2]);
                                if ( file_exists(WP_PLUGIN_DIR . "/{$submenu[$item[2]][0][2]}") || !empty($menu_hook))
                                        $options[] = "<a href='admin.php?page={$submenu[$item[2]][0][2]}'$class>{$item[0]}</a>";
@@ -135,13 +175,27 @@ if ( ! is_multisite() && current_user_can( 'install_themes' ) ) : ?>
                        }
                }
        }
                        }
                }
        }
-       echo implode ( ' | ', $options );
 
 
-       if ( $ct->tags ) : ?>
-       <p><?php _e('Tags:'); ?> <?php echo join(', ', $ct->tags); ?></p>
-       <?php endif; ?>
-</div>
-<?php theme_update_available($ct); ?>
+       if ( $options || current_user_can( 'edit_theme_options' ) ) :
+       ?>
+       <div class="theme-options">
+               <?php if ( current_user_can( 'edit_theme_options' ) ) : ?>
+               <a id="customize-current-theme-link" href="<?php echo wp_customize_url(); ?>" class="load-customize hide-if-no-customize" title="<?php echo esc_attr( $customize_title ); ?>"><?php _e( 'Customize' ); ?></a>
+               <?php
+               endif; // edit_theme_options
+               if ( $options ) :
+               ?>
+               <span><?php _e( 'Options:' )?></span>
+               <ul>
+                       <?php foreach ( $options as $option ) : ?>
+                               <li><?php echo $option; ?></li>
+                       <?php endforeach; ?>
+               </ul>
+       </div>
+       <?php
+               endif; // options
+       endif; // options || edit_theme_options
+       ?>
 
 </div>
 
 
 </div>
 
@@ -154,21 +208,19 @@ if ( ! current_user_can( 'switch_themes' ) ) {
 }
 ?>
 
 }
 ?>
 
-<h3><?php _e('Available Themes'); ?></h3>
+<form class="search-form filter-form" action="" method="get">
 
 
-<?php if ( !empty( $_REQUEST['s'] ) || !empty( $_REQUEST['filter'] ) || $wp_list_table->has_items() ) : ?>
+<h3 class="available-themes"><?php _e('Available Themes'); ?></h3>
 
 
-<form class="search-form filter-form" action="" method="get">
+<?php if ( !empty( $_REQUEST['s'] ) || !empty( $_REQUEST['features'] ) || $wp_list_table->has_items() ) : ?>
 
 <p class="search-box">
        <label class="screen-reader-text" for="theme-search-input"><?php _e('Search Installed Themes'); ?>:</label>
 
 <p class="search-box">
        <label class="screen-reader-text" for="theme-search-input"><?php _e('Search Installed Themes'); ?>:</label>
-       <input type="text" id="theme-search-input" name="s" value="<?php _admin_search_query(); ?>" />
+       <input type="search" id="theme-search-input" name="s" value="<?php _admin_search_query(); ?>" />
        <?php submit_button( __( 'Search Installed Themes' ), 'button', false, false, array( 'id' => 'search-submit' ) ); ?>
        <a id="filter-click" href="?filter=1"><?php _e( 'Feature Filter' ); ?></a>
 </p>
 
        <?php submit_button( __( 'Search Installed Themes' ), 'button', false, false, array( 'id' => 'search-submit' ) ); ?>
        <a id="filter-click" href="?filter=1"><?php _e( 'Feature Filter' ); ?></a>
 </p>
 
-<br class="clear"/>
-
 <div id="filter-box" style="<?php if ( empty($_REQUEST['filter']) ) echo 'display: none;'; ?>">
 <?php $feature_list = get_theme_feature_list(); ?>
        <div class="feature-filter">
 <div id="filter-box" style="<?php if ( empty($_REQUEST['filter']) ) echo 'display: none;'; ?>">
 <?php $feature_list = get_theme_feature_list(); ?>
        <div class="feature-filter">
@@ -198,19 +250,19 @@ if ( ! current_user_can( 'switch_themes' ) ) {
        <?php endforeach; ?>
 
        <div class="feature-container">
        <?php endforeach; ?>
 
        <div class="feature-container">
-               <?php submit_button( __( 'Apply Filters' ), 'button-secondary submitter', false, false, array( 'style' => 'margin-left: 120px', 'id' => 'filter-submit' ) ); ?>
+               <?php submit_button( __( 'Apply Filters' ), 'button-secondary submitter', false, false, array( 'id' => 'filter-submit' ) ); ?>
                &nbsp;
                &nbsp;
-               <small><a id="mini-filter-click" href="<?php echo esc_url( remove_query_arg( array('filter', 'features', 'submit') ) ); ?>"><?php _e( 'Close filters' )?></a></small>
+               <a id="mini-filter-click" href="<?php echo esc_url( remove_query_arg( array('filter', 'features', 'submit') ) ); ?>"><?php _e( 'Close filters' )?></a>
        </div>
        <br/>
        </div>
        <br class="clear"/>
 </div>
 
        </div>
        <br/>
        </div>
        <br class="clear"/>
 </div>
 
-<br class="clear" />
-
 <?php endif; ?>
 
 <?php endif; ?>
 
+<br class="clear" />
+
 <?php $wp_list_table->display(); ?>
 
 </form>
 <?php $wp_list_table->display(); ?>
 
 </form>
@@ -218,8 +270,7 @@ if ( ! current_user_can( 'switch_themes' ) ) {
 
 <?php
 // List broken themes, if any.
 
 <?php
 // List broken themes, if any.
-$broken_themes = get_broken_themes();
-if ( current_user_can('edit_themes') && count( $broken_themes ) ) {
+if ( ! is_multisite() && current_user_can('edit_themes') && $broken_themes = wp_get_themes( array( 'errors' => true ) ) ) {
 ?>
 
 <h3><?php _e('Broken Themes'); ?></h3>
 ?>
 
 <h3><?php _e('Broken Themes'); ?></h3>
@@ -231,20 +282,13 @@ if ( current_user_can('edit_themes') && count( $broken_themes ) ) {
                <th><?php _e('Description'); ?></th>
        </tr>
 <?php
                <th><?php _e('Description'); ?></th>
        </tr>
 <?php
-       $theme = '';
-
-       $theme_names = array_keys($broken_themes);
-       natcasesort($theme_names);
-
-       foreach ($theme_names as $theme_name) {
-               $title = $broken_themes[$theme_name]['Title'];
-               $description = $broken_themes[$theme_name]['Description'];
-
-               $theme = ('class="alternate"' == $theme) ? '' : 'class="alternate"';
+       $alt = '';
+       foreach ( $broken_themes as $broken_theme ) {
+               $alt = ('class="alternate"' == $alt) ? '' : 'class="alternate"';
                echo "
                echo "
-               <tr $theme>
-                        <td>$title</td>
-                        <td>$description</td>
+               <tr $alt>
+                        <td>" . $broken_theme->get('Name') ."</td>
+                        <td>" . $broken_theme->errors()->get_error_message() . "</td>
                </tr>";
        }
 ?>
                </tr>";
        }
 ?>
index 788972775290bc963c7519f6e112a272f3e8a695..a036f28553c8289e4f94b20bfd135886adebd8a7 100644 (file)
@@ -19,8 +19,8 @@ get_current_screen()->add_help_tab( array(
 get_current_screen()->add_help_tab( array(
        'id'      => 'converter',
        'title'   => __('Categories and Tags Converter'),
 get_current_screen()->add_help_tab( array(
        'id'      => 'converter',
        'title'   => __('Categories and Tags Converter'),
-       'content' => '<p>' . __('Categories have hierarchy, meaning that you can nest sub-categories. Tags do not have hierachy and cannot be nested. Sometimes people start out using one on their posts, then later realize that the other would work better for their content.' ) . '</p>' .
-       '<p>' . __( 'The Categories and Tags Converter link on this screen will take you to the Import screen, where that Converter is one of the plugins you can install. Once that plugin is installed, return to this screen  and the link will take you to a screen where you can choose to convert tags into categories or vice versa.' ) . '</p>',
+       'content' => '<p>' . __('Categories have hierarchy, meaning that you can nest sub-categories. Tags do not have hierarchy and cannot be nested. Sometimes people start out using one on their posts, then later realize that the other would work better for their content.' ) . '</p>' .
+       '<p>' . __( 'The Categories and Tags Converter link on this screen will take you to the Import screen, where that Converter is one of the plugins you can install. Once that plugin is installed, the Activate Plugin &amp; Run Importer link will take you to a screen where you can choose to convert tags into categories or vice versa.' ) . '</p>',
 ) );
 
 get_current_screen()->set_help_sidebar(
 ) );
 
 get_current_screen()->set_help_sidebar(
@@ -69,4 +69,3 @@ do_action( 'tool_box' );
 </div>
 <?php
 include('./admin-footer.php');
 </div>
 <?php
 include('./admin-footer.php');
-?>
index c071dc23822df128a792314be3d80b5eea2fed7f..360bb91adb8273b55b96eda3639b80e1f996cae1 100644 (file)
@@ -36,7 +36,7 @@ function list_core_update( $update ) {
        $mysql_version  = $wpdb->db_version();
        $show_buttons = true;
        if ( 'development' == $update->response ) {
        $mysql_version  = $wpdb->db_version();
        $show_buttons = true;
        if ( 'development' == $update->response ) {
-               $message = __('You are using a development version of WordPress.  You can update to the latest nightly build automatically or download the nightly build and install it manually:');
+               $message = __('You are using a development version of WordPress. You can update to the latest nightly build automatically or download the nightly build and install it manually:');
                $download = __('Download nightly build');
        } else {
                if ( $current ) {
                $download = __('Download nightly build');
        } else {
                if ( $current ) {
@@ -180,7 +180,7 @@ function core_upgrade_preamble() {
                echo '<p>' . __( 'While your site is being updated, it will be in maintenance mode. As soon as your updates are complete, your site will return to normal.' ) . '</p>';
        } else {
                list( $normalized_version ) = explode( '-', $wp_version );
                echo '<p>' . __( 'While your site is being updated, it will be in maintenance mode. As soon as your updates are complete, your site will return to normal.' ) . '</p>';
        } else {
                list( $normalized_version ) = explode( '-', $wp_version );
-               echo '<p>' . sprintf( __( '<a href="%s">Learn more about WordPress %s</a>.' ), esc_url( admin_url( 'about.php' ) ), $normalized_version ) . '</p>';
+               echo '<p>' . sprintf( __( '<a href="%s">Learn more about WordPress %s</a>.' ), esc_url( self_admin_url( 'about.php' ) ), $normalized_version ) . '</p>';
        }
        dismissed_updates();
 
        }
        dismissed_updates();
 
@@ -260,7 +260,7 @@ function list_plugin_updates() {
                        $upgrade_notice = '';
                }
 
                        $upgrade_notice = '';
                }
 
-               $details_url = self_admin_url('plugin-install.php?tab=plugin-information&plugin=' . $plugin_data->update->slug . '&TB_iframe=true&width=640&height=662');
+               $details_url = self_admin_url('plugin-install.php?tab=plugin-information&plugin=' . $plugin_data->update->slug . '&section=changelog&TB_iframe=true&width=640&height=662');
                $details_text = sprintf(__('View version %1$s details'), $plugin_data->update->new_version);
                $details = sprintf('<a href="%1$s" class="thickbox" title="%2$s">%3$s</a>.', esc_url($details_url), esc_attr($plugin_data->Name), $details_text);
 
                $details_text = sprintf(__('View version %1$s details'), $plugin_data->update->new_version);
                $details = sprintf('<a href="%1$s" class="thickbox" title="%2$s">%3$s</a>.', esc_url($details_url), esc_attr($plugin_data->Name), $details_text);
 
@@ -311,13 +311,11 @@ function list_theme_updates() {
        </tfoot>
        <tbody class="plugins">
 <?php
        </tfoot>
        <tbody class="plugins">
 <?php
-       foreach ( (array) $themes as $stylesheet => $theme_data) {
-               $screenshot = $theme_data->{'Theme Root URI'} . '/' . $stylesheet . '/' . $theme_data->Screenshot;
-
+       foreach ( $themes as $stylesheet => $theme ) {
                echo "
        <tr class='active'>
                echo "
        <tr class='active'>
-               <th scope='row' class='check-column'><input type='checkbox' name='checked[]' value='" . esc_attr($stylesheet) . "' /></th>
-               <td class='plugin-title'><img src='$screenshot' width='64' height='64' style='float:left; padding: 0 5px 5px' /><strong>{$theme_data->Name}</strong>" .  sprintf(__('You have version %1$s installed. Update to %2$s.'), $theme_data->Version, $theme_data->update['new_version']) . "</td>
+               <th scope='row' class='check-column'><input type='checkbox' name='checked[]' value='" . esc_attr( $stylesheet ) . "' /></th>
+               <td class='plugin-title'><img src='" . esc_url( $theme->get_screenshot() ) . "' width='64' height='64' style='float:left; padding: 0 5px 5px' /><strong>" . $theme->display('Name') . '</strong> ' . sprintf( __( 'You have version %1$s installed. Update to %2$s.' ), $theme->display('Version'), $theme->update['new_version'] ) . "</td>
        </tr>";
        }
 ?>
        </tr>";
        }
 ?>
@@ -352,7 +350,6 @@ function do_core_upgrade( $reinstall = false ) {
        if ( !$update )
                return;
 
        if ( !$update )
                return;
 
-
        if ( ! WP_Filesystem($credentials, ABSPATH) ) {
                request_filesystem_credentials($url, '', true, ABSPATH); //Failed to connect, Error and request again
                return;
        if ( ! WP_Filesystem($credentials, ABSPATH) ) {
                request_filesystem_credentials($url, '', true, ABSPATH); //Failed to connect, Error and request again
                return;
@@ -383,12 +380,12 @@ function do_core_upgrade( $reinstall = false ) {
        }
 
        show_message( __('WordPress updated successfully') );
        }
 
        show_message( __('WordPress updated successfully') );
-       show_message( '<span class="hide-if-no-js">' . sprintf( __( 'Welcome to WordPress %1$s. You will be redirected to the About WordPress screen. If not, click <a href="%s">here</a>.' ), $result, esc_url( admin_url( 'about.php?updated' ) ) ) . '</span>' );
-       show_message( '<span class="hide-if-js">' . sprintf( __( 'Welcome to WordPress %1$s. <a href="%2$s">Learn more</a>.' ), $result, esc_url( admin_url( 'about.php?updated' ) ) ) . '</span>' );
+       show_message( '<span class="hide-if-no-js">' . sprintf( __( 'Welcome to WordPress %1$s. You will be redirected to the About WordPress screen. If not, click <a href="%s">here</a>.' ), $result, esc_url( self_admin_url( 'about.php?updated' ) ) ) . '</span>' );
+       show_message( '<span class="hide-if-js">' . sprintf( __( 'Welcome to WordPress %1$s. <a href="%2$s">Learn more</a>.' ), $result, esc_url( self_admin_url( 'about.php?updated' ) ) ) . '</span>' );
        ?>
        </div>
        <script type="text/javascript">
        ?>
        </div>
        <script type="text/javascript">
-       window.location = '<?php echo admin_url( 'about.php?upgraded' ); ?>';
+       window.location = '<?php echo self_admin_url( 'about.php?updated' ); ?>';
        </script>
        <?php
 }
        </script>
        <?php
 }
@@ -447,7 +444,6 @@ get_current_screen()->add_help_tab( array(
        '<p>' . __('To update themes or plugins from this screen, use the checkboxes to make your selection and click on the appropriate Update button. Check the box at the top of the Themes or Plugins section to select all and update them all at once.') . '</p>'
 ) );
 
        '<p>' . __('To update themes or plugins from this screen, use the checkboxes to make your selection and click on the appropriate Update button. Check the box at the top of the Themes or Plugins section to select all and update them all at once.') . '</p>'
 ) );
 
-
 get_current_screen()->set_help_sidebar(
        '<p><strong>' . __('For more information:') . '</strong></p>' .
        '<p>' . __('<a href="http://codex.wordpress.org/Dashboard_Updates_Screen" target="_blank">Documentation on Updating WordPress</a>') . '</p>' .
 get_current_screen()->set_help_sidebar(
        '<p><strong>' . __('For more information:') . '</strong></p>' .
        '<p>' . __('<a href="http://codex.wordpress.org/Dashboard_Updates_Screen" target="_blank">Documentation on Updating WordPress</a>') . '</p>' .
index 71708d044b0a692ba0bbc69967afdf6ad0fc86e3..4fdf2064c79441181fb4580f1d04339562ce2a37 100644 (file)
@@ -152,8 +152,8 @@ if ( isset($_GET['action']) ) {
 
                check_admin_referer('upgrade-theme_' . $theme);
 
 
                check_admin_referer('upgrade-theme_' . $theme);
 
-               add_thickbox();
-               wp_enqueue_script('theme-preview');
+               wp_enqueue_script( 'customize-loader' );
+
                $title = __('Update Theme');
                $parent_file = 'themes.php';
                $submenu_file = 'themes.php';
                $title = __('Update Theme');
                $parent_file = 'themes.php';
                $submenu_file = 'themes.php';
@@ -199,13 +199,13 @@ if ( isset($_GET['action']) ) {
                include_once ABSPATH . 'wp-admin/includes/theme-install.php'; //for themes_api..
 
                check_admin_referer('install-theme_' . $theme);
                include_once ABSPATH . 'wp-admin/includes/theme-install.php'; //for themes_api..
 
                check_admin_referer('install-theme_' . $theme);
-               $api = themes_api('theme_information', array('slug' => $theme, 'fields' => array('sections' => false) ) ); //Save on a bit of bandwidth.
+               $api = themes_api('theme_information', array('slug' => $theme, 'fields' => array('sections' => false, 'tags' => false) ) ); //Save on a bit of bandwidth.
 
                if ( is_wp_error($api) )
                        wp_die($api);
 
 
                if ( is_wp_error($api) )
                        wp_die($api);
 
-               add_thickbox();
-               wp_enqueue_script('theme-preview');
+               wp_enqueue_script( 'customize-loader' );
+
                $title = __('Install Themes');
                $parent_file = 'themes.php';
                $submenu_file = 'themes.php';
                $title = __('Install Themes');
                $parent_file = 'themes.php';
                $submenu_file = 'themes.php';
@@ -230,11 +230,12 @@ if ( isset($_GET['action']) ) {
 
                $file_upload = new File_Upload_Upgrader('themezip', 'package');
 
 
                $file_upload = new File_Upload_Upgrader('themezip', 'package');
 
+               wp_enqueue_script( 'customize-loader' );
+
                $title = __('Upload Theme');
                $parent_file = 'themes.php';
                $submenu_file = 'theme-install.php';
                $title = __('Upload Theme');
                $parent_file = 'themes.php';
                $submenu_file = 'theme-install.php';
-               add_thickbox();
-               wp_enqueue_script('theme-preview');
+
                require_once(ABSPATH . 'wp-admin/admin-header.php');
 
                $title = sprintf( __('Installing Theme from uploaded file: %s'), basename( $file_upload->filename ) );
                require_once(ABSPATH . 'wp-admin/admin-header.php');
 
                $title = sprintf( __('Installing Theme from uploaded file: %s'), basename( $file_upload->filename ) );
index ca14a59c83b09cd6257a64ecceec8b66d154c6f6..080d74d7c5a3aa64d0a6e71951c57d6762f80a7a 100644 (file)
@@ -10,4 +10,3 @@
 
 _deprecated_file( basename(__FILE__), '2.5', 'wp-admin/includes/upgrade.php' );
 require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
 
 _deprecated_file( basename(__FILE__), '2.5', 'wp-admin/includes/upgrade.php' );
 require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
-?>
index 4a2a0f42589ddf58e609ce884974bce99c6ce2cf..6e5d3b8116f1545b0d72427c4297180a3eba3c56 100644 (file)
@@ -27,7 +27,7 @@ if ( isset( $_GET['step'] ) )
 else
        $step = 0;
 
 else
        $step = 0;
 
-// Do it.  No output.
+// Do it. No output.
 if ( 'upgrade_db' === $step ) {
        wp_upgrade();
        die( '0' );
 if ( 'upgrade_db' === $step ) {
        wp_upgrade();
        die( '0' );
@@ -56,7 +56,7 @@ else
        ?>
 </head>
 <body>
        ?>
 </head>
 <body>
-<h1 id="logo"><img alt="WordPress" src="images/wordpress-logo.png" /></h1>
+<h1 id="logo"><img alt="WordPress" src="images/wordpress-logo.png?ver=20120216" /></h1>
 
 <?php if ( get_option( 'db_version' ) == $wp_db_version || !is_blog_installed() ) : ?>
 
 
 <?php if ( get_option( 'db_version' ) == $wp_db_version || !is_blog_installed() ) : ?>
 
@@ -88,7 +88,7 @@ switch ( $step ) :
        case 1:
                wp_upgrade();
 
        case 1:
                wp_upgrade();
 
-                       $backto = !empty($_GET['backto']) ? stripslashes( urldecode( $_GET['backto'] ) ) :  __get_option( 'home' ) . '/';
+                       $backto = !empty($_GET['backto']) ? stripslashes( urldecode( $_GET['backto'] ) ) : __get_option( 'home' ) . '/';
                        $backto = esc_url( $backto );
                        $backto = wp_validate_redirect($backto, __get_option( 'home' ) . '/');
 ?>
                        $backto = esc_url( $backto );
                        $backto = wp_validate_redirect($backto, __get_option( 'home' ) . '/');
 ?>
index 63771a83aac25010a10547353e4d5d79077b5e69..d1723274740b3c0a10181641cf6bc606279f2769 100644 (file)
@@ -176,7 +176,12 @@ require_once('./admin-header.php');
 
 <div class="wrap">
 <?php screen_icon(); ?>
 
 <div class="wrap">
 <?php screen_icon(); ?>
-<h2><?php echo esc_html( $title ); ?> <a href="media-new.php" class="add-new-h2"><?php echo esc_html_x('Add New', 'file'); ?></a> <?php
+<h2>
+<?php
+echo esc_html( $title );
+if ( current_user_can( 'upload_files' ) ) { ?>
+       <a href="media-new.php" class="add-new-h2"><?php echo esc_html_x('Add New', 'file'); ?></a><?php
+}
 if ( ! empty( $_REQUEST['s'] ) )
        printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', get_search_query() ); ?>
 </h2>
 if ( ! empty( $_REQUEST['s'] ) )
        printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', get_search_query() ); ?>
 </h2>
index 5f3d07e0ff90b2fa361f2c30ffc97d9c592ec8fa..dfc878dd98a6fb6f740262bd75fa81b28476aad7 100644 (file)
@@ -36,7 +36,6 @@ if ( current_user_can('edit_users') && !is_user_admin() )
 else
        $parent_file = 'profile.php';
 
 else
        $parent_file = 'profile.php';
 
-
 $profile_help = '<p>' . __('Your profile contains information about you (your &#8220;account&#8221;) as well as some personal options related to using WordPress.') . '</p>' .
        '<p>' . __('You can change your password, turn on keyboard shortcuts, change the color scheme of your WordPress administration screens, and turn off the WYSIWYG (Visual) editor, among other things. You can hide the Toolbar (formerly called the Admin Bar) from the front end of your site, however it cannot be disabled on the admin screens.') . '</p>' .
        '<p>' . __('Your username cannot be changed, but you can use other fields to enter your real name or a nickname, and change which name to display on your posts.') . '</p>' .
 $profile_help = '<p>' . __('Your profile contains information about you (your &#8220;account&#8221;) as well as some personal options related to using WordPress.') . '</p>' .
        '<p>' . __('You can change your password, turn on keyboard shortcuts, change the color scheme of your WordPress administration screens, and turn off the WYSIWYG (Visual) editor, among other things. You can hide the Toolbar (formerly called the Admin Bar) from the front end of your site, however it cannot be disabled on the admin screens.') . '</p>' .
        '<p>' . __('Your username cannot be changed, but you can use other fields to enter your real name or a nickname, and change which name to display on your posts.') . '</p>' .
@@ -75,7 +74,6 @@ function use_ssl_preference($user) {
 <?php
 }
 
 <?php
 }
 
-
 // Only allow super admins on multisite to edit every user.
 if ( is_multisite() && ! current_user_can( 'manage_network_users' ) && $user_id != $current_user->ID && ! apply_filters( 'enable_edit_any_user_configuration', true ) )
        wp_die( __( 'You do not have permission to edit this user.' ) );
 // Only allow super admins on multisite to edit every user.
 if ( is_multisite() && ! current_user_can( 'manage_network_users' ) && $user_id != $current_user->ID && ! apply_filters( 'enable_edit_any_user_configuration', true ) )
        wp_die( __( 'You do not have permission to edit this user.' ) );
@@ -321,7 +319,7 @@ if ( is_multisite() && is_network_admin() && ! IS_PROFILE_PAGE && current_user_c
 
                        foreach ( $public_display as $id => $item ) {
                ?>
 
                        foreach ( $public_display as $id => $item ) {
                ?>
-                       <option id="<?php echo $id; ?>"<?php selected( $profileuser->display_name, $item ); ?>><?php echo $item; ?></option>
+                       <option <?php selected( $profileuser->display_name, $item ); ?>><?php echo $item; ?></option>
                <?php
                        }
                ?>
                <?php
                        }
                ?>
@@ -432,4 +430,3 @@ break;
 </script>
 <?php
 include( ABSPATH . 'wp-admin/admin-footer.php');
 </script>
 <?php
 include( ABSPATH . 'wp-admin/admin-footer.php');
-?>
index 43c37033e0ec42dba47c09a99efa2d9fd28a7da5..3119eb5720edcc316aea37279a38bea940ac1214 100644 (file)
@@ -26,7 +26,7 @@ If you do not want to join this site please ignore
 this email. This invitation will expire in a few days.
 
 Please click the following link to activate your user account:
 this email. This invitation will expire in a few days.
 
 Please click the following link to activate your user account:
-%%s' ), get_bloginfo('name'), site_url(), esc_html( $_REQUEST[ 'role' ] ) );
+%%s' ), get_bloginfo('name'), home_url(), esc_html( $_REQUEST[ 'role' ] ) );
        }
        add_filter( 'wpmu_signup_user_notification_email', 'admin_created_user_email' );
 
        }
        add_filter( 'wpmu_signup_user_notification_email', 'admin_created_user_email' );
 
@@ -80,7 +80,7 @@ You\'ve been invited to join \'%1$s\' at
 
 Please click the following link to confirm the invite:
 %4$s' );
 
 Please click the following link to confirm the invite:
 %4$s' );
-                       wp_mail( $new_user_email, sprintf( __( '[%s] Joining confirmation' ), get_option( 'blogname' ) ),  sprintf($message, get_option('blogname'), site_url(), $_REQUEST[ 'role' ], site_url("/newbloguser/$newuser_key/")));
+                       wp_mail( $new_user_email, sprintf( __( '[%s] Joining confirmation' ), get_option( 'blogname' ) ), sprintf($message, get_option('blogname'), home_url(), $_REQUEST[ 'role' ], home_url("/newbloguser/$newuser_key/")));
                        $redirect = add_query_arg( array('update' => 'add'), 'user-new.php' );
                }
        }
                        $redirect = add_query_arg( array('update' => 'add'), 'user-new.php' );
                }
        }
@@ -92,18 +92,16 @@ Please click the following link to confirm the invite:
        if ( ! current_user_can('create_users') )
                wp_die(__('Cheatin&#8217; uh?'));
 
        if ( ! current_user_can('create_users') )
                wp_die(__('Cheatin&#8217; uh?'));
 
-       if ( !is_multisite() ) {
-               $user_id = add_user();
+       if ( ! is_multisite() ) {
+               $user_id = edit_user();
 
                if ( is_wp_error( $user_id ) ) {
                        $add_user_errors = $user_id;
                } else {
 
                if ( is_wp_error( $user_id ) ) {
                        $add_user_errors = $user_id;
                } else {
-                       if ( current_user_can('edit_users') ) {
-                               $new_user_login = apply_filters('pre_user_login', sanitize_user(stripslashes($_REQUEST['user_login']), true));
-                               $redirect = 'users.php?usersearch='. urlencode($new_user_login) . '&update=add' . '#user-' . $user_id;
-                       } else {
+                       if ( current_user_can( 'list_users' ) )
+                               $redirect = 'users.php?update=add&id=' . $user_id;
+                       else
                                $redirect = add_query_arg( 'update', 'add', 'user-new.php' );
                                $redirect = add_query_arg( 'update', 'add', 'user-new.php' );
-                       }
                        wp_redirect( $redirect );
                        die();
                }
                        wp_redirect( $redirect );
                        die();
                }
@@ -143,7 +141,7 @@ $help = '<p>' . __('To add a new user to your site, fill in the form on this scr
 
 if ( is_multisite() ) {
        $help .= '<p>' . __('Because this is a multisite installation, you may add accounts that already exist on the Network by specifying a username or email, and defining a role. For more options, such as specifying a password, you have to be a Network Administrator and use the hover link under an existing user&#8217;s name to Edit the user profile under Network Admin > All Users.') . '</p>' .
 
 if ( is_multisite() ) {
        $help .= '<p>' . __('Because this is a multisite installation, you may add accounts that already exist on the Network by specifying a username or email, and defining a role. For more options, such as specifying a password, you have to be a Network Administrator and use the hover link under an existing user&#8217;s name to Edit the user profile under Network Admin > All Users.') . '</p>' .
-       '<p>' . __('New users will receive an email letting them know they&#8217;ve been added as a user for your site. This email will also contain their password. Check the box if you don&#8217;t want the user to recieve a welcome email.') . '</p>';
+       '<p>' . __('New users will receive an email letting them know they&#8217;ve been added as a user for your site. This email will also contain their password. Check the box if you don&#8217;t want the user to receive a welcome email.') . '</p>';
 } else {
        $help .= '<p>' . __('You must assign a password to the new user, which they can change after logging in. The username, however, cannot be changed.') . '</p>' .
        '<p>' . __('New users will receive an email letting them know they&#8217;ve been added as a user for your site. By default, this email will also contain their password. Uncheck the box if you don&#8217;t want the password to be included in the welcome email.') . '</p>';
 } else {
        $help .= '<p>' . __('You must assign a password to the new user, which they can change after logging in. The username, however, cannot be changed.') . '</p>' .
        '<p>' . __('New users will receive an email letting them know they&#8217;ve been added as a user for your site. By default, this email will also contain their password. Uncheck the box if you don&#8217;t want the password to be included in the welcome email.') . '</p>';
@@ -163,7 +161,7 @@ get_current_screen()->add_help_tab( array(
 'content' => '<p>' . __('Here is a basic overview of the different user roles and the permissions associated with each one:') . '</p>' .
                                '<ul>' .
                                '<li>' . __('Administrators have access to all the administration features.') . '</li>' .
 'content' => '<p>' . __('Here is a basic overview of the different user roles and the permissions associated with each one:') . '</p>' .
                                '<ul>' .
                                '<li>' . __('Administrators have access to all the administration features.') . '</li>' .
-                               '<li>' . __('Editors can publish posts, manage posts as well as manage other people&#8217;s posts, etc.')  . '</li>' .
+                               '<li>' . __('Editors can publish posts, manage posts as well as manage other people&#8217;s posts, etc.') . '</li>' .
                                '<li>' . __('Authors can publish and manage their own posts, and are able to upload files.') . '</li>' .
                                '<li>' . __('Contributors can write and manage their posts but not publish posts or upload media files.') . '</li>' .
                                '<li>' . __('Subscribers can read comments/comment/receive newsletters, etc. but cannot create regular site content.') . '</li>' .
                                '<li>' . __('Authors can publish and manage their own posts, and are able to upload files.') . '</li>' .
                                '<li>' . __('Contributors can write and manage their posts but not publish posts or upload media files.') . '</li>' .
                                '<li>' . __('Subscribers can read comments/comment/receive newsletters, etc. but cannot create regular site content.') . '</li>' .
@@ -179,7 +177,13 @@ get_current_screen()->set_help_sidebar(
 wp_enqueue_script('wp-ajax-response');
 wp_enqueue_script('user-profile');
 
 wp_enqueue_script('wp-ajax-response');
 wp_enqueue_script('user-profile');
 
-require_once ('admin-header.php');
+if ( is_multisite() && current_user_can( 'promote_users' ) && ! wp_is_large_network( 'users' )
+       && ( is_super_admin() || apply_filters( 'autocomplete_users_for_site_admins', false ) )
+) {
+       wp_enqueue_script( 'user-suggest' );
+}
+
+require_once( 'admin-header.php' );
 
 if ( isset($_GET['update']) ) {
        $messages = array();
 
 if ( isset($_GET['update']) ) {
        $messages = array();
@@ -251,10 +255,10 @@ if ( is_multisite() ) {
        if ( $do_both )
                echo '<h3 id="add-existing-user">' . __('Add Existing User') . '</h3>';
        if ( !is_super_admin() ) {
        if ( $do_both )
                echo '<h3 id="add-existing-user">' . __('Add Existing User') . '</h3>';
        if ( !is_super_admin() ) {
-               _e( 'Enter the email address of an existing user on this network to invite them to this site.  That person will be sent an email asking them to confirm the invite.' );
+               _e( 'Enter the email address of an existing user on this network to invite them to this site. That person will be sent an email asking them to confirm the invite.' );
                $label = __('E-mail');
        } else {
                $label = __('E-mail');
        } else {
-               _e( 'Enter the email address or username of an existing user on this network to invite them to this site.  That person will be sent an email asking them to confirm the invite.' );
+               _e( 'Enter the email address or username of an existing user on this network to invite them to this site. That person will be sent an email asking them to confirm the invite.' );
                $label = __('E-mail or Username');
        }
 ?>
                $label = __('E-mail or Username');
        }
 ?>
@@ -265,7 +269,7 @@ if ( is_multisite() ) {
 <table class="form-table">
        <tr class="form-field form-required">
                <th scope="row"><label for="adduser-email"><?php echo $label; ?></label></th>
 <table class="form-table">
        <tr class="form-field form-required">
                <th scope="row"><label for="adduser-email"><?php echo $label; ?></label></th>
-               <td><input name="email" type="text" id="adduser-email" value="" /></td>
+               <td><input name="email" type="text" id="adduser-email" class="wp-suggest-user" value="" /></td>
        </tr>
        <tr class="form-field">
                <th scope="row"><label for="adduser-role"><?php _e('Role'); ?></label></th>
        </tr>
        <tr class="form-field">
                <th scope="row"><label for="adduser-role"><?php _e('Role'); ?></label></th>
@@ -361,7 +365,7 @@ foreach ( array( 'user_login' => 'login', 'first_name' => 'firstname', 'last_nam
        <?php if ( is_multisite() && is_super_admin() ) { ?>
        <tr>
                <th scope="row"><label for="noconfirmation"><?php _e('Skip Confirmation Email') ?></label></th>
        <?php if ( is_multisite() && is_super_admin() ) { ?>
        <tr>
                <th scope="row"><label for="noconfirmation"><?php _e('Skip Confirmation Email') ?></label></th>
-               <td><label for="noconfirmation"><input type="checkbox" name="noconfirmation" id="noconfirmation" value="1"  <?php checked( $new_user_ignore_pass ); ?> /> <?php _e( 'Add the user without sending them a confirmation email.' ); ?></label></td>
+               <td><label for="noconfirmation"><input type="checkbox" name="noconfirmation" id="noconfirmation" value="1" <?php checked( $new_user_ignore_pass ); ?> /> <?php _e( 'Add the user without sending them a confirmation email.' ); ?></label></td>
        </tr>
        <?php } ?>
 </table>
        </tr>
        <?php } ?>
 </table>
@@ -373,4 +377,3 @@ foreach ( array( 'user_login' => 'login', 'first_name' => 'firstname', 'last_nam
 </div>
 <?php
 include('./admin-footer.php');
 </div>
 <?php
 include('./admin-footer.php');
-?>
diff --git a/wp-admin/user/about.php b/wp-admin/user/about.php
new file mode 100644 (file)
index 0000000..a5dbc98
--- /dev/null
@@ -0,0 +1,13 @@
+<?php
+/**
+ * User Dashboard About administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ * @since 3.4.0
+ */
+
+/** Load WordPress Administration Bootstrap */
+require_once( './admin.php' );
+
+require( '../about.php' );
\ No newline at end of file
index 6aebd88cceac06fcec25cc8a4c185bc466d418b2..25691c866a609aa066366cecf782ea00c69fd990 100644 (file)
@@ -7,7 +7,7 @@
  * @since 3.1.0
  */
 
  * @since 3.1.0
  */
 
-define('WP_USER_ADMIN', TRUE);
+define('WP_USER_ADMIN', true);
 
 require_once( dirname(dirname(__FILE__)) . '/admin.php');
 
 
 require_once( dirname(dirname(__FILE__)) . '/admin.php');
 
@@ -23,5 +23,3 @@ if ( $redirect_user_admin_request ) {
        exit;
 }
 unset( $redirect_user_admin_request );
        exit;
 }
 unset( $redirect_user_admin_request );
-
-?>
diff --git a/wp-admin/user/credits.php b/wp-admin/user/credits.php
new file mode 100644 (file)
index 0000000..faba84d
--- /dev/null
@@ -0,0 +1,13 @@
+<?php
+/**
+ * User Dashboard Credits administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ * @since 3.4.0
+ */
+
+/** Load WordPress Administration Bootstrap */
+require_once( './admin.php' );
+
+require( '../credits.php' );
\ No newline at end of file
diff --git a/wp-admin/user/freedoms.php b/wp-admin/user/freedoms.php
new file mode 100644 (file)
index 0000000..3d04407
--- /dev/null
@@ -0,0 +1,13 @@
+<?php
+/**
+ * User Dashboard Freedoms administration panel.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ * @since 3.4.0
+ */
+
+/** Load WordPress Administration Bootstrap */
+require_once( './admin.php' );
+
+require( '../freedoms.php' );
\ No newline at end of file
diff --git a/wp-admin/user/index-extra.php b/wp-admin/user/index-extra.php
deleted file mode 100644 (file)
index 4881263..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-/**
- * Handle default dashboard widgets options AJAX.
- *
- * @package WordPress
- * @subpackage Administration
- * @since 3.1.0
- */
-
-require_once( './admin.php' );
-
-require( '../index-extra.php' );
index 5f9e4f6482b4f6689bf970b931dbd488d79f217d..9f30076bd4f1d070d511f90a0e8cc8f63ff7f016 100644 (file)
@@ -20,5 +20,3 @@ $compat = array();
 $submenu = array();
 
 require_once(ABSPATH . 'wp-admin/includes/menu.php');
 $submenu = array();
 
 require_once(ABSPATH . 'wp-admin/includes/menu.php');
-
-?>
index 5fefb4276ef3526e90b46d79a908307c27daf3c9..f26255fca65dd35677e331dfcd2193c18b2e3457 100644 (file)
@@ -33,7 +33,7 @@ get_current_screen()->add_help_tab( array(
        'content' => '<p>' . __('You can customize the display of this screen in a number of ways:') . '</p>' .
                                        '<ul>' .
                                        '<li>' . __('You can hide/display columns based on your needs and decide how many users to list per screen using the Screen Options tab.') . '</li>' .
        'content' => '<p>' . __('You can customize the display of this screen in a number of ways:') . '</p>' .
                                        '<ul>' .
                                        '<li>' . __('You can hide/display columns based on your needs and decide how many users to list per screen using the Screen Options tab.') . '</li>' .
-                                       '<li>' . __('You can filter the list of users by User Role using the text links in the upper left to show All, Administrator, Editor, Author, Contributor, or Subscriber. The default view is to show all users.  Unused User Roles are not listed.') . '</li>' .
+                                       '<li>' . __('You can filter the list of users by User Role using the text links in the upper left to show All, Administrator, Editor, Author, Contributor, or Subscriber. The default view is to show all users. Unused User Roles are not listed.') . '</li>' .
                                        '<li>' . __('You can view all posts made by a user by clicking on the number under the Posts column.') . '</li>' .
                                        '</ul>'
 ) );
                                        '<li>' . __('You can view all posts made by a user by clicking on the number under the Posts column.') . '</li>' .
                                        '</ul>'
 ) );
@@ -338,6 +338,7 @@ default:
                wp_redirect( add_query_arg( 'paged', $total_pages ) );
                exit;
        }
                wp_redirect( add_query_arg( 'paged', $total_pages ) );
                exit;
        }
+
        include('./admin-header.php');
 
        $messages = array();
        include('./admin-header.php');
 
        $messages = array();
@@ -346,10 +347,16 @@ default:
                case 'del':
                case 'del_many':
                        $delete_count = isset($_GET['delete_count']) ? (int) $_GET['delete_count'] : 0;
                case 'del':
                case 'del_many':
                        $delete_count = isset($_GET['delete_count']) ? (int) $_GET['delete_count'] : 0;
-                       $messages[] = '<div id="message" class="updated"><p>' . sprintf(_n('%s user deleted', '%s users deleted', $delete_count), $delete_count) . '</p></div>';
+                       $messages[] = '<div id="message" class="updated"><p>' . sprintf( _n( 'User deleted.', '%s users deleted.', $delete_count ), number_format_i18n( $delete_count ) ) . '</p></div>';
                        break;
                case 'add':
                        break;
                case 'add':
-                       $messages[] = '<div id="message" class="updated"><p>' . __('New user created.') . '</p></div>';
+                       if ( isset( $_GET['id'] ) && ( $user_id = $_GET['id'] ) && current_user_can( 'edit_user', $user_id ) ) {
+                               $messages[] = '<div id="message" class="updated"><p>' . sprintf( __( 'New user created. <a href="%s">Edit user</a>' ),
+                                       esc_url( add_query_arg( 'wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ),
+                                               self_admin_url( 'user-edit.php?user_id=' . $user_id ) ) ) ) . '</p></div>';
+                       } else {
+                               $messages[] = '<div id="message" class="updated"><p>' . __( 'New user created.' ) . '</p></div>';
+                       }
                        break;
                case 'promote':
                        $messages[] = '<div id="message" class="updated"><p>' . __('Changed roles.') . '</p></div>';
                        break;
                case 'promote':
                        $messages[] = '<div id="message" class="updated"><p>' . __('Changed roles.') . '</p></div>';
index 6c05e533033564b21af22938928634738830de69..9df98fbe29db1e9afd620d207a0ac5d61550a1c1 100644 (file)
@@ -25,11 +25,15 @@ function wp_widgets_access_body_class($classes) {
        return "$classes widgets_access ";
 }
 
        return "$classes widgets_access ";
 }
 
-if ( 'on' == $widgets_access )
+if ( 'on' == $widgets_access ) {
        add_filter( 'admin_body_class', 'wp_widgets_access_body_class' );
        add_filter( 'admin_body_class', 'wp_widgets_access_body_class' );
-else
+} else {
        wp_enqueue_script('admin-widgets');
 
        wp_enqueue_script('admin-widgets');
 
+       if ( wp_is_mobile() )
+               wp_enqueue_script( 'jquery-touch-punch' );
+}
+
 do_action( 'sidebar_admin_setup' );
 
 $title = __( 'Widgets' );
 do_action( 'sidebar_admin_setup' );
 
 $title = __( 'Widgets' );
index 323f832a8ba1d48e00f83f606cdc126d99abc56e..217ee7b6a56bd74cd4073555bf5841ca466e4a6d 100644 (file)
@@ -18,1595 +18,36 @@ require_once('./wp-load.php');
 /** Atom Publishing Protocol Class */
 require_once(ABSPATH . WPINC . '/atomlib.php');
 
 /** Atom Publishing Protocol Class */
 require_once(ABSPATH . WPINC . '/atomlib.php');
 
+/** Atom Server **/
+require_once(ABSPATH . WPINC . '/class-wp-atom-server.php');
+
 /** Admin Image API for metadata updating */
 require_once(ABSPATH . '/wp-admin/includes/image.php');
 
 $_SERVER['PATH_INFO'] = preg_replace( '/.*\/wp-app\.php/', '', $_SERVER['REQUEST_URI'] );
 
 /** Admin Image API for metadata updating */
 require_once(ABSPATH . '/wp-admin/includes/image.php');
 
 $_SERVER['PATH_INFO'] = preg_replace( '/.*\/wp-app\.php/', '', $_SERVER['REQUEST_URI'] );
 
-/**
- * Whether to enable Atom Publishing Protocol Logging.
- *
- * @name app_logging
- * @var int|bool
- */
-$app_logging = 0;
+// Allow for a plugin to insert a different class to handle requests.
+$wp_atom_server_class = apply_filters('wp_atom_server_class', 'wp_atom_server');
+$wp_atom_server = new $wp_atom_server_class;
 
 
-/**
- * Whether to always authenticate user. Permanently set to true.
- *
- * @name always_authenticate
- * @var int|bool
- * @todo Should be an option somewhere
- */
-$always_authenticate = 1;
+// Handle the request
+$wp_atom_server->handle_request();
+
+exit;
 
 /**
  * Writes logging info to a file.
  *
  * @since 2.2.0
 
 /**
  * Writes logging info to a file.
  *
  * @since 2.2.0
- * @uses $app_logging
- * @package WordPress
- * @subpackage Logging
+ * @deprecated 3.4.0
+ * @deprecated Use error_log()
+ * @link http://www.php.net/manual/en/function.error-log.php
  *
  * @param string $label Type of logging
  * @param string $msg Information describing logging reason.
  */
  *
  * @param string $label Type of logging
  * @param string $msg Information describing logging reason.
  */
-function log_app($label,$msg) {
-       global $app_logging;
-       if ($app_logging) {
-               $fp = fopen( 'wp-app.log', 'a+');
-               $date = gmdate( 'Y-m-d H:i:s' );
-               fwrite($fp, "\n\n$date - $label\n$msg\n");
-               fclose($fp);
-       }
-}
-
-/**
- * Filter to add more post statuses.
- *
- * @since 2.2.0
- *
- * @param string $where SQL statement to filter.
- * @return string Filtered SQL statement with added post_status for where clause.
- */
-function wa_posts_where_include_drafts_filter($where) {
-       $where = str_replace("post_status = 'publish'","post_status = 'publish' OR post_status = 'future' OR post_status = 'draft' OR post_status = 'inherit'", $where);
-       return $where;
-
+function log_app( $label, $msg ) {
+       _deprecated_function( __FUNCTION__, '3.4', 'error_log()' );
+       if ( ! empty( $GLOBALS['app_logging'] ) )
+               error_log( $label . ' - ' . $msg );
 }
 }
-add_filter('posts_where', 'wa_posts_where_include_drafts_filter');
-
-/**
- * WordPress AtomPub API implementation.
- *
- * @package WordPress
- * @subpackage Publishing
- * @since 2.2.0
- */
-class AtomServer {
-
-       /**
-        * ATOM content type.
-        *
-        * @since 2.2.0
-        * @var string
-        */
-       var $ATOM_CONTENT_TYPE = 'application/atom+xml';
-
-       /**
-        * Categories ATOM content type.
-        *
-        * @since 2.2.0
-        * @var string
-        */
-       var $CATEGORIES_CONTENT_TYPE = 'application/atomcat+xml';
-
-       /**
-        * Service ATOM content type.
-        *
-        * @since 2.3.0
-        * @var string
-        */
-       var $SERVICE_CONTENT_TYPE = 'application/atomsvc+xml';
-
-       /**
-        * ATOM XML namespace.
-        *
-        * @since 2.3.0
-        * @var string
-        */
-       var $ATOM_NS = 'http://www.w3.org/2005/Atom';
-
-       /**
-        * ATOMPUB XML namespace.
-        *
-        * @since 2.3.0
-        * @var string
-        */
-       var $ATOMPUB_NS = 'http://www.w3.org/2007/app';
-
-       /**
-        * Entries path.
-        *
-        * @since 2.2.0
-        * @var string
-        */
-       var $ENTRIES_PATH = "posts";
-
-       /**
-        * Categories path.
-        *
-        * @since 2.2.0
-        * @var string
-        */
-       var $CATEGORIES_PATH = "categories";
-
-       /**
-        * Media path.
-        *
-        * @since 2.2.0
-        * @var string
-        */
-       var $MEDIA_PATH = "attachments";
-
-       /**
-        * Entry path.
-        *
-        * @since 2.2.0
-        * @var string
-        */
-       var $ENTRY_PATH = "post";
-
-       /**
-        * Service path.
-        *
-        * @since 2.2.0
-        * @var string
-        */
-       var $SERVICE_PATH = "service";
-
-       /**
-        * Media single path.
-        *
-        * @since 2.2.0
-        * @var string
-        */
-       var $MEDIA_SINGLE_PATH = "attachment";
-
-       /**
-        * ATOMPUB parameters.
-        *
-        * @since 2.2.0
-        * @var array
-        */
-       var $params = array();
-
-       /**
-        * Supported ATOMPUB media types.
-        *
-        * @since 2.3.0
-        * @var array
-        */
-       var $media_content_types = array('image/*','audio/*','video/*');
-
-       /**
-        * ATOMPUB content type(s).
-        *
-        * @since 2.2.0
-        * @var array
-        */
-       var $atom_content_types = array('application/atom+xml');
-
-       /**
-        * ATOMPUB methods.
-        *
-        * @since 2.2.0
-        * @var unknown_type
-        */
-       var $selectors = array();
-
-       /**
-        * Whether to do output.
-        *
-        * Support for head.
-        *
-        * @since 2.2.0
-        * @var bool
-        */
-       var $do_output = true;
-
-       /**
-        * Constructor - Sets up object properties.
-        *
-        * @since 2.2.0
-        * @return AtomServer
-        */
-       function __construct() {
-
-               $var_by_ref = explode( '/', $_SERVER['SCRIPT_NAME'] );
-               $this->script_name = array_pop( $var_by_ref );
-               $this->app_base = site_url( $this->script_name . '/' );
-
-               $this->selectors = array(
-                       '@/service$@' =>
-                               array('GET' => 'get_service'),
-                       '@/categories$@' =>
-                               array('GET' => 'get_categories_xml'),
-                       '@/post/(\d+)$@' =>
-                               array('GET' => 'get_post',
-                                               'PUT' => 'put_post',
-                                               'DELETE' => 'delete_post'),
-                       '@/posts/?(\d+)?$@' =>
-                               array('GET' => 'get_posts',
-                                               'POST' => 'create_post'),
-                       '@/attachments/?(\d+)?$@' =>
-                               array('GET' => 'get_attachment',
-                                               'POST' => 'create_attachment'),
-                       '@/attachment/file/(\d+)$@' =>
-                               array('GET' => 'get_file',
-                                               'PUT' => 'put_file',
-                                               'DELETE' => 'delete_file'),
-                       '@/attachment/(\d+)$@' =>
-                               array('GET' => 'get_attachment',
-                                               'PUT' => 'put_attachment',
-                                               'DELETE' => 'delete_attachment'),
-               );
-       }
-
-       /**
-        * Handle ATOMPUB request.
-        *
-        * @since 2.2.0
-        */
-       function handle_request() {
-               global $always_authenticate;
-
-               if ( !empty( $_SERVER['ORIG_PATH_INFO'] ) )
-                       $path = $_SERVER['ORIG_PATH_INFO'];
-               else
-                       $path = $_SERVER['PATH_INFO'];
-
-               $method = $_SERVER['REQUEST_METHOD'];
-
-               log_app('REQUEST',"$method $path\n================");
-
-               $this->process_conditionals();
-               //$this->process_conditionals();
-
-               // exception case for HEAD (treat exactly as GET, but don't output)
-               if ($method == 'HEAD') {
-                       $this->do_output = false;
-                       $method = 'GET';
-               }
-
-               // redirect to /service in case no path is found.
-               if (strlen($path) == 0 || $path == '/')
-                       $this->redirect($this->get_service_url());
-
-               // check to see if AtomPub is enabled
-               if ( !get_option( 'enable_app' ) )
-                       $this->forbidden( sprintf( __( 'AtomPub services are disabled on this site.  An admin user can enable them at %s' ), admin_url('options-writing.php') ) );
-
-               // dispatch
-               foreach ( $this->selectors as $regex => $funcs ) {
-                       if ( preg_match($regex, $path, $matches) ) {
-                               if ( isset($funcs[$method]) ) {
-
-                                       // authenticate regardless of the operation and set the current
-                                       // user. each handler will decide if auth is required or not.
-                                       if ( !$this->authenticate() ) {
-                                               if ( $always_authenticate )
-                                                       $this->auth_required('Credentials required.');
-                                       }
-
-                                       array_shift($matches);
-                                       call_user_func_array(array(&$this,$funcs[$method]), $matches);
-                                       exit();
-                               } else {
-                                       // only allow what we have handlers for...
-                                       $this->not_allowed(array_keys($funcs));
-                               }
-                       }
-               }
-
-               // oops, nothing found
-               $this->not_found();
-       }
-
-       /**
-        * Retrieve XML for ATOMPUB service.
-        *
-        * @since 2.2.0
-        */
-       function get_service() {
-               log_app('function','get_service()');
-
-               if ( !current_user_can( 'edit_posts' ) )
-                       $this->auth_required( __( 'Sorry, you do not have the right to access this site.' ) );
-
-               $entries_url = esc_attr($this->get_entries_url());
-               $categories_url = esc_attr($this->get_categories_url());
-               $media_url = esc_attr($this->get_attachments_url());
-               $accepted_media_types = '';
-               foreach ($this->media_content_types as $med) {
-                       $accepted_media_types = $accepted_media_types . "<accept>" . $med . "</accept>";
-               }
-               $atom_prefix="atom";
-               $atom_blogname = get_bloginfo('name');
-               $service_doc = <<<EOD
-<service xmlns="$this->ATOMPUB_NS" xmlns:$atom_prefix="$this->ATOM_NS">
-  <workspace>
-    <$atom_prefix:title>$atom_blogname Workspace</$atom_prefix:title>
-    <collection href="$entries_url">
-      <$atom_prefix:title>$atom_blogname Posts</$atom_prefix:title>
-      <accept>$this->ATOM_CONTENT_TYPE;type=entry</accept>
-      <categories href="$categories_url" />
-    </collection>
-    <collection href="$media_url">
-      <$atom_prefix:title>$atom_blogname Media</$atom_prefix:title>
-      $accepted_media_types
-    </collection>
-  </workspace>
-</service>
-
-EOD;
-
-               $this->output($service_doc, $this->SERVICE_CONTENT_TYPE);
-       }
-
-       /**
-        * Retrieve categories list in XML format.
-        *
-        * @since 2.2.0
-        */
-       function get_categories_xml() {
-               log_app('function','get_categories_xml()');
-
-               if ( !current_user_can( 'edit_posts' ) )
-                       $this->auth_required( __( 'Sorry, you do not have the right to access this site.' ) );
-
-               $home = esc_attr(get_bloginfo_rss('url'));
-
-               $categories = "";
-               $cats = get_categories(array('hierarchical' => 0, 'hide_empty' => 0));
-               foreach ( (array) $cats as $cat ) {
-                       $categories .= "    <category term=\"" . esc_attr($cat->name) .  "\" />\n";
-               }
-               $output = <<<EOD
-<app:categories xmlns:app="$this->ATOMPUB_NS"
-       xmlns="$this->ATOM_NS"
-       fixed="yes" scheme="$home">
-       $categories
-</app:categories>
-EOD;
-               $this->output($output, $this->CATEGORIES_CONTENT_TYPE);
-       }
-
-       /**
-        * Create new post.
-        *
-        * @since 2.2.0
-        */
-       function create_post() {
-               global $user_ID;
-               $this->get_accepted_content_type($this->atom_content_types);
-
-               $parser = new AtomParser();
-               if ( !$parser->parse() )
-                       $this->client_error();
-
-               $entry = array_pop($parser->feed->entries);
-
-               log_app('Received entry:', print_r($entry,true));
-
-               $catnames = array();
-               foreach ( $entry->categories as $cat ) {
-                       array_push($catnames, $cat["term"]);
-               }
-
-               $wp_cats = get_categories(array('hide_empty' => false));
-
-               $post_category = array();
-
-               foreach ( $wp_cats as $cat ) {
-                       if ( in_array($cat->name, $catnames) )
-                               array_push($post_category, $cat->term_id);
-               }
-
-               $publish = ! ( isset( $entry->draft ) && 'yes' == trim( $entry->draft ) );
-
-               $cap = ($publish) ? 'publish_posts' : 'edit_posts';
-
-               if ( !current_user_can($cap) )
-                       $this->auth_required(__('Sorry, you do not have the right to edit/publish new posts.'));
-
-               $blog_ID = get_current_blog_id();
-               $post_status = ($publish) ? 'publish' : 'draft';
-               $post_author = (int) $user_ID;
-               $post_title = $entry->title[1];
-               $post_content = $entry->content[1];
-               $post_excerpt = $entry->summary[1];
-               $pubtimes = $this->get_publish_time($entry->published);
-               $post_date = $pubtimes[0];
-               $post_date_gmt = $pubtimes[1];
-
-               if ( isset( $_SERVER['HTTP_SLUG'] ) )
-                       $post_name = $_SERVER['HTTP_SLUG'];
-
-               $post_data = compact('blog_ID', 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_category', 'post_status', 'post_excerpt', 'post_name');
-
-               $this->escape($post_data);
-               log_app('Inserting Post. Data:', print_r($post_data,true));
-
-               $postID = wp_insert_post($post_data);
-               if ( is_wp_error( $postID ) )
-                       $this->internal_error($postID->get_error_message());
-
-               if ( !$postID )
-                       $this->internal_error(__('Sorry, your entry could not be posted. Something wrong happened.'));
-
-               // getting warning here about unable to set headers
-               // because something in the cache is printing to the buffer
-               // could we clean up wp_set_post_categories or cache to not print
-               // this could affect our ability to send back the right headers
-               @wp_set_post_categories($postID, $post_category);
-
-               do_action( 'atompub_create_post', $postID, $entry );
-
-               $output = $this->get_entry($postID);
-
-               log_app('function',"create_post($postID)");
-               $this->created($postID, $output);
-       }
-
-       /**
-        * Retrieve post.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Post ID.
-        */
-       function get_post($postID) {
-               global $entry;
-
-               if ( !current_user_can( 'edit_post', $postID ) )
-                       $this->auth_required( __( 'Sorry, you do not have the right to access this post.' ) );
-
-               $this->set_current_entry($postID);
-               $output = $this->get_entry($postID);
-               log_app('function',"get_post($postID)");
-               $this->output($output);
-
-       }
-
-       /**
-        * Update post.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Post ID.
-        */
-       function put_post($postID) {
-               // checked for valid content-types (atom+xml)
-               // quick check and exit
-               $this->get_accepted_content_type($this->atom_content_types);
-
-               $parser = new AtomParser();
-               if ( !$parser->parse() )
-                       $this->bad_request();
-
-               $parsed = array_pop($parser->feed->entries);
-
-               log_app('Received UPDATED entry:', print_r($parsed,true));
-
-               // check for not found
-               global $entry;
-               $this->set_current_entry($postID);
-
-               if ( !current_user_can('edit_post', $entry['ID']) )
-                       $this->auth_required(__('Sorry, you do not have the right to edit this post.'));
-
-               $publish = ! ( isset($parsed->draft) && 'yes' == trim($parsed->draft) );
-               $post_status = ($publish) ? 'publish' : 'draft';
-
-               extract($entry);
-
-               $post_title = $parsed->title[1];
-               $post_content = $parsed->content[1];
-               $post_excerpt = $parsed->summary[1];
-               $pubtimes = $this->get_publish_time($entry->published);
-               $post_date = $pubtimes[0];
-               $post_date_gmt = $pubtimes[1];
-               $pubtimes = $this->get_publish_time($parsed->updated);
-               $post_modified = $pubtimes[0];
-               $post_modified_gmt = $pubtimes[1];
-
-               $postdata = compact('ID', 'post_content', 'post_title', 'post_category', 'post_status', 'post_excerpt', 'post_date', 'post_date_gmt', 'post_modified', 'post_modified_gmt');
-               $this->escape($postdata);
-
-               $result = wp_update_post($postdata);
-
-               if ( !$result )
-                       $this->internal_error(__('For some strange yet very annoying reason, this post could not be edited.'));
-
-               do_action( 'atompub_put_post', $ID, $parsed );
-
-               log_app('function',"put_post($postID)");
-               $this->ok();
-       }
-
-       /**
-        * Remove post.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Post ID.
-        */
-       function delete_post($postID) {
-
-               // check for not found
-               global $entry;
-               $this->set_current_entry($postID);
-
-               if ( !current_user_can('edit_post', $postID) )
-                       $this->auth_required(__('Sorry, you do not have the right to delete this post.'));
-
-               if ( $entry['post_type'] == 'attachment' ) {
-                       $this->delete_attachment($postID);
-               } else {
-                       $result = wp_delete_post($postID);
-
-                       if ( !$result ) {
-                               $this->internal_error(__('For some strange yet very annoying reason, this post could not be deleted.'));
-                       }
-
-                       log_app('function',"delete_post($postID)");
-                       $this->ok();
-               }
-
-       }
-
-       /**
-        * Retrieve attachment.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Optional. Post ID.
-        */
-       function get_attachment($postID = null) {
-               if ( !current_user_can( 'upload_files' ) )
-                       $this->auth_required( __( 'Sorry, you do not have permission to upload files.' ) );
-
-               if ( !isset($postID) ) {
-                       $this->get_attachments();
-               } else {
-                       $this->set_current_entry($postID);
-                       $output = $this->get_entry($postID, 'attachment');
-                       log_app('function',"get_attachment($postID)");
-                       $this->output($output);
-               }
-       }
-
-       /**
-        * Create new attachment.
-        *
-        * @since 2.2.0
-        */
-       function create_attachment() {
-
-               $type = $this->get_accepted_content_type();
-
-               if ( !current_user_can('upload_files') )
-                       $this->auth_required(__('You do not have permission to upload files.'));
-
-               $fp = fopen("php://input", "rb");
-               $bits = null;
-               while ( !feof($fp) ) {
-                       $bits .= fread($fp, 4096);
-               }
-               fclose($fp);
-
-               $slug = '';
-               if ( isset( $_SERVER['HTTP_SLUG'] ) )
-                       $slug = $_SERVER['HTTP_SLUG'];
-               elseif ( isset( $_SERVER['HTTP_TITLE'] ) )
-                       $slug = $_SERVER['HTTP_TITLE'];
-               elseif ( empty( $slug ) ) // just make a random name
-                       $slug = substr( md5( uniqid( microtime() ) ), 0, 7);
-               $ext = preg_replace( '|.*/([a-z0-9]+)|', '$1', $_SERVER['CONTENT_TYPE'] );
-               $slug = sanitize_file_name( "$slug.$ext" );
-               $file = wp_upload_bits( $slug, NULL, $bits);
-
-               log_app('wp_upload_bits returns:',print_r($file,true));
-
-               $url = $file['url'];
-               $file = $file['file'];
-
-               do_action('wp_create_file_in_uploads', $file); // replicate
-
-               // Construct the attachment array
-               $attachment = array(
-                       'post_title' => $slug,
-                       'post_content' => $slug,
-                       'post_status' => 'attachment',
-                       'post_parent' => 0,
-                       'post_mime_type' => $type,
-                       'guid' => $url
-                       );
-
-               // Save the data
-               $postID = wp_insert_attachment($attachment, $file);
-
-               if (!$postID)
-                       $this->internal_error(__('Sorry, your entry could not be posted. Something wrong happened.'));
-
-               $output = $this->get_entry($postID, 'attachment');
-
-               $this->created($postID, $output, 'attachment');
-               log_app('function',"create_attachment($postID)");
-       }
-
-       /**
-        * Update attachment.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Post ID.
-        */
-       function put_attachment($postID) {
-               // checked for valid content-types (atom+xml)
-               // quick check and exit
-               $this->get_accepted_content_type($this->atom_content_types);
-
-               $parser = new AtomParser();
-               if (!$parser->parse()) {
-                       $this->bad_request();
-               }
-
-               $parsed = array_pop($parser->feed->entries);
-
-               // check for not found
-               global $entry;
-               $this->set_current_entry($postID);
-
-               if ( !current_user_can('edit_post', $entry['ID']) )
-                       $this->auth_required(__('Sorry, you do not have the right to edit this post.'));
-
-               extract($entry);
-
-               $post_title = $parsed->title[1];
-               $post_content = $parsed->summary[1];
-               $pubtimes = $this->get_publish_time($parsed->updated);
-               $post_modified = $pubtimes[0];
-               $post_modified_gmt = $pubtimes[1];
-
-               $postdata = compact('ID', 'post_content', 'post_title', 'post_category', 'post_status', 'post_excerpt', 'post_modified', 'post_modified_gmt');
-               $this->escape($postdata);
-
-               $result = wp_update_post($postdata);
-
-               if ( !$result )
-                       $this->internal_error(__('For some strange yet very annoying reason, this post could not be edited.'));
-
-               log_app('function',"put_attachment($postID)");
-               $this->ok();
-       }
-
-       /**
-        * Remove attachment.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Post ID.
-        */
-       function delete_attachment($postID) {
-               log_app('function',"delete_attachment($postID). File '$location' deleted.");
-
-               // check for not found
-               global $entry;
-               $this->set_current_entry($postID);
-
-               if ( !current_user_can('edit_post', $postID) )
-                       $this->auth_required(__('Sorry, you do not have the right to delete this post.'));
-
-               $location = get_post_meta($entry['ID'], '_wp_attached_file', true);
-               $filetype = wp_check_filetype($location);
-
-               if ( !isset($location) || 'attachment' != $entry['post_type'] || empty($filetype['ext']) )
-                       $this->internal_error(__('Error occurred while accessing post metadata for file location.'));
-
-               // delete file
-               @unlink($location);
-
-               // delete attachment
-               $result = wp_delete_post($postID);
-
-               if ( !$result )
-                       $this->internal_error(__('For some strange yet very annoying reason, this post could not be deleted.'));
-
-               log_app('function',"delete_attachment($postID). File '$location' deleted.");
-               $this->ok();
-       }
-
-       /**
-        * Retrieve attachment from post.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Post ID.
-        */
-       function get_file($postID) {
-
-               // check for not found
-               global $entry;
-               $this->set_current_entry($postID);
-
-               // then whether user can edit the specific post
-               if ( !current_user_can('edit_post', $postID) )
-                       $this->auth_required(__('Sorry, you do not have the right to edit this post.'));
-
-               $location = get_post_meta($entry['ID'], '_wp_attached_file', true);
-               $location = get_option ('upload_path') . '/' . $location;
-               $filetype = wp_check_filetype($location);
-
-               if ( !isset($location) || 'attachment' != $entry['post_type'] || empty($filetype['ext']) )
-                       $this->internal_error(__('Error occurred while accessing post metadata for file location.'));
-
-               status_header('200');
-               header('Content-Type: ' . $entry['post_mime_type']);
-               header('Connection: close');
-
-               if ( $fp = fopen($location, "rb") ) {
-                       status_header('200');
-                       header('Content-Type: ' . $entry['post_mime_type']);
-                       header('Connection: close');
-
-                       while ( !feof($fp) ) {
-                               echo fread($fp, 4096);
-                       }
-
-                       fclose($fp);
-               } else {
-                       status_header ('404');
-               }
-
-               log_app('function',"get_file($postID)");
-               exit;
-       }
-
-       /**
-        * Upload file to blog and add attachment to post.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Post ID.
-        */
-       function put_file($postID) {
-
-               // first check if user can upload
-               if ( !current_user_can('upload_files') )
-                       $this->auth_required(__('You do not have permission to upload files.'));
-
-               // check for not found
-               global $entry;
-               $this->set_current_entry($postID);
-
-               // then whether user can edit the specific post
-               if ( !current_user_can('edit_post', $postID) )
-                       $this->auth_required(__('Sorry, you do not have the right to edit this post.'));
-
-               $upload_dir = wp_upload_dir( );
-               $location = get_post_meta($entry['ID'], '_wp_attached_file', true);
-               $filetype = wp_check_filetype($location);
-
-               $location = "{$upload_dir['basedir']}/{$location}";
-
-               if (!isset($location) || 'attachment' != $entry['post_type'] || empty($filetype['ext']))
-                       $this->internal_error(__('Error occurred while accessing post metadata for file location.'));
-
-               $fp = fopen("php://input", "rb");
-               $localfp = fopen($location, "w+");
-               while ( !feof($fp) ) {
-                       fwrite($localfp,fread($fp, 4096));
-               }
-               fclose($fp);
-               fclose($localfp);
-
-               $ID = $entry['ID'];
-               $pubtimes = $this->get_publish_time($entry->published);
-               $post_date = $pubtimes[0];
-               $post_date_gmt = $pubtimes[1];
-               $pubtimes = $this->get_publish_time($parsed->updated);
-               $post_modified = $pubtimes[0];
-               $post_modified_gmt = $pubtimes[1];
-
-               $post_data = compact('ID', 'post_date', 'post_date_gmt', 'post_modified', 'post_modified_gmt');
-               $result = wp_update_post($post_data);
-
-               if ( !$result )
-                       $this->internal_error(__('Sorry, your entry could not be posted. Something wrong happened.'));
-
-               wp_update_attachment_metadata( $postID, wp_generate_attachment_metadata( $postID, $location ) );
-
-               log_app('function',"put_file($postID)");
-               $this->ok();
-       }
-
-       /**
-        * Retrieve entries URL.
-        *
-        * @since 2.2.0
-        *
-        * @param int $page Page ID.
-        * @return string
-        */
-       function get_entries_url($page = null) {
-               if ( isset($GLOBALS['post_type']) && ( $GLOBALS['post_type'] == 'attachment' ) )
-                       $path = $this->MEDIA_PATH;
-               else
-                       $path = $this->ENTRIES_PATH;
-               $url = $this->app_base . $path;
-               if ( isset($page) && is_int($page) )
-                       $url .= "/$page";
-               return $url;
-       }
-
-       /**
-        * Display entries URL.
-        *
-        * @since 2.2.0
-        *
-        * @param int $page Page ID.
-        */
-       function the_entries_url($page = null) {
-               echo $this->get_entries_url($page);
-       }
-
-       /**
-        * Retrieve categories URL.
-        *
-        * @since 2.2.0
-        *
-        * @param mixed $deprecated Not used.
-        * @return string
-        */
-       function get_categories_url($deprecated = '') {
-               if ( !empty( $deprecated ) )
-                       _deprecated_argument( __FUNCTION__, '2.5' );
-               return $this->app_base . $this->CATEGORIES_PATH;
-       }
-
-       /**
-        * Display category URL.
-        *
-        * @since 2.2.0
-        */
-       function the_categories_url() {
-               echo $this->get_categories_url();
-       }
-
-       /**
-        * Retrieve attachment URL.
-        *
-        * @since 2.2.0
-        *
-        * @param int $page Page ID.
-        * @return string
-        */
-       function get_attachments_url($page = null) {
-               $url = $this->app_base . $this->MEDIA_PATH;
-               if (isset($page) && is_int($page)) {
-                       $url .= "/$page";
-               }
-               return $url;
-       }
-
-       /**
-        * Display attachment URL.
-        *
-        * @since 2.2.0
-        *
-        * @param int $page Page ID.
-        */
-       function the_attachments_url($page = null) {
-               echo $this->get_attachments_url($page);
-       }
-
-       /**
-        * Retrieve service URL.
-        *
-        * @since 2.3.0
-        *
-        * @return string
-        */
-       function get_service_url() {
-               return $this->app_base . $this->SERVICE_PATH;
-       }
-
-       /**
-        * Retrieve entry URL.
-        *
-        * @since 2.7.0
-        *
-        * @param int $postID Post ID.
-        * @return string
-        */
-       function get_entry_url($postID = null) {
-               if (!isset($postID)) {
-                       global $post;
-                       $postID = (int) $post->ID;
-               }
-
-               $url = $this->app_base . $this->ENTRY_PATH . "/$postID";
-
-               log_app('function',"get_entry_url() = $url");
-               return $url;
-       }
-
-       /**
-        * Display entry URL.
-        *
-        * @since 2.7.0
-        *
-        * @param int $postID Post ID.
-        */
-       function the_entry_url($postID = null) {
-               echo $this->get_entry_url($postID);
-       }
-
-       /**
-        * Retrieve media URL.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Post ID.
-        * @return string
-        */
-       function get_media_url($postID = null) {
-               if (!isset($postID)) {
-                       global $post;
-                       $postID = (int) $post->ID;
-               }
-
-               $url = $this->app_base . $this->MEDIA_SINGLE_PATH ."/file/$postID";
-
-               log_app('function',"get_media_url() = $url");
-               return $url;
-       }
-
-       /**
-        * Display the media URL.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Post ID.
-        */
-       function the_media_url($postID = null) {
-               echo $this->get_media_url($postID);
-       }
-
-       /**
-        * Set the current entry to post ID.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Post ID.
-        */
-       function set_current_entry($postID) {
-               global $entry;
-               log_app('function',"set_current_entry($postID)");
-
-               if (!isset($postID)) {
-                       // $this->bad_request();
-                       $this->not_found();
-               }
-
-               $entry = wp_get_single_post($postID,ARRAY_A);
-
-               if (!isset($entry) || !isset($entry['ID']))
-                       $this->not_found();
-
-               return;
-       }
-
-       /**
-        * Display posts XML.
-        *
-        * @since 2.2.0
-        *
-        * @param int $page Optional. Page ID.
-        * @param string $post_type Optional, default is 'post'. Post Type.
-        */
-       function get_posts($page = 1, $post_type = 'post') {
-                       log_app('function',"get_posts($page, '$post_type')");
-                       $feed = $this->get_feed($page, $post_type);
-                       $this->output($feed);
-       }
-
-       /**
-        * Display attachment XML.
-        *
-        * @since 2.2.0
-        *
-        * @param int $page Page ID.
-        * @param string $post_type Optional, default is 'attachment'. Post type.
-        */
-       function get_attachments($page = 1, $post_type = 'attachment') {
-               log_app('function',"get_attachments($page, '$post_type')");
-               $GLOBALS['post_type'] = $post_type;
-               $feed = $this->get_feed($page, $post_type);
-               $this->output($feed);
-       }
-
-       /**
-        * Retrieve feed XML.
-        *
-        * @since 2.2.0
-        *
-        * @param int $page Page ID.
-        * @param string $post_type Optional, default is post. Post type.
-        * @return string
-        */
-       function get_feed($page = 1, $post_type = 'post') {
-               global $post, $wp, $wp_query, $posts, $wpdb, $blog_id;
-               log_app('function',"get_feed($page, '$post_type')");
-               ob_start();
-
-               $this->ENTRY_PATH = $post_type;
-
-               if (!isset($page)) {
-                       $page = 1;
-               }
-               $page = (int) $page;
-
-               $count = get_option('posts_per_rss');
-
-               wp('posts_per_page=' . $count . '&offset=' . ($count * ($page-1) . '&orderby=modified'));
-
-               $post = $GLOBALS['post'];
-               $posts = $GLOBALS['posts'];
-               $wp = $GLOBALS['wp'];
-               $wp_query = $GLOBALS['wp_query'];
-               $wpdb = $GLOBALS['wpdb'];
-               $blog_id = (int) $GLOBALS['blog_id'];
-               log_app('function',"query_posts(# " . print_r($wp_query, true) . "#)");
-
-               log_app('function',"total_count(# $wp_query->max_num_pages #)");
-               $last_page = $wp_query->max_num_pages;
-               $next_page = (($page + 1) > $last_page) ? NULL : $page + 1;
-               $prev_page = ($page - 1) < 1 ? NULL : $page - 1;
-               $last_page = ((int)$last_page == 1 || (int)$last_page == 0) ? NULL : (int) $last_page;
-               $self_page = $page > 1 ? $page : NULL;
-?><feed xmlns="<?php echo $this->ATOM_NS ?>" xmlns:app="<?php echo $this->ATOMPUB_NS ?>" xml:lang="<?php echo get_option('rss_language'); ?>" <?php do_action('app_ns'); ?> >
-<id><?php $this->the_entries_url() ?></id>
-<updated><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_lastpostmodified('GMT'), false); ?></updated>
-<title type="text"><?php bloginfo_rss('name') ?></title>
-<subtitle type="text"><?php bloginfo_rss("description") ?></subtitle>
-<link rel="first" type="<?php echo $this->ATOM_CONTENT_TYPE ?>" href="<?php $this->the_entries_url() ?>" />
-<?php if (isset($prev_page)): ?>
-<link rel="previous" type="<?php echo $this->ATOM_CONTENT_TYPE ?>" href="<?php $this->the_entries_url($prev_page) ?>" />
-<?php endif; ?>
-<?php if (isset($next_page)): ?>
-<link rel="next" type="<?php echo $this->ATOM_CONTENT_TYPE ?>" href="<?php $this->the_entries_url($next_page) ?>" />
-<?php endif; ?>
-<link rel="last" type="<?php echo $this->ATOM_CONTENT_TYPE ?>" href="<?php $this->the_entries_url($last_page) ?>" />
-<link rel="self" type="<?php echo $this->ATOM_CONTENT_TYPE ?>" href="<?php $this->the_entries_url($self_page) ?>" />
-<rights type="text">Copyright <?php echo date('Y'); ?></rights>
-<?php do_action('app_head'); ?>
-<?php if ( have_posts() ) {
-                       while ( have_posts() ) {
-                               the_post();
-                               $this->echo_entry();
-                       }
-               }
-?></feed>
-<?php
-               $feed = ob_get_contents();
-               ob_end_clean();
-               return $feed;
-       }
-
-       /**
-        * Display entry XML.
-        *
-        * @since 2.2.0
-        *
-        * @param int $postID Post ID.
-        * @param string $post_type Optional, default is post. Post type.
-        * @return string.
-        */
-       function get_entry($postID, $post_type = 'post') {
-               log_app('function',"get_entry($postID, '$post_type')");
-               ob_start();
-               switch($post_type) {
-                       case 'post':
-                               $varname = 'p';
-                               break;
-                       case 'attachment':
-                               $this->ENTRY_PATH = 'attachment';
-                               $varname = 'attachment_id';
-                               break;
-               }
-               query_posts($varname . '=' . $postID);
-               if ( have_posts() ) {
-                       while ( have_posts() ) {
-                               the_post();
-                               $this->echo_entry();
-                               log_app('$post',print_r($GLOBALS['post'],true));
-                               $entry = ob_get_contents();
-                               break;
-                       }
-               }
-               ob_end_clean();
-
-               log_app('get_entry returning:',$entry);
-               return $entry;
-       }
-
-       /**
-        * Display post content XML.
-        *
-        * @since 2.3.0
-        */
-       function echo_entry() { ?>
-<entry xmlns="<?php echo $this->ATOM_NS ?>"
-       xmlns:app="<?php echo $this->ATOMPUB_NS ?>" xml:lang="<?php echo get_option('rss_language'); ?>">
-       <id><?php the_guid( $GLOBALS['post']->ID ); ?></id>
-<?php list($content_type, $content) = prep_atom_text_construct(get_the_title()); ?>
-       <title type="<?php echo $content_type ?>"><?php echo $content ?></title>
-       <updated><?php echo get_post_modified_time('Y-m-d\TH:i:s\Z', true); ?></updated>
-       <published><?php echo get_post_time('Y-m-d\TH:i:s\Z', true); ?></published>
-       <app:edited><?php echo get_post_modified_time('Y-m-d\TH:i:s\Z', true); ?></app:edited>
-       <app:control>
-               <app:draft><?php echo ($GLOBALS['post']->post_status == 'draft' ? 'yes' : 'no') ?></app:draft>
-       </app:control>
-       <author>
-               <name><?php the_author()?></name>
-<?php if ( get_the_author_meta('url') && get_the_author_meta('url') != 'http://' ) { ?>
-               <uri><?php the_author_meta('url') ?></uri>
-<?php } ?>
-       </author>
-<?php if ($GLOBALS['post']->post_type == 'attachment') { ?>
-       <link rel="edit-media" href="<?php $this->the_media_url() ?>" />
-       <content type="<?php echo $GLOBALS['post']->post_mime_type ?>" src="<?php the_guid() ; ?>"/>
-<?php } else { ?>
-       <link href="<?php the_permalink_rss() ?>" />
-<?php if ( strlen( $GLOBALS['post']->post_content ) ) :
-list($content_type, $content) = prep_atom_text_construct(get_the_content()); ?>
-       <content type="<?php echo $content_type ?>"><?php echo $content ?></content>
-<?php endif; ?>
-<?php } ?>
-       <link rel="edit" href="<?php $this->the_entry_url() ?>" />
-       <?php the_category_rss( 'atom' ); ?>
-<?php list($content_type, $content) = prep_atom_text_construct(get_the_excerpt()); ?>
-       <summary type="<?php echo $content_type ?>"><?php echo $content ?></summary>
-       <?php do_action('app_entry'); ?>
-</entry>
-<?php }
-
-       /**
-        * Set 'OK' (200) status header.
-        *
-        * @since 2.2.0
-        */
-       function ok() {
-               log_app('Status','200: OK');
-               header('Content-Type: text/plain');
-               status_header('200');
-               exit;
-       }
-
-       /**
-        * Set 'No Content' (204) status header.
-        *
-        * @since 2.2.0
-        */
-       function no_content() {
-               log_app('Status','204: No Content');
-               header('Content-Type: text/plain');
-               status_header('204');
-               echo "Moved to Trash.";
-               exit;
-       }
-
-       /**
-        * Display 'Internal Server Error' (500) status header.
-        *
-        * @since 2.2.0
-        *
-        * @param string $msg Optional. Status string.
-        */
-       function internal_error($msg = 'Internal Server Error') {
-               log_app('Status','500: Server Error');
-               header('Content-Type: text/plain');
-               status_header('500');
-               echo $msg;
-               exit;
-       }
-
-       /**
-        * Set 'Bad Request' (400) status header.
-        *
-        * @since 2.2.0
-        */
-       function bad_request() {
-               log_app('Status','400: Bad Request');
-               header('Content-Type: text/plain');
-               status_header('400');
-               exit;
-       }
-
-       /**
-        * Set 'Length Required' (411) status header.
-        *
-        * @since 2.2.0
-        */
-       function length_required() {
-               log_app('Status','411: Length Required');
-               header("HTTP/1.1 411 Length Required");
-               header('Content-Type: text/plain');
-               status_header('411');
-               exit;
-       }
-
-       /**
-        * Set 'Unsupported Media Type' (415) status header.
-        *
-        * @since 2.2.0
-        */
-       function invalid_media() {
-               log_app('Status','415: Unsupported Media Type');
-               header("HTTP/1.1 415 Unsupported Media Type");
-               header('Content-Type: text/plain');
-               exit;
-       }
-
-       /**
-        * Set 'Forbidden' (403) status header.
-        *
-        * @since 2.6.0
-        */
-       function forbidden($reason='') {
-               log_app('Status','403: Forbidden');
-               header('Content-Type: text/plain');
-               status_header('403');
-               echo $reason;
-               exit;
-       }
-
-       /**
-        * Set 'Not Found' (404) status header.
-        *
-        * @since 2.2.0
-        */
-       function not_found() {
-               log_app('Status','404: Not Found');
-               header('Content-Type: text/plain');
-               status_header('404');
-               exit;
-       }
-
-       /**
-        * Set 'Not Allowed' (405) status header.
-        *
-        * @since 2.2.0
-        */
-       function not_allowed($allow) {
-               log_app('Status','405: Not Allowed');
-               header('Allow: ' . join(',', $allow));
-               status_header('405');
-               exit;
-       }
-
-       /**
-        * Display Redirect (302) content and set status headers.
-        *
-        * @since 2.3.0
-        */
-       function redirect($url) {
-
-               log_app('Status','302: Redirect');
-               $escaped_url = esc_attr($url);
-               $content = <<<EOD
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
-<html>
-  <head>
-    <title>302 Found</title>
-  </head>
-<body>
-  <h1>Found</h1>
-  <p>The document has moved <a href="$escaped_url">here</a>.</p>
-  </body>
-</html>
-
-EOD;
-               header('HTTP/1.1 302 Moved');
-               header('Content-Type: text/html');
-               header('Location: ' . $url);
-               echo $content;
-               exit;
-
-       }
-
-       /**
-        * Set 'Client Error' (400) status header.
-        *
-        * @since 2.2.0
-        */
-       function client_error($msg = 'Client Error') {
-               log_app('Status','400: Client Error');
-               header('Content-Type: text/plain');
-               status_header('400');
-               exit;
-       }
-
-       /**
-        * Set created status headers (201).
-        *
-        * Sets the 'content-type', 'content-location', and 'location'.
-        *
-        * @since 2.2.0
-        */
-       function created($post_ID, $content, $post_type = 'post') {
-               log_app('created()::$post_ID',"$post_ID, $post_type");
-               $edit = $this->get_entry_url($post_ID);
-               switch($post_type) {
-                       case 'post':
-                               $ctloc = $this->get_entry_url($post_ID);
-                               break;
-                       case 'attachment':
-                               $edit = $this->app_base . "attachments/$post_ID";
-                               break;
-               }
-               header("Content-Type: $this->ATOM_CONTENT_TYPE");
-               if (isset($ctloc))
-                       header('Content-Location: ' . $ctloc);
-               header('Location: ' . $edit);
-               status_header('201');
-               echo $content;
-               exit;
-       }
-
-       /**
-        * Set 'Auth Required' (401) headers.
-        *
-        * @since 2.2.0
-        *
-        * @param string $msg Status header content and HTML content.
-        */
-       function auth_required($msg) {
-               log_app('Status','401: Auth Required');
-               nocache_headers();
-               header('WWW-Authenticate: Basic realm="WordPress Atom Protocol"');
-               header("HTTP/1.1 401 $msg");
-               header('Status: 401 ' . $msg);
-               header('Content-Type: text/html');
-               $content = <<<EOD
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
-<html>
-  <head>
-    <title>401 Unauthorized</title>
-  </head>
-<body>
-    <h1>401 Unauthorized</h1>
-    <p>$msg</p>
-  </body>
-</html>
-
-EOD;
-               echo $content;
-               exit;
-       }
-
-       /**
-        * Display XML and set headers with content type.
-        *
-        * @since 2.2.0
-        *
-        * @param string $xml Display feed content.
-        * @param string $ctype Optional, default is 'atom+xml'. Feed content type.
-        */
-       function output($xml, $ctype = 'application/atom+xml') {
-                       status_header('200');
-                       $xml = '<?xml version="1.0" encoding="' . strtolower(get_option('blog_charset')) . '"?>'."\n".$xml;
-                       header('Connection: close');
-                       header('Content-Length: '. strlen($xml));
-                       header('Content-Type: ' . $ctype);
-                       header('Content-Disposition: attachment; filename=atom.xml');
-                       header('Date: '. date('r'));
-                       if ($this->do_output)
-                               echo $xml;
-                       log_app('function', "output:\n$xml");
-                       exit;
-       }
-
-       /**
-        * Sanitize content for database usage.
-        *
-        * @since 2.2.0
-        *
-        * @param array $array Sanitize array and multi-dimension array.
-        */
-       function escape(&$array) {
-               global $wpdb;
-
-               foreach ($array as $k => $v) {
-                               if (is_array($v)) {
-                                               $this->escape($array[$k]);
-                               } else if (is_object($v)) {
-                                               //skip
-                               } else {
-                                               $array[$k] = $wpdb->escape($v);
-                               }
-               }
-       }
-
-       /**
-        * Access credential through various methods and perform login.
-        *
-        * @since 2.2.0
-        *
-        * @return bool
-        */
-       function authenticate() {
-               log_app("authenticate()",print_r($_ENV, true));
-
-               // if using mod_rewrite/ENV hack
-               // http://www.besthostratings.com/articles/http-auth-php-cgi.html
-               if (isset($_SERVER['HTTP_AUTHORIZATION'])) {
-                       list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) =
-                               explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
-               } else if (isset($_SERVER['REDIRECT_REMOTE_USER'])) {
-                       // Workaround for setups that do not forward HTTP_AUTHORIZATION
-                       // See http://trac.wordpress.org/ticket/7361
-                       list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) =
-                               explode(':', base64_decode(substr($_SERVER['REDIRECT_REMOTE_USER'], 6)));
-               }
-
-               // If Basic Auth is working...
-               if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
-                       log_app("Basic Auth",$_SERVER['PHP_AUTH_USER']);
-
-                       $user = wp_authenticate($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']);
-                       if ( $user && !is_wp_error($user) ) {
-                               wp_set_current_user($user->ID);
-                               log_app("authenticate()", $user->user_login);
-                               return true;
-                       }
-               }
-
-               return false;
-       }
-
-       /**
-        * Retrieve accepted content types.
-        *
-        * @since 2.2.0
-        *
-        * @param array $types Optional. Content Types.
-        * @return string
-        */
-       function get_accepted_content_type($types = null) {
-
-               if (!isset($types)) {
-                       $types = $this->media_content_types;
-               }
-
-               if (!isset($_SERVER['CONTENT_LENGTH']) || !isset($_SERVER['CONTENT_TYPE'])) {
-                       $this->length_required();
-               }
-
-               $type = $_SERVER['CONTENT_TYPE'];
-               list($type,$subtype) = explode('/',$type);
-               list($subtype) = explode(";",$subtype); // strip MIME parameters
-               log_app("get_accepted_content_type", "type=$type, subtype=$subtype");
-
-               foreach($types as $t) {
-                       list($acceptedType,$acceptedSubtype) = explode('/',$t);
-                       if ($acceptedType == '*' || $acceptedType == $type) {
-                               if ($acceptedSubtype == '*' || $acceptedSubtype == $subtype)
-                                       return $type . "/" . $subtype;
-                       }
-               }
-
-               $this->invalid_media();
-       }
-
-       /**
-        * Process conditionals for posts.
-        *
-        * @since 2.2.0
-        */
-       function process_conditionals() {
-
-               if (empty($this->params)) return;
-               if ($_SERVER['REQUEST_METHOD'] == 'DELETE') return;
-
-               switch($this->params[0]) {
-                       case $this->ENTRY_PATH:
-                               global $post;
-                               $post = wp_get_single_post($this->params[1]);
-                               $wp_last_modified = get_post_modified_time('D, d M Y H:i:s', true);
-                               $post = NULL;
-                               break;
-                       case $this->ENTRIES_PATH:
-                               $wp_last_modified = mysql2date('D, d M Y H:i:s', get_lastpostmodified('GMT'), 0).' GMT';
-                               break;
-                       default:
-                               return;
-               }
-               $wp_etag = md5($wp_last_modified);
-               @header("Last-Modified: $wp_last_modified");
-               @header("ETag: $wp_etag");
-
-               // Support for Conditional GET
-               if (isset($_SERVER['HTTP_IF_NONE_MATCH']))
-                       $client_etag = stripslashes($_SERVER['HTTP_IF_NONE_MATCH']);
-               else
-                       $client_etag = false;
-
-               $client_last_modified = trim( $_SERVER['HTTP_IF_MODIFIED_SINCE']);
-               // If string is empty, return 0. If not, attempt to parse into a timestamp
-               $client_modified_timestamp = $client_last_modified ? strtotime($client_last_modified) : 0;
-
-               // Make a timestamp for our most recent modification...
-               $wp_modified_timestamp = strtotime($wp_last_modified);
-
-               if ( ($client_last_modified && $client_etag) ?
-               (($client_modified_timestamp >= $wp_modified_timestamp) && ($client_etag == $wp_etag)) :
-               (($client_modified_timestamp >= $wp_modified_timestamp) || ($client_etag == $wp_etag)) ) {
-                       status_header( 304 );
-                       exit;
-               }
-       }
-
-       /**
-        * Convert RFC3339 time string to timestamp.
-        *
-        * @since 2.3.0
-        *
-        * @param string $str String to time.
-        * @return bool|int false if format is incorrect.
-        */
-       function rfc3339_str2time($str) {
-
-               $match = false;
-               if (!preg_match("/(\d{4}-\d{2}-\d{2})T(\d{2}\:\d{2}\:\d{2})\.?\d{0,3}(Z|[+-]+\d{2}\:\d{2})/", $str, $match))
-                       return false;
-
-               if ($match[3] == 'Z')
-                       $match[3] = '+0000';
-
-               return strtotime($match[1] . " " . $match[2] . " " . $match[3]);
-       }
-
-       /**
-        * Retrieve published time to display in XML.
-        *
-        * @since 2.3.0
-        *
-        * @param string $published Time string.
-        * @return string
-        */
-       function get_publish_time($published) {
-
-               $pubtime = $this->rfc3339_str2time($published);
-
-               if (!$pubtime) {
-                       return array(current_time('mysql'),current_time('mysql',1));
-               } else {
-                       return array(date("Y-m-d H:i:s", $pubtime), gmdate("Y-m-d H:i:s", $pubtime));
-               }
-       }
-
-}
-
-/**
- * AtomServer
- * @var AtomServer
- * @global object $server
- */
-$server = new AtomServer();
-$server->handle_request();
-
-?>
index 0f7118f3c1642b1692fe118176b475a1f68cd3f9..3e1b8ef56013cdcd11f4a23c7859ba32ab3b5af2 100644 (file)
@@ -16,5 +16,3 @@ if ( !isset($wp_did_header) ) {
        require_once( ABSPATH . WPINC . '/template-loader.php' );
 
 }
        require_once( ABSPATH . WPINC . '/template-loader.php' );
 
 }
-
-?>
\ No newline at end of file
index 9f1dc724c42b1e71596c52476df4a8cb0e244dd2..194e00f54489aac29b19661e83c258ca2c0ffdba 100644 (file)
@@ -54,7 +54,7 @@ $comment_content      = ( isset($_POST['comment']) ) ? trim($_POST['comment']) :
 
 // If the user is logged in
 $user = wp_get_current_user();
 
 // If the user is logged in
 $user = wp_get_current_user();
-if ( $user->ID ) {
+if ( $user->exists() ) {
        if ( empty( $user->display_name ) )
                $user->display_name=$user->user_login;
        $comment_author       = $wpdb->escape($user->display_name);
        if ( empty( $user->display_name ) )
                $user->display_name=$user->user_login;
        $comment_author       = $wpdb->escape($user->display_name);
@@ -73,7 +73,7 @@ if ( $user->ID ) {
 
 $comment_type = '';
 
 
 $comment_type = '';
 
-if ( get_option('require_name_email') && !$user->ID ) {
+if ( get_option('require_name_email') && !$user->exists() ) {
        if ( 6 > strlen($comment_author_email) || '' == $comment_author )
                wp_die( __('<strong>ERROR</strong>: please fill the required fields (name, email).') );
        elseif ( !is_email($comment_author_email))
        if ( 6 > strlen($comment_author_email) || '' == $comment_author )
                wp_die( __('<strong>ERROR</strong>: please fill the required fields (name, email).') );
        elseif ( !is_email($comment_author_email))
@@ -90,16 +90,10 @@ $commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_emai
 $comment_id = wp_new_comment( $commentdata );
 
 $comment = get_comment($comment_id);
 $comment_id = wp_new_comment( $commentdata );
 
 $comment = get_comment($comment_id);
-if ( !$user->ID ) {
-       $comment_cookie_lifetime = apply_filters('comment_cookie_lifetime', 30000000);
-       setcookie('comment_author_' . COOKIEHASH, $comment->comment_author, time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN);
-       setcookie('comment_author_email_' . COOKIEHASH, $comment->comment_author_email, time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN);
-       setcookie('comment_author_url_' . COOKIEHASH, esc_url($comment->comment_author_url), time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN);
-}
+do_action('set_comment_cookies', $comment, $user);
 
 $location = empty($_POST['redirect_to']) ? get_comment_link($comment_id) : $_POST['redirect_to'] . '#comment-' . $comment_id;
 $location = apply_filters('comment_post_redirect', $location, $comment);
 
 wp_safe_redirect( $location );
 exit;
 
 $location = empty($_POST['redirect_to']) ? get_comment_link($comment_id) : $_POST['redirect_to'] . '#comment-' . $comment_id;
 $location = apply_filters('comment_post_redirect', $location, $comment);
 
 wp_safe_redirect( $location );
 exit;
-?>
index 4e6c07c7ee1691cab5336b2f356ff6a5f367f879..62200328fddc2de0805db758fb758bcb4d65d8e2 100644 (file)
@@ -1,3 +1,2 @@
 <?php
 // Silence is golden.
 <?php
 // Silence is golden.
-?>
\ No newline at end of file
index 91cedb29db083bfb2455fc99b8c4c3597bbfe811..aa30cde7590c9a1a7dffde73d229d7f8c3bcc22e 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 <?php
-add_action( 'admin_menu', 'akismet_config_page' );
-add_action( 'admin_menu', 'akismet_stats_page' );
+add_action( 'admin_menu', 'akismet_admin_menu' );
+       
 akismet_admin_warnings();
 
 function akismet_admin_init() {
 akismet_admin_warnings();
 
 function akismet_admin_init() {
@@ -25,24 +25,38 @@ function akismet_admin_init() {
         $hook = 'dashboard_page_akismet-stats-display';
     add_action('admin_head-'.$hook, 'akismet_stats_script');
     add_meta_box('akismet-status', __('Comment History'), 'akismet_comment_status_meta_box', 'comment', 'normal');
         $hook = 'dashboard_page_akismet-stats-display';
     add_action('admin_head-'.$hook, 'akismet_stats_script');
     add_meta_box('akismet-status', __('Comment History'), 'akismet_comment_status_meta_box', 'comment', 'normal');
-       wp_register_style('akismet.css', AKISMET_PLUGIN_URL . 'akismet.css');
-       wp_enqueue_style('akismet.css');
-       wp_register_script('akismet.js', AKISMET_PLUGIN_URL . 'akismet.js', array('jquery'));
-       wp_enqueue_script('akismet.js');
 }
 add_action('admin_init', 'akismet_admin_init');
 
 }
 add_action('admin_init', 'akismet_admin_init');
 
+add_action( 'admin_enqueue_scripts', 'akismet_load_js_and_css' );
+function akismet_load_js_and_css() {
+       global $hook_suffix;
+
+       if (
+               $hook_suffix == 'index.php'     # dashboard
+               || $hook_suffix == 'edit-comments.php' 
+               || $hook_suffix == 'comment.php' 
+               || $hook_suffix == 'post.php' 
+               || $hook_suffix == 'plugins_page_akismet-key-config'
+       ) {
+               wp_register_style( 'akismet.css', AKISMET_PLUGIN_URL . 'akismet.css', array(), '2.5.4.4' );
+               wp_enqueue_style( 'akismet.css');
+       
+               wp_register_script( 'akismet.js', AKISMET_PLUGIN_URL . 'akismet.js', array('jquery'), '2.5.4.6' );
+               wp_enqueue_script( 'akismet.js' );
+               wp_localize_script( 'akismet.js', 'WPAkismet', array(
+                       'comment_author_url_nonce' => wp_create_nonce( 'comment_author_url_nonce' )
+               ) );
+       }
+}
+
+
 function akismet_nonce_field($action = -1) { return wp_nonce_field($action); }
 $akismet_nonce = 'akismet-update-key';
 
 function akismet_nonce_field($action = -1) { return wp_nonce_field($action); }
 $akismet_nonce = 'akismet-update-key';
 
-function akismet_config_page() {
-       if ( function_exists('add_submenu_page') )
-               add_submenu_page('plugins.php', __('Akismet Configuration'), __('Akismet Configuration'), 'manage_options', 'akismet-key-config', 'akismet_conf');
-}
-
 function akismet_plugin_action_links( $links, $file ) {
        if ( $file == plugin_basename( dirname(__FILE__).'/akismet.php' ) ) {
 function akismet_plugin_action_links( $links, $file ) {
        if ( $file == plugin_basename( dirname(__FILE__).'/akismet.php' ) ) {
-               $links[] = '<a href="plugins.php?page=akismet-key-config">'.__('Settings').'</a>';
+               $links[] = '<a href="admin.php?page=akismet-key-config">'.__('Settings').'</a>';
        }
 
        return $links;
        }
 
        return $links;
@@ -111,8 +125,7 @@ function akismet_conf() {
                if ( $key_status == 'valid' ) {
                        $ms[] = 'key_valid';
                } else if ( $key_status == 'invalid' ) {
                if ( $key_status == 'valid' ) {
                        $ms[] = 'key_valid';
                } else if ( $key_status == 'invalid' ) {
-                       delete_option('wordpress_api_key');
-                       $ms[] = 'key_empty';
+                       $ms[] = 'key_invalid';
                } else if ( !empty($key) && $key_status == 'failed' ) {
                        $ms[] = 'key_failed';
                }
                } else if ( !empty($key) && $key_status == 'failed' ) {
                        $ms[] = 'key_failed';
                }
@@ -124,8 +137,9 @@ function akismet_conf() {
                'new_key_invalid' => array('color' => '888', 'text' => __('The key you entered is invalid. Please double-check it.')),
                'new_key_failed' => array('color' => '888', 'text' => __('The key you entered could not be verified because a connection to akismet.com could not be established. Please check your server configuration.')),
                'no_connection' => array('color' => '888', 'text' => __('There was a problem connecting to the Akismet server. Please check your server configuration.')),
                'new_key_invalid' => array('color' => '888', 'text' => __('The key you entered is invalid. Please double-check it.')),
                'new_key_failed' => array('color' => '888', 'text' => __('The key you entered could not be verified because a connection to akismet.com could not be established. Please check your server configuration.')),
                'no_connection' => array('color' => '888', 'text' => __('There was a problem connecting to the Akismet server. Please check your server configuration.')),
-               'key_empty' => array('color' => 'aa0', 'text' => sprintf(__('Please enter an API key. (<a href="%s" style="color:#fff">Get your key.</a>)'), 'http://akismet.com/get/')),
+               'key_empty' => array('color' => 'aa0', 'text' => sprintf(__('Please enter an API key. (<a href="%s" style="color:#fff">Get your key.</a>)'), 'http://akismet.com/get/?return=true')),
                'key_valid' => array('color' => '4AB915', 'text' => __('This key is valid.')),
                'key_valid' => array('color' => '4AB915', 'text' => __('This key is valid.')),
+               'key_invalid' => array('color' => '888', 'text' => __('This key is invalid.')),
                'key_failed' => array('color' => 'aa0', 'text' => __('The key below was previously validated but a connection to akismet.com can not be established at this time. Please check your server configuration.')),
                'bad_home_url' => array('color' => '888', 'text' => sprintf( __('Your WordPress home URL %s is invalid.  Please fix the <a href="%s">home option</a>.'), esc_html( get_bloginfo('url') ), admin_url('options.php#home') ) ),
        );
                'key_failed' => array('color' => 'aa0', 'text' => __('The key below was previously validated but a connection to akismet.com can not be established at this time. Please check your server configuration.')),
                'bad_home_url' => array('color' => '888', 'text' => sprintf( __('Your WordPress home URL %s is invalid.  Please fix the <a href="%s">home option</a>.'), esc_html( get_bloginfo('url') ), admin_url('options.php#home') ) ),
        );
@@ -141,13 +155,13 @@ function akismet_conf() {
 <div class="narrow">
 <form action="" method="post" id="akismet-conf" style="margin: auto; width: 400px; ">
 <?php if ( !$wpcom_api_key ) { ?>
 <div class="narrow">
 <form action="" method="post" id="akismet-conf" style="margin: auto; width: 400px; ">
 <?php if ( !$wpcom_api_key ) { ?>
-       <p><?php printf(__('For many people, <a href="%1$s">Akismet</a> will greatly reduce or even completely eliminate the comment and trackback spam you get on your site. If one does happen to get through, simply mark it as "spam" on the moderation screen and Akismet will learn from the mistakes. If you don\'t have an API key yet, you can get one at <a href="%2$s">Akismet.com</a>.'), 'http://akismet.com/', 'http://akismet.com/get/'); ?></p>
+       <p><?php printf(__('For many people, <a href="%1$s">Akismet</a> will greatly reduce or even completely eliminate the comment and trackback spam you get on your site. If one does happen to get through, simply mark it as "spam" on the moderation screen and Akismet will learn from the mistakes. If you don\'t have an API key yet, you can get one at <a href="%2$s">Akismet.com</a>.'), 'http://akismet.com/?return=true', 'http://akismet.com/get/?return=true'); ?></p>
 
 <h3><label for="key"><?php _e('Akismet API Key'); ?></label></h3>
 <?php foreach ( $ms as $m ) : ?>
        <p style="padding: .5em; background-color: #<?php echo $messages[$m]['color']; ?>; color: #fff; font-weight: bold;"><?php echo $messages[$m]['text']; ?></p>
 <?php endforeach; ?>
 
 <h3><label for="key"><?php _e('Akismet API Key'); ?></label></h3>
 <?php foreach ( $ms as $m ) : ?>
        <p style="padding: .5em; background-color: #<?php echo $messages[$m]['color']; ?>; color: #fff; font-weight: bold;"><?php echo $messages[$m]['text']; ?></p>
 <?php endforeach; ?>
-<p><input id="key" name="key" type="text" size="15" maxlength="12" value="<?php echo get_option('wordpress_api_key'); ?>" style="font-family: 'Courier New', Courier, mono; font-size: 1.5em;" /> (<?php _e('<a href="http://akismet.com/get/">What is this?</a>'); ?>)</p>
+<p><input id="key" name="key" type="text" size="15" maxlength="12" value="<?php echo get_option('wordpress_api_key'); ?>" style="font-family: 'Courier New', Courier, mono; font-size: 1.5em;" /> (<?php _e('<a href="http://akismet.com/get/?return=true">What is this?</a>'); ?>)</p>
 <?php if ( isset( $invalid_key) && $invalid_key ) { ?>
 <h3><?php _e('Why might my key be invalid?'); ?></h3>
 <p><?php _e('This can mean one of two things, either you copied the key wrong or that the plugin is unable to reach the Akismet servers, which is most often caused by an issue with your web host around firewalls or similar.'); ?></p>
 <?php if ( isset( $invalid_key) && $invalid_key ) { ?>
 <h3><?php _e('Why might my key be invalid?'); ?></h3>
 <p><?php _e('This can mean one of two things, either you copied the key wrong or that the plugin is unable to reach the Akismet servers, which is most often caused by an issue with your web host around firewalls or similar.'); ?></p>
@@ -226,12 +240,6 @@ function akismet_conf() {
 <?php
 }
 
 <?php
 }
 
-function akismet_stats_page() {
-       if ( function_exists('add_submenu_page') )
-               add_submenu_page('index.php', __('Akismet Stats'), __('Akismet Stats'), 'manage_options', 'akismet-stats-display', 'akismet_stats_display');
-
-}
-
 function akismet_stats_script() {
        ?>
 <script type="text/javascript">
 function akismet_stats_script() {
        ?>
 <script type="text/javascript">
@@ -278,16 +286,41 @@ function akismet_stats() {
                $link = 'edit-comments.php';
        else
                $link = 'edit.php';
                $link = 'edit-comments.php';
        else
                $link = 'edit.php';
-       echo '<p>'.sprintf( _n( '<a href="%1$s">Akismet</a> has protected your site from <a href="%2$s">%3$s spam comments</a>.', '<a href="%1$s">Akismet</a> has protected your site from <a href="%2$s">%3$s spam comments</a>.', $count ), 'http://akismet.com/', clean_url("$link?page=akismet-admin"), number_format_i18n($count) ).'</p>';
+       echo '<p>'.sprintf( _n( '<a href="%1$s">Akismet</a> has protected your site from <a href="%2$s">%3$s spam comments</a>.', '<a href="%1$s">Akismet</a> has protected your site from <a href="%2$s">%3$s spam comments</a>.', $count ), 'http://akismet.com/?return=true', clean_url("$link?page=akismet-admin"), number_format_i18n($count) ).'</p>';
 }
 add_action('activity_box_end', 'akismet_stats');
 
 function akismet_admin_warnings() {
 }
 add_action('activity_box_end', 'akismet_stats');
 
 function akismet_admin_warnings() {
-       global $wpcom_api_key;
+       global $wpcom_api_key, $pagenow;
+
+       if (
+               $pagenow == 'edit-comments.php'
+               || ( !empty( $_GET['page'] ) && $_GET['page'] == 'akismet-key-config' )
+               || ( !empty( $_GET['page'] ) && $_GET['page'] == 'akismet-stats-display' )
+       ) {
+               if ( get_option( 'akismet_alert_code' ) ) {
+                       function akismet_alert() {
+                               $alert = array(
+                                       'code' => (int) get_option( 'akismet_alert_code' ),
+                                       'msg' => get_option( 'akismet_alert_msg' )
+                               );
+                       ?>
+                               <div class='error'>
+                                       <p><strong>Akismet Error Code: <?php echo $alert['code']; ?></strong></p>
+                                       <p><?php esc_html_e( $alert['msg'] ); ?></p>
+                                       <p>More information is available at <a href="https://akismet.com/errors/<?php echo $alert['code']; ?>">https://akismet.com/errors/<?php echo $alert['code']; ?></a></p>
+                               </div>
+                       <?php
+                       }
+
+                       add_action( 'admin_notices', 'akismet_alert' );
+               }
+       }
+
        if ( !get_option('wordpress_api_key') && !$wpcom_api_key && !isset($_POST['submit']) ) {
                function akismet_warning() {
                        echo "
        if ( !get_option('wordpress_api_key') && !$wpcom_api_key && !isset($_POST['submit']) ) {
                function akismet_warning() {
                        echo "
-                       <div id='akismet-warning' class='updated fade'><p><strong>".__('Akismet is almost ready.')."</strong> ".sprintf(__('You must <a href="%1$s">enter your Akismet API key</a> for it to work.'), "plugins.php?page=akismet-key-config")."</p></div>
+                       <div id='akismet-warning' class='updated fade'><p><strong>".__('Akismet is almost ready.')."</strong> ".sprintf(__('You must <a href="%1$s">enter your Akismet API key</a> for it to work.'), "admin.php?page=akismet-key-config")."</p></div>
                        ";
                }
                add_action('admin_notices', 'akismet_warning');
                        ";
                }
                add_action('admin_notices', 'akismet_warning');
@@ -295,11 +328,12 @@ function akismet_admin_warnings() {
        } elseif ( ( empty($_SERVER['SCRIPT_FILENAME']) || basename($_SERVER['SCRIPT_FILENAME']) == 'edit-comments.php' ) &&  wp_next_scheduled('akismet_schedule_cron_recheck') ) {
                function akismet_warning() {
                        global $wpdb;
        } elseif ( ( empty($_SERVER['SCRIPT_FILENAME']) || basename($_SERVER['SCRIPT_FILENAME']) == 'edit-comments.php' ) &&  wp_next_scheduled('akismet_schedule_cron_recheck') ) {
                function akismet_warning() {
                        global $wpdb;
+                               akismet_fix_scheduled_recheck();
                                $waiting = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->commentmeta WHERE meta_key = 'akismet_error'" ) );
                                $waiting = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->commentmeta WHERE meta_key = 'akismet_error'" ) );
-                               $next_check = human_time_diff( wp_next_scheduled('akismet_schedule_cron_recheck') );
-                               if ( $waiting > 0 )
+                               $next_check = wp_next_scheduled('akismet_schedule_cron_recheck');
+                               if ( $waiting > 0 && $next_check > time() )
                                        echo "
                                        echo "
-                       <div id='akismet-warning' class='updated fade'><p><strong>".__('Akismet has detected a problem.')."</strong> ".sprintf(_n('A server or network problem prevented Akismet from checking %d comment. It has been temporarily held for moderation and will be automatically re-checked in %s.', 'A server or network problem prevented Akismet from checking %d comments. They have been temporarily held for moderation and will be automatically re-checked in %s.', $waiting), number_format_i18n( $waiting ), $next_check)."</p></div>
+                       <div id='akismet-warning' class='updated fade'><p><strong>".__('Akismet has detected a problem.')."</strong> ".sprintf(__('Some comments have not yet been checked for spam by Akismet. They have been temporarily held for moderation. Please check your <a href="%s">Akismet configuration</a> and contact your web host if problems persist.'), 'admin.php?page=akismet-key-config')."</p></div>
                        ";
                }
                add_action('admin_notices', 'akismet_warning');
                        ";
                }
                add_action('admin_notices', 'akismet_warning');
@@ -316,10 +350,13 @@ function akismet_comment_row_action( $a, $comment ) {
                return $a;
 
        $akismet_result = get_comment_meta( $comment->comment_ID, 'akismet_result', true );
                return $a;
 
        $akismet_result = get_comment_meta( $comment->comment_ID, 'akismet_result', true );
+       $akismet_error = get_comment_meta( $comment->comment_ID, 'akismet_error', true );
        $user_result = get_comment_meta( $comment->comment_ID, 'akismet_user_result', true);
        $comment_status = wp_get_comment_status( $comment->comment_ID );
        $desc = null;
        $user_result = get_comment_meta( $comment->comment_ID, 'akismet_user_result', true);
        $comment_status = wp_get_comment_status( $comment->comment_ID );
        $desc = null;
-       if ( !$user_result || $user_result == $akismet_result ) {
+       if ( $akismet_error ) {
+               $desc = __( 'Awaiting spam check' );
+       } elseif ( !$user_result || $user_result == $akismet_result ) {
                // Show the original Akismet result if the user hasn't overridden it, or if their decision was the same
                if ( $akismet_result == 'true' && $comment_status != 'spam' && $comment_status != 'trash' )
                        $desc = __( 'Flagged as spam by Akismet' );
                // Show the original Akismet result if the user hasn't overridden it, or if their decision was the same
                if ( $akismet_result == 'true' && $comment_status != 'spam' && $comment_status != 'trash' )
                        $desc = __( 'Flagged as spam by Akismet' );
@@ -338,8 +375,12 @@ function akismet_comment_row_action( $a, $comment ) {
                $b = array();
                foreach ( $a as $k => $item ) {
                        $b[ $k ] = $item;
                $b = array();
                foreach ( $a as $k => $item ) {
                        $b[ $k ] = $item;
-                       if ( $k == 'edit' )
+                       if (
+                               $k == 'edit'
+                               || ( $k == 'unspam' && $GLOBALS['wp_version'] >= 3.4 )
+                       ) {
                                $b['history'] = '<a href="comment.php?action=editcomment&amp;c='.$comment->comment_ID.'#akismet-status" title="'. esc_attr__( 'View comment history' ) . '"> '. __('History') . '</a>';
                                $b['history'] = '<a href="comment.php?action=editcomment&amp;c='.$comment->comment_ID.'#akismet-status" title="'. esc_attr__( 'View comment history' ) . '"> '. __('History') . '</a>';
+                       }
                }
                
                $a = $b;
                }
                
                $a = $b;
@@ -428,11 +469,6 @@ add_filter('comment_text', 'akismet_text_add_link_class');
 function akismet_rightnow() {
        global $submenu, $wp_db_version;
 
 function akismet_rightnow() {
        global $submenu, $wp_db_version;
 
-       // clean_url was deprecated in WP 3.0
-       $esc_url = 'clean_url';
-       if ( function_exists( 'esc_url' ) )
-               $esc_url = 'esc_url';
-
        if ( 8645 < $wp_db_version  ) // 2.7
                $link = 'edit-comments.php?comment_status=spam';
        elseif ( isset( $submenu['edit-comments.php'] ) )
        if ( 8645 < $wp_db_version  ) // 2.7
                $link = 'edit-comments.php?comment_status=spam';
        elseif ( isset( $submenu['edit-comments.php'] ) )
@@ -445,19 +481,20 @@ function akismet_rightnow() {
                        '<a href="%1$s">Akismet</a> has protected your site from %2$s spam comment already. ',
                        '<a href="%1$s">Akismet</a> has protected your site from %2$s spam comments already. ',
                        $count
                        '<a href="%1$s">Akismet</a> has protected your site from %2$s spam comment already. ',
                        '<a href="%1$s">Akismet</a> has protected your site from %2$s spam comments already. ',
                        $count
-               ), 'http://akismet.com/', number_format_i18n( $count ) );
+               ), 'http://akismet.com/?return=true', number_format_i18n( $count ) );
        } else {
        } else {
-               $intro = sprintf( __('<a href="%1$s">Akismet</a> blocks spam from getting to your blog. '), 'http://akismet.com/' );
+               $intro = sprintf( __('<a href="%1$s">Akismet</a> blocks spam from getting to your blog. '), 'http://akismet.com/?return=true' );
        }
 
        }
 
+       $link = function_exists( 'esc_url' ) ? esc_url( $link ) : clean_url( $link );
        if ( $queue_count = akismet_spam_count() ) {
                $queue_text = sprintf( _n(
                        'There\'s <a href="%2$s">%1$s comment</a> in your spam queue right now.',
                        'There are <a href="%2$s">%1$s comments</a> in your spam queue right now.',
                        $queue_count
        if ( $queue_count = akismet_spam_count() ) {
                $queue_text = sprintf( _n(
                        'There\'s <a href="%2$s">%1$s comment</a> in your spam queue right now.',
                        'There are <a href="%2$s">%1$s comments</a> in your spam queue right now.',
                        $queue_count
-               ), number_format_i18n( $queue_count ), $esc_url($link) );
+               ), number_format_i18n( $queue_count ), $link );
        } else {
        } else {
-               $queue_text = sprintf( __( "There's nothing in your <a href='%1\$s'>spam queue</a> at the moment." ), $esc_url($link) );
+               $queue_text = sprintf( __( "There's nothing in your <a href='%1\$s'>spam queue</a> at the moment." ), $link );
        }
 
        $text = $intro . '<br />' . $queue_text;
        }
 
        $text = $intro . '<br />' . $queue_text;
@@ -512,6 +549,9 @@ function akismet_submit_nonspam_comment ( $comment_id ) {
        if ( akismet_test_mode() )
                $comment->is_test = 'true';
 
        if ( akismet_test_mode() )
                $comment->is_test = 'true';
 
+       $post = get_post( $comment->comment_post_ID );
+       $comment->comment_post_modified_gmt = $post->post_modified_gmt;
+
        $query_string = '';
        foreach ( $comment as $key => $data )
                $query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&';
        $query_string = '';
        foreach ( $comment as $key => $data )
                $query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&';
@@ -561,6 +601,9 @@ function akismet_submit_spam_comment ( $comment_id ) {
        if ( akismet_test_mode() )
                $comment->is_test = 'true';
 
        if ( akismet_test_mode() )
                $comment->is_test = 'true';
 
+       $post = get_post( $comment->comment_post_ID );
+       $comment->comment_post_modified_gmt = $post->post_modified_gmt;
+
        $query_string = '';
        foreach ( $comment as $key => $data )
                $query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&';
        $query_string = '';
        foreach ( $comment as $key => $data )
                $query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&';
@@ -591,6 +634,10 @@ function akismet_transition_comment_status( $new_status, $old_status, $comment )
 
        if ( defined('WP_IMPORTING') && WP_IMPORTING == true )
                return;
 
        if ( defined('WP_IMPORTING') && WP_IMPORTING == true )
                return;
+
+       // if this is present, it means the status has been changed by a re-check, not an explicit user action
+       if ( get_comment_meta( $comment->comment_ID, 'akismet_rechecking' ) )
+               return;
                
        global $current_user;
        $reporter = '';
                
        global $current_user;
        $reporter = '';
@@ -611,8 +658,7 @@ function akismet_transition_comment_status( $new_status, $old_status, $comment )
                }
        }
        
                }
        }
        
-       if ( !get_comment_meta( $comment->comment_ID, 'akismet_rechecking' ) )
-               akismet_update_comment_history( $comment->comment_ID, sprintf( __('%s changed the comment status to %s'), $reporter, $new_status ), 'status-' . $new_status );
+       akismet_update_comment_history( $comment->comment_ID, sprintf( __('%s changed the comment status to %s'), $reporter, $new_status ), 'status-' . $new_status );
 }
 
 add_action( 'transition_comment_status', 'akismet_transition_comment_status', 10, 3 );
 }
 
 add_action( 'transition_comment_status', 'akismet_transition_comment_status', 10, 3 );
@@ -647,6 +693,8 @@ function akismet_spam_count( $type = false ) {
 function akismet_recheck_queue() {
        global $wpdb, $akismet_api_host, $akismet_api_port;
 
 function akismet_recheck_queue() {
        global $wpdb, $akismet_api_host, $akismet_api_port;
 
+       akismet_fix_scheduled_recheck();
+
        if ( ! ( isset( $_GET['recheckqueue'] ) || ( isset( $_REQUEST['action'] ) && 'akismet_recheck_queue' == $_REQUEST['action'] ) ) )
                return;
                
        if ( ! ( isset( $_GET['recheckqueue'] ) || ( isset( $_REQUEST['action'] ) && 'akismet_recheck_queue' == $_REQUEST['action'] ) ) )
                return;
                
@@ -673,28 +721,63 @@ function akismet_recheck_queue() {
                foreach ( $c as $key => $data )
                $query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&';
 
                foreach ( $c as $key => $data )
                $query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&';
 
+               add_comment_meta( $c['comment_ID'], 'akismet_rechecking', true );
                $response = akismet_http_post($query_string, $akismet_api_host, '/1.1/comment-check', $akismet_api_port);
                if ( 'true' == $response[1] ) {
                        wp_set_comment_status($c['comment_ID'], 'spam');
                        update_comment_meta( $c['comment_ID'], 'akismet_result', 'true' );
                $response = akismet_http_post($query_string, $akismet_api_host, '/1.1/comment-check', $akismet_api_port);
                if ( 'true' == $response[1] ) {
                        wp_set_comment_status($c['comment_ID'], 'spam');
                        update_comment_meta( $c['comment_ID'], 'akismet_result', 'true' );
+                       delete_comment_meta( $c['comment_ID'], 'akismet_error' );
                        akismet_update_comment_history( $c['comment_ID'], __('Akismet re-checked and caught this comment as spam'), 'check-spam' );
                
                } elseif ( 'false' == $response[1] ) {
                        update_comment_meta( $c['comment_ID'], 'akismet_result', 'false' );
                        akismet_update_comment_history( $c['comment_ID'], __('Akismet re-checked and caught this comment as spam'), 'check-spam' );
                
                } elseif ( 'false' == $response[1] ) {
                        update_comment_meta( $c['comment_ID'], 'akismet_result', 'false' );
+                       delete_comment_meta( $c['comment_ID'], 'akismet_error' );
                        akismet_update_comment_history( $c['comment_ID'], __('Akismet re-checked and cleared this comment'), 'check-ham' );
                // abnormal result: error
                } else {
                        update_comment_meta( $c['comment_ID'], 'akismet_result', 'error' );
                        akismet_update_comment_history( $c['comment_ID'], __('Akismet re-checked and cleared this comment'), 'check-ham' );
                // abnormal result: error
                } else {
                        update_comment_meta( $c['comment_ID'], 'akismet_result', 'error' );
-                       akismet_update_comment_history( $c['comment_ID'], sprintf( __('Akismet was unable to re-check this comment (response: %s)'), $response[1]), 'check-error' );
+                       akismet_update_comment_history( $c['comment_ID'], sprintf( __('Akismet was unable to re-check this comment (response: %s)'), substr($response[1], 0, 50)), 'check-error' );
                }
 
                }
 
+               delete_comment_meta( $c['comment_ID'], 'akismet_rechecking' );
        }
        }
-       wp_redirect( $_SERVER['HTTP_REFERER'] );
+       wp_safe_redirect( $_SERVER['HTTP_REFERER'] );
        exit;
 }
 
 add_action('admin_action_akismet_recheck_queue', 'akismet_recheck_queue');
 
        exit;
 }
 
 add_action('admin_action_akismet_recheck_queue', 'akismet_recheck_queue');
 
+// Adds an 'x' link next to author URLs, clicking will remove the author URL and show an undo link
+function akismet_remove_comment_author_url() {
+    if ( !empty($_POST['id'] ) && check_admin_referer( 'comment_author_url_nonce' ) ) {
+        global $wpdb;
+        $comment = get_comment( intval($_POST['id']), ARRAY_A );
+        if (current_user_can('edit_comment', $comment['comment_ID'])) {
+            $comment['comment_author_url'] = '';
+            do_action( 'comment_remove_author_url' );
+            print(wp_update_comment( $comment ));
+            die();
+        }
+    }
+}
+
+add_action('wp_ajax_comment_author_deurl', 'akismet_remove_comment_author_url');
+
+function akismet_add_comment_author_url() {
+    if ( !empty( $_POST['id'] ) && !empty( $_POST['url'] ) && check_admin_referer( 'comment_author_url_nonce' ) ) {
+        global $wpdb;
+        $comment = get_comment( intval($_POST['id']), ARRAY_A );
+        if (current_user_can('edit_comment', $comment['comment_ID'])) {
+            $comment['comment_author_url'] = esc_url($_POST['url']);
+            do_action( 'comment_add_author_url' );
+            print(wp_update_comment( $comment ));
+            die();
+        }
+    }
+}
+
+add_action('wp_ajax_comment_author_reurl', 'akismet_add_comment_author_url');
+
 // Check connectivity between the WordPress blog and Akismet's servers.
 // Returns an associative array of server IP addresses, where the key is the IP address, and value is true (available) or false (unable to connect).
 function akismet_check_server_connectivity() {
 // Check connectivity between the WordPress blog and Akismet's servers.
 // Returns an associative array of server IP addresses, where the key is the IP address, and value is true (available) or false (unable to connect).
 function akismet_check_server_connectivity() {
@@ -748,3 +831,20 @@ function akismet_server_connectivity_ok() {
        return !( empty($servers) || !count($servers) || count( array_filter($servers) ) < count($servers) );
 }
 
        return !( empty($servers) || !count($servers) || count( array_filter($servers) ) < count($servers) );
 }
 
+function akismet_admin_menu() {
+       if ( class_exists( 'Jetpack' ) ) {
+               add_action( 'jetpack_admin_menu', 'akismet_load_menu' );
+       } else {
+               akismet_load_menu();
+       }
+}
+
+function akismet_load_menu() {
+       if ( class_exists( 'Jetpack' ) ) {
+               add_submenu_page( 'jetpack', __( 'Akismet Configuration' ), __( 'Akismet Configuration' ), 'manage_options', 'akismet-key-config', 'akismet_conf' );
+               add_submenu_page( 'jetpack', __( 'Akismet Stats' ), __( 'Akismet Stats' ), 'manage_options', 'akismet-stats-display', 'akismet_stats_display' );
+       } else {
+               add_submenu_page('plugins.php', __('Akismet Configuration'), __('Akismet Configuration'), 'manage_options', 'akismet-key-config', 'akismet_conf');
+               add_submenu_page('index.php', __('Akismet Stats'), __('Akismet Stats'), 'manage_options', 'akismet-stats-display', 'akismet_stats_display');
+       }
+}
index 6bc84587299b3476a0f08b6af48da9172d57b51c..dccc9c493f3de1e0d21284c7186f429b2eae1dcc 100644 (file)
@@ -1,7 +1,12 @@
 #submitted-on { position: relative; }
 #the-comment-list .author .akismet-user-comment-count { display: inline; }
 #submitted-on { position: relative; }
 #the-comment-list .author .akismet-user-comment-count { display: inline; }
+#the-comment-list .author a span { text-decoration: none; color: #999; }
+#the-comment-list .remove_url { margin-left: 3px; color: #999; padding: 2px 3px 2px 0; }
+#the-comment-list .remove_url:hover { color: #A7301F; font-weight: bold; padding: 2px 2px 2px 0; }
 #dashboard_recent_comments .akismet-status { display: none; } /* never show the flagged by text on the dashboard */
 .akismet-status { float: right; }
 .akismet-status a { color: #AAA; font-style: italic; }
 span.comment-link a { text-decoration: underline; }
 span.comment-link:after { content: " " attr(title) " "; color: #aaa; text-decoration: none; }
 #dashboard_recent_comments .akismet-status { display: none; } /* never show the flagged by text on the dashboard */
 .akismet-status { float: right; }
 .akismet-status a { color: #AAA; font-style: italic; }
 span.comment-link a { text-decoration: underline; }
 span.comment-link:after { content: " " attr(title) " "; color: #aaa; text-decoration: none; }
+.mshot-arrow { width: 0; height: 0; border-top: 10px solid transparent; border-bottom: 10px solid transparent; border-right:10px solid #5C5C5C; position: absolute; left: -6px; top: 91px; }
+.mshot-container { background: #5C5C5C; position: absolute; top: -94px; padding: 7px; width: 450px; height: 338px; z-index: 20000; -moz-border-radius:6px; border-radius:6px; -webkit-border-radius:6px; }
\ No newline at end of file
index 39089351e264a6cb2324d8a70a3eb2a57ae931c8..839fe6bc256d87bb482e887c50e88a73107d156e 100644 (file)
@@ -7,4 +7,106 @@ jQuery(document).ready(function () {
                var thisId = jQuery(this).attr('commentid');
                jQuery(this).insertAfter('#comment-' + thisId + ' .author strong:first').show();
        });
                var thisId = jQuery(this).attr('commentid');
                jQuery(this).insertAfter('#comment-' + thisId + ' .author strong:first').show();
        });
+       jQuery('#the-comment-list tr.comment .column-author a[title ^= "http://"]').each(function () {
+               var thisTitle = jQuery(this).attr('title');
+                   thisCommentId = jQuery(this).parents('tr:first').attr('id').split("-");
+               
+               jQuery(this).attr("id", "author_comment_url_"+ thisCommentId[1]);
+               
+               if (thisTitle) {
+                       jQuery(this).after(' <a href="#" class="remove_url" commentid="'+ thisCommentId[1] +'" title="Remove this URL">x</a>');
+               }
+       });
+       jQuery('.remove_url').live('click', function () {
+               var thisId = jQuery(this).attr('commentid');
+               var data = {
+                       action: 'comment_author_deurl',
+                       _wpnonce: WPAkismet.comment_author_url_nonce,
+                       id: thisId
+               };
+               jQuery.ajax({
+                   url: ajaxurl,
+                   type: 'POST',
+                   data: data,
+                   beforeSend: function () {
+                       // Removes "x" link
+                               jQuery("a[commentid='"+ thisId +"']").hide();
+                               // Show temp status
+                       jQuery("#author_comment_url_"+ thisId).html('<span>Removing...</span>');
+                   },
+                   success: function (response) {
+                       if (response) {
+                                       // Show status/undo link
+                                       jQuery("#author_comment_url_"+ thisId).attr('cid', thisId).addClass('akismet_undo_link_removal').html('<span>URL removed (</span>undo<span>)</span>');
+                               }
+                   }
+               });
+
+               return false;
+       });
+       jQuery('.akismet_undo_link_removal').live('click', function () {
+               var thisId = jQuery(this).attr('cid');
+               var thisUrl = jQuery(this).attr('href').replace("http://www.", "").replace("http://", "");
+               var data = {
+                       action: 'comment_author_reurl',
+                       _wpnonce: WPAkismet.comment_author_url_nonce,
+                       id: thisId,
+                       url: thisUrl
+               };
+               jQuery.ajax({
+                   url: ajaxurl,
+                   type: 'POST',
+                   data: data,
+                   beforeSend: function () {
+                               // Show temp status
+                       jQuery("#author_comment_url_"+ thisId).html('<span>Re-adding…</span>');
+                   },
+                   success: function (response) {
+                       if (response) {
+                                       // Add "x" link
+                                       jQuery("a[commentid='"+ thisId +"']").show();
+                                       // Show link
+                                       jQuery("#author_comment_url_"+ thisId).removeClass('akismet_undo_link_removal').html(thisUrl);
+                               }
+                   }
+               });
+               
+               return false;
+       });
+       jQuery('a[id^="author_comment_url"]').mouseover(function () {
+               // Need to determine size of author column
+               var thisParentWidth = jQuery(this).parent().width();
+               // It changes based on if there is a gravatar present
+               thisParentWidth = (jQuery(this).parent().find('.grav-hijack').length) ? thisParentWidth - 42 + 'px' : thisParentWidth + 'px';
+               if (jQuery(this).find('.mShot').length == 0 && !jQuery(this).hasClass('akismet_undo_link_removal')) {
+                       var thisId = jQuery(this).attr('id').replace('author_comment_url_', '');
+                       jQuery('.widefat td').css('overflow', 'visible');
+                       jQuery(this).css('position', 'relative');
+                       var thisHref = jQuery.URLEncode(jQuery(this).attr('href'));
+                       jQuery(this).append('<div class="mShot mshot-container" style="left: '+thisParentWidth+'"><div class="mshot-arrow"></div><img src="http://s.wordpress.com/mshots/v1/'+thisHref+'?w=450" width="450" class="mshot-image_'+thisId+'" style="margin: 0;" /></div>');
+                       setTimeout(function () {
+                               jQuery('.mshot-image_'+thisId).attr('src', 'http://s.wordpress.com/mshots/v1/'+thisHref+'?w=450&r=2');
+                       }, 6000);
+                       setTimeout(function () {
+                               jQuery('.mshot-image_'+thisId).attr('src', 'http://s.wordpress.com/mshots/v1/'+thisHref+'?w=450&r=3');
+                       }, 12000);
+               } else {
+                       jQuery(this).find('.mShot').css('left', thisParentWidth).show();
+               }
+       }).mouseout(function () {
+               jQuery(this).find('.mShot').hide();
+       });
+});
+// URL encode plugin
+jQuery.extend({URLEncode:function(c){var o='';var x=0;c=c.toString();var r=/(^[a-zA-Z0-9_.]*)/;
+  while(x<c.length){var m=r.exec(c.substr(x));
+    if(m!=null && m.length>1 && m[1]!=''){o+=m[1];x+=m[1].length;
+    }else{if(c[x]==' ')o+='+';else{var d=c.charCodeAt(x);var h=d.toString(16);
+    o+='%'+(h.length<2?'0':'')+h.toUpperCase();}x++;}}return o;}
 });
 });
+// Preload mshot images after everything else has loaded
+jQuery(window).load(function() {
+       jQuery('a[id^="author_comment_url"]').each(function () {
+               jQuery.get('http://s.wordpress.com/mshots/v1/'+jQuery.URLEncode(jQuery(this).attr('href'))+'?w=450');
+       });
+});
\ No newline at end of file
index f453745004b6a2d684434a54117acd523158a176..0c5928c6a9658db8120b67736e510af5555379c5 100644 (file)
@@ -4,9 +4,9 @@
  */
 /*
 Plugin Name: Akismet
  */
 /*
 Plugin Name: Akismet
-Plugin URI: http://akismet.com/
-Description: Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from comment and trackback spam</strong>. It keeps your site protected from spam even while you sleep. To get started: 1) Click the "Activate" link to the left of this description, 2) <a href="http://akismet.com/get/?return=true">Sign up for an Akismet API key</a>, and 3) Go to your <a href="plugins.php?page=akismet-key-config">Akismet configuration</a> page, and save your API key.
-Version: 2.5.3
+Plugin URI: http://akismet.com/?return=true
+Description: Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from comment and trackback spam</strong>. It keeps your site protected from spam even while you sleep. To get started: 1) Click the "Activate" link to the left of this description, 2) <a href="http://akismet.com/get/?return=true">Sign up for an Akismet API key</a>, and 3) Go to your <a href="admin.php?page=akismet-key-config">Akismet configuration</a> page, and save your API key.
+Version: 2.5.6
 Author: Automattic
 Author URI: http://automattic.com/wordpress-plugins/
 License: GPLv2 or later
 Author: Automattic
 Author URI: http://automattic.com/wordpress-plugins/
 License: GPLv2 or later
@@ -28,7 +28,7 @@ along with this program; if not, write to the Free Software
 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
 
 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
 
-define('AKISMET_VERSION', '2.5.3');
+define('AKISMET_VERSION', '2.5.6');
 define('AKISMET_PLUGIN_URL', plugin_dir_url( __FILE__ ));
 
 /** If you hardcode a WP.com API key here, all key config screens will be hidden */
 define('AKISMET_PLUGIN_URL', plugin_dir_url( __FILE__ ));
 
 /** If you hardcode a WP.com API key here, all key config screens will be hidden */
@@ -70,12 +70,33 @@ function akismet_get_key() {
        return get_option('wordpress_api_key');
 }
 
        return get_option('wordpress_api_key');
 }
 
-function akismet_verify_key( $key, $ip = null ) {
+function akismet_check_key_status( $key, $ip = null ) {
        global $akismet_api_host, $akismet_api_port, $wpcom_api_key;
        $blog = urlencode( get_option('home') );
        if ( $wpcom_api_key )
                $key = $wpcom_api_key;
        $response = akismet_http_post("key=$key&blog=$blog", 'rest.akismet.com', '/1.1/verify-key', $akismet_api_port, $ip);
        global $akismet_api_host, $akismet_api_port, $wpcom_api_key;
        $blog = urlencode( get_option('home') );
        if ( $wpcom_api_key )
                $key = $wpcom_api_key;
        $response = akismet_http_post("key=$key&blog=$blog", 'rest.akismet.com', '/1.1/verify-key', $akismet_api_port, $ip);
+       return $response;
+}
+
+// given a response from an API call like akismet_check_key_status(), update the alert code options if an alert is present.
+function akismet_update_alert( $response ) {
+       $code = $msg = null;
+       if ( isset($response[0]['x-akismet-alert-code']) ) {
+               $code = $response[0]['x-akismet-alert-code'];
+               $msg = $response[0]['x-akismet-alert-msg'];
+       }
+       
+       // only call update_option() if the value has changed
+       if ( $code != get_option( 'akismet_alert_code' ) ) {
+               update_option( 'akismet_alert_code', $code );
+               update_option( 'akismet_alert_msg', $msg );
+       }
+}
+
+function akismet_verify_key( $key, $ip = null ) {
+       $response = akismet_check_key_status( $key, $ip );
+       akismet_update_alert( $response );
        if ( !is_array($response) || !isset($response[1]) || $response[1] != 'valid' && $response[1] != 'invalid' )
                return 'failed';
        return $response[1];
        if ( !is_array($response) || !isset($response[1]) || $response[1] != 'valid' && $response[1] != 'invalid' )
                return 'failed';
        return $response[1];
@@ -120,6 +141,8 @@ function akismet_http_post($request, $host, $path, $port = 80, $ip=null) {
        $akismet_ua = "WordPress/{$wp_version} | ";
        $akismet_ua .= 'Akismet/' . constant( 'AKISMET_VERSION' );
 
        $akismet_ua = "WordPress/{$wp_version} | ";
        $akismet_ua .= 'Akismet/' . constant( 'AKISMET_VERSION' );
 
+       $akismet_ua = apply_filters( 'akismet_ua', $akismet_ua );
+
        $content_length = strlen( $request );
 
        $http_host = $host;
        $content_length = strlen( $request );
 
        $http_host = $host;
@@ -278,7 +301,7 @@ function akismet_auto_check_update_meta( $id, $comment ) {
                                // abnormal result: error
                                } else {
                                        update_comment_meta( $comment->comment_ID, 'akismet_error', time() );
                                // abnormal result: error
                                } else {
                                        update_comment_meta( $comment->comment_ID, 'akismet_error', time() );
-                                       akismet_update_comment_history( $comment->comment_ID, sprintf( __('Akismet was unable to check this comment (response: %s), will automatically retry again later.'), $akismet_last_comment['akismet_result']), 'check-error' );
+                                       akismet_update_comment_history( $comment->comment_ID, sprintf( __('Akismet was unable to check this comment (response: %s), will automatically retry again later.'), substr($akismet_last_comment['akismet_result'], 0, 50)), 'check-error' );
                                }
                                
                                // record the complete original data as submitted for checking
                                }
                                
                                // record the complete original data as submitted for checking
@@ -303,7 +326,9 @@ function akismet_auto_check_comment( $commentdata ) {
        $comment['blog_charset'] = get_option('blog_charset');
        $comment['permalink']  = get_permalink($comment['comment_post_ID']);
        
        $comment['blog_charset'] = get_option('blog_charset');
        $comment['permalink']  = get_permalink($comment['comment_post_ID']);
        
-       $comment['user_role'] = akismet_get_user_roles($comment['user_ID']);
+       if ( !empty( $comment['user_ID'] ) ) {
+               $comment['user_role'] = akismet_get_user_roles($comment['user_ID']);
+       }
 
        $akismet_nonce_option = apply_filters( 'akismet_comment_nonce', get_option( 'akismet_comment_nonce' ) );
        $comment['akismet_comment_nonce'] = 'inactive';
 
        $akismet_nonce_option = apply_filters( 'akismet_comment_nonce', get_option( 'akismet_comment_nonce' ) );
        $comment['akismet_comment_nonce'] = 'inactive';
@@ -335,6 +360,9 @@ function akismet_auto_check_comment( $commentdata ) {
                        $comment["$key"] = '';
        }
 
                        $comment["$key"] = '';
        }
 
+       $post = get_post( $comment['comment_post_ID'] );
+       $comment[ 'comment_post_modified_gmt' ] = $post->post_modified_gmt;
+
        $query_string = '';
        foreach ( $comment as $key => $data )
                $query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&';
        $query_string = '';
        foreach ( $comment as $key => $data )
                $query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&';
@@ -342,6 +370,7 @@ function akismet_auto_check_comment( $commentdata ) {
        $commentdata['comment_as_submitted'] = $comment;
 
        $response = akismet_http_post($query_string, $akismet_api_host, '/1.1/comment-check', $akismet_api_port);
        $commentdata['comment_as_submitted'] = $comment;
 
        $response = akismet_http_post($query_string, $akismet_api_host, '/1.1/comment-check', $akismet_api_port);
+       akismet_update_alert( $response );
        $commentdata['akismet_result'] = $response[1];
        if ( 'true' == $response[1] ) {
                // akismet_spam_count will be incremented later by akismet_result_spam()
        $commentdata['akismet_result'] = $response[1];
        if ( 'true' == $response[1] ) {
                // akismet_spam_count will be incremented later by akismet_result_spam()
@@ -349,7 +378,6 @@ function akismet_auto_check_comment( $commentdata ) {
 
                do_action( 'akismet_spam_caught' );
 
 
                do_action( 'akismet_spam_caught' );
 
-               $post = get_post( $comment['comment_post_ID'] );
                $last_updated = strtotime( $post->post_modified_gmt );
                $diff = time() - $last_updated;
                $diff = $diff / 86400;
                $last_updated = strtotime( $post->post_modified_gmt );
                $diff = time() - $last_updated;
                $diff = $diff / 86400;
@@ -358,15 +386,19 @@ function akismet_auto_check_comment( $commentdata ) {
                        // akismet_result_spam() won't be called so bump the counter here
                        if ( $incr = apply_filters('akismet_spam_count_incr', 1) )
                                update_option( 'akismet_spam_count', get_option('akismet_spam_count') + $incr );
                        // akismet_result_spam() won't be called so bump the counter here
                        if ( $incr = apply_filters('akismet_spam_count_incr', 1) )
                                update_option( 'akismet_spam_count', get_option('akismet_spam_count') + $incr );
-                       wp_redirect( $_SERVER['HTTP_REFERER'] );
+                       wp_safe_redirect( $_SERVER['HTTP_REFERER'] );
                        die();
                }
        }
        
        // if the response is neither true nor false, hold the comment for moderation and schedule a recheck
        if ( 'true' != $response[1] && 'false' != $response[1] ) {
                        die();
                }
        }
        
        // if the response is neither true nor false, hold the comment for moderation and schedule a recheck
        if ( 'true' != $response[1] && 'false' != $response[1] ) {
-               add_filter('pre_comment_approved', 'akismet_result_hold');
-               wp_schedule_single_event( time() + 1200, 'akismet_schedule_cron_recheck' );
+               if ( !current_user_can('moderate_comments') ) {
+                       add_filter('pre_comment_approved', 'akismet_result_hold');
+               }
+               if ( !wp_next_scheduled( 'akismet_schedule_cron_recheck' ) ) {
+                       wp_schedule_single_event( time() + 1200, 'akismet_schedule_cron_recheck' );
+               }
        }
        
        if ( function_exists('wp_next_scheduled') && function_exists('wp_schedule_event') ) {
        }
        
        if ( function_exists('wp_next_scheduled') && function_exists('wp_schedule_event') ) {
@@ -378,6 +410,8 @@ function akismet_auto_check_comment( $commentdata ) {
                akismet_delete_old();
        }
        $akismet_last_comment = $commentdata;
                akismet_delete_old();
        }
        $akismet_last_comment = $commentdata;
+
+       akismet_fix_scheduled_recheck();
        return $commentdata;
 }
 
        return $commentdata;
 }
 
@@ -402,7 +436,42 @@ function akismet_delete_old() {
 
 }
 
 
 }
 
+function akismet_delete_old_metadata() { 
+       global $wpdb; 
+
+       $now_gmt = current_time( 'mysql', 1 ); 
+       $interval = apply_filters( 'akismet_delete_commentmeta_interval', 15 );
+
+       # enfore a minimum of 1 day
+       $interval = absint( $interval );
+       if ( $interval < 1 ) {
+               return;
+       }
+
+       // akismet_as_submitted meta values are large, so expire them 
+       // after $interval days regardless of the comment status 
+       while ( TRUE ) {
+               $comment_ids = $wpdb->get_col( "SELECT $wpdb->comments.comment_id FROM $wpdb->commentmeta INNER JOIN $wpdb->comments USING(comment_id) WHERE meta_key = 'akismet_as_submitted' AND DATE_SUB('$now_gmt', INTERVAL {$interval} DAY) > comment_date_gmt LIMIT 10000" ); 
+
+               if ( empty( $comment_ids ) ) {
+                       return; 
+               }
+
+               foreach ( $comment_ids as $comment_id ) {
+                       delete_comment_meta( $comment_id, 'akismet_as_submitted' );
+               }
+       }
+
+       /*
+       $n = mt_rand( 1, 5000 ); 
+       if ( apply_filters( 'akismet_optimize_table', ( $n == 11 ), 'commentmeta' ) ) { // lucky number 
+               $wpdb->query( "OPTIMIZE TABLE $wpdb->commentmeta" ); 
+       }
+       */
+} 
+
 add_action('akismet_scheduled_delete', 'akismet_delete_old');
 add_action('akismet_scheduled_delete', 'akismet_delete_old');
+add_action('akismet_scheduled_delete', 'akismet_delete_old_metadata'); 
 
 function akismet_check_db_comment( $id, $recheck_reason = 'recheck_queue' ) {
     global $wpdb, $akismet_api_host, $akismet_api_port;
 
 function akismet_check_db_comment( $id, $recheck_reason = 'recheck_queue' ) {
     global $wpdb, $akismet_api_host, $akismet_api_port;
@@ -435,6 +504,13 @@ function akismet_check_db_comment( $id, $recheck_reason = 'recheck_queue' ) {
 function akismet_cron_recheck() {
        global $wpdb;
 
 function akismet_cron_recheck() {
        global $wpdb;
 
+       $status = akismet_verify_key( akismet_get_key() );
+       if ( get_option( 'akismet_alert_code' ) || $status == 'invalid' ) {
+               // since there is currently a problem with the key, reschedule a check for 6 hours hence
+               wp_schedule_single_event( time() + 21600, 'akismet_schedule_cron_recheck' );
+               return false;
+       }
+       
        delete_option('akismet_available_servers');
 
        $comment_errors = $wpdb->get_col( "
        delete_option('akismet_available_servers');
 
        $comment_errors = $wpdb->get_col( "
@@ -445,8 +521,9 @@ function akismet_cron_recheck() {
        " );
        
        foreach ( (array) $comment_errors as $comment_id ) {
        " );
        
        foreach ( (array) $comment_errors as $comment_id ) {
-               // if the comment no longer exists, remove the meta entry from the queue to avoid getting stuck
-               if ( !get_comment( $comment_id ) ) {
+               // if the comment no longer exists, or is too old, remove the meta entry from the queue to avoid getting stuck
+               $comment = get_comment( $comment_id );
+               if ( !$comment || strtotime( $comment->comment_date_gmt ) < strtotime( "-15 days" ) ) {
                        delete_comment_meta( $comment_id, 'akismet_error' );
                        continue;
                }
                        delete_comment_meta( $comment_id, 'akismet_error' );
                        continue;
                }
@@ -485,6 +562,7 @@ function akismet_cron_recheck() {
                        wp_schedule_single_event( time() + 1200, 'akismet_schedule_cron_recheck' );
                        return;
                }
                        wp_schedule_single_event( time() + 1200, 'akismet_schedule_cron_recheck' );
                        return;
                }
+               delete_comment_meta( $comment_id, 'akismet_rechecking' );
        }
        
        $remaining = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->commentmeta WHERE meta_key = 'akismet_error'" ) );
        }
        
        $remaining = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->commentmeta WHERE meta_key = 'akismet_error'" ) );
@@ -505,8 +583,26 @@ $akismet_comment_nonce_option = apply_filters( 'akismet_comment_nonce', get_opti
 if ( $akismet_comment_nonce_option == 'true' || $akismet_comment_nonce_option == '' )
        add_action( 'comment_form', 'akismet_add_comment_nonce' );
 
 if ( $akismet_comment_nonce_option == 'true' || $akismet_comment_nonce_option == '' )
        add_action( 'comment_form', 'akismet_add_comment_nonce' );
 
+global $wp_version;
 if ( '3.0.5' == $wp_version ) { 
        remove_filter( 'comment_text', 'wp_kses_data' ); 
        if ( is_admin() ) 
                add_filter( 'comment_text', 'wp_kses_post' ); 
 }
 if ( '3.0.5' == $wp_version ) { 
        remove_filter( 'comment_text', 'wp_kses_data' ); 
        if ( is_admin() ) 
                add_filter( 'comment_text', 'wp_kses_post' ); 
 }
+
+function akismet_fix_scheduled_recheck() {
+       $future_check = wp_next_scheduled( 'akismet_schedule_cron_recheck' );
+       if ( !$future_check ) {
+               return;
+       }
+
+       if ( get_option( 'akismet_alert_code' ) > 0 ) {
+               return;
+       }
+
+       $check_range = time() + 1200;
+       if ( $future_check > $check_range ) {
+               wp_clear_scheduled_hook( 'akismet_schedule_cron_recheck' );
+               wp_schedule_single_event( time() + 300, 'akismet_schedule_cron_recheck' );
+       }
+}
diff --git a/wp-content/plugins/akismet/index.php b/wp-content/plugins/akismet/index.php
new file mode 100644 (file)
index 0000000..a6ce9c8
--- /dev/null
@@ -0,0 +1,2 @@
+<?php
+# Silence is golden.
index d5d53b088aea77800bbc0350688c0d5396dc400d..e6de8cb31f3821ed44935671df28a77f9c73770e 100644 (file)
@@ -71,7 +71,7 @@ function akismet_caught() {
                        ++$i;
                endforeach;
                $to = add_query_arg( 'recovered', $i, $_SERVER['HTTP_REFERER'] );
                        ++$i;
                endforeach;
                $to = add_query_arg( 'recovered', $i, $_SERVER['HTTP_REFERER'] );
-               wp_redirect( $to );
+               wp_safe_redirect( $to );
                exit;
        }
        if ('delete' == $_POST['action']) {
                exit;
        }
        if ('delete' == $_POST['action']) {
@@ -87,7 +87,7 @@ function akismet_caught() {
                        wp_cache_delete( 'akismet_spam_count', 'widget' );
                }
                $to = add_query_arg( 'deleted', 'all', $_SERVER['HTTP_REFERER'] );
                        wp_cache_delete( 'akismet_spam_count', 'widget' );
                }
                $to = add_query_arg( 'deleted', 'all', $_SERVER['HTTP_REFERER'] );
-               wp_redirect( $to );
+               wp_safe_redirect( $to );
                exit;
        }
 
                exit;
        }
 
@@ -366,7 +366,7 @@ function redirect_old_akismet_urls( ) {
        // 2.7 redirect for people who might have bookmarked the old page
        if ( 8204 < $wp_db_version && ( 'edit-comments.php' == $script_name || 'edit.php' == $script_name ) && 'akismet-admin' == $page ) {
                $new_url = esc_url( 'edit-comments.php?comment_status=spam' );
        // 2.7 redirect for people who might have bookmarked the old page
        if ( 8204 < $wp_db_version && ( 'edit-comments.php' == $script_name || 'edit.php' == $script_name ) && 'akismet-admin' == $page ) {
                $new_url = esc_url( 'edit-comments.php?comment_status=spam' );
-               wp_redirect( $new_url, 301 );
+               wp_safe_redirect( $new_url, 301 );
                exit;
        }
 }
                exit;
        }
 }
index fbd3513b55236b8b81b2d373593720d36acf633a..227fad959f9e4cc8cec1ebcdca359dc6fee66ec1 100644 (file)
@@ -2,8 +2,8 @@
 Contributors: matt, ryan, andy, mdawaffe, tellyworth, josephscott, lessbloat, automattic
 Tags: akismet, comments, spam
 Requires at least: 3.0
 Contributors: matt, ryan, andy, mdawaffe, tellyworth, josephscott, lessbloat, automattic
 Tags: akismet, comments, spam
 Requires at least: 3.0
-Tested up to: 3.1
-Stable tag: 2.5.3
+Tested up to: 3.4
+Stable tag: 2.5.6
 License: GPLv2 or later
 
 Akismet checks your comments against the Akismet web service to see if they look like spam or not.
 License: GPLv2 or later
 
 Akismet checks your comments against the Akismet web service to see if they look like spam or not.
@@ -31,6 +31,29 @@ Upload the Akismet plugin to your blog, Activate it, then enter your [Akismet.co
 
 == Changelog ==
 
 
 == Changelog ==
 
+= 2.5.6 =
+* Prevent retry scheduling problems on sites where wp_cron is misbehaving
+* Preload mshot previews
+* Modernize the widget code
+* Fix a bug where comments were not held for moderation during an error condition
+* Improve the UX and display when comments are temporarily held due to an error
+* Make the Check For Spam button force a retry when comments are held due to an error
+* Handle errors caused by an invalid key
+* Don't retry comments that are too old
+* Improve error messages when verifying an API key
+
+= 2.5.5 =
+* Add nonce check for comment author URL remove action
+* Fix the settings link
+
+= 2.5.4 =
+* Limit Akismet CSS and Javascript loading in wp-admin to just the pages that need it
+* Added author URL quick removal functionality
+* Added mShot preview on Author URL hover
+* Added empty index.php to prevent directory listing
+* Move wp-admin menu items under Jetpack, if it is installed
+* Purge old Akismet comment meta data, default of 15 days
+
 = 2.5.3 = 
 * Specify the license is GPL v2 or later
 * Fix a bug that could result in orphaned commentmeta entries
 = 2.5.3 = 
 * Specify the license is GPL v2 or later
 * Fix a bug that could result in orphaned commentmeta entries
index e9a3f626e0481945986c3da3c564e4964a84ee14..8c5a120f567d800616741345859c10e6b37da7c0 100644 (file)
 /**
  * @package Akismet
  */
 /**
  * @package Akismet
  */
-// Widget stuff
-function widget_akismet_register() {
-       if ( function_exists('register_sidebar_widget') ) :
-       function widget_akismet($args) {
-               extract($args);
-               $options = get_option('widget_akismet');
-               $count = get_option('akismet_spam_count');
-               ?>
-                       <?php echo $before_widget; ?>
-                               <?php echo $before_title . $options['title'] . $after_title; ?>
-                <div id="akismetwrap"><div id="akismetstats"><a id="aka" href="http://akismet.com" title=""><?php printf( _n( '%1$s%2$s%3$s %4$sspam comment%5$s %6$sblocked by%7$s<br />%8$sAkismet%9$s', '%1$s%2$s%3$s %4$sspam comments%5$s %6$sblocked by%7$s<br />%8$sAkismet%9$s', $count ), '<span id="akismet1"><span id="akismetcount">', number_format_i18n( $count ), '</span>', '<span id="akismetsc">', '</span></span>', '<span id="akismet2"><span id="akismetbb">', '</span>', '<span id="akismeta">', '</span></span>' ); ?></a></div></div> 
-                       <?php echo $after_widget; ?>
-       <?php
+class Akismet_Widget extends WP_Widget {
+
+       function __construct() {
+               parent::__construct(
+                       'akismet_widget',
+                       __( 'Akismet Widget' ),
+                       array( 'description' => __( 'Display the number of spam comments Akismet has caught' ) )
+               );
+
+               if ( is_active_widget( false, false, $this->id_base ) ) {
+                       add_action( 'wp_head', array( $this, 'css' ) );
+               }
        }
 
        }
 
-       function widget_akismet_style() {
-               $plugin_dir = '/wp-content/plugins';
-               if ( defined( 'PLUGINDIR' ) )
-                       $plugin_dir = '/' . PLUGINDIR;
+       function css() {
+?>
 
 
-               ?>
 <style type="text/css">
 <style type="text/css">
-#aka,#aka:link,#aka:hover,#aka:visited,#aka:active{color:#fff;text-decoration:none}
-#aka:hover{border:none;text-decoration:none}
-#aka:hover #akismet1{display:none}
-#aka:hover #akismet2,#akismet1{display:block}
-#akismet2{display:none;padding-top:2px}
-#akismeta{font-size:16px;font-weight:bold;line-height:18px;text-decoration:none}
-#akismetcount{display:block;font:15px Verdana,Arial,Sans-Serif;font-weight:bold;text-decoration:none}
-#akismetwrap #akismetstats{background:url(<?php echo get_option('siteurl'), $plugin_dir; ?>/akismet/akismet.gif) no-repeat top left;border:none;color:#fff;font:11px 'Trebuchet MS','Myriad Pro',sans-serif;height:40px;line-height:100%;overflow:hidden;padding:8px 0 0;text-align:center;width:120px}
+.a-stats {
+       width: auto;
+}
+.a-stats a { 
+       background: #7CA821;
+       background-image:-moz-linear-gradient(0% 100% 90deg,#5F8E14,#7CA821);
+       background-image:-webkit-gradient(linear,0% 0,0% 100%,from(#7CA821),to(#5F8E14));
+       border: 1px solid #5F8E14;
+       border-radius:3px;
+       color: #CFEA93;
+       cursor: pointer;
+       display: block;
+       font-weight: normal;
+       height: 100%;
+       -moz-border-radius:3px;
+       padding: 7px 0 8px;
+       text-align: center;
+       text-decoration: none;
+       -webkit-border-radius:3px;
+       width: 100%;
+}
+.a-stats a:hover { 
+       text-decoration: none;
+       background-image:-moz-linear-gradient(0% 100% 90deg,#6F9C1B,#659417);
+       background-image:-webkit-gradient(linear,0% 0,0% 100%,from(#659417),to(#6F9C1B));
+}
+.a-stats .count {
+       color: #FFF;
+       display: block;
+       font-size: 15px;
+       line-height: 16px;
+       padding: 0 13px;
+       white-space: nowrap;
+}
 </style>
 </style>
-               <?php
+
+<?php
        }
 
        }
 
-       function widget_akismet_control() {
-               $options = $newoptions = get_option('widget_akismet');
-               if ( isset( $_POST['akismet-submit'] ) && $_POST["akismet-submit"] ) {
-                       $newoptions['title'] = strip_tags(stripslashes($_POST["akismet-title"]));
-                       if ( empty($newoptions['title']) ) $newoptions['title'] = __('Spam Blocked');
+       function form( $instance ) {
+               if ( $instance ) {
+                       $title = esc_attr( $instance['title'] );
                }
                }
-               if ( $options != $newoptions ) {
-                       $options = $newoptions;
-                       update_option('widget_akismet', $options);
+               else {
+                       $title = __( 'Spam Blocked' );
                }
                }
-               $title = htmlspecialchars($options['title'], ENT_QUOTES);
-       ?>
-                               <p><label for="akismet-title"><?php _e('Title:'); ?> <input style="width: 250px;" id="akismet-title" name="akismet-title" type="text" value="<?php echo $title; ?>" /></label></p>
-                               <input type="hidden" id="akismet-submit" name="akismet-submit" value="1" />
-       <?php
-       }
+?>
 
 
-       if ( function_exists( 'wp_register_sidebar_widget' ) ) {
-               wp_register_sidebar_widget( 'akismet', 'Akismet', 'widget_akismet', null, 'akismet');
-               wp_register_widget_control( 'akismet', 'Akismet', 'widget_akismet_control', null, 75, 'akismet');
-       } else {
-               register_sidebar_widget('Akismet', 'widget_akismet', null, 'akismet');
-               register_widget_control('Akismet', 'widget_akismet_control', null, 75, 'akismet');
+               <p>
+               <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label> 
+               <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo $title; ?>" />
+               </p>
+
+<?php 
        }
        }
-       if ( is_active_widget('widget_akismet') )
-               add_action('wp_head', 'widget_akismet_style');
-       endif;
-}
 
 
-add_action('init', 'widget_akismet_register');
+       function update( $new_instance, $old_instance ) {
+               $instance['title'] = strip_tags( $new_instance['title'] );
+               return $instance;
+       }
 
 
-// Counter for non-widget users
-function akismet_counter() {
-       $plugin_dir = '/wp-content/plugins';
-       if ( defined( 'PLUGINDIR' ) )
-               $plugin_dir = '/' . PLUGINDIR;
+       function widget( $args, $instance ) {
+               $count = get_option( 'akismet_spam_count' );
 
 
+               echo $args['before_widget'];
+               if ( ! empty( $instance['title'] ) ) {
+                       echo $args['before_title'];
+                       echo esc_html( $instance['title'] );
+                       echo $args['after_title'];
+               }
 ?>
 ?>
-<style type="text/css">
-#akismetwrap #aka,#aka:link,#aka:hover,#aka:visited,#aka:active{color:#fff;text-decoration:none}
-#aka:hover{border:none;text-decoration:none}
-#aka:hover #akismet1{display:none}
-#aka:hover #akismet2,#akismet1{display:block}
-#akismet2{display:none;padding-top:2px}
-#akismeta{font-size:16px;font-weight:bold;line-height:18px;text-decoration:none}
-#akismetcount{display:block;font:15px Verdana,Arial,Sans-Serif;font-weight:bold;text-decoration:none}
-#akismetwrap #akismetstats{background:url(<?php echo get_option('siteurl'), $plugin_dir; ?>/akismet/akismet.gif) no-repeat top left;border:none;color:#fff;font:11px 'Trebuchet MS','Myriad Pro',sans-serif;height:40px;line-height:100%;overflow:hidden;padding:8px 0 0;text-align:center;width:120px}
-</style>
+
+       <div class="a-stats">
+               <a href="http://akismet.com" target="_blank" title=""><?php printf( _n( '<strong class="count">%1$s spam</strong> blocked by <strong>Akismet</strong>', '<strong class="count">%1$s spam</strong> blocked by <strong>Akismet</strong>', $count ), number_format_i18n( $count ) ); ?></a>
+       </div>
+
 <?php
 <?php
-$count = get_option('akismet_spam_count');
-printf( _n( '<div id="akismetwrap"><div id="akismetstats"><a id="aka" href="http://akismet.com" title=""><div id="akismet1"><span id="akismetcount">%1$s</span> <span id="akismetsc">spam comment</span></div> <div id="akismet2"><span id="akismetbb">blocked by</span><br /><span id="akismeta">Akismet</span></div></a></div></div>', '<div id="akismetwrap"><div id="akismetstats"><a id="aka" href="http://akismet.com" title=""><div id="akismet1"><span id="akismetcount">%1$s</span> <span id="akismetsc">spam comments</span></div> <div id="akismet2"><span id="akismetbb">blocked by</span><br /><span id="akismeta">Akismet</span></div></a></div></div>', $count ), number_format_i18n( $count ) );
+               echo $args['after_widget'];
+       }
 }
 }
+
+function akismet_register_widgets() {
+       register_widget( 'Akismet_Widget' );
+}
+
+add_action( 'widgets_init', 'akismet_register_widgets' );
index f9a2bfdca9cbd445631f75f7e25cd7a6152324b9..472cb133d6bf3ae821c06972059004f496629c24 100644 (file)
@@ -49,7 +49,7 @@ get_header(); ?>
                                                <h2><?php printf( __( 'About %s', 'twentyeleven' ), get_the_author() ); ?></h2>
                                                <?php the_author_meta( 'description' ); ?>
                                        </div><!-- #author-description  -->
                                                <h2><?php printf( __( 'About %s', 'twentyeleven' ), get_the_author() ); ?></h2>
                                                <?php the_author_meta( 'description' ); ?>
                                        </div><!-- #author-description  -->
-                               </div><!-- #entry-author-info -->
+                               </div><!-- #author-info -->
                                <?php endif; ?>
 
                                <?php /* Start the Loop */ ?>
                                <?php endif; ?>
 
                                <?php /* Start the Loop */ ?>
index 4cd26adc41a81552da3699d5b9746b19c396d135..8c283715902b36abda66f71cb5e28cb54ca43574 100644 (file)
@@ -65,7 +65,7 @@
                                        </a>
                                </div><!-- #author-link -->
                        </div><!-- #author-description -->
                                        </a>
                                </div><!-- #author-link -->
                        </div><!-- #author-description -->
-               </div><!-- #entry-author-info -->
+               </div><!-- #author-info -->
                <?php endif; ?>
        </footer><!-- .entry-meta -->
 </article><!-- #post-<?php the_ID(); ?> -->
                <?php endif; ?>
        </footer><!-- .entry-meta -->
 </article><!-- #post-<?php the_ID(); ?> -->
index 2641a077afedd437640deda61a39defbafacf938..e866925a944f8e33452951c6d819724267f1f002 100644 (file)
@@ -125,7 +125,7 @@ pre {
        margin-bottom: 1.625em;
        padding: 0.75em 1.625em;
 }
        margin-bottom: 1.625em;
        padding: 0.75em 1.625em;
 }
-code, kbd, code var {
+code, kbd, samp, var {
        font: 13px Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace;
 }
 abbr, acronym, dfn {
        font: 13px Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace;
 }
 abbr, acronym, dfn {
index 9858126b6aa06daa7dcaaca04e82e97c278d489e..e9d97ed2765a63742a951bc8dba0eccddf888467 100644 (file)
@@ -62,10 +62,9 @@ if ( ! function_exists( 'twentyeleven_setup' ) ):
  *
  * @uses load_theme_textdomain() For translation/localization support.
  * @uses add_editor_style() To style the visual editor.
  *
  * @uses load_theme_textdomain() For translation/localization support.
  * @uses add_editor_style() To style the visual editor.
- * @uses add_theme_support() To add support for post thumbnails, automatic feed links, and Post Formats.
+ * @uses add_theme_support() To add support for post thumbnails, automatic feed links, custom headers
+ *     and backgrounds, and post formats.
  * @uses register_nav_menus() To add support for navigation menus.
  * @uses register_nav_menus() To add support for navigation menus.
- * @uses add_custom_background() To add support for a custom background.
- * @uses add_custom_image_header() To add support for a custom header.
  * @uses register_default_headers() To register the default custom header images provided with the theme.
  * @uses set_post_thumbnail_size() To set a custom post thumbnail size.
  *
  * @uses register_default_headers() To register the default custom header images provided with the theme.
  * @uses set_post_thumbnail_size() To set a custom post thumbnail size.
  *
@@ -80,11 +79,6 @@ function twentyeleven_setup() {
         */
        load_theme_textdomain( 'twentyeleven', get_template_directory() . '/languages' );
 
         */
        load_theme_textdomain( 'twentyeleven', get_template_directory() . '/languages' );
 
-       $locale = get_locale();
-       $locale_file = get_template_directory() . "/languages/$locale.php";
-       if ( is_readable( $locale_file ) )
-               require_once( $locale_file );
-
        // This theme styles the visual editor with editor-style.css to match the theme style.
        add_editor_style();
 
        // This theme styles the visual editor with editor-style.css to match the theme style.
        add_editor_style();
 
@@ -103,42 +97,63 @@ function twentyeleven_setup() {
        // Add support for a variety of post formats
        add_theme_support( 'post-formats', array( 'aside', 'link', 'gallery', 'status', 'quote', 'image' ) );
 
        // Add support for a variety of post formats
        add_theme_support( 'post-formats', array( 'aside', 'link', 'gallery', 'status', 'quote', 'image' ) );
 
-       // Add support for custom backgrounds
-       add_custom_background();
+       $theme_options = twentyeleven_get_theme_options();
+       if ( 'dark' == $theme_options['color_scheme'] )
+               $default_background_color = '1d1d1d';
+       else
+               $default_background_color = 'f1f1f1';
+
+       // Add support for custom backgrounds.
+       add_theme_support( 'custom-background', array(
+               // Let WordPress know what our default background color is.
+               // This is dependent on our current color scheme.
+               'default-color' => $default_background_color,
+       ) );
 
        // This theme uses Featured Images (also known as post thumbnails) for per-post/per-page Custom Header images
        add_theme_support( 'post-thumbnails' );
 
 
        // This theme uses Featured Images (also known as post thumbnails) for per-post/per-page Custom Header images
        add_theme_support( 'post-thumbnails' );
 
-       // The next four constants set how Twenty Eleven supports custom headers.
-
-       // The default header text color
-       define( 'HEADER_TEXTCOLOR', '000' );
-
-       // By leaving empty, we allow for random image rotation.
-       define( 'HEADER_IMAGE', '' );
-
-       // The height and width of your custom header.
-       // Add a filter to twentyeleven_header_image_width and twentyeleven_header_image_height to change these values.
-       define( 'HEADER_IMAGE_WIDTH', apply_filters( 'twentyeleven_header_image_width', 1000 ) );
-       define( 'HEADER_IMAGE_HEIGHT', apply_filters( 'twentyeleven_header_image_height', 288 ) );
+       // Add support for custom headers.
+       $custom_header_support = array(
+               // The default header text color.
+               'default-text-color' => '000',
+               // The height and width of our custom header.
+               'width' => apply_filters( 'twentyeleven_header_image_width', 1000 ),
+               'height' => apply_filters( 'twentyeleven_header_image_height', 288 ),
+               // Support flexible heights.
+               'flex-height' => true,
+               // Random image rotation by default.
+               'random-default' => true,
+               // Callback for styling the header.
+               'wp-head-callback' => 'twentyeleven_header_style',
+               // Callback for styling the header preview in the admin.
+               'admin-head-callback' => 'twentyeleven_admin_header_style',
+               // Callback used to display the header preview in the admin.
+               'admin-preview-callback' => 'twentyeleven_admin_header_image',
+       );
+       
+       add_theme_support( 'custom-header', $custom_header_support );
+
+       if ( ! function_exists( 'get_custom_header' ) ) {
+               // This is all for compatibility with versions of WordPress prior to 3.4.
+               define( 'HEADER_TEXTCOLOR', $custom_header_support['default-text-color'] );
+               define( 'HEADER_IMAGE', '' );
+               define( 'HEADER_IMAGE_WIDTH', $custom_header_support['width'] );
+               define( 'HEADER_IMAGE_HEIGHT', $custom_header_support['height'] );
+               add_custom_image_header( $custom_header_support['wp-head-callback'], $custom_header_support['admin-head-callback'], $custom_header_support['admin-preview-callback'] );
+               add_custom_background();
+       }
 
        // We'll be using post thumbnails for custom header images on posts and pages.
        // We want them to be the size of the header image that we just defined
        // Larger images will be auto-cropped to fit, smaller ones will be ignored. See header.php.
 
        // We'll be using post thumbnails for custom header images on posts and pages.
        // We want them to be the size of the header image that we just defined
        // Larger images will be auto-cropped to fit, smaller ones will be ignored. See header.php.
-       set_post_thumbnail_size( HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT, true );
-
-       // Add Twenty Eleven's custom image sizes
-       add_image_size( 'large-feature', HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT, true ); // Used for large feature (header) images
-       add_image_size( 'small-feature', 500, 300 ); // Used for featured posts if a large-feature doesn't exist
-
-       // Turn on random header image rotation by default.
-       add_theme_support( 'custom-header', array( 'random-default' => true ) );
-
-       // Add a way for the custom header to be styled in the admin panel that controls
-       // custom headers. See twentyeleven_admin_header_style(), below.
-       add_custom_image_header( 'twentyeleven_header_style', 'twentyeleven_admin_header_style', 'twentyeleven_admin_header_image' );
+       set_post_thumbnail_size( $custom_header_support['width'], $custom_header_support['height'], true );
 
 
-       // ... and thus ends the changeable header business.
+       // Add Twenty Eleven's custom image sizes.
+       // Used for large feature (header) images.
+       add_image_size( 'large-feature', $custom_header_support['width'], $custom_header_support['height'], true );
+       // Used for featured posts if a large-feature doesn't exist.
+       add_image_size( 'small-feature', 500, 300 );
 
        // Default custom headers packaged with the theme. %s is a placeholder for the theme template directory URI.
        register_default_headers( array(
 
        // Default custom headers packaged with the theme. %s is a placeholder for the theme template directory URI.
        register_default_headers( array(
@@ -201,17 +216,18 @@ if ( ! function_exists( 'twentyeleven_header_style' ) ) :
  * @since Twenty Eleven 1.0
  */
 function twentyeleven_header_style() {
  * @since Twenty Eleven 1.0
  */
 function twentyeleven_header_style() {
+       $text_color = get_header_textcolor();
 
 
-       // If no custom options for text are set, let's bail
-       // get_header_textcolor() options: HEADER_TEXTCOLOR is default, hide text (returns 'blank') or any hex value
-       if ( HEADER_TEXTCOLOR == get_header_textcolor() )
+       // If no custom options for text are set, let's bail.
+       if ( $text_color == HEADER_TEXTCOLOR )
                return;
                return;
+               
        // If we get this far, we have custom styles. Let's do this.
        ?>
        <style type="text/css">
        <?php
                // Has the text been hidden?
        // If we get this far, we have custom styles. Let's do this.
        ?>
        <style type="text/css">
        <?php
                // Has the text been hidden?
-               if ( 'blank' == get_header_textcolor() ) :
+               if ( 'blank' == $text_color ) :
        ?>
                #site-title,
                #site-description {
        ?>
                #site-title,
                #site-description {
@@ -225,7 +241,7 @@ function twentyeleven_header_style() {
        ?>
                #site-title a,
                #site-description {
        ?>
                #site-title a,
                #site-description {
-                       color: #<?php echo get_header_textcolor(); ?> !important;
+                       color: #<?php echo $text_color; ?> !important;
                }
        <?php endif; ?>
        </style>
                }
        <?php endif; ?>
        </style>
@@ -237,7 +253,7 @@ if ( ! function_exists( 'twentyeleven_admin_header_style' ) ) :
 /**
  * Styles the header image displayed on the Appearance > Header admin panel.
  *
 /**
  * Styles the header image displayed on the Appearance > Header admin panel.
  *
- * Referenced via add_custom_image_header() in twentyeleven_setup().
+ * Referenced via add_theme_support('custom-header') in twentyeleven_setup().
  *
  * @since Twenty Eleven 1.0
  */
  *
  * @since Twenty Eleven 1.0
  */
@@ -287,23 +303,24 @@ if ( ! function_exists( 'twentyeleven_admin_header_image' ) ) :
 /**
  * Custom header image markup displayed on the Appearance > Header admin panel.
  *
 /**
  * Custom header image markup displayed on the Appearance > Header admin panel.
  *
- * Referenced via add_custom_image_header() in twentyeleven_setup().
+ * Referenced via add_theme_support('custom-header') in twentyeleven_setup().
  *
  * @since Twenty Eleven 1.0
  */
 function twentyeleven_admin_header_image() { ?>
        <div id="headimg">
                <?php
  *
  * @since Twenty Eleven 1.0
  */
 function twentyeleven_admin_header_image() { ?>
        <div id="headimg">
                <?php
-               if ( 'blank' == get_theme_mod( 'header_textcolor', HEADER_TEXTCOLOR ) || '' == get_theme_mod( 'header_textcolor', HEADER_TEXTCOLOR ) )
-                       $style = ' style="display:none;"';
+               $color = get_header_textcolor();
+               $image = get_header_image();
+               if ( $color && $color != 'blank' )
+                       $style = ' style="color:#' . $color . '"';
                else
                else
-                       $style = ' style="color:#' . get_theme_mod( 'header_textcolor', HEADER_TEXTCOLOR ) . ';"';
+                       $style = ' style="display:none"';
                ?>
                <h1><a id="name"<?php echo $style; ?> onclick="return false;" href="<?php echo esc_url( home_url( '/' ) ); ?>"><?php bloginfo( 'name' ); ?></a></h1>
                <div id="desc"<?php echo $style; ?>><?php bloginfo( 'description' ); ?></div>
                ?>
                <h1><a id="name"<?php echo $style; ?> onclick="return false;" href="<?php echo esc_url( home_url( '/' ) ); ?>"><?php bloginfo( 'name' ); ?></a></h1>
                <div id="desc"<?php echo $style; ?>><?php bloginfo( 'description' ); ?></div>
-               <?php $header_image = get_header_image();
-               if ( ! empty( $header_image ) ) : ?>
-                       <img src="<?php echo esc_url( $header_image ); ?>" alt="" />
+               <?php if ( $image ) : ?>
+                       <img src="<?php echo esc_url( $image ); ?>" alt="" />
                <?php endif; ?>
        </div>
 <?php }
                <?php endif; ?>
        </div>
 <?php }
index b1be094ad40a7c4fa5e1ab8f1e2cc54a4ec1d040..59b6d3b1402d6cf722061b9b0980b74e08c98a3a 100644 (file)
                        <?php
                                // Check to see if the header image has been removed
                                $header_image = get_header_image();
                        <?php
                                // Check to see if the header image has been removed
                                $header_image = get_header_image();
-                               if ( ! empty( $header_image ) ) :
-                       ?>
+                               if ( $header_image ) :
+                                       // Compatibility with versions of WordPress prior to 3.4.
+                                       if ( function_exists( 'get_custom_header' ) ) {
+                                               // We need to figure out what the minimum width should be for our featured image.
+                                               // This result would be the suggested width if the theme were to implement flexible widths.
+                                               $header_image_width = get_theme_support( 'custom-header', 'width' );
+                                       } else {
+                                               $header_image_width = HEADER_IMAGE_WIDTH;
+                                       }
+                                       ?>
                        <a href="<?php echo esc_url( home_url( '/' ) ); ?>">
                                <?php
                                        // The header image
                                        // Check if this is a post or page, if it has a thumbnail, and if it's a big one
                        <a href="<?php echo esc_url( home_url( '/' ) ); ?>">
                                <?php
                                        // The header image
                                        // Check if this is a post or page, if it has a thumbnail, and if it's a big one
-                                       if ( is_singular() &&
-                                                       has_post_thumbnail( $post->ID ) &&
-                                                       ( /* $src, $width, $height */ $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), array( HEADER_IMAGE_WIDTH, HEADER_IMAGE_WIDTH ) ) ) &&
-                                                       $image[1] >= HEADER_IMAGE_WIDTH ) :
+                                       if ( is_singular() && has_post_thumbnail( $post->ID ) &&
+                                                       ( /* $src, $width, $height */ $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), array( $header_image_width, $header_image_width ) ) ) &&
+                                                       $image[1] >= $header_image_width ) :
                                                // Houston, we have a new header image!
                                                echo get_the_post_thumbnail( $post->ID, 'post-thumbnail' );
                                                // Houston, we have a new header image!
                                                echo get_the_post_thumbnail( $post->ID, 'post-thumbnail' );
-                                       else : ?>
-                                       <img src="<?php header_image(); ?>" width="<?php echo HEADER_IMAGE_WIDTH; ?>" height="<?php echo HEADER_IMAGE_HEIGHT; ?>" alt="" />
+                                       else :
+                                               // Compatibility with versions of WordPress prior to 3.4.
+                                               if ( function_exists( 'get_custom_header' ) ) {
+                                                       $header_image_width  = get_custom_header()->width;
+                                                       $header_image_height = get_custom_header()->height;
+                                               } else {
+                                                       $header_image_width  = HEADER_IMAGE_WIDTH;
+                                                       $header_image_height = HEADER_IMAGE_HEIGHT;
+                                               }
+                                               ?>
+                                       <img src="<?php header_image(); ?>" width="<?php echo $header_image_width; ?>" height="<?php echo $header_image_height; ?>" alt="" />
                                <?php endif; // end check for featured image or standard header ?>
                        </a>
                        <?php endif; // end check for removed header image ?>
                                <?php endif; // end check for featured image or standard header ?>
                        </a>
                        <?php endif; // end check for removed header image ?>
                                // Has the text been hidden?
                                if ( 'blank' == get_header_textcolor() ) :
                        ?>
                                // Has the text been hidden?
                                if ( 'blank' == get_header_textcolor() ) :
                        ?>
-                               <div class="only-search<?php if ( ! empty( $header_image ) ) : ?> with-image<?php endif; ?>">
+                               <div class="only-search<?php if ( $header_image ) : ?> with-image<?php endif; ?>">
                                <?php get_search_form(); ?>
                                </div>
                        <?php
                                <?php get_search_form(); ?>
                                </div>
                        <?php
 
                        <nav id="access" role="navigation">
                                <h3 class="assistive-text"><?php _e( 'Main menu', 'twentyeleven' ); ?></h3>
 
                        <nav id="access" role="navigation">
                                <h3 class="assistive-text"><?php _e( 'Main menu', 'twentyeleven' ); ?></h3>
-                               <?php /*  Allow screen readers / text browsers to skip the navigation menu and get right to the good stuff. */ ?>
+                               <?php /* Allow screen readers / text browsers to skip the navigation menu and get right to the good stuff. */ ?>
                                <div class="skip-link"><a class="assistive-text" href="#content" title="<?php esc_attr_e( 'Skip to primary content', 'twentyeleven' ); ?>"><?php _e( 'Skip to primary content', 'twentyeleven' ); ?></a></div>
                                <div class="skip-link"><a class="assistive-text" href="#secondary" title="<?php esc_attr_e( 'Skip to secondary content', 'twentyeleven' ); ?>"><?php _e( 'Skip to secondary content', 'twentyeleven' ); ?></a></div>
                                <div class="skip-link"><a class="assistive-text" href="#content" title="<?php esc_attr_e( 'Skip to primary content', 'twentyeleven' ); ?>"><?php _e( 'Skip to primary content', 'twentyeleven' ); ?></a></div>
                                <div class="skip-link"><a class="assistive-text" href="#secondary" title="<?php esc_attr_e( 'Skip to secondary content', 'twentyeleven' ); ?>"><?php _e( 'Skip to secondary content', 'twentyeleven' ); ?></a></div>
-                               <?php /* Our navigation menu.  If one isn't filled out, wp_nav_menu falls back to wp_page_menu. The menu assiged to the primary position is the one used. If none is assigned, the menu with the lowest ID is used. */ ?>
+                               <?php /* Our navigation menu. If one isn't filled out, wp_nav_menu falls back to wp_page_menu. The menu assigned to the primary location is the one used. If one isn't assigned, the menu with the lowest ID is used. */ ?>
                                <?php wp_nav_menu( array( 'theme_location' => 'primary' ) ); ?>
                        </nav><!-- #access -->
        </header><!-- #branding -->
 
 
                                <?php wp_nav_menu( array( 'theme_location' => 'primary' ) ); ?>
                        </nav><!-- #access -->
        </header><!-- #branding -->
 
 
-       <div id="main">
\ No newline at end of file
+       <div id="main">
diff --git a/wp-content/themes/twentyeleven/inc/theme-customizer.js b/wp-content/themes/twentyeleven/inc/theme-customizer.js
new file mode 100644 (file)
index 0000000..ca63fda
--- /dev/null
@@ -0,0 +1,12 @@
+( function( $ ){
+       wp.customize( 'blogname', function( value ) {
+               value.bind( function( to ) {
+                       $( '#site-title a' ).html( to );
+               } );
+       } );
+       wp.customize( 'blogdescription', function( value ) {
+               value.bind( function( to ) {
+                       $( '#site-description' ).html( to );
+               } );
+       } );
+} )( jQuery );
\ No newline at end of file
index f1d6c4b3d8c3f3a9206fdfdda397c2574bcff86a..698f2a0b5e51e15f91fa6b7c4eca216672fcac56 100644 (file)
@@ -31,16 +31,10 @@ add_action( 'admin_print_styles-appearance_page_theme_options', 'twentyeleven_ad
  * which is used when the option is saved, to ensure that our option values are complete, properly
  * formatted, and safe.
  *
  * which is used when the option is saved, to ensure that our option values are complete, properly
  * formatted, and safe.
  *
- * We also use this function to add our theme option if it doesn't already exist.
- *
  * @since Twenty Eleven 1.0
  */
 function twentyeleven_theme_options_init() {
 
  * @since Twenty Eleven 1.0
  */
 function twentyeleven_theme_options_init() {
 
-       // If we have no options in the database, let's add them now.
-       if ( false === twentyeleven_get_theme_options() )
-               add_option( 'twentyeleven_theme_options', twentyeleven_get_default_theme_options() );
-
        register_setting(
                'twentyeleven_options',       // Options group, see settings_fields() call in twentyeleven_theme_options_render_page()
                'twentyeleven_theme_options', // Database option, see twentyeleven_get_theme_options()
        register_setting(
                'twentyeleven_options',       // Options group, see settings_fields() call in twentyeleven_theme_options_render_page()
                'twentyeleven_theme_options', // Database option, see twentyeleven_get_theme_options()
@@ -314,7 +308,8 @@ function twentyeleven_theme_options_render_page() {
        ?>
        <div class="wrap">
                <?php screen_icon(); ?>
        ?>
        <div class="wrap">
                <?php screen_icon(); ?>
-               <h2><?php printf( __( '%s Theme Options', 'twentyeleven' ), get_current_theme() ); ?></h2>
+               <?php $theme_name = function_exists( 'wp_get_theme' ) ? wp_get_theme() : get_current_theme(); ?>
+               <h2><?php printf( __( '%s Theme Options', 'twentyeleven' ), $theme_name ); ?></h2>
                <?php settings_errors(); ?>
 
                <form method="post" action="options.php">
                <?php settings_errors(); ?>
 
                <form method="post" action="options.php">
@@ -446,4 +441,91 @@ function twentyeleven_layout_classes( $existing_classes ) {
 
        return array_merge( $existing_classes, $classes );
 }
 
        return array_merge( $existing_classes, $classes );
 }
-add_filter( 'body_class', 'twentyeleven_layout_classes' );
\ No newline at end of file
+add_filter( 'body_class', 'twentyeleven_layout_classes' );
+
+/**
+ * Implements Twenty Eleven theme options into Theme Customizer
+ *
+ * @param $wp_customize Theme Customizer object
+ * @return void
+ *
+ * @since Twenty Eleven 1.3
+ */
+function twentyeleven_customize_register( $wp_customize ) {
+       $wp_customize->get_setting( 'blogname' )->transport = 'postMessage';
+       $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage';
+
+       $options  = twentyeleven_get_theme_options();
+       $defaults = twentyeleven_get_default_theme_options();
+
+       $wp_customize->add_setting( 'twentyeleven_theme_options[color_scheme]', array(
+               'default'    => $defaults['color_scheme'],
+               'type'       => 'option',
+               'capability' => 'edit_theme_options',
+       ) );
+
+       $schemes = twentyeleven_color_schemes();
+       $choices = array();
+       foreach ( $schemes as $scheme ) {
+               $choices[ $scheme['value'] ] = $scheme['label'];
+       }
+
+       $wp_customize->add_control( 'twentyeleven_color_scheme', array(
+               'label'    => __( 'Color Scheme', 'twentyeleven' ),
+               'section'  => 'colors',
+               'settings' => 'twentyeleven_theme_options[color_scheme]',
+               'type'     => 'radio',
+               'choices'  => $choices,
+               'priority' => 5,
+       ) );
+
+       // Link Color (added to Color Scheme section in Theme Customizer)
+       $wp_customize->add_setting( 'twentyeleven_theme_options[link_color]', array(
+               'default'           => twentyeleven_get_default_link_color( $options['color_scheme'] ),
+               'type'              => 'option',
+               'sanitize_callback' => 'sanitize_hex_color',
+               'capability'        => 'edit_theme_options',
+       ) );
+
+       $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'link_color', array(
+               'label'    => __( 'Link Color', 'twentyeleven' ),
+               'section'  => 'colors',
+               'settings' => 'twentyeleven_theme_options[link_color]',
+       ) ) );
+
+       // Default Layout
+       $wp_customize->add_section( 'twentyeleven_layout', array(
+               'title'    => __( 'Layout', 'twentyeleven' ),
+               'priority' => 50,
+       ) );
+
+       $wp_customize->add_setting( 'twentyeleven_theme_options[theme_layout]', array(
+               'type'              => 'option',
+               'default'           => $defaults['theme_layout'],
+               'sanitize_callback' => 'sanitize_key',
+       ) );
+
+       $layouts = twentyeleven_layouts();
+       $choices = array();
+       foreach ( $layouts as $layout ) {
+               $choices[$layout['value']] = $layout['label'];
+       }
+
+       $wp_customize->add_control( 'twentyeleven_theme_options[theme_layout]', array(
+               'section'    => 'twentyeleven_layout',
+               'type'       => 'radio',
+               'choices'    => $choices,
+       ) );
+}
+add_action( 'customize_register', 'twentyeleven_customize_register' );
+
+/**
+ * Bind JS handlers to make Theme Customizer preview reload changes asynchronously.
+ * Used with blogname and blogdescription.
+ *
+ * @since Twenty Eleven 1.3
+ */
+function twentyeleven_customize_preview_js() {
+       wp_enqueue_script( 'twentyeleven-customizer', get_template_directory_uri() . '/inc/theme-customizer.js', array( 'customize-preview' ), '20120523', true );
+}
+add_action( 'customize_preview_init', 'twentyeleven_customize_preview_js' );
\ No newline at end of file
index a19b4fbf3ee634a4955970f5b71f5fda017f6cbd..46e3e16b590ef69a3ac96f01f4e6303f75887e93 100644 (file)
@@ -1,10 +1,10 @@
 # Copyright (C) 2012 the WordPress team
 # Copyright (C) 2012 the WordPress team
-# This file is distributed under the GNU General Public License.
+# This file is distributed under the GNU General Public License v2 or later.
 msgid ""
 msgstr ""
 msgid ""
 msgstr ""
-"Project-Id-Version: Twenty Eleven 1.3\n"
+"Project-Id-Version: Twenty Eleven 1.4\n"
 "Report-Msgid-Bugs-To: http://wordpress.org/tags/twentyeleven\n"
 "Report-Msgid-Bugs-To: http://wordpress.org/tags/twentyeleven\n"
-"POT-Creation-Date: 2012-02-10 16:30:53+00:00\n"
+"POT-Creation-Date: 2012-06-10 15:18:15+00:00\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -110,7 +110,7 @@ msgstr ""
 #: content-aside.php:16 content-featured.php:14 content-gallery.php:16
 #: content-gallery.php:48 content-image.php:15 content-link.php:16
 #: content-quote.php:14 content-status.php:15 content.php:15 content.php:19
 #: content-aside.php:16 content-featured.php:14 content-gallery.php:16
 #: content-gallery.php:48 content-image.php:15 content-link.php:16
 #: content-quote.php:14 content-status.php:15 content.php:15 content.php:19
-#: inc/widgets.php:89 showcase.php:115 showcase.php:194
+#: inc/widgets.php:89 showcase.php:120 showcase.php:199
 msgid "Permalink to %s"
 msgstr ""
 
 msgid "Permalink to %s"
 msgstr ""
 
@@ -137,7 +137,7 @@ msgstr ""
 
 #: content-aside.php:33 content-gallery.php:32 content-image.php:27
 #: content-link.php:33 content-quote.php:35 content-status.php:34
 
 #: content-aside.php:33 content-gallery.php:32 content-image.php:27
 #: content-link.php:33 content-quote.php:35 content-status.php:34
-#: content.php:41 functions.php:327
+#: content.php:41 functions.php:344
 msgid "Continue reading <span class=\"meta-nav\">&rarr;</span>"
 msgstr ""
 
 msgid "Continue reading <span class=\"meta-nav\">&rarr;</span>"
 msgstr ""
 
@@ -150,26 +150,26 @@ msgstr ""
 
 #: content-aside.php:42 content-gallery.php:87 content-image.php:64
 #: content-link.php:42 content-quote.php:69 content-status.php:43
 
 #: content-aside.php:42 content-gallery.php:87 content-image.php:64
 #: content-link.php:42 content-quote.php:69 content-status.php:43
-#: content.php:77 showcase.php:196
+#: content.php:77 showcase.php:201
 msgid "Leave a reply"
 msgstr ""
 
 #: content-aside.php:42 content-gallery.php:87 content-image.php:64
 #: content-link.php:42 content-quote.php:69 content-status.php:43
 msgid "Leave a reply"
 msgstr ""
 
 #: content-aside.php:42 content-gallery.php:87 content-image.php:64
 #: content-link.php:42 content-quote.php:69 content-status.php:43
-#: content.php:77 showcase.php:196
+#: content.php:77 showcase.php:201
 msgid "<b>1</b> Reply"
 msgstr ""
 
 #: content-aside.php:42 content-gallery.php:87 content-image.php:64
 #: content-link.php:42 content-quote.php:69 content-status.php:43
 msgid "<b>1</b> Reply"
 msgstr ""
 
 #: content-aside.php:42 content-gallery.php:87 content-image.php:64
 #: content-link.php:42 content-quote.php:69 content-status.php:43
-#: content.php:77 showcase.php:196
+#: content.php:77 showcase.php:201
 msgid "<b>%</b> Replies"
 msgstr ""
 
 #: content-aside.php:44 content-featured.php:45 content-gallery.php:90
 #: content-image.php:68 content-intro.php:19 content-link.php:44
 #: content-page.php:21 content-quote.php:72 content-single.php:52
 msgid "<b>%</b> Replies"
 msgstr ""
 
 #: content-aside.php:44 content-featured.php:45 content-gallery.php:90
 #: content-image.php:68 content-intro.php:19 content-link.php:44
 #: content-page.php:21 content-quote.php:72 content-single.php:52
-#: content-status.php:45 content.php:80 functions.php:505 functions.php:533
+#: content-status.php:45 content.php:80 functions.php:522 functions.php:550
 #: image.php:41
 msgid "Edit"
 msgstr ""
 #: image.php:41
 msgid "Edit"
 msgstr ""
@@ -226,7 +226,7 @@ msgid ""
 "title=\"%5$s\" rel=\"author\">%6$s</a></span></span>"
 msgstr ""
 
 "title=\"%5$s\" rel=\"author\">%6$s</a></span></span>"
 msgstr ""
 
-#: content-image.php:39 functions.php:570
+#: content-image.php:39 functions.php:587
 msgid "View all posts by %s"
 msgstr ""
 
 msgid "View all posts by %s"
 msgstr ""
 
@@ -269,7 +269,7 @@ msgstr ""
 msgid "Featured"
 msgstr ""
 
 msgid "Featured"
 msgstr ""
 
-#. #-#-#-#-#  twentyeleven.pot (Twenty Eleven 1.3)  #-#-#-#-#
+#. #-#-#-#-#  twentyeleven.pot (Twenty Eleven 1.4)  #-#-#-#-#
 #. Author URI of the plugin/theme
 #: footer.php:27
 msgid "http://wordpress.org/"
 #. Author URI of the plugin/theme
 #: footer.php:27
 msgid "http://wordpress.org/"
@@ -283,113 +283,113 @@ msgstr ""
 msgid "Proudly powered by %s"
 msgstr ""
 
 msgid "Proudly powered by %s"
 msgstr ""
 
-#: functions.php:101
+#: functions.php:95
 msgid "Primary Menu"
 msgstr ""
 
 #. translators: header image description
 msgid "Primary Menu"
 msgstr ""
 
 #. translators: header image description
-#: functions.php:149
+#: functions.php:164
 msgid "Wheel"
 msgstr ""
 
 #. translators: header image description
 msgid "Wheel"
 msgstr ""
 
 #. translators: header image description
-#: functions.php:155
+#: functions.php:170
 msgid "Shore"
 msgstr ""
 
 #. translators: header image description
 msgid "Shore"
 msgstr ""
 
 #. translators: header image description
-#: functions.php:161
+#: functions.php:176
 msgid "Trolley"
 msgstr ""
 
 #. translators: header image description
 msgid "Trolley"
 msgstr ""
 
 #. translators: header image description
-#: functions.php:167
+#: functions.php:182
 msgid "Pine Cone"
 msgstr ""
 
 #. translators: header image description
 msgid "Pine Cone"
 msgstr ""
 
 #. translators: header image description
-#: functions.php:173
+#: functions.php:188
 msgid "Chessboard"
 msgstr ""
 
 #. translators: header image description
 msgid "Chessboard"
 msgstr ""
 
 #. translators: header image description
-#: functions.php:179
+#: functions.php:194
 msgid "Lanterns"
 msgstr ""
 
 #. translators: header image description
 msgid "Lanterns"
 msgstr ""
 
 #. translators: header image description
-#: functions.php:185
+#: functions.php:200
 msgid "Willow"
 msgstr ""
 
 #. translators: header image description
 msgid "Willow"
 msgstr ""
 
 #. translators: header image description
-#: functions.php:191
+#: functions.php:206
 msgid "Hanoi Plant"
 msgstr ""
 
 msgid "Hanoi Plant"
 msgstr ""
 
-#: functions.php:374
+#: functions.php:391
 msgid "Main Sidebar"
 msgstr ""
 
 msgid "Main Sidebar"
 msgstr ""
 
-#: functions.php:383
+#: functions.php:400
 msgid "Showcase Sidebar"
 msgstr ""
 
 msgid "Showcase Sidebar"
 msgstr ""
 
-#: functions.php:385
+#: functions.php:402
 msgid "The sidebar for the optional Showcase Template"
 msgstr ""
 
 msgid "The sidebar for the optional Showcase Template"
 msgstr ""
 
-#: functions.php:393
+#: functions.php:410
 msgid "Footer Area One"
 msgstr ""
 
 msgid "Footer Area One"
 msgstr ""
 
-#: functions.php:395 functions.php:405 functions.php:415
+#: functions.php:412 functions.php:422 functions.php:432
 msgid "An optional widget area for your site footer"
 msgstr ""
 
 msgid "An optional widget area for your site footer"
 msgstr ""
 
-#: functions.php:403
+#: functions.php:420
 msgid "Footer Area Two"
 msgstr ""
 
 msgid "Footer Area Two"
 msgstr ""
 
-#: functions.php:413
+#: functions.php:430
 msgid "Footer Area Three"
 msgstr ""
 
 msgid "Footer Area Three"
 msgstr ""
 
-#: functions.php:433 single.php:18
+#: functions.php:450 single.php:18
 msgid "Post navigation"
 msgstr ""
 
 msgid "Post navigation"
 msgstr ""
 
-#: functions.php:434
+#: functions.php:451
 msgid "<span class=\"meta-nav\">&larr;</span> Older posts"
 msgstr ""
 
 msgid "<span class=\"meta-nav\">&larr;</span> Older posts"
 msgstr ""
 
-#: functions.php:435
+#: functions.php:452
 msgid "Newer posts <span class=\"meta-nav\">&rarr;</span>"
 msgstr ""
 
 msgid "Newer posts <span class=\"meta-nav\">&rarr;</span>"
 msgstr ""
 
-#: functions.php:505
+#: functions.php:522
 msgid "Pingback:"
 msgstr ""
 
 #. translators: 1: comment author, 2: date and time
 msgid "Pingback:"
 msgstr ""
 
 #. translators: 1: comment author, 2: date and time
-#: functions.php:522
+#: functions.php:539
 msgid "%1$s on %2$s <span class=\"says\">said:</span>"
 msgstr ""
 
 #. translators: 1: date, 2: time
 msgid "%1$s on %2$s <span class=\"says\">said:</span>"
 msgstr ""
 
 #. translators: 1: date, 2: time
-#: functions.php:528
+#: functions.php:545
 msgid "%1$s at %2$s"
 msgstr ""
 
 msgid "%1$s at %2$s"
 msgstr ""
 
-#: functions.php:537
+#: functions.php:554
 msgid "Your comment is awaiting moderation."
 msgstr ""
 
 msgid "Your comment is awaiting moderation."
 msgstr ""
 
-#: functions.php:546
+#: functions.php:563
 msgid "Reply <span>&darr;</span>"
 msgstr ""
 
 msgid "Reply <span>&darr;</span>"
 msgstr ""
 
-#: functions.php:564
+#: functions.php:581
 msgid ""
 "<span class=\"sep\">Posted on </span><a href=\"%1$s\" title=\"%2$s\" rel="
 "\"bookmark\"><time class=\"entry-date\" datetime=\"%3$s\" pubdate>%4$s</"
 msgid ""
 "<span class=\"sep\">Posted on </span><a href=\"%1$s\" title=\"%2$s\" rel="
 "\"bookmark\"><time class=\"entry-date\" datetime=\"%3$s\" pubdate>%4$s</"
@@ -402,15 +402,15 @@ msgstr ""
 msgid "Page %s"
 msgstr ""
 
 msgid "Page %s"
 msgstr ""
 
-#: header.php:113
+#: header.php:129
 msgid "Main menu"
 msgstr ""
 
 msgid "Main menu"
 msgstr ""
 
-#: header.php:115
+#: header.php:131
 msgid "Skip to primary content"
 msgstr ""
 
 msgid "Skip to primary content"
 msgstr ""
 
-#: header.php:116
+#: header.php:132
 msgid "Skip to secondary content"
 msgstr ""
 
 msgid "Skip to secondary content"
 msgstr ""
 
@@ -434,23 +434,23 @@ msgid ""
 "in <a href=\"%6$s\" title=\"Return to %7$s\" rel=\"gallery\">%8$s</a>"
 msgstr ""
 
 "in <a href=\"%6$s\" title=\"Return to %7$s\" rel=\"gallery\">%8$s</a>"
 msgstr ""
 
-#: inc/theme-options.php:61
+#: inc/theme-options.php:55 inc/theme-options.php:474
 msgid "Color Scheme"
 msgstr ""
 
 msgid "Color Scheme"
 msgstr ""
 
-#: inc/theme-options.php:67
+#: inc/theme-options.php:61 inc/theme-options.php:491
 msgid "Link Color"
 msgstr ""
 
 msgid "Link Color"
 msgstr ""
 
-#: inc/theme-options.php:68
+#: inc/theme-options.php:62
 msgid "Default Layout"
 msgstr ""
 
 msgid "Default Layout"
 msgstr ""
 
-#: inc/theme-options.php:100 inc/theme-options.php:101
+#: inc/theme-options.php:94 inc/theme-options.php:95
 msgid "Theme Options"
 msgstr ""
 
 msgid "Theme Options"
 msgstr ""
 
-#: inc/theme-options.php:116
+#: inc/theme-options.php:110
 msgid ""
 "Some themes provide customization options that are grouped together on a "
 "Theme Options screen. If you change themes, options may change or disappear, "
 msgid ""
 "Some themes provide customization options that are grouped together on a "
 "Theme Options screen. If you change themes, options may change or disappear, "
@@ -458,14 +458,14 @@ msgid ""
 "following Theme Options:"
 msgstr ""
 
 "following Theme Options:"
 msgstr ""
 
-#: inc/theme-options.php:118
+#: inc/theme-options.php:112
 msgid ""
 "<strong>Color Scheme</strong>: You can choose a color palette of \"Light"
 "\" (light background with dark text) or \"Dark\" (dark background with light "
 "text) for your site."
 msgstr ""
 
 msgid ""
 "<strong>Color Scheme</strong>: You can choose a color palette of \"Light"
 "\" (light background with dark text) or \"Dark\" (dark background with light "
 "text) for your site."
 msgstr ""
 
-#: inc/theme-options.php:119
+#: inc/theme-options.php:113
 msgid ""
 "<strong>Link Color</strong>: You can choose the color used for text links on "
 "your site. You can enter the HTML color or hex code, or you can choose "
 msgid ""
 "<strong>Link Color</strong>: You can choose the color used for text links on "
 "your site. You can enter the HTML color or hex code, or you can choose "
@@ -473,70 +473,74 @@ msgid ""
 "wheel."
 msgstr ""
 
 "wheel."
 msgstr ""
 
-#: inc/theme-options.php:120
+#: inc/theme-options.php:114
 msgid ""
 "<strong>Default Layout</strong>: You can choose if you want your site&#8217;"
 "s default layout to have a sidebar on the left, the right, or not at all."
 msgstr ""
 
 msgid ""
 "<strong>Default Layout</strong>: You can choose if you want your site&#8217;"
 "s default layout to have a sidebar on the left, the right, or not at all."
 msgstr ""
 
-#: inc/theme-options.php:122
+#: inc/theme-options.php:116
 msgid ""
 "Remember to click \"Save Changes\" to save any changes you have made to the "
 "theme options."
 msgstr ""
 
 msgid ""
 "Remember to click \"Save Changes\" to save any changes you have made to the "
 "theme options."
 msgstr ""
 
-#: inc/theme-options.php:124
+#: inc/theme-options.php:118
 msgid "For more information:"
 msgstr ""
 
 msgid "For more information:"
 msgstr ""
 
-#: inc/theme-options.php:125
+#: inc/theme-options.php:119
 msgid ""
 "<a href=\"http://codex.wordpress.org/Appearance_Theme_Options_Screen\" "
 "target=\"_blank\">Documentation on Theme Options</a>"
 msgstr ""
 
 msgid ""
 "<a href=\"http://codex.wordpress.org/Appearance_Theme_Options_Screen\" "
 "target=\"_blank\">Documentation on Theme Options</a>"
 msgstr ""
 
-#: inc/theme-options.php:126
+#: inc/theme-options.php:120
 msgid ""
 "<a href=\"http://wordpress.org/support/\" target=\"_blank\">Support Forums</"
 "a>"
 msgstr ""
 
 msgid ""
 "<a href=\"http://wordpress.org/support/\" target=\"_blank\">Support Forums</"
 "a>"
 msgstr ""
 
-#: inc/theme-options.php:133
+#: inc/theme-options.php:127
 msgid "Overview"
 msgstr ""
 
 msgid "Overview"
 msgstr ""
 
-#: inc/theme-options.php:155
+#: inc/theme-options.php:149
 msgid "Light"
 msgstr ""
 
 msgid "Light"
 msgstr ""
 
-#: inc/theme-options.php:161
+#: inc/theme-options.php:155
 msgid "Dark"
 msgstr ""
 
 msgid "Dark"
 msgstr ""
 
-#: inc/theme-options.php:179
+#: inc/theme-options.php:173
 msgid "Content on left"
 msgstr ""
 
 msgid "Content on left"
 msgstr ""
 
-#: inc/theme-options.php:184
+#: inc/theme-options.php:178
 msgid "Content on right"
 msgstr ""
 
 msgid "Content on right"
 msgstr ""
 
-#: inc/theme-options.php:189
+#: inc/theme-options.php:183
 msgid "One-column, no sidebar"
 msgstr ""
 
 msgid "One-column, no sidebar"
 msgstr ""
 
-#: inc/theme-options.php:279
+#: inc/theme-options.php:273
 msgid "Select a Color"
 msgstr ""
 
 msgid "Select a Color"
 msgstr ""
 
-#: inc/theme-options.php:282
+#: inc/theme-options.php:276
 msgid "Default color: %s"
 msgstr ""
 
 msgid "Default color: %s"
 msgstr ""
 
-#: inc/theme-options.php:317
+#: inc/theme-options.php:312
 msgid "%s Theme Options"
 msgstr ""
 
 msgid "%s Theme Options"
 msgstr ""
 
+#: inc/theme-options.php:498
+msgid "Layout"
+msgstr ""
+
 #: inc/widgets.php:19
 msgid ""
 "Use this widget to list your recent Aside, Status, Quote, and Link posts"
 #: inc/widgets.php:19
 msgid ""
 "Use this widget to list your recent Aside, Status, Quote, and Link posts"
@@ -588,15 +592,15 @@ msgstr ""
 msgid "Search"
 msgstr ""
 
 msgid "Search"
 msgstr ""
 
-#: showcase.php:72
+#: showcase.php:77
 msgid "Featured Post"
 msgstr ""
 
 msgid "Featured Post"
 msgstr ""
 
-#: showcase.php:145
+#: showcase.php:150
 msgid "Featuring: %s"
 msgstr ""
 
 msgid "Featuring: %s"
 msgstr ""
 
-#: showcase.php:155
+#: showcase.php:160
 msgid "Recent Posts"
 msgstr ""
 
 msgid "Recent Posts"
 msgstr ""
 
@@ -655,3 +659,11 @@ msgid ""
 "featured-images, full-width-template, microformats, post-formats, rtl-"
 "language-support, sticky-post, theme-options, translation-ready"
 msgstr ""
 "featured-images, full-width-template, microformats, post-formats, rtl-"
 "language-support, sticky-post, theme-options, translation-ready"
 msgstr ""
+
+#. Template Name of the plugin/theme
+msgid "Showcase Template"
+msgstr ""
+
+#. Template Name of the plugin/theme
+msgid "Sidebar Template"
+msgstr ""
index 4f69099240352c36ae14183e424dfe00ef2b3461..f5d2a3eeb0a276621a942ddd635fc17eaca61c5a 100644 (file)
@@ -66,7 +66,12 @@ get_header(); ?>
                                         */
                                        $counter_slider = 0;
 
                                         */
                                        $counter_slider = 0;
 
-                                       ?>
+                                       // Compatibility with versions of WordPress prior to 3.4.
+                                       if ( function_exists( 'get_custom_header' ) )
+                                               $header_image_width = get_theme_support( 'custom-header', 'width' );
+                                       else
+                                               $header_image_width = HEADER_IMAGE_WIDTH;
+                               ?>
 
                                <div class="featured-posts">
                                        <h1 class="showcase-heading"><?php _e( 'Featured Post', 'twentyeleven' ); ?></h1>
 
                                <div class="featured-posts">
                                        <h1 class="showcase-heading"><?php _e( 'Featured Post', 'twentyeleven' ); ?></h1>
@@ -89,10 +94,10 @@ get_header(); ?>
                                                $feature_class = 'feature-image small';
 
                                                // Hang on. Let's check this here image out.
                                                $feature_class = 'feature-image small';
 
                                                // Hang on. Let's check this here image out.
-                                               $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), array( HEADER_IMAGE_WIDTH, HEADER_IMAGE_WIDTH ) );
+                                               $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), array( $header_image_width, $header_image_width ) );
 
                                                // Is it bigger than or equal to our header?
 
                                                // Is it bigger than or equal to our header?
-                                               if ( $image[1] >= HEADER_IMAGE_WIDTH ) {
+                                               if ( $image[1] >= $header_image_width ) {
                                                        // If bigger, let's add a BIGGER class. It's EXTRA classy now.
                                                        $feature_class = 'feature-image large';
                                                }
                                                        // If bigger, let's add a BIGGER class. It's EXTRA classy now.
                                                        $feature_class = 'feature-image large';
                                                }
@@ -107,7 +112,7 @@ get_header(); ?>
                                                         * make it a large featured post, otherwise render it small
                                                         */
                                                        if ( has_post_thumbnail() ) {
                                                         * make it a large featured post, otherwise render it small
                                                         */
                                                        if ( has_post_thumbnail() ) {
-                                                               if ( $image[1] >= HEADER_IMAGE_WIDTH )
+                                                               if ( $image[1] >= $header_image_width )
                                                                        $thumbnail_size = 'large-feature';
                                                                else
                                                                        $thumbnail_size = 'small-feature';
                                                                        $thumbnail_size = 'large-feature';
                                                                else
                                                                        $thumbnail_size = 'small-feature';
index 40979239a80b88189c8c1e5ec2c251320146d51b..aec75804fb74e4f742efa03fc126b6028bff66e2 100644 (file)
@@ -4,10 +4,11 @@ Theme URI: http://wordpress.org/extend/themes/twentyeleven
 Author: the WordPress team
 Author URI: http://wordpress.org/
 Description: The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a custom menu, header image, and background -- then go further with available theme options for light or dark color scheme, custom link colors, and three layout choices. Twenty Eleven comes equipped with a Showcase page template that transforms your front page into a showcase to show off your best content, widget support galore (sidebar, three footer areas, and a Showcase page widget area), and a custom "Ephemera" widget to display your Aside, Link, Quote, or Status posts. Included are styles for print and for the admin editor, support for featured images (as custom header images on posts and pages and as large images on featured "sticky" posts), and special styles for six different post formats.
 Author: the WordPress team
 Author URI: http://wordpress.org/
 Description: The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a custom menu, header image, and background -- then go further with available theme options for light or dark color scheme, custom link colors, and three layout choices. Twenty Eleven comes equipped with a Showcase page template that transforms your front page into a showcase to show off your best content, widget support galore (sidebar, three footer areas, and a Showcase page widget area), and a custom "Ephemera" widget to display your Aside, Link, Quote, or Status posts. Included are styles for print and for the admin editor, support for featured images (as custom header images on posts and pages and as large images on featured "sticky" posts), and special styles for six different post formats.
-Version: 1.3
-License: GNU General Public License
-License URI: license.txt
+Version: 1.4
+License: GNU General Public License v2 or later
+License URI: http://www.gnu.org/licenses/gpl-2.0.html
 Tags: dark, light, white, black, gray, one-column, two-columns, left-sidebar, right-sidebar, fixed-width, flexible-width, custom-background, custom-colors, custom-header, custom-menu, editor-style, featured-image-header, featured-images, full-width-template, microformats, post-formats, rtl-language-support, sticky-post, theme-options, translation-ready
 Tags: dark, light, white, black, gray, one-column, two-columns, left-sidebar, right-sidebar, fixed-width, flexible-width, custom-background, custom-colors, custom-header, custom-menu, editor-style, featured-image-header, featured-images, full-width-template, microformats, post-formats, rtl-language-support, sticky-post, theme-options, translation-ready
+Text Domain: twentyeleven
 */
 
 /* =Reset default browser CSS. Based on work by Eric Meyer: http://meyerweb.com/eric/tools/css/reset/index.html
 */
 
 /* =Reset default browser CSS. Based on work by Eric Meyer: http://meyerweb.com/eric/tools/css/reset/index.html
@@ -401,7 +402,7 @@ pre {
        overflow: auto;
        padding: 0.75em 1.625em;
 }
        overflow: auto;
        padding: 0.75em 1.625em;
 }
-code, kbd {
+code, kbd, samp, var {
        font: 13px Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace;
 }
 abbr, acronym, dfn {
        font: 13px Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace;
 }
 abbr, acronym, dfn {
@@ -1118,7 +1119,6 @@ blockquote.pull {
 .pull.alignleft {
        margin: 0 1.625em 0 0;
        text-align: right;
 .pull.alignleft {
        margin: 0 1.625em 0 0;
        text-align: right;
-       width: 33%;
 }
 .singular .pull.alignleft {
        margin: 0 1.625em 0 -22.25%;
 }
 .singular .pull.alignleft {
        margin: 0 1.625em 0 -22.25%;
@@ -1126,6 +1126,9 @@ blockquote.pull {
 .pull.alignright {
        margin: 0 0 0 1.625em;
        text-align: left;
 .pull.alignright {
        margin: 0 0 0 1.625em;
        text-align: left;
+}
+blockquote.pull.alignleft,
+blockquote.pull.alignright {
        width: 33%;
 }
 .singular .pull.alignright {
        width: 33%;
 }
 .singular .pull.alignright {
@@ -1237,15 +1240,24 @@ blockquote.pull {
 .indexed.format-image .entry-content {
        padding-top: 0.5em;
 }
 .indexed.format-image .entry-content {
        padding-top: 0.5em;
 }
-.indexed.format-image p,
-.indexed.format-image p img {
-       margin-bottom: 0;
+.indexed.format-image .entry-content p {
+       margin: 1em 0;
+}
+.indexed.format-image .entry-content p:first-child,
+.indexed.format-image .entry-content p:first-child a,
+.indexed.format-image .entry-content p:first-child img {
+       display: block;
+       margin: 0;
+}
+.indexed.format-image .entry-content .wp-caption .wp-caption-text {
+       margin: 0;
+       padding-bottom: 1em;
 }
 .indexed.format-image footer.entry-meta {
        background: #ddd;
 }
 .indexed.format-image footer.entry-meta {
        background: #ddd;
-       margin-top: -7px;
-       padding: 20px 30px;
        overflow: hidden;
        overflow: hidden;
+       padding: 4%;
+       max-width: 96%;
 }
 .indexed.format-image div.entry-meta {
        display: inline-block;
 }
 .indexed.format-image div.entry-meta {
        display: inline-block;
@@ -1276,7 +1288,7 @@ blockquote.pull {
        background: #111;
        margin-bottom: 0;
        max-width: 96%;
        background: #111;
        margin-bottom: 0;
        max-width: 96%;
-       padding: 11px;
+       padding: 2% 2% 0;
 }
 .indexed.format-image .wp-caption .wp-caption-text {
        color: #ddd;
 }
 .indexed.format-image .wp-caption .wp-caption-text {
        color: #ddd;
@@ -1722,12 +1734,14 @@ section.recent-posts .other-recent-posts li:after {
 }
 #nav-single .nav-previous,
 #nav-single .nav-next {
 }
 #nav-single .nav-previous,
 #nav-single .nav-next {
-       float: none;
        width: auto;
 }
 #nav-single .nav-next {
        padding-left: .5em;
 }
        width: auto;
 }
 #nav-single .nav-next {
        padding-left: .5em;
 }
+#nav-single .nav-previous {
+       padding-right: .5em;
+}
 
 
 /* =Widgets
 
 
 /* =Widgets
@@ -1838,6 +1852,8 @@ section.ephemera .entry-title a span {
 
 /* Widget Image */
 .widget_image img {
 
 /* Widget Image */
 .widget_image img {
+       border: 0;
+       padding: 0;
        height: auto;
        max-width: 100%;
 }
        height: auto;
        max-width: 100%;
 }
@@ -2237,15 +2253,6 @@ p.comment-form-comment {
        color: #555;
        font-weight: bold;
 }
        color: #555;
        font-weight: bold;
 }
-#site-generator .sep {
-       background: url(images/wordpress.png) center left no-repeat;
-       color: transparent;
-       display: inline-block;
-       height: 16px;
-       line-height: 16px;
-       margin: 0 7px;
-       width: 16px;
-}
 
 
 /* =Responsive Structure
 
 
 /* =Responsive Structure
@@ -2414,6 +2421,7 @@ p.comment-form-comment {
        /* Floated content doesn't work well at this size */
        .alignleft,
        .alignright {
        /* Floated content doesn't work well at this size */
        .alignleft,
        .alignright {
+               display: block;
                float: none;
                margin-left: 0;
                margin-right: 0;
                float: none;
                margin-left: 0;
                margin-right: 0;
@@ -2677,3 +2685,10 @@ p.comment-form-comment {
 #ie7 section.recent-posts {
        margin-right: 7.6%;
 }
 #ie7 section.recent-posts {
        margin-right: 7.6%;
 }
+
+/* =IE8 
+----------------------------------------------- */ 
+#ie8 section.feature-image.large img { 
+       width: 100%; 
+} 
\ No newline at end of file
index 7863ca106631609dfecad341bc903182f076b289..eece437d69e02f48cd2aaa7bc54d1503a2efff02 100644 (file)
@@ -3,7 +3,7 @@
  * The template for displaying Comments.
  *
  * The area of the page that contains both current comments
  * The template for displaying Comments.
  *
  * The area of the page that contains both current comments
- * and the comment form.  The actual display of comments is
+ * and the comment form. The actual display of comments is
  * handled by a callback to twentyten_comment which is
  * located in the functions.php file.
  *
  * handled by a callback to twentyten_comment which is
  * located in the functions.php file.
  *
index 6d0d1ab58853da9f7b585f694621b390bdf2ea1e..337cc9123dfd4bd85827d0af9e0e1b74e0e01d26 100644 (file)
@@ -3,7 +3,7 @@
  * The template for displaying the footer.
  *
  * Contains the closing of the id=main div and all content
  * The template for displaying the footer.
  *
  * Contains the closing of the id=main div and all content
- * after.  Calls sidebar-footer.php for bottom widgets.
+ * after. Calls sidebar-footer.php for bottom widgets.
  *
  * @package WordPress
  * @subpackage Twenty_Ten
  *
  * @package WordPress
  * @subpackage Twenty_Ten
index 5fd5d3ef39732b5ea258194cf6522d7b94a86935..696ff15d87901ddfe9bf16d1ed8b1902a811f6c0 100644 (file)
@@ -61,12 +61,10 @@ if ( ! function_exists( 'twentyten_setup' ) ):
  * To override twentyten_setup() in a child theme, add your own twentyten_setup to your child theme's
  * functions.php file.
  *
  * To override twentyten_setup() in a child theme, add your own twentyten_setup to your child theme's
  * functions.php file.
  *
- * @uses add_theme_support() To add support for post thumbnails and automatic feed links.
+ * @uses add_theme_support() To add support for post thumbnails, custom headers and backgrounds, and automatic feed links.
  * @uses register_nav_menus() To add support for navigation menus.
  * @uses register_nav_menus() To add support for navigation menus.
- * @uses add_custom_background() To add support for a custom background.
  * @uses add_editor_style() To style the visual editor.
  * @uses load_theme_textdomain() For translation/localization support.
  * @uses add_editor_style() To style the visual editor.
  * @uses load_theme_textdomain() For translation/localization support.
- * @uses add_custom_image_header() To add support for a custom header.
  * @uses register_default_headers() To register the default custom header images provided with the theme.
  * @uses set_post_thumbnail_size() To set a custom post thumbnail size.
  *
  * @uses register_default_headers() To register the default custom header images provided with the theme.
  * @uses set_post_thumbnail_size() To set a custom post thumbnail size.
  *
@@ -90,46 +88,53 @@ function twentyten_setup() {
        // Translations can be filed in the /languages/ directory
        load_theme_textdomain( 'twentyten', get_template_directory() . '/languages' );
 
        // Translations can be filed in the /languages/ directory
        load_theme_textdomain( 'twentyten', get_template_directory() . '/languages' );
 
-       $locale = get_locale();
-       $locale_file = get_template_directory() . "/languages/$locale.php";
-       if ( is_readable( $locale_file ) )
-               require_once( $locale_file );
-
        // This theme uses wp_nav_menu() in one location.
        register_nav_menus( array(
                'primary' => __( 'Primary Navigation', 'twentyten' ),
        ) );
 
        // This theme uses wp_nav_menu() in one location.
        register_nav_menus( array(
                'primary' => __( 'Primary Navigation', 'twentyten' ),
        ) );
 
-       // This theme allows users to set a custom background
-       add_custom_background();
+       // This theme allows users to set a custom background.
+       add_theme_support( 'custom-background', array(
+               // Let WordPress know what our default background color is.
+               'default-color' => 'f1f1f1',
+       ) );
 
 
-       // Your changeable header business starts here
-       if ( ! defined( 'HEADER_TEXTCOLOR' ) )
+       // The custom header business starts here.
+
+       $custom_header_support = array(
+               // The default image to use.
+               // The %s is a placeholder for the theme template directory URI.
+               'default-image' => '%s/images/headers/path.jpg',
+               // The height and width of our custom header.
+               'width' => apply_filters( 'twentyten_header_image_width', 940 ),
+               'height' => apply_filters( 'twentyten_header_image_height', 198 ),
+               // Support flexible heights.
+               'flex-height' => true,
+               // Don't support text inside the header image.
+               'header-text' => false,
+               // Callback for styling the header preview in the admin.
+               'admin-head-callback' => 'twentyten_admin_header_style',
+       );
+       
+       add_theme_support( 'custom-header', $custom_header_support );
+       
+       if ( ! function_exists( 'get_custom_header' ) ) {
+               // This is all for compatibility with versions of WordPress prior to 3.4.
                define( 'HEADER_TEXTCOLOR', '' );
                define( 'HEADER_TEXTCOLOR', '' );
-
-       // No CSS, just IMG call. The %s is a placeholder for the theme template directory URI.
-       if ( ! defined( 'HEADER_IMAGE' ) )
-               define( 'HEADER_IMAGE', '%s/images/headers/path.jpg' );
-
-       // The height and width of your custom header. You can hook into the theme's own filters to change these values.
-       // Add a filter to twentyten_header_image_width and twentyten_header_image_height to change these values.
-       define( 'HEADER_IMAGE_WIDTH', apply_filters( 'twentyten_header_image_width', 940 ) );
-       define( 'HEADER_IMAGE_HEIGHT', apply_filters( 'twentyten_header_image_height', 198 ) );
+               define( 'NO_HEADER_TEXT', true );
+               define( 'HEADER_IMAGE', $custom_header_support['default-image'] );
+               define( 'HEADER_IMAGE_WIDTH', $custom_header_support['width'] );
+               define( 'HEADER_IMAGE_HEIGHT', $custom_header_support['height'] );
+               add_custom_image_header( '', $custom_header_support['admin-head-callback'] );
+               add_custom_background();
+       }
 
        // We'll be using post thumbnails for custom header images on posts and pages.
        // We want them to be 940 pixels wide by 198 pixels tall.
        // Larger images will be auto-cropped to fit, smaller ones will be ignored. See header.php.
 
        // We'll be using post thumbnails for custom header images on posts and pages.
        // We want them to be 940 pixels wide by 198 pixels tall.
        // Larger images will be auto-cropped to fit, smaller ones will be ignored. See header.php.
-       set_post_thumbnail_size( HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT, true );
-
-       // Don't support text inside the header image.
-       if ( ! defined( 'NO_HEADER_TEXT' ) )
-               define( 'NO_HEADER_TEXT', true );
-
-       // Add a way for the custom header to be styled in the admin panel that controls
-       // custom headers. See twentyten_admin_header_style(), below.
-       add_custom_image_header( '', 'twentyten_admin_header_style' );
+       set_post_thumbnail_size( $custom_header_support['width'], $custom_header_support['height'], true );
 
 
-       // ... and thus ends the changeable header business.
+       // ... and thus ends the custom header business.
 
        // Default custom headers packaged with the theme. %s is a placeholder for the theme template directory URI.
        register_default_headers( array(
 
        // Default custom headers packaged with the theme. %s is a placeholder for the theme template directory URI.
        register_default_headers( array(
@@ -201,7 +206,7 @@ function twentyten_admin_header_style() {
        border-bottom: 1px solid #000;
        border-top: 4px solid #000;
 }
        border-bottom: 1px solid #000;
        border-top: 4px solid #000;
 }
-/* If NO_HEADER_TEXT is false, you would style the text with these selectors:
+/* If header-text was supported, you would style the text with these selectors:
        #headimg #name { }
        #headimg #desc { }
 */
        #headimg #name { }
        #headimg #desc { }
 */
index 54971c930f5370c964d8378baf34c53f5bbfde32..50cb37589dc806432f5c03efe79aaaad3b22567e 100644 (file)
                                <div id="site-description"><?php bloginfo( 'description' ); ?></div>
 
                                <?php
                                <div id="site-description"><?php bloginfo( 'description' ); ?></div>
 
                                <?php
+                                       // Compatibility with versions of WordPress prior to 3.4.
+                                       if ( function_exists( 'get_custom_header' ) ) {
+                                               // We need to figure out what the minimum width should be for our featured image.
+                                               // This result would be the suggested width if the theme were to implement flexible widths.
+                                               $header_image_width = get_theme_support( 'custom-header', 'width' );
+                                       } else {
+                                               $header_image_width = HEADER_IMAGE_WIDTH;
+                                       }
+
                                        // Check if this is a post or page, if it has a thumbnail, and if it's a big one
                                        if ( is_singular() && current_theme_supports( 'post-thumbnails' ) &&
                                                        has_post_thumbnail( $post->ID ) &&
                                                        ( /* $src, $width, $height */ $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'post-thumbnail' ) ) &&
                                        // Check if this is a post or page, if it has a thumbnail, and if it's a big one
                                        if ( is_singular() && current_theme_supports( 'post-thumbnails' ) &&
                                                        has_post_thumbnail( $post->ID ) &&
                                                        ( /* $src, $width, $height */ $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'post-thumbnail' ) ) &&
-                                                       $image[1] >= HEADER_IMAGE_WIDTH ) :
+                                                       $image[1] >= $header_image_width ) :
                                                // Houston, we have a new header image!
                                                echo get_the_post_thumbnail( $post->ID );
                                                // Houston, we have a new header image!
                                                echo get_the_post_thumbnail( $post->ID );
-                                       elseif ( get_header_image() ) : ?>
-                                               <img src="<?php header_image(); ?>" width="<?php echo HEADER_IMAGE_WIDTH; ?>" height="<?php echo HEADER_IMAGE_HEIGHT; ?>" alt="" />
+                                       elseif ( get_header_image() ) :
+                                               // Compatibility with versions of WordPress prior to 3.4.
+                                               if ( function_exists( 'get_custom_header' ) ) {
+                                                       $header_image_width  = get_custom_header()->width;
+                                                       $header_image_height = get_custom_header()->height;
+                                               } else {
+                                                       $header_image_width  = HEADER_IMAGE_WIDTH;
+                                                       $header_image_height = HEADER_IMAGE_HEIGHT;
+                                               }
+                                       ?>
+                                               <img src="<?php header_image(); ?>" width="<?php echo $header_image_width; ?>" height="<?php echo $header_image_height; ?>" alt="" />
                                        <?php endif; ?>
                        </div><!-- #branding -->
 
                        <div id="access" role="navigation">
                                        <?php endif; ?>
                        </div><!-- #branding -->
 
                        <div id="access" role="navigation">
-                         <?php /*  Allow screen readers / text browsers to skip the navigation menu and get right to the good stuff */ ?>
+                         <?php /* Allow screen readers / text browsers to skip the navigation menu and get right to the good stuff */ ?>
                                <div class="skip-link screen-reader-text"><a href="#content" title="<?php esc_attr_e( 'Skip to content', 'twentyten' ); ?>"><?php _e( 'Skip to content', 'twentyten' ); ?></a></div>
                                <div class="skip-link screen-reader-text"><a href="#content" title="<?php esc_attr_e( 'Skip to content', 'twentyten' ); ?>"><?php _e( 'Skip to content', 'twentyten' ); ?></a></div>
-                               <?php /* Our navigation menu.  If one isn't filled out, wp_nav_menu falls back to wp_page_menu.  The menu assiged to the primary position is the one used.  If none is assigned, the menu with the lowest ID is used.  */ ?>
+                               <?php /* Our navigation menu. If one isn't filled out, wp_nav_menu falls back to wp_page_menu. The menu assiged to the primary position is the one used. If none is assigned, the menu with the lowest ID is used. */ ?>
                                <?php wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary' ) ); ?>
                        </div><!-- #access -->
                </div><!-- #masthead -->
                                <?php wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary' ) ); ?>
                        </div><!-- #access -->
                </div><!-- #masthead -->
index 208848db747e465acf6200536711497b6ec72da4..e25d155f404eab8a075969c9d29610b0decf82b8 100644 (file)
@@ -1,10 +1,10 @@
 # Copyright (C) 2012 the WordPress team
 # Copyright (C) 2012 the WordPress team
-# This file is distributed under the GNU General Public License.
+# This file is distributed under the GNU General Public License v2 or later.
 msgid ""
 msgstr ""
 msgid ""
 msgstr ""
-"Project-Id-Version: Twenty Ten 1.3\n"
+"Project-Id-Version: Twenty Ten 1.4\n"
 "Report-Msgid-Bugs-To: http://wordpress.org/tags/twentyten\n"
 "Report-Msgid-Bugs-To: http://wordpress.org/tags/twentyten\n"
-"POT-Creation-Date: 2012-02-10 16:30:52+00:00\n"
+"POT-Creation-Date: 2012-06-10 15:18:09+00:00\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -83,7 +83,7 @@ msgstr ""
 msgid "Comments are closed."
 msgstr ""
 
 msgid "Comments are closed."
 msgstr ""
 
-#. #-#-#-#-#  twentyten.pot (Twenty Ten 1.3)  #-#-#-#-#
+#. #-#-#-#-#  twentyten.pot (Twenty Ten 1.4)  #-#-#-#-#
 #. Theme URI of the plugin/theme
 #: footer.php:33
 msgid "http://wordpress.org/"
 #. Theme URI of the plugin/theme
 #: footer.php:33
 msgid "http://wordpress.org/"
@@ -97,146 +97,146 @@ msgstr ""
 msgid "Proudly powered by %s."
 msgstr ""
 
 msgid "Proudly powered by %s."
 msgstr ""
 
-#: functions.php:100
+#: functions.php:93
 msgid "Primary Navigation"
 msgstr ""
 
 #. translators: header image description
 msgid "Primary Navigation"
 msgstr ""
 
 #. translators: header image description
-#: functions.php:140
+#: functions.php:145
 msgid "Berries"
 msgstr ""
 
 #. translators: header image description
 msgid "Berries"
 msgstr ""
 
 #. translators: header image description
-#: functions.php:146
+#: functions.php:151
 msgid "Cherry Blossoms"
 msgstr ""
 
 #. translators: header image description
 msgid "Cherry Blossoms"
 msgstr ""
 
 #. translators: header image description
-#: functions.php:152
+#: functions.php:157
 msgid "Concave"
 msgstr ""
 
 #. translators: header image description
 msgid "Concave"
 msgstr ""
 
 #. translators: header image description
-#: functions.php:158
+#: functions.php:163
 msgid "Fern"
 msgstr ""
 
 #. translators: header image description
 msgid "Fern"
 msgstr ""
 
 #. translators: header image description
-#: functions.php:164
+#: functions.php:169
 msgid "Forest Floor"
 msgstr ""
 
 #. translators: header image description
 msgid "Forest Floor"
 msgstr ""
 
 #. translators: header image description
-#: functions.php:170
+#: functions.php:175
 msgid "Inkwell"
 msgstr ""
 
 #. translators: header image description
 msgid "Inkwell"
 msgstr ""
 
 #. translators: header image description
-#: functions.php:176
+#: functions.php:181
 msgid "Path"
 msgstr ""
 
 #. translators: header image description
 msgid "Path"
 msgstr ""
 
 #. translators: header image description
-#: functions.php:182
+#: functions.php:187
 msgid "Sunset"
 msgstr ""
 
 msgid "Sunset"
 msgstr ""
 
-#: functions.php:248 loop-attachment.php:104 loop.php:115 loop.php:143
+#: functions.php:253 loop-attachment.php:104 loop.php:115 loop.php:143
 msgid "Continue reading <span class=\"meta-nav\">&rarr;</span>"
 msgstr ""
 
 msgid "Continue reading <span class=\"meta-nav\">&rarr;</span>"
 msgstr ""
 
-#: functions.php:330
+#: functions.php:335
 msgid "%s <span class=\"says\">says:</span>"
 msgstr ""
 
 msgid "%s <span class=\"says\">says:</span>"
 msgstr ""
 
-#: functions.php:333
+#: functions.php:338
 msgid "Your comment is awaiting moderation."
 msgstr ""
 
 #. translators: 1: date, 2: time
 msgid "Your comment is awaiting moderation."
 msgstr ""
 
 #. translators: 1: date, 2: time
-#: functions.php:340
+#: functions.php:345
 msgid "%1$s at %2$s"
 msgstr ""
 
 msgid "%1$s at %2$s"
 msgstr ""
 
-#: functions.php:340 functions.php:357
+#: functions.php:345 functions.php:362
 msgid "(Edit)"
 msgstr ""
 
 msgid "(Edit)"
 msgstr ""
 
-#: functions.php:357
+#: functions.php:362
 msgid "Pingback:"
 msgstr ""
 
 msgid "Pingback:"
 msgstr ""
 
-#: functions.php:376
+#: functions.php:381
 msgid "Primary Widget Area"
 msgstr ""
 
 msgid "Primary Widget Area"
 msgstr ""
 
-#: functions.php:378
+#: functions.php:383
 msgid "The primary widget area"
 msgstr ""
 
 msgid "The primary widget area"
 msgstr ""
 
-#: functions.php:387
+#: functions.php:392
 msgid "Secondary Widget Area"
 msgstr ""
 
 msgid "Secondary Widget Area"
 msgstr ""
 
-#: functions.php:389
+#: functions.php:394
 msgid "The secondary widget area"
 msgstr ""
 
 msgid "The secondary widget area"
 msgstr ""
 
-#: functions.php:398
+#: functions.php:403
 msgid "First Footer Widget Area"
 msgstr ""
 
 msgid "First Footer Widget Area"
 msgstr ""
 
-#: functions.php:400
+#: functions.php:405
 msgid "The first footer widget area"
 msgstr ""
 
 msgid "The first footer widget area"
 msgstr ""
 
-#: functions.php:409
+#: functions.php:414
 msgid "Second Footer Widget Area"
 msgstr ""
 
 msgid "Second Footer Widget Area"
 msgstr ""
 
-#: functions.php:411
+#: functions.php:416
 msgid "The second footer widget area"
 msgstr ""
 
 msgid "The second footer widget area"
 msgstr ""
 
-#: functions.php:420
+#: functions.php:425
 msgid "Third Footer Widget Area"
 msgstr ""
 
 msgid "Third Footer Widget Area"
 msgstr ""
 
-#: functions.php:422
+#: functions.php:427
 msgid "The third footer widget area"
 msgstr ""
 
 msgid "The third footer widget area"
 msgstr ""
 
-#: functions.php:431
+#: functions.php:436
 msgid "Fourth Footer Widget Area"
 msgstr ""
 
 msgid "Fourth Footer Widget Area"
 msgstr ""
 
-#: functions.php:433
+#: functions.php:438
 msgid "The fourth footer widget area"
 msgstr ""
 
 msgid "The fourth footer widget area"
 msgstr ""
 
-#: functions.php:467
+#: functions.php:472
 msgid ""
 "<span class=\"%1$s\">Posted on</span> %2$s <span class=\"meta-sep\">by</"
 "span> %3$s"
 msgstr ""
 
 msgid ""
 "<span class=\"%1$s\">Posted on</span> %2$s <span class=\"meta-sep\">by</"
 "span> %3$s"
 msgstr ""
 
-#: functions.php:476 loop-attachment.php:36
+#: functions.php:481 loop-attachment.php:36
 msgid "View all posts by %s"
 msgstr ""
 
 msgid "View all posts by %s"
 msgstr ""
 
-#: functions.php:493
+#: functions.php:498
 msgid ""
 "This entry was posted in %1$s and tagged %2$s. Bookmark the <a href=\"%3$s\" "
 "title=\"Permalink to %4$s\" rel=\"bookmark\">permalink</a>."
 msgstr ""
 
 msgid ""
 "This entry was posted in %1$s and tagged %2$s. Bookmark the <a href=\"%3$s\" "
 "title=\"Permalink to %4$s\" rel=\"bookmark\">permalink</a>."
 msgstr ""
 
-#: functions.php:495
+#: functions.php:500
 msgid ""
 "This entry was posted in %1$s. Bookmark the <a href=\"%3$s\" title="
 "\"Permalink to %4$s\" rel=\"bookmark\">permalink</a>."
 msgstr ""
 
 msgid ""
 "This entry was posted in %1$s. Bookmark the <a href=\"%3$s\" title="
 "\"Permalink to %4$s\" rel=\"bookmark\">permalink</a>."
 msgstr ""
 
-#: functions.php:497
+#: functions.php:502
 msgid ""
 "Bookmark the <a href=\"%3$s\" title=\"Permalink to %4$s\" rel=\"bookmark"
 "\">permalink</a>."
 msgid ""
 "Bookmark the <a href=\"%3$s\" title=\"Permalink to %4$s\" rel=\"bookmark"
 "\">permalink</a>."
@@ -246,7 +246,7 @@ msgstr ""
 msgid "Page %s"
 msgstr ""
 
 msgid "Page %s"
 msgstr ""
 
-#: header.php:83
+#: header.php:101
 msgid "Skip to content"
 msgstr ""
 
 msgid "Skip to content"
 msgstr ""
 
@@ -416,3 +416,7 @@ msgid ""
 "background, threaded-comments, sticky-post, translation-ready, microformats, "
 "rtl-language-support, editor-style, custom-menu"
 msgstr ""
 "background, threaded-comments, sticky-post, translation-ready, microformats, "
 "rtl-language-support, editor-style, custom-menu"
 msgstr ""
+
+#. Template Name of the plugin/theme
+msgid "One column, no sidebar"
+msgstr ""
index defa104053e0552b8315dca463d23cddff59c541..e775869730c4151e7905679a3968b51bb55afbdf 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * The loop that displays an attachment.
  *
 /**
  * The loop that displays an attachment.
  *
- * The loop displays the posts and the post content.  See
+ * The loop displays the posts and the post content. See
  * http://codex.wordpress.org/The_Loop to understand it and
  * http://codex.wordpress.org/Template_Tags to understand
  * the tags used in it.
  * http://codex.wordpress.org/The_Loop to understand it and
  * http://codex.wordpress.org/Template_Tags to understand
  * the tags used in it.
 
 <?php comments_template(); ?>
 
 
 <?php comments_template(); ?>
 
-<?php endwhile; // end of the loop. ?>
\ No newline at end of file
+<?php endwhile; // end of the loop. ?>
index 252a1d0e63f4d8a3bbc682c3a26e0662e5ac5cf6..88c5d745490b2182e796698b58babf4856544b3e 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * The loop that displays a page.
  *
 /**
  * The loop that displays a page.
  *
- * The loop displays the posts and the post content.  See
+ * The loop displays the posts and the post content. See
  * http://codex.wordpress.org/The_Loop to understand it and
  * http://codex.wordpress.org/Template_Tags to understand
  * the tags used in it.
  * http://codex.wordpress.org/The_Loop to understand it and
  * http://codex.wordpress.org/Template_Tags to understand
  * the tags used in it.
@@ -33,4 +33,4 @@
 
                                <?php comments_template( '', true ); ?>
 
 
                                <?php comments_template( '', true ); ?>
 
-<?php endwhile; // end of the loop. ?>
\ No newline at end of file
+<?php endwhile; // end of the loop. ?>
index 4d89a6a0dc60077e71f9bbad407fad8bef7f9d39..1dde4aa3efae976df4686246a2ce873c08e1dbed 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * The loop that displays a single post.
  *
 /**
  * The loop that displays a single post.
  *
- * The loop displays the posts and the post content.  See
+ * The loop displays the posts and the post content. See
  * http://codex.wordpress.org/The_Loop to understand it and
  * http://codex.wordpress.org/Template_Tags to understand
  * the tags used in it.
  * http://codex.wordpress.org/The_Loop to understand it and
  * http://codex.wordpress.org/Template_Tags to understand
  * the tags used in it.
@@ -64,4 +64,4 @@
 
                                <?php comments_template( '', true ); ?>
 
 
                                <?php comments_template( '', true ); ?>
 
-<?php endwhile; // end of the loop. ?>
\ No newline at end of file
+<?php endwhile; // end of the loop. ?>
index 9dc6297dfa6921a756430b8e366d26d0890c26e7..3e22fe2477f9c2d3bfc1c2985de16048fb52a4fe 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * The loop that displays posts.
  *
 /**
  * The loop that displays posts.
  *
- * The loop displays the posts and the post content.  See
+ * The loop displays the posts and the post content. See
  * http://codex.wordpress.org/The_Loop to understand it and
  * http://codex.wordpress.org/Template_Tags to understand
  * the tags used in it.
  * http://codex.wordpress.org/The_Loop to understand it and
  * http://codex.wordpress.org/Template_Tags to understand
  * the tags used in it.
index 27d92edefaeb019ebc6f615c9333d7d97ae95246..ecf29f58023b458402b5f069404d4d348fdbcdf4 100644 (file)
@@ -3,10 +3,11 @@ Theme Name: Twenty Ten
 Theme URI: http://wordpress.org/
 Description: The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the "Asides" and "Gallery" categories, and has an optional one-column page template that removes the sidebar.
 Author: the WordPress team
 Theme URI: http://wordpress.org/
 Description: The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the "Asides" and "Gallery" categories, and has an optional one-column page template that removes the sidebar.
 Author: the WordPress team
-Version: 1.3
-License: GNU General Public License
-License URI: license.txt
+Version: 1.4
+License: GNU General Public License v2 or later
+License URI: http://www.gnu.org/licenses/gpl-2.0.html
 Tags: black, blue, white, two-columns, fixed-width, custom-header, custom-background, threaded-comments, sticky-post, translation-ready, microformats, rtl-language-support, editor-style, custom-menu
 Tags: black, blue, white, two-columns, fixed-width, custom-header, custom-background, threaded-comments, sticky-post, translation-ready, microformats, rtl-language-support, editor-style, custom-menu
+Text Domain: twentyten
 */
 
 
 */
 
 
index a84c4635df89f9be5d5172370a826b9c8f96031e..f0da6ecc5c9095b8d5c9b4a3e91e5155c58af0cd 100644 (file)
@@ -48,7 +48,7 @@ if ( false === $crons = _get_cron_array() )
        die();
 
 $keys = array_keys( $crons );
        die();
 
 $keys = array_keys( $crons );
-$local_time = time();
+$local_time = microtime( true );
 
 if ( isset($keys[0]) && $keys[0] > $local_time )
        die();
 
 if ( isset($keys[0]) && $keys[0] > $local_time )
        die();
@@ -61,7 +61,7 @@ if ( empty( $doing_wp_cron ) ) {
                // Called from external script/job. Try setting a lock.
                if ( $doing_cron_transient && ( $doing_cron_transient + WP_CRON_LOCK_TIMEOUT > $local_time ) )
                        return;
                // Called from external script/job. Try setting a lock.
                if ( $doing_cron_transient && ( $doing_cron_transient + WP_CRON_LOCK_TIMEOUT > $local_time ) )
                        return;
-               $doing_cron_transient = $doing_wp_cron = time();
+               $doing_cron_transient = $doing_wp_cron = sprintf( '%.22F', microtime( true ) );
                set_transient( 'doing_cron', $doing_wp_cron );
        } else {
                $doing_wp_cron = $_GET[ 'doing_wp_cron' ];
                set_transient( 'doing_cron', $doing_wp_cron );
        } else {
                $doing_wp_cron = $_GET[ 'doing_wp_cron' ];
index ff959bb72e5201e3a4d3f6e6a9930d5b60dcd561..1b23dad80f0cfb129599fe99b259cb67c3670368 100644 (file)
@@ -64,7 +64,7 @@ function wp_admin_bar_render() {
        do_action( 'wp_after_admin_bar_render' );
 }
 add_action( 'wp_footer', 'wp_admin_bar_render', 1000 );
        do_action( 'wp_after_admin_bar_render' );
 }
 add_action( 'wp_footer', 'wp_admin_bar_render', 1000 );
-add_action( 'admin_footer', 'wp_admin_bar_render', 1000 );
+add_action( 'in_admin_header', 'wp_admin_bar_render', 0 );
 
 /**
  * Add the WordPress logo menu.
 
 /**
  * Add the WordPress logo menu.
@@ -75,7 +75,7 @@ function wp_admin_bar_wp_menu( $wp_admin_bar ) {
        $wp_admin_bar->add_menu( array(
                'id'    => 'wp-logo',
                'title' => '<span class="ab-icon"></span>',
        $wp_admin_bar->add_menu( array(
                'id'    => 'wp-logo',
                'title' => '<span class="ab-icon"></span>',
-               'href'  => admin_url( 'about.php' ),
+               'href'  => self_admin_url( 'about.php' ),
                'meta'  => array(
                        'title' => __('About WordPress'),
                ),
                'meta'  => array(
                        'title' => __('About WordPress'),
                ),
@@ -87,7 +87,7 @@ function wp_admin_bar_wp_menu( $wp_admin_bar ) {
                        'parent' => 'wp-logo',
                        'id'     => 'about',
                        'title'  => __('About WordPress'),
                        'parent' => 'wp-logo',
                        'id'     => 'about',
                        'title'  => __('About WordPress'),
-                       'href'   => admin_url('about.php'),
+                       'href'  => self_admin_url( 'about.php' ),
                ) );
        }
 
                ) );
        }
 
@@ -96,7 +96,7 @@ function wp_admin_bar_wp_menu( $wp_admin_bar ) {
                'parent'    => 'wp-logo-external',
                'id'        => 'wporg',
                'title'     => __('WordPress.org'),
                'parent'    => 'wp-logo-external',
                'id'        => 'wporg',
                'title'     => __('WordPress.org'),
-               'href'      => __('http://wordpress.org'),
+               'href'      => __('http://wordpress.org/'),
        ) );
 
        // Add codex link
        ) );
 
        // Add codex link
@@ -104,7 +104,7 @@ function wp_admin_bar_wp_menu( $wp_admin_bar ) {
                'parent'    => 'wp-logo-external',
                'id'        => 'documentation',
                'title'     => __('Documentation'),
                'parent'    => 'wp-logo-external',
                'id'        => 'documentation',
                'title'     => __('Documentation'),
-               'href'      => __('http://codex.wordpress.org'),
+               'href'      => __('http://codex.wordpress.org/'),
        ) );
 
        // Add forums link
        ) );
 
        // Add forums link
@@ -248,9 +248,17 @@ function wp_admin_bar_site_menu( $wp_admin_bar ) {
                        'href'   => home_url( '/' ),
                ) );
 
                        'href'   => home_url( '/' ),
                ) );
 
-       // We're on the front end, print a copy of the admin menu.
+               if ( is_blog_admin() && is_multisite() && current_user_can( 'manage_sites' ) ) {
+                       $wp_admin_bar->add_menu( array(
+                               'parent' => 'site-name',
+                               'id'     => 'edit-site',
+                               'title'  => __( 'Edit Site' ),
+                               'href'   => network_admin_url( 'site-info.php?id=' . get_current_blog_id() ),
+                       ) );
+               }
+
        } else {
        } else {
-               // Add the dashboard item.
+               // We're on the front end, link to the Dashboard.
                $wp_admin_bar->add_menu( array(
                        'parent' => 'site-name',
                        'id'     => 'dashboard',
                $wp_admin_bar->add_menu( array(
                        'parent' => 'site-name',
                        'id'     => 'dashboard',
@@ -568,6 +576,18 @@ function wp_admin_bar_appearance_menu( $wp_admin_bar ) {
        if ( ! current_user_can( 'edit_theme_options' ) )
                return;
 
        if ( ! current_user_can( 'edit_theme_options' ) )
                return;
 
+       $current_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
+       $wp_admin_bar->add_menu( array(
+               'parent' => 'appearance',
+               'id'     => 'customize',
+               'title'  => __('Customize'),
+               'href'   => add_query_arg( 'url', urlencode( $current_url ), wp_customize_url() ),
+               'meta'   => array(
+                       'class' => 'hide-if-no-customize',
+               ),
+       ) );
+       add_action( 'wp_before_admin_bar_render', 'wp_customize_support_script' );
+
        if ( current_theme_supports( 'widgets' )  )
                $wp_admin_bar->add_menu( array( 'parent' => 'appearance', 'id' => 'widgets', 'title' => __('Widgets'), 'href' => admin_url('widgets.php') ) );
 
        if ( current_theme_supports( 'widgets' )  )
                $wp_admin_bar->add_menu( array( 'parent' => 'appearance', 'id' => 'widgets', 'title' => __('Widgets'), 'href' => admin_url('widgets.php') ) );
 
@@ -680,7 +700,7 @@ function _admin_bar_bump_cb() { ?>
 /**
  * Set the display status of the admin bar.
  *
 /**
  * Set the display status of the admin bar.
  *
- * This can be called immediately upon plugin load.  It does not need to be called from a function hooked to the init action.
+ * This can be called immediately upon plugin load. It does not need to be called from a function hooked to the init action.
  *
  * @since 3.1.0
  *
  *
  * @since 3.1.0
  *
@@ -741,5 +761,3 @@ function _get_admin_bar_pref( $context = 'front', $user = 0 ) {
 
        return 'true' === $pref;
 }
 
        return 'true' === $pref;
 }
-
-?>
index e75ca394a3f3fa9eca7208790a6613de9c31d312..c6f2f24750d74ad578c58ca373dc7318f3e99e37 100644 (file)
@@ -350,5 +350,3 @@ class AtomParser {
                 $string );
     }
 }
                 $string );
     }
 }
-
-?>
index 4b21e446e34502f5afc3d3eb4d36706ed9fcb3f2..ab2737c563e3b3af267719e2a10e60aa8ab22457 100644 (file)
@@ -96,25 +96,20 @@ function the_modified_author() {
  * @param int $user_id Optional. User ID.
  * @return string The author's field from the current author's DB object.
  */
  * @param int $user_id Optional. User ID.
  * @return string The author's field from the current author's DB object.
  */
-function get_the_author_meta($field = '', $user_id = false) {
-       if ( ! $user_id )
+function get_the_author_meta( $field = '', $user_id = false ) {
+       if ( ! $user_id ) {
                global $authordata;
                global $authordata;
-       else
+               $user_id = isset( $authordata->ID ) ? $authordata->ID : 0;
+       } else {
                $authordata = get_userdata( $user_id );
                $authordata = get_userdata( $user_id );
+       }
 
 
-       // Keys used as object vars cannot have dashes.
-       $field = str_replace('-', '', $field);
-       $field = strtolower($field);
-       $user_field = "user_$field";
+       if ( in_array( $field, array( 'login', 'pass', 'nicename', 'email', 'url', 'registered', 'activation_key', 'status' ) ) )
+               $field = 'user_' . $field;
 
 
-       if ( 'id' == $field )
-               $value = isset($authordata->ID) ? (int)$authordata->ID : 0;
-       elseif ( isset($authordata->$user_field) )
-               $value = $authordata->$user_field;
-       else
-               $value = isset($authordata->$field) ? $authordata->$field : '';
+       $value = isset( $authordata->$field ) ? $authordata->$field : '';
 
 
-       return apply_filters('get_the_author_' . $field, $value, $user_id);
+       return apply_filters( 'get_the_author_' . $field, $value, $user_id );
 }
 
 /**
 }
 
 /**
@@ -140,7 +135,7 @@ function the_author_meta($field = '', $user_id = false) {
  */
 function get_the_author_link() {
        if ( get_the_author_meta('url') ) {
  */
 function get_the_author_link() {
        if ( get_the_author_meta('url') ) {
-               return '<a href="' . get_the_author_meta('url') . '" title="' . esc_attr( sprintf(__("Visit %s&#8217;s website"), get_the_author()) ) . '" rel="external">' . get_the_author() . '</a>';
+               return '<a href="' . get_the_author_meta('url') . '" title="' . esc_attr( sprintf(__("Visit %s&#8217;s website"), get_the_author()) ) . '" rel="author external">' . get_the_author() . '</a>';
        } else {
                return get_the_author();
        }
        } else {
                return get_the_author();
        }
@@ -397,5 +392,3 @@ function __clear_multi_author_cache() {
        wp_cache_delete('is_multi_author', 'posts');
 }
 add_action('transition_post_status', '__clear_multi_author_cache');
        wp_cache_delete('is_multi_author', 'posts');
 }
 add_action('transition_post_status', '__clear_multi_author_cache');
-
-?>
index 7c5949cc21748b20179d4c6330092aae2e362c3e..2dc5b7b2e3e3f030e10faf419f3d81732519938b 100644 (file)
@@ -252,5 +252,3 @@ function wp_list_bookmarks($args = '') {
                return $output;
        echo $output;
 }
                return $output;
        echo $output;
 }
-
-?>
index c965d4c8db67b9c151bad73c60ec494bad13735e..8248e3a64f69653647c6e0c379d16d4be1775169 100644 (file)
@@ -101,9 +101,9 @@ function get_bookmark_field( $field, $bookmark, $context = 'display' ) {
  *             links marked as 'invisible'.
  * 'show_updated' - Default is 0 (integer). Will show the time of when the
  *             bookmark was last updated.
  *             links marked as 'invisible'.
  * 'show_updated' - Default is 0 (integer). Will show the time of when the
  *             bookmark was last updated.
- * 'include' - Default is empty string (string). Include other categories
+ * 'include' - Default is empty string (string). Include bookmark ID(s)
  *             separated by commas.
  *             separated by commas.
- * 'exclude' - Default is empty string (string). Exclude other categories
+ * 'exclude' - Default is empty string (string). Exclude bookmark ID(s)
  *             separated by commas.
  *
  * @since 2.1.0
  *             separated by commas.
  *
  * @since 2.1.0
@@ -375,9 +375,8 @@ function sanitize_bookmark_field($field, $value, $bookmark_id, $context) {
  * @since 2.7.0
  * @uses wp_cache_delete() Deletes the contents of 'get_bookmarks'
  */
  * @since 2.7.0
  * @uses wp_cache_delete() Deletes the contents of 'get_bookmarks'
  */
-function clean_bookmark_cache($bookmark_id) {
+function clean_bookmark_cache( $bookmark_id ) {
        wp_cache_delete( $bookmark_id, 'bookmark' );
        wp_cache_delete( 'get_bookmarks', 'bookmark' );
        wp_cache_delete( $bookmark_id, 'bookmark' );
        wp_cache_delete( 'get_bookmarks', 'bookmark' );
+       clean_object_term_cache( $bookmark_id, 'link');
 }
 }
-
-?>
index f285be3a9093da1e0d9d70ccba0264eca613c00e..bb61249cfb3d2470572911b68d920abd77dcad2e 100644 (file)
@@ -51,7 +51,7 @@ function wp_cache_close() {
  * @see WP_Object_Cache::decr()
  *
  * @param int|string $key The cache key to increment
  * @see WP_Object_Cache::decr()
  *
  * @param int|string $key The cache key to increment
- * @param int $offset The amount by which to decrement the item's value.  Default is 1.
+ * @param int $offset The amount by which to decrement the item's value. Default is 1.
  * @param string $group The group the key is in.
  * @return false|int False on failure, the item's new value on success.
  */
  * @param string $group The group the key is in.
  * @return false|int False on failure, the item's new value on success.
  */
@@ -103,13 +103,14 @@ function wp_cache_flush() {
  * @param int|string $key What the contents in the cache are called
  * @param string $group Where the cache contents are grouped
  * @param bool $force Whether to force an update of the local cache from the persistent cache (default is false)
  * @param int|string $key What the contents in the cache are called
  * @param string $group Where the cache contents are grouped
  * @param bool $force Whether to force an update of the local cache from the persistent cache (default is false)
+ * @param &bool $found Whether key was found in the cache. Disambiguates a return of false, a storable value.
  * @return bool|mixed False on failure to retrieve contents or the cache
  *             contents on success
  */
  * @return bool|mixed False on failure to retrieve contents or the cache
  *             contents on success
  */
-function wp_cache_get( $key, $group = '', $force = false ) {
+function wp_cache_get( $key, $group = '', $force = false, &$found = null ) {
        global $wp_object_cache;
 
        global $wp_object_cache;
 
-       return $wp_object_cache->get( $key, $group, $force );
+       return $wp_object_cache->get( $key, $group, $force, $found );
 }
 
 /**
 }
 
 /**
@@ -120,7 +121,7 @@ function wp_cache_get( $key, $group = '', $force = false ) {
  * @see WP_Object_Cache::incr()
  *
  * @param int|string $key The cache key to increment
  * @see WP_Object_Cache::incr()
  *
  * @param int|string $key The cache key to increment
- * @param int $offset The amount by which to increment the item's value.  Default is 1.
+ * @param int $offset The amount by which to increment the item's value. Default is 1.
  * @param string $group The group the key is in.
  * @return false|int False on failure, the item's new value on success.
  */
  * @param string $group The group the key is in.
  * @return false|int False on failure, the item's new value on success.
  */
@@ -204,7 +205,7 @@ function wp_cache_add_non_persistent_groups( $groups ) {
 }
 
 /**
 }
 
 /**
- * Reset internal cache keys and structures.  If the cache backend uses global blog or site IDs as part of its cache keys,
+ * Reset internal cache keys and structures. If the cache backend uses global blog or site IDs as part of its cache keys,
  * this function instructs the backend to reset those keys and perform any cleanup since blog or site IDs have changed since cache init.
  *
  * @since 2.6.0
  * this function instructs the backend to reset those keys and perform any cleanup since blog or site IDs have changed since cache init.
  *
  * @since 2.6.0
@@ -272,7 +273,7 @@ class WP_Object_Cache {
        /**
         * Adds data to the cache if it doesn't already exist.
         *
        /**
         * Adds data to the cache if it doesn't already exist.
         *
-        * @uses WP_Object_Cache::get Checks to see if the cache already has data.
+        * @uses WP_Object_Cache::_exists Checks to see if the cache already has data.
         * @uses WP_Object_Cache::set Sets the data after the checking the cache
         *              contents existence.
         *
         * @uses WP_Object_Cache::set Sets the data after the checking the cache
         *              contents existence.
         *
@@ -288,10 +289,10 @@ class WP_Object_Cache {
                if ( wp_suspend_cache_addition() )
                        return false;
 
                if ( wp_suspend_cache_addition() )
                        return false;
 
-               if ( empty ($group) )
+               if ( empty( $group ) )
                        $group = 'default';
 
                        $group = 'default';
 
-               if (false !== $this->get($key, $group))
+               if ( $this->_exists($key, $group) )
                        return false;
 
                return $this->set($key, $data, $group, $expire);
                        return false;
 
                return $this->set($key, $data, $group, $expire);
@@ -317,12 +318,12 @@ class WP_Object_Cache {
         * @since 3.3.0
         *
         * @param int|string $key The cache key to increment
         * @since 3.3.0
         *
         * @param int|string $key The cache key to increment
-        * @param int $offset The amount by which to decrement the item's value.  Default is 1.
+        * @param int $offset The amount by which to decrement the item's value. Default is 1.
         * @param string $group The group the key is in.
         * @return false|int False on failure, the item's new value on success.
         */
        function decr( $key, $offset = 1, $group = 'default' ) {
         * @param string $group The group the key is in.
         * @return false|int False on failure, the item's new value on success.
         */
        function decr( $key, $offset = 1, $group = 'default' ) {
-               if ( ! isset( $this->cache[ $group ][ $key ] ) )
+               if ( ! $this->_exists( $key, $group ) )
                        return false;
 
                if ( ! is_numeric( $this->cache[ $group ][ $key ] ) )
                        return false;
 
                if ( ! is_numeric( $this->cache[ $group ][ $key ] ) )
@@ -354,13 +355,13 @@ class WP_Object_Cache {
         * @return bool False if the contents weren't deleted and true on success
         */
        function delete($key, $group = 'default', $force = false) {
         * @return bool False if the contents weren't deleted and true on success
         */
        function delete($key, $group = 'default', $force = false) {
-               if (empty ($group))
+               if ( empty( $group ) )
                        $group = 'default';
 
                        $group = 'default';
 
-               if (!$force && false === $this->get($key, $group))
+               if ( ! $force && ! $this->_exists( $key, $group ) )
                        return false;
 
                        return false;
 
-               unset ($this->cache[$group][$key]);
+               unset( $this->cache[$group][$key] );
                return true;
        }
 
                return true;
        }
 
@@ -394,11 +395,12 @@ class WP_Object_Cache {
         * @return bool|mixed False on failure to retrieve contents or the cache
         *              contents on success
         */
         * @return bool|mixed False on failure to retrieve contents or the cache
         *              contents on success
         */
-       function get( $key, $group = 'default', $force = false) {
-               if ( empty ($group) )
+       function get( $key, $group = 'default', $force = false, &$found = null ) {
+               if ( empty( $group ) )
                        $group = 'default';
 
                        $group = 'default';
 
-               if ( isset ($this->cache[$group][$key]) ) {
+               if ( $this->_exists( $key, $group ) ) {
+                       $found = true;
                        $this->cache_hits += 1;
                        if ( is_object($this->cache[$group][$key]) )
                                return clone $this->cache[$group][$key];
                        $this->cache_hits += 1;
                        if ( is_object($this->cache[$group][$key]) )
                                return clone $this->cache[$group][$key];
@@ -406,6 +408,7 @@ class WP_Object_Cache {
                                return $this->cache[$group][$key];
                }
 
                                return $this->cache[$group][$key];
                }
 
+               $found = false;
                $this->cache_misses += 1;
                return false;
        }
                $this->cache_misses += 1;
                return false;
        }
@@ -416,12 +419,15 @@ class WP_Object_Cache {
         * @since 3.3.0
         *
         * @param int|string $key The cache key to increment
         * @since 3.3.0
         *
         * @param int|string $key The cache key to increment
-        * @param int $offset The amount by which to increment the item's value.  Default is 1.
+        * @param int $offset The amount by which to increment the item's value. Default is 1.
         * @param string $group The group the key is in.
         * @return false|int False on failure, the item's new value on success.
         */
        function incr( $key, $offset = 1, $group = 'default' ) {
         * @param string $group The group the key is in.
         * @return false|int False on failure, the item's new value on success.
         */
        function incr( $key, $offset = 1, $group = 'default' ) {
-               if ( ! isset( $this->cache[ $group ][ $key ] ) )
+               if ( empty( $group ) )
+                       $group = 'default';
+
+               if ( ! $this->_exists( $key, $group ) )
                        return false;
 
                if ( ! is_numeric( $this->cache[ $group ][ $key ] ) )
                        return false;
 
                if ( ! is_numeric( $this->cache[ $group ][ $key ] ) )
@@ -450,10 +456,10 @@ class WP_Object_Cache {
         * @return bool False if not exists, true if contents were replaced
         */
        function replace($key, $data, $group = 'default', $expire = '') {
         * @return bool False if not exists, true if contents were replaced
         */
        function replace($key, $data, $group = 'default', $expire = '') {
-               if (empty ($group))
+               if ( empty( $group ) )
                        $group = 'default';
 
                        $group = 'default';
 
-               if ( false === $this->get($key, $group) )
+               if ( ! $this->_exists( $key, $group ) )
                        return false;
 
                return $this->set($key, $data, $group, $expire);
                        return false;
 
                return $this->set($key, $data, $group, $expire);
@@ -493,12 +499,9 @@ class WP_Object_Cache {
         * @return bool Always returns true
         */
        function set($key, $data, $group = 'default', $expire = '') {
         * @return bool Always returns true
         */
        function set($key, $data, $group = 'default', $expire = '') {
-               if ( empty ($group) )
+               if ( empty( $group ) )
                        $group = 'default';
 
                        $group = 'default';
 
-               if ( NULL === $data )
-                       $data = '';
-
                if ( is_object($data) )
                        $data = clone $data;
 
                if ( is_object($data) )
                        $data = clone $data;
 
@@ -526,6 +529,14 @@ class WP_Object_Cache {
                echo '</ul>';
        }
 
                echo '</ul>';
        }
 
+       /**
+        * Utility function to determine whether a key exists in the cache.
+        * @access private
+        */
+       protected function _exists($key, $group) {
+               return isset( $this->cache[$group] ) && is_array( $this->cache[$group] ) && array_key_exists( $key, $this->cache[$group] );
+       }
+
        /**
         * Sets up object properties; PHP 5 style constructor
         *
        /**
         * Sets up object properties; PHP 5 style constructor
         *
@@ -553,4 +564,3 @@ class WP_Object_Cache {
                return true;
        }
 }
                return true;
        }
 }
-?>
index ea3bb77692910185457dc0b54cfa8a951f57e304..683c1479a8759a4136613358c28034227ed48ee7 100644 (file)
@@ -66,6 +66,13 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
        if ( !isset($redirect['query']) )
                $redirect['query'] = '';
 
        if ( !isset($redirect['query']) )
                $redirect['query'] = '';
 
+       if ( is_feed() && ( $id = get_query_var( 'p' ) ) ) {
+               if ( $redirect_url = get_post_comments_feed_link( $id, get_query_var( 'feed' ) ) ) {
+                       $redirect['query'] = _remove_qs_args_if_not_in_url( $redirect['query'], array( 'p', 'page_id', 'attachment_id', 'pagename', 'name', 'post_type', 'feed'), $redirect_url );
+                       $redirect['path'] = parse_url( $redirect_url, PHP_URL_PATH );
+               }
+       }
+
        if ( is_singular() && 1 > $wp_query->post_count && ($id = get_query_var('p')) ) {
 
                $vars = $wpdb->get_results( $wpdb->prepare("SELECT post_type, post_parent FROM $wpdb->posts WHERE ID = %d", $id) );
        if ( is_singular() && 1 > $wp_query->post_count && ($id = get_query_var('p')) ) {
 
                $vars = $wpdb->get_results( $wpdb->prepare("SELECT post_type, post_parent FROM $wpdb->posts WHERE ID = %d", $id) );
@@ -75,7 +82,7 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
                                $id = $vars->post_parent;
 
                        if ( $redirect_url = get_permalink($id) )
                                $id = $vars->post_parent;
 
                        if ( $redirect_url = get_permalink($id) )
-                               $redirect['query'] = remove_query_arg(array('p', 'page_id', 'attachment_id', 'post_type'), $redirect['query']);
+                               $redirect['query'] = _remove_qs_args_if_not_in_url( $redirect['query'], array( 'p', 'page_id', 'attachment_id', 'pagename', 'name', 'post_type' ), $redirect_url );
                }
        }
 
                }
        }
 
@@ -88,12 +95,15 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
                        $post_type_obj = get_post_type_object($redirect_post->post_type);
                        if ( $post_type_obj->public ) {
                                $redirect_url = get_permalink($redirect_post);
                        $post_type_obj = get_post_type_object($redirect_post->post_type);
                        if ( $post_type_obj->public ) {
                                $redirect_url = get_permalink($redirect_post);
-                               $redirect['query'] = remove_query_arg(array('p', 'page_id', 'attachment_id', 'post_type'), $redirect['query']);
+                               $redirect['query'] = _remove_qs_args_if_not_in_url( $redirect['query'], array( 'p', 'page_id', 'attachment_id', 'pagename', 'name', 'post_type' ), $redirect_url );
                        }
                }
 
                        }
                }
 
-               if ( ! $redirect_url )
-                       $redirect_url = redirect_guess_404_permalink();
+               if ( ! $redirect_url ) {
+                       if ( $redirect_url = redirect_guess_404_permalink( $requested_url ) ) {
+                               $redirect['query'] = _remove_qs_args_if_not_in_url( $redirect['query'], array( 'page', 'feed', 'p', 'page_id', 'attachment_id', 'pagename', 'name', 'post_type' ), $redirect_url );
+                       }
+               }
 
        } elseif ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) {
                // rewriting of old ?p=X, ?m=2004, ?m=200401, ?m=20040101
 
        } elseif ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) {
                // rewriting of old ?p=X, ?m=2004, ?m=200401, ?m=20040101
@@ -191,15 +201,17 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
                                }
 
                        }
                                }
 
                        }
-               } elseif ( is_single() && strpos($wp_rewrite->permalink_structure, '%category%') !== false ) {
-                       $category = get_category_by_path(get_query_var('category_name'));
+               } elseif ( is_single() && strpos($wp_rewrite->permalink_structure, '%category%') !== false && $cat = get_query_var( 'category_name' ) ) {
+                       $category = get_category_by_path( $cat );
                        $post_terms = wp_get_object_terms($wp_query->get_queried_object_id(), 'category', array('fields' => 'tt_ids'));
                        if ( (!$category || is_wp_error($category)) || ( !is_wp_error($post_terms) && !empty($post_terms) && !in_array($category->term_taxonomy_id, $post_terms) ) )
                                $redirect_url = get_permalink($wp_query->get_queried_object_id());
                }
 
                // Post Paging
                        $post_terms = wp_get_object_terms($wp_query->get_queried_object_id(), 'category', array('fields' => 'tt_ids'));
                        if ( (!$category || is_wp_error($category)) || ( !is_wp_error($post_terms) && !empty($post_terms) && !in_array($category->term_taxonomy_id, $post_terms) ) )
                                $redirect_url = get_permalink($wp_query->get_queried_object_id());
                }
 
                // Post Paging
-               if ( is_singular() && get_query_var('page') && $redirect_url ) {
+               if ( is_singular() && ! is_front_page() && get_query_var('page') ) {
+                       if ( !$redirect_url )
+                               $redirect_url = get_permalink( get_queried_object_id() );
                        $redirect_url = trailingslashit( $redirect_url ) . user_trailingslashit( get_query_var( 'page' ), 'single_paged' );
                        $redirect['query'] = remove_query_arg( 'page', $redirect['query'] );
                }
                        $redirect_url = trailingslashit( $redirect_url ) . user_trailingslashit( get_query_var( 'page' ), 'single_paged' );
                        $redirect['query'] = remove_query_arg( 'page', $redirect['query'] );
                }
@@ -216,7 +228,7 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
                        $addl_path = '';
                        if ( is_feed() && in_array( get_query_var('feed'), $wp_rewrite->feeds ) ) {
                                $addl_path = !empty( $addl_path ) ? trailingslashit($addl_path) : '';
                        $addl_path = '';
                        if ( is_feed() && in_array( get_query_var('feed'), $wp_rewrite->feeds ) ) {
                                $addl_path = !empty( $addl_path ) ? trailingslashit($addl_path) : '';
-                               if ( get_query_var( 'withcomments' ) )
+                               if ( !is_singular() && get_query_var( 'withcomments' ) )
                                        $addl_path .= 'comments/';
                                if ( ( 'rss' == get_default_feed() && 'feed' == get_query_var('feed') ) || 'rss' == get_query_var('feed') )
                                        $addl_path .= user_trailingslashit( 'feed/' . ( ( get_default_feed() == 'rss2' ) ? '' : 'rss2' ), 'feed' );
                                        $addl_path .= 'comments/';
                                if ( ( 'rss' == get_default_feed() && 'feed' == get_query_var('feed') ) || 'rss' == get_query_var('feed') )
                                        $addl_path .= user_trailingslashit( 'feed/' . ( ( get_default_feed() == 'rss2' ) ? '' : 'rss2' ), 'feed' );
@@ -265,6 +277,15 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
                                $redirect['path'] = trailingslashit($redirect['path']) . $addl_path;
                        $redirect_url = $redirect['scheme'] . '://' . $redirect['host'] . $redirect['path'];
                }
                                $redirect['path'] = trailingslashit($redirect['path']) . $addl_path;
                        $redirect_url = $redirect['scheme'] . '://' . $redirect['host'] . $redirect['path'];
                }
+
+               if ( 'wp-register.php' == basename( $redirect['path'] ) ) {
+                       if ( is_multisite() )
+                               $redirect_url = apply_filters( 'wp_signup_location', site_url( 'wp-signup.php' ) );
+                       else
+                               $redirect_url = site_url( 'wp-login.php?action=register' );
+                       wp_redirect( $redirect_url, 301 );
+                       die();
+               }
        }
 
        // tack on any additional query vars
        }
 
        // tack on any additional query vars
@@ -280,7 +301,7 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
                                unset( $_parsed_query['name'] );
                }
 
                                unset( $_parsed_query['name'] );
                }
 
-               $_parsed_query = array_map( 'rawurlencode', $_parsed_query );
+               $_parsed_query = rawurlencode_deep( $_parsed_query );
                $redirect_url = add_query_arg( $_parsed_query, $redirect_url );
        }
 
                $redirect_url = add_query_arg( $_parsed_query, $redirect_url );
        }
 
@@ -395,7 +416,7 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
                $requested_url = preg_replace_callback('|%[a-fA-F0-9][a-fA-F0-9]|', 'lowercase_octets', $requested_url);
        }
 
                $requested_url = preg_replace_callback('|%[a-fA-F0-9][a-fA-F0-9]|', 'lowercase_octets', $requested_url);
        }
 
-       // Note that you can use the "redirect_canonical" filter to cancel a canonical redirect for whatever reason by returning FALSE
+       // Note that you can use the "redirect_canonical" filter to cancel a canonical redirect for whatever reason by returning false
        $redirect_url = apply_filters('redirect_canonical', $redirect_url, $requested_url);
 
        if ( !$redirect_url || $redirect_url == $requested_url ) // yes, again -- in case the filter aborted the request
        $redirect_url = apply_filters('redirect_canonical', $redirect_url, $requested_url);
 
        if ( !$redirect_url || $redirect_url == $requested_url ) // yes, again -- in case the filter aborted the request
@@ -417,38 +438,112 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
 }
 
 /**
 }
 
 /**
- * Attempts to guess correct post based on query vars.
+ * Removes arguments from a query string if they are not present in a URL
+ * DO NOT use this in plugin code.
+ *
+ * @since 3.4
+ * @access private
+ *
+ * @return string The altered query string
+ */
+function _remove_qs_args_if_not_in_url( $query_string, Array $args_to_check, $url ) {
+       $parsed_url = @parse_url( $url );
+       if ( ! empty( $parsed_url['query'] ) ) {
+               parse_str( $parsed_url['query'], $parsed_query );
+               foreach ( $args_to_check as $qv ) {
+                       if ( !isset( $parsed_query[$qv] ) )
+                               $query_string = remove_query_arg( $qv, $query_string );
+               }
+       } else {
+               $query_string = remove_query_arg( $args_to_check, $query_string );
+       }
+       return $query_string;
+}
+
+/**
+ * Attempts to guess the correct URL from the current URL (that produced a 404) or
+ * the current query variables.
  *
  * @since 2.3.0
  * @uses $wpdb
  *
  *
  * @since 2.3.0
  * @uses $wpdb
  *
- * @return bool|string Returns False, if it can't find post, returns correct
- *             location on success.
+ * @param string $current_url Optional. The URL that has 404'd.
+ * @return bool|string The correct URL if one is found. False on failure.
  */
  */
-function redirect_guess_404_permalink() {
-       global $wpdb;
+function redirect_guess_404_permalink( $current_url = '' ) {
+       global $wpdb, $wp_rewrite;
+
+       if ( ! empty( $current_url ) )
+               $parsed_url = @parse_url( $current_url );
+
+       // Attempt to redirect bare category slugs if the permalink structure starts
+       // with the %category% tag.
+       if ( isset( $parsed_url['path'] )
+               && preg_match( '#^[^%]+%category%#', $wp_rewrite->permalink_structure )
+               && $cat = get_category_by_path( $parsed_url['path'] )
+       ) {
+               if ( ! is_wp_error( $cat ) )
+                       return get_term_link( $cat );
+       }
 
 
-       if ( !get_query_var('name') )
-               return false;
+       if ( get_query_var('name') ) {
+               $where = $wpdb->prepare("post_name LIKE %s", like_escape( get_query_var('name') ) . '%');
 
 
-       $where = $wpdb->prepare("post_name LIKE %s", like_escape( get_query_var('name') ) . '%');
+               // if any of post_type, year, monthnum, or day are set, use them to refine the query
+               if ( get_query_var('post_type') )
+                       $where .= $wpdb->prepare(" AND post_type = %s", get_query_var('post_type'));
+               else
+                       $where .= " AND post_type IN ('" . implode( "', '", get_post_types( array( 'public' => true ) ) ) . "')";
 
 
-       // if any of post_type, year, monthnum, or day are set, use them to refine the query
-       if ( get_query_var('post_type') )
-               $where .= $wpdb->prepare(" AND post_type = %s", get_query_var('post_type'));
-       if ( get_query_var('year') )
-               $where .= $wpdb->prepare(" AND YEAR(post_date) = %d", get_query_var('year'));
-       if ( get_query_var('monthnum') )
-               $where .= $wpdb->prepare(" AND MONTH(post_date) = %d", get_query_var('monthnum'));
-       if ( get_query_var('day') )
-               $where .= $wpdb->prepare(" AND DAYOFMONTH(post_date) = %d", get_query_var('day'));
+               if ( get_query_var('year') )
+                       $where .= $wpdb->prepare(" AND YEAR(post_date) = %d", get_query_var('year'));
+               if ( get_query_var('monthnum') )
+                       $where .= $wpdb->prepare(" AND MONTH(post_date) = %d", get_query_var('monthnum'));
+               if ( get_query_var('day') )
+                       $where .= $wpdb->prepare(" AND DAYOFMONTH(post_date) = %d", get_query_var('day'));
 
 
-       $post_id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE $where AND post_status = 'publish'");
-       if ( !$post_id )
-               return false;
-       return get_permalink($post_id);
+               $post_id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE $where AND post_status = 'publish'");
+               if ( ! $post_id )
+                       return false;
+               if ( get_query_var( 'feed' ) )
+                       return get_post_comments_feed_link( $post_id, get_query_var( 'feed' ) );
+               elseif ( get_query_var( 'page' ) )
+                       return trailingslashit( get_permalink( $post_id ) ) . user_trailingslashit( get_query_var( 'page' ), 'single_paged' );
+               else
+                       return get_permalink( $post_id );
+       }
+
+       return false;
 }
 
 add_action('template_redirect', 'redirect_canonical');
 
 }
 
 add_action('template_redirect', 'redirect_canonical');
 
-?>
+function wp_redirect_admin_locations() {
+       global $wp_rewrite;
+       if ( ! ( is_404() && $wp_rewrite->using_permalinks() ) )
+               return;
+
+       $admins = array(
+               home_url( 'wp-admin', 'relative' ),
+               home_url( 'dashboard', 'relative' ),
+               home_url( 'admin', 'relative' ),
+               site_url( 'dashboard', 'relative' ),
+               site_url( 'admin', 'relative' ),
+       );
+       if ( in_array( untrailingslashit( $_SERVER['REQUEST_URI'] ), $admins ) ) {
+               wp_redirect( admin_url() );
+               exit;
+       }
+
+       $logins = array(
+               home_url( 'wp-login.php', 'relative' ),
+               home_url( 'login', 'relative' ),
+               site_url( 'login', 'relative' ),
+       );
+       if ( in_array( untrailingslashit( $_SERVER['REQUEST_URI'] ), $logins ) ) {
+               wp_redirect( site_url( 'wp-login.php', 'login' ) );
+               exit;
+       }
+}
+
+add_action( 'template_redirect', 'wp_redirect_admin_locations', 1000 );
index 19bdaa48a06803a036f9942d2e5128ded42bb2ab..d77cfea8e818833b27a5ff060f8927e728d2b581 100644 (file)
@@ -598,6 +598,18 @@ class WP_User {
                $this->data->$key = $value;
        }
 
                $this->data->$key = $value;
        }
 
+       /**
+        * Determine whether the user exists in the database.
+        *
+        * @since 3.4.0
+        * @access public
+        *
+        * @return bool True if user exists in the database, false if not.
+        */
+       function exists() {
+               return ! empty( $this->ID );
+       }
+
        /**
         * Retrieve the value of a property or meta key.
         *
        /**
         * Retrieve the value of a property or meta key.
         *
@@ -841,13 +853,12 @@ class WP_User {
         *
         * This is useful for looking up whether the user has a specific role
         * assigned to the user. The second optional parameter can also be used to
         *
         * This is useful for looking up whether the user has a specific role
         * assigned to the user. The second optional parameter can also be used to
-        * check for capabilities against a specific post.
+        * check for capabilities against a specific object, such as a post or user.
         *
         * @since 2.0.0
         * @access public
         *
         * @param string|int $cap Capability or role name to search.
         *
         * @since 2.0.0
         * @access public
         *
         * @param string|int $cap Capability or role name to search.
-        * @param int $post_id Optional. Post ID to check capability against specific post.
         * @return bool True, if user has capability; false, if user does not have capability.
         */
        function has_cap( $cap ) {
         * @return bool True, if user has capability; false, if user does not have capability.
         */
        function has_cap( $cap ) {
@@ -1065,7 +1076,8 @@ function map_meta_cap( $cap, $user_id ) {
                        break;
                }
 
                        break;
                }
 
-               if ( 'private' != $post->post_status ) {
+               $status_obj = get_post_status_object( $post->post_status );
+               if ( $status_obj->public ) {
                        $caps[] = $post_type->cap->read;
                        break;
                }
                        $caps[] = $post_type->cap->read;
                        break;
                }
@@ -1079,8 +1091,10 @@ function map_meta_cap( $cap, $user_id ) {
 
                if ( is_object( $post_author_data ) && $user_id == $post_author_data->ID )
                        $caps[] = $post_type->cap->read;
 
                if ( is_object( $post_author_data ) && $user_id == $post_author_data->ID )
                        $caps[] = $post_type->cap->read;
-               else
+               elseif ( $status_obj->private )
                        $caps[] = $post_type->cap->read_private_posts;
                        $caps[] = $post_type->cap->read_private_posts;
+               else
+                       $caps = map_meta_cap( 'edit_post', $user_id, $post->ID );
                break;
        case 'edit_post_meta':
        case 'delete_post_meta':
                break;
        case 'edit_post_meta':
        case 'delete_post_meta':
@@ -1112,6 +1126,13 @@ function map_meta_cap( $cap, $user_id ) {
                else
                        $caps[] = 'do_not_allow';
                break;
                else
                        $caps[] = 'do_not_allow';
                break;
+       case 'unfiltered_html' :
+               // Disallow unfiltered_html for all users, even admins and super admins.
+               if ( defined( 'DISALLOW_UNFILTERED_HTML' ) && DISALLOW_UNFILTERED_HTML )
+                       $caps[] = 'do_not_allow';
+               else
+                       $caps[] = $cap;
+               break;
        case 'edit_files':
        case 'edit_plugins':
        case 'edit_themes':
        case 'edit_files':
        case 'edit_plugins':
        case 'edit_themes':
@@ -1134,13 +1155,6 @@ function map_meta_cap( $cap, $user_id ) {
                        break;
                }
                // Fall through if not DISALLOW_FILE_MODS.
                        break;
                }
                // Fall through if not DISALLOW_FILE_MODS.
-       case 'unfiltered_html':
-               // Disallow unfiltered_html for all users, even admins and super admins.
-               if ( defined('DISALLOW_UNFILTERED_HTML') && DISALLOW_UNFILTERED_HTML ) {
-                       $caps[] = 'do_not_allow';
-                       break;
-               }
-               // Fall through if not DISALLOW_UNFILTERED_HTML
        case 'delete_user':
        case 'delete_users':
                // If multisite these caps are allowed only for super admins.
        case 'delete_user':
        case 'delete_users':
                // If multisite these caps are allowed only for super admins.
@@ -1213,7 +1227,7 @@ function current_user_can_for_blog( $blog_id, $capability ) {
        // Create new object to avoid stomping the global current_user.
        $user = new WP_User( $current_user->ID) ;
 
        // Create new object to avoid stomping the global current_user.
        $user = new WP_User( $current_user->ID) ;
 
-       // Set the blog id.  @todo add blog id arg to WP_User constructor?
+       // Set the blog id. @todo add blog id arg to WP_User constructor?
        $user->for_blog( $blog_id );
 
        $args = array_slice( func_get_args(), 2 );
        $user->for_blog( $blog_id );
 
        $args = array_slice( func_get_args(), 2 );
@@ -1259,7 +1273,7 @@ function user_can( $user, $capability ) {
        if ( ! is_object( $user ) )
                $user = new WP_User( $user );
 
        if ( ! is_object( $user ) )
                $user = new WP_User( $user );
 
-       if ( ! $user || ! $user->ID )
+       if ( ! $user || ! $user->exists() )
                return false;
 
        $args = array_slice( func_get_args(), 2 );
                return false;
 
        $args = array_slice( func_get_args(), 2 );
@@ -1356,7 +1370,7 @@ function is_super_admin( $user_id = false ) {
        else
                $user = wp_get_current_user();
 
        else
                $user = wp_get_current_user();
 
-       if ( empty( $user->ID ) )
+       if ( ! $user->exists() )
                return false;
 
        if ( is_multisite() ) {
                return false;
 
        if ( is_multisite() ) {
@@ -1370,5 +1384,3 @@ function is_super_admin( $user_id = false ) {
 
        return false;
 }
 
        return false;
 }
-
-?>
index 2be9eed7934b096057b5940c48f958e920ead5d4..2e23f8a3feabb751dad6caa78cc8347b97df16e8 100644 (file)
@@ -56,7 +56,7 @@ function get_category_parents( $id, $link = false, $separator = '/', $nicename =
        }
 
        if ( $link )
        }
 
        if ( $link )
-               $chain .= '<a href="' . get_category_link( $parent->term_id ) . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $parent->name ) ) . '">'.$name.'</a>' . $separator;
+               $chain .= '<a href="' . esc_url( get_category_link( $parent->term_id ) ) . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $parent->name ) ) . '">'.$name.'</a>' . $separator;
        else
                $chain .= $name.$separator;
        return $chain;
        else
                $chain .= $name.$separator;
        return $chain;
@@ -153,10 +153,10 @@ function get_the_category_by_ID( $cat_ID ) {
  */
 function get_the_category_list( $separator = '', $parents='', $post_id = false ) {
        global $wp_rewrite;
  */
 function get_the_category_list( $separator = '', $parents='', $post_id = false ) {
        global $wp_rewrite;
-       $categories = get_the_category( $post_id );
-       if ( !is_object_in_taxonomy( get_post_type( $post_id ), 'category' ) )
+       if ( ! is_object_in_taxonomy( get_post_type( $post_id ), 'category' ) )
                return apply_filters( 'the_category', '', $separator, $parents );
 
                return apply_filters( 'the_category', '', $separator, $parents );
 
+       $categories = get_the_category( $post_id );
        if ( empty( $categories ) )
                return apply_filters( 'the_category', __( 'Uncategorized' ), $separator, $parents );
 
        if ( empty( $categories ) )
                return apply_filters( 'the_category', __( 'Uncategorized' ), $separator, $parents );
 
@@ -171,17 +171,17 @@ function get_the_category_list( $separator = '', $parents='', $post_id = false )
                                case 'multiple':
                                        if ( $category->parent )
                                                $thelist .= get_category_parents( $category->parent, true, $separator );
                                case 'multiple':
                                        if ( $category->parent )
                                                $thelist .= get_category_parents( $category->parent, true, $separator );
-                                       $thelist .= '<a href="' . get_category_link( $category->term_id ) . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $category->name ) ) . '" ' . $rel . '>' . $category->name.'</a></li>';
+                                       $thelist .= '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $category->name ) ) . '" ' . $rel . '>' . $category->name.'</a></li>';
                                        break;
                                case 'single':
                                        break;
                                case 'single':
-                                       $thelist .= '<a href="' . get_category_link( $category->term_id ) . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $category->name ) ) . '" ' . $rel . '>';
+                                       $thelist .= '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $category->name ) ) . '" ' . $rel . '>';
                                        if ( $category->parent )
                                                $thelist .= get_category_parents( $category->parent, false, $separator );
                                        $thelist .= $category->name.'</a></li>';
                                        break;
                                case '':
                                default:
                                        if ( $category->parent )
                                                $thelist .= get_category_parents( $category->parent, false, $separator );
                                        $thelist .= $category->name.'</a></li>';
                                        break;
                                case '':
                                default:
-                                       $thelist .= '<a href="' . get_category_link( $category->term_id ) . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $category->name ) ) . '" ' . $rel . '>' . $category->name.'</a></li>';
+                                       $thelist .= '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $category->name ) ) . '" ' . $rel . '>' . $category->name.'</a></li>';
                        }
                }
                $thelist .= '</ul>';
                        }
                }
                $thelist .= '</ul>';
@@ -194,17 +194,17 @@ function get_the_category_list( $separator = '', $parents='', $post_id = false )
                                case 'multiple':
                                        if ( $category->parent )
                                                $thelist .= get_category_parents( $category->parent, true, $separator );
                                case 'multiple':
                                        if ( $category->parent )
                                                $thelist .= get_category_parents( $category->parent, true, $separator );
-                                       $thelist .= '<a href="' . get_category_link( $category->term_id ) . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $category->name ) ) . '" ' . $rel . '>' . $category->name.'</a>';
+                                       $thelist .= '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $category->name ) ) . '" ' . $rel . '>' . $category->name.'</a>';
                                        break;
                                case 'single':
                                        break;
                                case 'single':
-                                       $thelist .= '<a href="' . get_category_link( $category->term_id ) . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $category->name ) ) . '" ' . $rel . '>';
+                                       $thelist .= '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $category->name ) ) . '" ' . $rel . '>';
                                        if ( $category->parent )
                                                $thelist .= get_category_parents( $category->parent, false, $separator );
                                        $thelist .= "$category->name</a>";
                                        break;
                                case '':
                                default:
                                        if ( $category->parent )
                                                $thelist .= get_category_parents( $category->parent, false, $separator );
                                        $thelist .= "$category->name</a>";
                                        break;
                                case '':
                                default:
-                                       $thelist .= '<a href="' . get_category_link( $category->term_id ) . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $category->name ) ) . '" ' . $rel . '>' . $category->name.'</a>';
+                                       $thelist .= '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $category->name ) ) . '" ' . $rel . '>' . $category->name.'</a>';
                        }
                        ++$i;
                }
                        }
                        ++$i;
                }
@@ -212,7 +212,6 @@ function get_the_category_list( $separator = '', $parents='', $post_id = false )
        return apply_filters( 'the_category', $thelist, $separator, $parents );
 }
 
        return apply_filters( 'the_category', $thelist, $separator, $parents );
 }
 
-
 /**
  * Check if the current post in within any of the given categories.
  *
 /**
  * Check if the current post in within any of the given categories.
  *
@@ -228,7 +227,7 @@ function get_the_category_list( $separator = '', $parents='', $post_id = false )
  * @since 1.2.0
  *
  * @param int|string|array $category Category ID, name or slug, or array of said.
  * @since 1.2.0
  *
  * @param int|string|array $category Category ID, name or slug, or array of said.
- * @param int|object $_post Optional. Post to check instead of the current post. (since 2.7.0)
+ * @param int|object $post Optional. Post to check instead of the current post. (since 2.7.0)
  * @return bool True if the current post is in any of the given categories.
  */
 function in_category( $category, $post = null ) {
  * @return bool True if the current post is in any of the given categories.
  */
 function in_category( $category, $post = null ) {
@@ -272,7 +271,6 @@ function category_description( $category = 0 ) {
  *     'orderby' (string) default is 'ID' - What column to use for ordering the
  * categories.
  *     'order' (string) default is 'ASC' - What direction to order categories.
  *     'orderby' (string) default is 'ID' - What column to use for ordering the
  * categories.
  *     'order' (string) default is 'ASC' - What direction to order categories.
- *     'show_last_update' (bool|int) default is 0 - See {@link get_categories()}
  *     'show_count' (bool|int) default is 0 - Whether to show how many posts are
  * in the category.
  *     'hide_empty' (bool|int) default is 1 - Whether to hide categories that
  *     'show_count' (bool|int) default is 0 - Whether to show how many posts are
  * in the category.
  *     'hide_empty' (bool|int) default is 1 - Whether to hide categories that
@@ -302,7 +300,7 @@ function wp_dropdown_categories( $args = '' ) {
        $defaults = array(
                'show_option_all' => '', 'show_option_none' => '',
                'orderby' => 'id', 'order' => 'ASC',
        $defaults = array(
                'show_option_all' => '', 'show_option_none' => '',
                'orderby' => 'id', 'order' => 'ASC',
-               'show_last_update' => 0, 'show_count' => 0,
+               'show_count' => 0,
                'hide_empty' => 1, 'child_of' => 0,
                'exclude' => '', 'echo' => 1,
                'selected' => 0, 'hierarchical' => 0,
                'hide_empty' => 1, 'child_of' => 0,
                'exclude' => '', 'echo' => 1,
                'selected' => 0, 'hierarchical' => 0,
@@ -326,7 +324,6 @@ function wp_dropdown_categories( $args = '' ) {
                $r['pad_counts'] = true;
        }
 
                $r['pad_counts'] = true;
        }
 
-       $r['include_last_update_time'] = $r['show_last_update'];
        extract( $r );
 
        $tab_index_attribute = '';
        extract( $r );
 
        $tab_index_attribute = '';
@@ -369,10 +366,10 @@ function wp_dropdown_categories( $args = '' ) {
 
                $output .= walk_category_dropdown_tree( $categories, $depth, $r );
        }
 
                $output .= walk_category_dropdown_tree( $categories, $depth, $r );
        }
+
        if ( ! $r['hide_if_empty'] || ! empty($categories) )
                $output .= "</select>\n";
 
        if ( ! $r['hide_if_empty'] || ! empty($categories) )
                $output .= "</select>\n";
 
-
        $output = apply_filters( 'wp_dropdown_cats', $output );
 
        if ( $echo )
        $output = apply_filters( 'wp_dropdown_cats', $output );
 
        if ( $echo )
@@ -389,8 +386,6 @@ function wp_dropdown_categories( $args = '' ) {
  *     'orderby' (string) default is 'ID' - What column to use for ordering the
  * categories.
  *     'order' (string) default is 'ASC' - What direction to order categories.
  *     'orderby' (string) default is 'ID' - What column to use for ordering the
  * categories.
  *     'order' (string) default is 'ASC' - What direction to order categories.
- *     'show_last_update' (bool|int) default is 0 - See {@link
- * walk_category_dropdown_tree()}
  *     'show_count' (bool|int) default is 0 - Whether to show how many posts are
  * in the category.
  *     'hide_empty' (bool|int) default is 1 - Whether to hide categories that
  *     'show_count' (bool|int) default is 0 - Whether to show how many posts are
  * in the category.
  *     'hide_empty' (bool|int) default is 1 - Whether to hide categories that
@@ -418,7 +413,7 @@ function wp_list_categories( $args = '' ) {
        $defaults = array(
                'show_option_all' => '', 'show_option_none' => __('No categories'),
                'orderby' => 'name', 'order' => 'ASC',
        $defaults = array(
                'show_option_all' => '', 'show_option_none' => __('No categories'),
                'orderby' => 'name', 'order' => 'ASC',
-               'show_last_update' => 0, 'style' => 'list',
+               'style' => 'list',
                'show_count' => 0, 'hide_empty' => 1,
                'use_desc_for_title' => 1, 'child_of' => 0,
                'feed' => '', 'feed_type' => '',
                'show_count' => 0, 'hide_empty' => 1,
                'use_desc_for_title' => 1, 'child_of' => 0,
                'feed' => '', 'feed_type' => '',
@@ -434,9 +429,6 @@ function wp_list_categories( $args = '' ) {
        if ( !isset( $r['pad_counts'] ) && $r['show_count'] && $r['hierarchical'] )
                $r['pad_counts'] = true;
 
        if ( !isset( $r['pad_counts'] ) && $r['show_count'] && $r['hierarchical'] )
                $r['pad_counts'] = true;
 
-       if ( isset( $r['show_date'] ) )
-               $r['include_last_update_time'] = $r['show_date'];
-
        if ( true == $r['hierarchical'] ) {
                $r['exclude_tree'] = $r['exclude'];
                $r['exclude'] = '';
        if ( true == $r['hierarchical'] ) {
                $r['exclude_tree'] = $r['exclude'];
                $r['exclude'] = '';
@@ -581,7 +573,6 @@ function default_topic_count_scale( $count ) {
        return round(log10($count + 1) * 100);
 }
 
        return round(log10($count + 1) * 100);
 }
 
-
 /**
  * Generates a tag cloud (heatmap) from provided data.
  *
 /**
  * Generates a tag cloud (heatmap) from provided data.
  *
@@ -614,7 +605,6 @@ function default_topic_count_scale( $count ) {
  * @return string
  */
 function wp_generate_tag_cloud( $tags, $args = '' ) {
  * @return string
  */
 function wp_generate_tag_cloud( $tags, $args = '' ) {
-       global $wp_rewrite;
        $defaults = array(
                'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 0,
                'format' => 'flat', 'separator' => "\n", 'orderby' => 'name', 'order' => 'ASC',
        $defaults = array(
                'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 0,
                'format' => 'flat', 'separator' => "\n", 'orderby' => 'name', 'order' => 'ASC',
@@ -682,7 +672,7 @@ function wp_generate_tag_cloud( $tags, $args = '' ) {
                $tag_id = isset($tags[ $key ]->id) ? $tags[ $key ]->id : $key;
                $tag_name = $tags[ $key ]->name;
                $a[] = "<a href='$tag_link' class='tag-link-$tag_id' title='" . esc_attr( call_user_func( $topic_count_text_callback, $real_count ) ) . "' style='font-size: " .
                $tag_id = isset($tags[ $key ]->id) ? $tags[ $key ]->id : $key;
                $tag_name = $tags[ $key ]->name;
                $a[] = "<a href='$tag_link' class='tag-link-$tag_id' title='" . esc_attr( call_user_func( $topic_count_text_callback, $real_count ) ) . "' style='font-size: " .
-                       ( $smallest + ( ( $count - $min_count ) * $font_step ) )
+                       str_replace( ',', '.', ( $smallest + ( ( $count - $min_count ) * $font_step ) ) )
                        . "$unit;'>$tag_name</a>";
        }
 
                        . "$unit;'>$tag_name</a>";
        }
 
@@ -797,7 +787,7 @@ class Walker_Category extends Walker {
         * @param int $depth Depth of category. Used for tab indentation.
         * @param array $args Will only append content if style argument value is 'list'.
         */
         * @param int $depth Depth of category. Used for tab indentation.
         * @param array $args Will only append content if style argument value is 'list'.
         */
-       function start_lvl(&$output, $depth, $args) {
+       function start_lvl( &$output, $depth = 0, $args = array() ) {
                if ( 'list' != $args['style'] )
                        return;
 
                if ( 'list' != $args['style'] )
                        return;
 
@@ -813,7 +803,7 @@ class Walker_Category extends Walker {
         * @param int $depth Depth of category. Used for tab indentation.
         * @param array $args Will only append content if style argument value is 'list'.
         */
         * @param int $depth Depth of category. Used for tab indentation.
         * @param array $args Will only append content if style argument value is 'list'.
         */
-       function end_lvl(&$output, $depth, $args) {
+       function end_lvl( &$output, $depth = 0, $args = array() ) {
                if ( 'list' != $args['style'] )
                        return;
 
                if ( 'list' != $args['style'] )
                        return;
 
@@ -830,12 +820,12 @@ class Walker_Category extends Walker {
         * @param int $depth Depth of category in reference to parents.
         * @param array $args
         */
         * @param int $depth Depth of category in reference to parents.
         * @param array $args
         */
-       function start_el(&$output, $category, $depth, $args) {
+       function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {
                extract($args);
 
                $cat_name = esc_attr( $category->name );
                $cat_name = apply_filters( 'list_cats', $cat_name, $category );
                extract($args);
 
                $cat_name = esc_attr( $category->name );
                $cat_name = apply_filters( 'list_cats', $cat_name, $category );
-               $link = '<a href="' . esc_attr( get_term_link($category) ) . '" ';
+               $link = '<a href="' . esc_url( get_term_link($category) ) . '" ';
                if ( $use_desc_for_title == 0 || empty($category->description) )
                        $link .= 'title="' . esc_attr( sprintf(__( 'View all posts filed under %s' ), $cat_name) ) . '"';
                else
                if ( $use_desc_for_title == 0 || empty($category->description) )
                        $link .= 'title="' . esc_attr( sprintf(__( 'View all posts filed under %s' ), $cat_name) ) . '"';
                else
@@ -849,7 +839,7 @@ class Walker_Category extends Walker {
                        if ( empty($feed_image) )
                                $link .= '(';
 
                        if ( empty($feed_image) )
                                $link .= '(';
 
-                       $link .= '<a href="' . get_term_feed_link( $category->term_id, $category->taxonomy, $feed_type ) . '"';
+                       $link .= '<a href="' . esc_url( get_term_feed_link( $category->term_id, $category->taxonomy, $feed_type ) ) . '"';
 
                        if ( empty($feed) ) {
                                $alt = ' alt="' . sprintf(__( 'Feed for all posts filed under %s' ), $cat_name ) . '"';
 
                        if ( empty($feed) ) {
                                $alt = ' alt="' . sprintf(__( 'Feed for all posts filed under %s' ), $cat_name ) . '"';
@@ -876,9 +866,6 @@ class Walker_Category extends Walker {
                if ( !empty($show_count) )
                        $link .= ' (' . intval($category->count) . ')';
 
                if ( !empty($show_count) )
                        $link .= ' (' . intval($category->count) . ')';
 
-               if ( !empty($show_date) )
-                       $link .= ' ' . gmdate('Y-m-d', $category->last_update_timestamp);
-
                if ( 'list' == $args['style'] ) {
                        $output .= "\t<li";
                        $class = 'cat-item cat-item-' . $category->term_id;
                if ( 'list' == $args['style'] ) {
                        $output .= "\t<li";
                        $class = 'cat-item cat-item-' . $category->term_id;
@@ -905,7 +892,7 @@ class Walker_Category extends Walker {
         * @param int $depth Depth of category. Not used.
         * @param array $args Only uses 'list' for whether should append to output.
         */
         * @param int $depth Depth of category. Not used.
         * @param array $args Only uses 'list' for whether should append to output.
         */
-       function end_el(&$output, $page, $depth, $args) {
+       function end_el( &$output, $page, $depth = 0, $args = array() ) {
                if ( 'list' != $args['style'] )
                        return;
 
                if ( 'list' != $args['style'] )
                        return;
 
@@ -944,9 +931,9 @@ class Walker_CategoryDropdown extends Walker {
         * @param string $output Passed by reference. Used to append additional content.
         * @param object $category Category data object.
         * @param int $depth Depth of category. Used for padding.
         * @param string $output Passed by reference. Used to append additional content.
         * @param object $category Category data object.
         * @param int $depth Depth of category. Used for padding.
-        * @param array $args Uses 'selected', 'show_count', and 'show_last_update' keys, if they exist.
+        * @param array $args Uses 'selected' and 'show_count' keys, if they exist.
         */
         */
-       function start_el(&$output, $category, $depth, $args) {
+       function start_el( &$output, $category, $depth, $args, $id = 0 ) {
                $pad = str_repeat('&nbsp;', $depth * 3);
 
                $cat_name = apply_filters('list_cats', $category->name, $category);
                $pad = str_repeat('&nbsp;', $depth * 3);
 
                $cat_name = apply_filters('list_cats', $category->name, $category);
@@ -957,10 +944,6 @@ class Walker_CategoryDropdown extends Walker {
                $output .= $pad.$cat_name;
                if ( $args['show_count'] )
                        $output .= '&nbsp;&nbsp;('. $category->count .')';
                $output .= $pad.$cat_name;
                if ( $args['show_count'] )
                        $output .= '&nbsp;&nbsp;('. $category->count .')';
-               if ( $args['show_last_update'] ) {
-                       $format = 'Y-m-d';
-                       $output .= '&nbsp;&nbsp;' . gmdate($format, $category->last_update_timestamp);
-               }
                $output .= "</option>\n";
        }
 }
                $output .= "</option>\n";
        }
 }
@@ -1012,10 +995,11 @@ function get_the_tags( $id = 0 ) {
  * @param string $before Optional. Before tags.
  * @param string $sep Optional. Between tags.
  * @param string $after Optional. After tags.
  * @param string $before Optional. Before tags.
  * @param string $sep Optional. Between tags.
  * @param string $after Optional. After tags.
+ * @param int $id Optional. Post ID. Defaults to the current post.
  * @return string
  */
  * @return string
  */
-function get_the_tag_list( $before = '', $sep = '', $after = '' ) {
-       return apply_filters( 'the_tags', get_the_term_list( 0, 'post_tag', $before, $sep, $after ), $before, $sep, $after);
+function get_the_tag_list( $before = '', $sep = '', $after = '', $id = 0 ) {
+       return apply_filters( 'the_tags', get_the_term_list( $id, 'post_tag', $before, $sep, $after ), $before, $sep, $after, $id );
 }
 
 /**
 }
 
 /**
@@ -1052,6 +1036,7 @@ function tag_description( $tag = 0 ) {
  * @since 2.8
  *
  * @param int $term Optional. Term ID. Will use global term ID by default.
  * @since 2.8
  *
  * @param int $term Optional. Term ID. Will use global term ID by default.
+ * @param string $taxonomy Optional taxonomy name. Defaults to 'post_tag'.
  * @return string Term description, available.
  */
 function term_description( $term = 0, $taxonomy = 'post_tag' ) {
  * @return string Term description, available.
  */
 function term_description( $term = 0, $taxonomy = 'post_tag' ) {
@@ -1069,17 +1054,17 @@ function term_description( $term = 0, $taxonomy = 'post_tag' ) {
  *
  * @since 2.5.0
  *
  *
  * @since 2.5.0
  *
- * @param int $id Post ID. Is not optional.
+ * @param int $id Post ID.
  * @param string $taxonomy Taxonomy name.
  * @return array|bool False on failure. Array of term objects on success.
  */
  * @param string $taxonomy Taxonomy name.
  * @return array|bool False on failure. Array of term objects on success.
  */
-function get_the_terms( $id = 0, $taxonomy ) {
+function get_the_terms( $id, $taxonomy ) {
        global $post;
 
        $id = (int) $id;
 
        if ( !$id ) {
        global $post;
 
        $id = (int) $id;
 
        if ( !$id ) {
-               if ( !$post->ID )
+               if ( empty( $post->ID ) )
                        return false;
                else
                        $id = (int) $post->ID;
                        return false;
                else
                        $id = (int) $post->ID;
@@ -1111,7 +1096,7 @@ function get_the_terms( $id = 0, $taxonomy ) {
  * @param string $after Optional. After list.
  * @return string
  */
  * @param string $after Optional. After list.
  * @return string
  */
-function get_the_term_list( $id = 0, $taxonomy, $before = '', $sep = '', $after = '' ) {
+function get_the_term_list( $id, $taxonomy, $before = '', $sep = '', $after = '' ) {
        $terms = get_the_terms( $id, $taxonomy );
 
        if ( is_wp_error( $terms ) )
        $terms = get_the_terms( $id, $taxonomy );
 
        if ( is_wp_error( $terms ) )
@@ -1124,7 +1109,7 @@ function get_the_term_list( $id = 0, $taxonomy, $before = '', $sep = '', $after
                $link = get_term_link( $term, $taxonomy );
                if ( is_wp_error( $link ) )
                        return $link;
                $link = get_term_link( $term, $taxonomy );
                if ( is_wp_error( $link ) )
                        return $link;
-               $term_links[] = '<a href="' . $link . '" rel="tag">' . $term->name . '</a>';
+               $term_links[] = '<a href="' . esc_url( $link ) . '" rel="tag">' . $term->name . '</a>';
        }
 
        $term_links = apply_filters( "term_links-$taxonomy", $term_links );
        }
 
        $term_links = apply_filters( "term_links-$taxonomy", $term_links );
@@ -1144,7 +1129,7 @@ function get_the_term_list( $id = 0, $taxonomy, $before = '', $sep = '', $after
  * @param string $after Optional. After list.
  * @return null|bool False on WordPress error. Returns null when displaying.
  */
  * @param string $after Optional. After list.
  * @return null|bool False on WordPress error. Returns null when displaying.
  */
-function the_terms( $id = 0, $taxonomy, $before = '', $sep = ', ', $after = '' ) {
+function the_terms( $id, $taxonomy, $before = '', $sep = ', ', $after = '' ) {
        $term_list = get_the_term_list( $id, $taxonomy, $before, $sep, $after );
 
        if ( is_wp_error( $term_list ) )
        $term_list = get_the_term_list( $id, $taxonomy, $before, $sep, $after );
 
        if ( is_wp_error( $term_list ) )
@@ -1153,13 +1138,12 @@ function the_terms( $id = 0, $taxonomy, $before = '', $sep = ', ', $after = '' )
        echo apply_filters('the_terms', $term_list, $taxonomy, $before, $sep, $after);
 }
 
        echo apply_filters('the_terms', $term_list, $taxonomy, $before, $sep, $after);
 }
 
-
 /**
  * Check if the current post has any of given category.
  *
  * @since 3.1.0
  *
 /**
  * Check if the current post has any of given category.
  *
  * @since 3.1.0
  *
- * @param string|int|array $tag Optional. The category name/term_id/slug or array of them to check for.
+ * @param string|int|array $category Optional. The category name/term_id/slug or array of them to check for.
  * @param int|object $post Optional. Post to check instead of the current post.
  * @return bool True if the current post has any of the given categories (or any category, if no category specified).
  */
  * @param int|object $post Optional. Post to check instead of the current post.
  * @return bool True if the current post has any of the given categories (or any category, if no category specified).
  */
@@ -1214,5 +1198,3 @@ function has_term( $term = '', $taxonomy = '', $post = null ) {
 
        return $r;
 }
 
        return $r;
 }
-
-?>
index 4d022774178209526d4fccf5f0c5e692c2ca9d6c..17283d01a9186b587bce76b76e7fb25d992a5a50 100644 (file)
@@ -160,7 +160,6 @@ function get_category_by_slug( $slug  ) {
        return $category;
 }
 
        return $category;
 }
 
-
 /**
  * Retrieve the ID of a category from its name.
  *
 /**
  * Retrieve the ID of a category from its name.
  *
@@ -176,7 +175,6 @@ function get_cat_ID( $cat_name='General' ) {
        return 0;
 }
 
        return 0;
 }
 
-
 /**
  * Retrieve the name of a category from its ID.
  *
 /**
  * Retrieve the name of a category from its ID.
  *
@@ -193,7 +191,6 @@ function get_cat_name( $cat_id ) {
        return $category->name;
 }
 
        return $category->name;
 }
 
-
 /**
  * Check if a category is an ancestor of another category.
  *
 /**
  * Check if a category is an ancestor of another category.
  *
@@ -207,20 +204,9 @@ function get_cat_name( $cat_id ) {
  * @return bool Whether $cat2 is child of $cat1
  */
 function cat_is_ancestor_of( $cat1, $cat2 ) {
  * @return bool Whether $cat2 is child of $cat1
  */
 function cat_is_ancestor_of( $cat1, $cat2 ) {
-       if ( ! isset($cat1->term_id) )
-               $cat1 = &get_category( $cat1 );
-       if ( ! isset($cat2->parent) )
-               $cat2 = &get_category( $cat2 );
-
-       if ( empty($cat1->term_id) || empty($cat2->parent) )
-               return false;
-       if ( $cat2->parent == $cat1->term_id )
-               return true;
-
-       return cat_is_ancestor_of( $cat1, get_category( $cat2->parent ) );
+       return term_is_ancestor_of( $cat1, $cat2, 'category' );
 }
 
 }
 
-
 /**
  * Sanitizes category data based on context.
  *
 /**
  * Sanitizes category data based on context.
  *
@@ -235,7 +221,6 @@ function sanitize_category( $category, $context = 'display' ) {
        return sanitize_term( $category, 'category', $context );
 }
 
        return sanitize_term( $category, 'category', $context );
 }
 
-
 /**
  * Sanitizes data in single category key field.
  *
 /**
  * Sanitizes data in single category key field.
  *
@@ -254,7 +239,6 @@ function sanitize_category_field( $field, $value, $cat_id, $context ) {
 
 /* Tags */
 
 
 /* Tags */
 
-
 /**
  * Retrieves all post tags.
  *
 /**
  * Retrieves all post tags.
  *
@@ -277,7 +261,6 @@ function &get_tags( $args = '' ) {
        return $tags;
 }
 
        return $tags;
 }
 
-
 /**
  * Retrieve post tag by tag ID or tag object.
  *
 /**
  * Retrieve post tag by tag ID or tag object.
  *
@@ -301,10 +284,8 @@ function &get_tag( $tag, $output = OBJECT, $filter = 'raw' ) {
        return get_term( $tag, 'post_tag', $output, $filter );
 }
 
        return get_term( $tag, 'post_tag', $output, $filter );
 }
 
-
 /* Cache */
 
 /* Cache */
 
-
 /**
  * Remove the category cache data based on ID.
  *
 /**
  * Remove the category cache data based on ID.
  *
@@ -317,7 +298,6 @@ function clean_category_cache( $id ) {
        clean_term_cache( $id, 'category' );
 }
 
        clean_term_cache( $id, 'category' );
 }
 
-
 /**
  * Update category structure to old pre 2.3 from new taxonomy structure.
  *
 /**
  * Update category structure to old pre 2.3 from new taxonomy structure.
  *
@@ -354,6 +334,3 @@ function _make_cat_compat( &$category ) {
                $category['category_parent'] = &$category['parent'];
        }
 }
                $category['category_parent'] = &$category['parent'];
        }
 }
-
-
-?>
index 9d89f0c58d7497c4f08a6644d8cd36b3afcc3880..64a60d46b31ed799fb52a0cdd1ef3bbfab35966b 100644 (file)
@@ -1061,5 +1061,3 @@ class IXR_ClientMulticall extends IXR_Client
         return parent::query('system.multicall', $this->calls);
     }
 }
         return parent::query('system.multicall', $this->calls);
     }
 }
-
-?>
index a68711c8cd95fa1f8a4b96482c45d9fcf6716eaa..31a13ea6d1ae040aaef4ceb86fa34c0876b884a4 100644 (file)
@@ -98,7 +98,6 @@ class WP_Http {
                        'filename' => null
                );
 
                        'filename' => null
                );
 
-
                // Pre-parse for the HEAD checks.
                $args = wp_parse_args( $args );
 
                // Pre-parse for the HEAD checks.
                $args = wp_parse_args( $args );
 
@@ -201,7 +200,7 @@ class WP_Http {
         * @param array $args Request arguments
         * @param string $url URL to Request
         *
         * @param array $args Request arguments
         * @param string $url URL to Request
         *
-        * @return string|false Class name for the first transport that claims to support the request.  False if no transport claims to support the request.
+        * @return string|false Class name for the first transport that claims to support the request. False if no transport claims to support the request.
         */
        public function _get_first_available_transport( $args, $url = null ) {
                $request_order = array( 'curl', 'streams', 'fsockopen' );
         */
        public function _get_first_available_transport( $args, $url = null ) {
                $request_order = array( 'curl', 'streams', 'fsockopen' );
@@ -535,8 +534,55 @@ class WP_Http {
                else
                        return !in_array( $check['host'], $accessible_hosts ); //Inverse logic, If its in the array, then we can't access it.
 
                else
                        return !in_array( $check['host'], $accessible_hosts ); //Inverse logic, If its in the array, then we can't access it.
 
+       }
+
+       static function make_absolute_url( $maybe_relative_path, $url ) {
+               if ( empty( $url ) )
+                       return $maybe_relative_path;
+
+               // Check for a scheme
+               if ( false !== strpos( $maybe_relative_path, '://' ) )
+                       return $maybe_relative_path;
+
+               if ( ! $url_parts = @parse_url( $url ) )
+                       return $maybe_relative_path;
+
+               if ( ! $relative_url_parts = @parse_url( $maybe_relative_path ) )
+                       return $maybe_relative_path;
+
+               $absolute_path = $url_parts['scheme'] . '://' . $url_parts['host'];
+               if ( isset( $url_parts['port'] ) )
+                       $absolute_path .= ':' . $url_parts['port'];
+
+               // Start off with the Absolute URL path
+               $path = ! empty( $url_parts['path'] ) ? $url_parts['path'] : '/';
+
+               // If the it's a root-relative path, then great
+               if ( ! empty( $relative_url_parts['path'] ) && '/' == $relative_url_parts['path'][0] ) {
+                       $path = $relative_url_parts['path'];
+
+               // Else it's a relative path
+               } elseif ( ! empty( $relative_url_parts['path'] ) ) {
+                       // Strip off any file components from the absolute path
+                       $path = substr( $path, 0, strrpos( $path, '/' ) + 1 );
+
+                       // Build the new path
+                       $path .= $relative_url_parts['path'];
 
 
+                       // Strip all /path/../ out of the path
+                       while ( strpos( $path, '../' ) > 1 ) {
+                               $path = preg_replace( '![^/]+/\.\./!', '', $path );
+                       }
+
+                       // Strip any final leading ../ from the path
+                       $path = preg_replace( '!^/(\.\./)+!', '', $path );
+               }
 
 
+               // Add the Query string
+               if ( ! empty( $relative_url_parts['query'] ) )
+                       $path .= '?' . $relative_url_parts['query'];
+
+               return $absolute_path . '/' . ltrim( $path, '/' );
        }
 }
 
        }
 }
 
@@ -733,7 +779,7 @@ class WP_Http_Fsockopen {
                // If location is found, then assume redirect and redirect to location.
                if ( isset($arrHeaders['headers']['location']) && 0 !== $r['_redirection'] ) {
                        if ( $r['redirection']-- > 0 ) {
                // If location is found, then assume redirect and redirect to location.
                if ( isset($arrHeaders['headers']['location']) && 0 !== $r['_redirection'] ) {
                        if ( $r['redirection']-- > 0 ) {
-                               return $this->request($arrHeaders['headers']['location'], $r);
+                               return $this->request( WP_HTTP::make_absolute_url( $arrHeaders['headers']['location'], $url ), $r);
                        } else {
                                return new WP_Error('http_request_failed', __('Too many redirects.'));
                        }
                        } else {
                                return new WP_Error('http_request_failed', __('Too many redirects.'));
                        }
@@ -1023,15 +1069,14 @@ class WP_Http_Curl {
                        }
                }
 
                        }
                }
 
-               $is_local = isset($args['local']) && $args['local'];
-               $ssl_verify = isset($args['sslverify']) && $args['sslverify'];
+               $is_local = isset($r['local']) && $r['local'];
+               $ssl_verify = isset($r['sslverify']) && $r['sslverify'];
                if ( $is_local )
                        $ssl_verify = apply_filters('https_local_ssl_verify', $ssl_verify);
                elseif ( ! $is_local )
                        $ssl_verify = apply_filters('https_ssl_verify', $ssl_verify);
 
                if ( $is_local )
                        $ssl_verify = apply_filters('https_local_ssl_verify', $ssl_verify);
                elseif ( ! $is_local )
                        $ssl_verify = apply_filters('https_ssl_verify', $ssl_verify);
 
-
-               // CURLOPT_TIMEOUT and CURLOPT_CONNECTTIMEOUT expect integers.  Have to use ceil since
+               // CURLOPT_TIMEOUT and CURLOPT_CONNECTTIMEOUT expect integers. Have to use ceil since
                // a value of 0 will allow an unlimited timeout.
                $timeout = (int) ceil( $r['timeout'] );
                curl_setopt( $handle, CURLOPT_CONNECTTIMEOUT, $timeout );
                // a value of 0 will allow an unlimited timeout.
                $timeout = (int) ceil( $r['timeout'] );
                curl_setopt( $handle, CURLOPT_CONNECTTIMEOUT, $timeout );
@@ -1042,7 +1087,9 @@ class WP_Http_Curl {
                curl_setopt( $handle, CURLOPT_SSL_VERIFYHOST, ( $ssl_verify === true ) ? 2 : false );
                curl_setopt( $handle, CURLOPT_SSL_VERIFYPEER, $ssl_verify );
                curl_setopt( $handle, CURLOPT_USERAGENT, $r['user-agent'] );
                curl_setopt( $handle, CURLOPT_SSL_VERIFYHOST, ( $ssl_verify === true ) ? 2 : false );
                curl_setopt( $handle, CURLOPT_SSL_VERIFYPEER, $ssl_verify );
                curl_setopt( $handle, CURLOPT_USERAGENT, $r['user-agent'] );
-               curl_setopt( $handle, CURLOPT_MAXREDIRS, $r['redirection'] );
+               // The option doesn't work with safe mode or when open_basedir is set, and there's a
+               // bug #17490 with redirected POST requests, so handle redirections outside Curl.
+               curl_setopt( $handle, CURLOPT_FOLLOWLOCATION, false );
 
                switch ( $r['method'] ) {
                        case 'HEAD':
 
                switch ( $r['method'] ) {
                        case 'HEAD':
@@ -1056,6 +1103,11 @@ class WP_Http_Curl {
                                curl_setopt( $handle, CURLOPT_CUSTOMREQUEST, 'PUT' );
                                curl_setopt( $handle, CURLOPT_POSTFIELDS, $r['body'] );
                                break;
                                curl_setopt( $handle, CURLOPT_CUSTOMREQUEST, 'PUT' );
                                curl_setopt( $handle, CURLOPT_POSTFIELDS, $r['body'] );
                                break;
+                       default:
+                               curl_setopt( $handle, CURLOPT_CUSTOMREQUEST, $r['method'] );
+                               if ( ! empty( $r['body'] ) )
+                                       curl_setopt( $handle, CURLOPT_POSTFIELDS, $r['body'] );
+                               break;
                }
 
                if ( true === $r['blocking'] )
                }
 
                if ( true === $r['blocking'] )
@@ -1074,10 +1126,6 @@ class WP_Http_Curl {
                        curl_setopt( $handle, CURLOPT_FILE, $stream_handle );
                }
 
                        curl_setopt( $handle, CURLOPT_FILE, $stream_handle );
                }
 
-               // The option doesn't work with safe mode or when open_basedir is set.
-               if ( !ini_get('safe_mode') && !ini_get('open_basedir') && 0 !== $r['_redirection'] )
-                       curl_setopt( $handle, CURLOPT_FOLLOWLOCATION, true );
-
                if ( !empty( $r['headers'] ) ) {
                        // cURL expects full header strings in each element
                        $headers = array();
                if ( !empty( $r['headers'] ) ) {
                        // cURL expects full header strings in each element
                        $headers = array();
@@ -1110,12 +1158,12 @@ class WP_Http_Curl {
                if ( strlen($theResponse) > 0 && ! is_bool( $theResponse ) ) // is_bool: when using $args['stream'], curl_exec will return (bool)true
                        $theBody = $theResponse;
 
                if ( strlen($theResponse) > 0 && ! is_bool( $theResponse ) ) // is_bool: when using $args['stream'], curl_exec will return (bool)true
                        $theBody = $theResponse;
 
-               // If no response, and It's not a HEAD request with valid headers returned
-               if ( 0 == strlen($theResponse) && ('HEAD' != $args['method'] || empty($this->headers)) ) {
-                       if ( $curl_error = curl_error($handle) )
-                               return new WP_Error('http_request_failed', $curl_error);
-                       if ( in_array( curl_getinfo( $handle, CURLINFO_HTTP_CODE ), array(301, 302) ) )
-                               return new WP_Error('http_request_failed', __('Too many redirects.'));
+               // If no response
+               if ( 0 == strlen( $theResponse ) && empty( $theHeaders['headers'] ) ) {
+                       if ( $curl_error = curl_error( $handle ) )
+                               return new WP_Error( 'http_request_failed', $curl_error );
+                       if ( in_array( curl_getinfo( $handle, CURLINFO_HTTP_CODE ), array( 301, 302 ) ) )
+                               return new WP_Error( 'http_request_failed', __( 'Too many redirects.' ) );
                }
 
                $this->headers = '';
                }
 
                $this->headers = '';
@@ -1130,9 +1178,9 @@ class WP_Http_Curl {
                        fclose( $stream_handle );
 
                // See #11305 - When running under safe mode, redirection is disabled above. Handle it manually.
                        fclose( $stream_handle );
 
                // See #11305 - When running under safe mode, redirection is disabled above. Handle it manually.
-               if ( ! empty( $theHeaders['headers']['location'] ) && ( ini_get( 'safe_mode' ) || ini_get( 'open_basedir' ) ) && 0 !== $r['_redirection'] ) {
+               if ( ! empty( $theHeaders['headers']['location'] ) && 0 !== $r['_redirection'] ) { // _redirection: The requested number of redirections
                        if ( $r['redirection']-- > 0 ) {
                        if ( $r['redirection']-- > 0 ) {
-                               return $this->request( $theHeaders['headers']['location'], $r );
+                               return $this->request( WP_HTTP::make_absolute_url( $theHeaders['headers']['location'], $url ), $r );
                        } else {
                                return new WP_Error( 'http_request_failed', __( 'Too many redirects.' ) );
                        }
                        } else {
                                return new WP_Error( 'http_request_failed', __( 'Too many redirects.' ) );
                        }
@@ -1494,7 +1542,7 @@ class WP_Http_Cookie {
         * @since 2.8.0
         *
         * @param string $url URL you intend to send this cookie to
         * @since 2.8.0
         *
         * @param string $url URL you intend to send this cookie to
-        * @return boolean TRUE if allowed, FALSE otherwise.
+        * @return boolean true if allowed, false otherwise.
         */
        function test( $url ) {
                // Expires - if expired then nothing else matters
         */
        function test( $url ) {
                // Expires - if expired then nothing else matters
@@ -1541,7 +1589,7 @@ class WP_Http_Cookie {
                if ( empty( $this->name ) || empty( $this->value ) )
                        return '';
 
                if ( empty( $this->name ) || empty( $this->value ) )
                        return '';
 
-               return $this->name . '=' . urlencode( $this->value );
+               return $this->name . '=' . apply_filters( 'wp_http_cookie_value', $this->value, $this->name );
        }
 
        /**
        }
 
        /**
index 75010df2070c55038f08ba88ed2c50d52a0c7a83..58f6f7de2863ade31832939646d5ae2f83e163ad 100644 (file)
@@ -860,4 +860,3 @@ if (class_exists('PEAR_Error')) {
 
 }
 endif;
 
 }
 endif;
-?>
index f79772caedaecdae37086c1a57f39a27357c509e..591f017363e15842a68ef2f94e4126c7cfef9c34 100644 (file)
@@ -30,23 +30,24 @@ class WP_oEmbed {
                // The WP_Embed class disables discovery for non-unfiltered_html users, so only providers in this array will be used for them.
                // Add to this list using the wp_oembed_add_provider() function (see its PHPDoc for details).
                $this->providers = apply_filters( 'oembed_providers', array(
                // The WP_Embed class disables discovery for non-unfiltered_html users, so only providers in this array will be used for them.
                // Add to this list using the wp_oembed_add_provider() function (see its PHPDoc for details).
                $this->providers = apply_filters( 'oembed_providers', array(
-                       '#http://(www\.)?youtube.com/watch.*#i'         => array( 'http://www.youtube.com/oembed',            true  ),
-                       'http://youtu.be/*'                             => array( 'http://www.youtube.com/oembed',            false ),
-                       'http://blip.tv/*'                              => array( 'http://blip.tv/oembed/',                   false ),
-                       '#http://(www\.)?vimeo\.com/.*#i'               => array( 'http://vimeo.com/api/oembed.{format}',     true  ),
-                       '#http://(www\.)?dailymotion\.com/.*#i'         => array( 'http://www.dailymotion.com/api/oembed',    true  ),
-                       '#http://(www\.)?flickr\.com/.*#i'              => array( 'http://www.flickr.com/services/oembed/',   true  ),
-                       '#http://(.+\.)?smugmug\.com/.*#i'              => array( 'http://api.smugmug.com/services/oembed/',  true  ),
-                       '#http://(www\.)?hulu\.com/watch/.*#i'          => array( 'http://www.hulu.com/api/oembed.{format}',  true  ),
-                       '#http://(www\.)?viddler\.com/.*#i'             => array( 'http://lab.viddler.com/services/oembed/',  true  ),
-                       'http://qik.com/*'                              => array( 'http://qik.com/api/oembed.{format}',       false ),
-                       'http://revision3.com/*'                        => array( 'http://revision3.com/api/oembed/',         false ),
-                       'http://i*.photobucket.com/albums/*'            => array( 'http://photobucket.com/oembed',            false ),
-                       'http://gi*.photobucket.com/groups/*'           => array( 'http://photobucket.com/oembed',            false ),
-                       '#http://(www\.)?scribd\.com/.*#i'              => array( 'http://www.scribd.com/services/oembed',    true  ),
-                       'http://wordpress.tv/*'                         => array( 'http://wordpress.tv/oembed/',              false ),
-                       '#http://(.+\.)?polldaddy\.com/.*#i'            => array( 'http://polldaddy.com/oembed/',             true  ),
-                       '#http://(www\.)?funnyordie\.com/videos/.*#i'   => array( 'http://www.funnyordie.com/oembed',         true  ),
+                       '#http://(www\.)?youtube.com/watch.*#i'              => array( 'http://www.youtube.com/oembed',                     true  ),
+                       'http://youtu.be/*'                                  => array( 'http://www.youtube.com/oembed',                     false ),
+                       'http://blip.tv/*'                                   => array( 'http://blip.tv/oembed/',                            false ),
+                       '#http://(www\.)?vimeo\.com/.*#i'                    => array( 'http://vimeo.com/api/oembed.{format}',              true  ),
+                       '#http://(www\.)?dailymotion\.com/.*#i'              => array( 'http://www.dailymotion.com/services/oembed',        true  ),
+                       '#http://(www\.)?flickr\.com/.*#i'                   => array( 'http://www.flickr.com/services/oembed/',            true  ),
+                       '#http://(.+\.)?smugmug\.com/.*#i'                   => array( 'http://api.smugmug.com/services/oembed/',           true  ),
+                       '#http://(www\.)?hulu\.com/watch/.*#i'               => array( 'http://www.hulu.com/api/oembed.{format}',           true  ),
+                       '#http://(www\.)?viddler\.com/.*#i'                  => array( 'http://lab.viddler.com/services/oembed/',           true  ),
+                       'http://qik.com/*'                                   => array( 'http://qik.com/api/oembed.{format}',                false ),
+                       'http://revision3.com/*'                             => array( 'http://revision3.com/api/oembed/',                  false ),
+                       'http://i*.photobucket.com/albums/*'                 => array( 'http://photobucket.com/oembed',                     false ),
+                       'http://gi*.photobucket.com/groups/*'                => array( 'http://photobucket.com/oembed',                     false ),
+                       '#http://(www\.)?scribd\.com/.*#i'                   => array( 'http://www.scribd.com/services/oembed',             true  ),
+                       'http://wordpress.tv/*'                              => array( 'http://wordpress.tv/oembed/',                       false ),
+                       '#http://(.+\.)?polldaddy\.com/.*#i'                 => array( 'http://polldaddy.com/oembed/',                      true  ),
+                       '#http://(www\.)?funnyordie\.com/videos/.*#i'        => array( 'http://www.funnyordie.com/oembed',                  true  ),
+                       '#https?://(www\.)?twitter.com/.+?/status(es)?/.*#i' => array( 'http://api.twitter.com/1/statuses/oembed.{format}', true  ),
                ) );
 
                // Fix any embeds that contain new lines in the middle of the HTML which breaks wpautop().
                ) );
 
                // Fix any embeds that contain new lines in the middle of the HTML which breaks wpautop().
@@ -226,28 +227,34 @@ class WP_oEmbed {
         * @return bool|string False on error, otherwise the HTML needed to embed.
         */
        function data2html( $data, $url ) {
         * @return bool|string False on error, otherwise the HTML needed to embed.
         */
        function data2html( $data, $url ) {
-               if ( !is_object($data) || empty($data->type) )
+               if ( ! is_object( $data ) || empty( $data->type ) )
                        return false;
 
                        return false;
 
+               $return = false;
+
                switch ( $data->type ) {
                        case 'photo':
                switch ( $data->type ) {
                        case 'photo':
-                               if ( empty($data->url) || empty($data->width) || empty($data->height) )
-                                       return false;
+                               if ( empty( $data->url ) || empty( $data->width ) || empty( $data->height ) )
+                                       break;
+                               if ( ! is_string( $data->url ) || ! is_numeric( $data->width ) || ! is_numeric( $data->height ) )
+                                       break;
 
 
-                               $title = ( !empty($data->title) ) ? $data->title : '';
+                               $title = ! empty( $data->title ) && is_string( $data->title ) ? $data->title : '';
                                $return = '<a href="' . esc_url( $url ) . '"><img src="' . esc_url( $data->url ) . '" alt="' . esc_attr($title) . '" width="' . esc_attr($data->width) . '" height="' . esc_attr($data->height) . '" /></a>';
                                break;
 
                        case 'video':
                        case 'rich':
                                $return = '<a href="' . esc_url( $url ) . '"><img src="' . esc_url( $data->url ) . '" alt="' . esc_attr($title) . '" width="' . esc_attr($data->width) . '" height="' . esc_attr($data->height) . '" /></a>';
                                break;
 
                        case 'video':
                        case 'rich':
-                               $return = ( !empty($data->html) ) ? $data->html : false;
+                               if ( ! empty( $data->html ) && is_string( $data->html ) )
+                                       $return = $data->html;
                                break;
 
                        case 'link':
                                break;
 
                        case 'link':
-                               $return = ( !empty($data->title) ) ? '<a href="' . esc_url($url) . '">' . esc_html($data->title) . '</a>' : false;
+                               if ( ! empty( $data->title ) && is_string( $data->title ) )
+                                       $return = '<a href="' . esc_url( $url ) . '">' . esc_html( $data->title ) . '</a>';
                                break;
 
                                break;
 
-                       default;
+                       default:
                                $return = false;
                }
 
                                $return = false;
                }
 
@@ -291,5 +298,3 @@ function &_wp_oembed_get_object() {
 
        return $wp_oembed;
 }
 
        return $wp_oembed;
 }
-
-?>
\ No newline at end of file
index 70de3de7202f04bcb80b77c607ead685519c8990..ba4ddb2eb339dd669828611e843f75eef424f077 100644 (file)
@@ -2,15 +2,15 @@
 /*~ class.phpmailer.php
 .---------------------------------------------------------------------------.
 |  Software: PHPMailer - PHP email class                                    |
 /*~ class.phpmailer.php
 .---------------------------------------------------------------------------.
 |  Software: PHPMailer - PHP email class                                    |
-|   Version: 5.1                                                            |
-|   Contact: via sourceforge.net support pages (also www.worxware.com)      |
-|      Info: http://phpmailer.sourceforge.net                               |
-|   Support: http://sourceforge.net/projects/phpmailer/                     |
+|   Version: 5.2.1                                                          |
+|      Site: https://code.google.com/a/apache-extras.org/p/phpmailer/       |
 | ------------------------------------------------------------------------- |
 | ------------------------------------------------------------------------- |
-|     Admin: Andy Prevost (project admininistrator)                         |
+|     Admin: Jim Jagielski (project admininistrator)                        |
 |   Authors: Andy Prevost (codeworxtech) codeworxtech@users.sourceforge.net |
 |          : Marcus Bointon (coolbru) coolbru@users.sourceforge.net         |
 |   Authors: Andy Prevost (codeworxtech) codeworxtech@users.sourceforge.net |
 |          : Marcus Bointon (coolbru) coolbru@users.sourceforge.net         |
+|          : Jim Jagielski (jimjag) jimjag@gmail.com                        |
 |   Founder: Brent R. Matzelle (original founder)                           |
 |   Founder: Brent R. Matzelle (original founder)                           |
+| Copyright (c) 2010-2012, Jim Jagielski. All Rights Reserved.              |
 | Copyright (c) 2004-2009, Andy Prevost. All Rights Reserved.               |
 | Copyright (c) 2001-2003, Brent R. Matzelle                                |
 | ------------------------------------------------------------------------- |
 | Copyright (c) 2004-2009, Andy Prevost. All Rights Reserved.               |
 | Copyright (c) 2001-2003, Brent R. Matzelle                                |
 | ------------------------------------------------------------------------- |
 | This program is distributed in the hope that it will be useful - WITHOUT  |
 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     |
 | FITNESS FOR A PARTICULAR PURPOSE.                                         |
 | This program is distributed in the hope that it will be useful - WITHOUT  |
 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     |
 | FITNESS FOR A PARTICULAR PURPOSE.                                         |
-| ------------------------------------------------------------------------- |
-| We offer a number of paid services (www.worxware.com):                    |
-| - Web Hosting on highly optimized fast and secure servers                 |
-| - Technology Consulting                                                   |
-| - Oursourcing (highly qualified programmers and graphic designers)        |
 '---------------------------------------------------------------------------'
 */
 
 '---------------------------------------------------------------------------'
 */
 
  * @package PHPMailer
  * @author Andy Prevost
  * @author Marcus Bointon
  * @package PHPMailer
  * @author Andy Prevost
  * @author Marcus Bointon
+ * @author Jim Jagielski
+ * @copyright 2010 - 2012 Jim Jagielski
  * @copyright 2004 - 2009 Andy Prevost
  * @copyright 2004 - 2009 Andy Prevost
- * @version $Id: class.phpmailer.php 447 2009-05-25 01:36:38Z codeworxtech $
+ * @version $Id: class.phpmailer.php 450 2010-06-23 16:46:33Z coolbru $
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
@@ -118,6 +115,27 @@ class PHPMailer {
    */
   public $AltBody           = '';
 
    */
   public $AltBody           = '';
 
+  /**
+   * Stores the complete compiled MIME message body.
+   * @var string
+   * @access protected
+   */
+  protected $MIMEBody       = '';
+
+  /**
+   * Stores the complete compiled MIME message headers.
+   * @var string
+   * @access protected
+   */
+  protected $MIMEHeader     = '';
+
+  /**
+   * Stores the complete sent MIME message (Body and Headers)
+   * @var string
+   * @access protected
+  */
+  protected $SentMIMEMessage     = '';
+
   /**
    * Sets word wrapping on the body of the message to a given number of
    * characters.
   /**
    * Sets word wrapping on the body of the message to a given number of
    * characters.
@@ -269,6 +287,12 @@ class PHPMailer {
    */
   public $DKIM_identity   = '';
 
    */
   public $DKIM_identity   = '';
 
+  /**
+   * Used with DKIM DNS Resource Record
+   * @var string
+   */
+  public $DKIM_passphrase   = '';
+
   /**
    * Used with DKIM DNS Resource Record
    * optional, in format of email address 'you@yourdomain.com'
   /**
    * Used with DKIM DNS Resource Record
    * optional, in format of email address 'you@yourdomain.com'
@@ -300,28 +324,34 @@ class PHPMailer {
    * Sets the PHPMailer Version number
    * @var string
    */
    * Sets the PHPMailer Version number
    * @var string
    */
-  public $Version         = '5.1';
+  public $Version         = '5.2.1';
+
+  /**
+   * What to use in the X-Mailer header
+   * @var string
+   */
+  public $XMailer         = '';
 
   /////////////////////////////////////////////////
   // PROPERTIES, PRIVATE AND PROTECTED
   /////////////////////////////////////////////////
 
 
   /////////////////////////////////////////////////
   // PROPERTIES, PRIVATE AND PROTECTED
   /////////////////////////////////////////////////
 
-  private   $smtp           = NULL;
-  private   $to             = array();
-  private   $cc             = array();
-  private   $bcc            = array();
-  private   $ReplyTo        = array();
-  private   $all_recipients = array();
-  private   $attachment     = array();
-  private   $CustomHeader   = array();
-  private   $message_type   = '';
-  private   $boundary       = array();
-  protected $language       = array();
-  private   $error_count    = 0;
-  private   $sign_cert_file = "";
-  private   $sign_key_file  = "";
-  private   $sign_key_pass  = "";
-  private   $exceptions     = false;
+  protected   $smtp           = NULL;
+  protected   $to             = array();
+  protected   $cc             = array();
+  protected   $bcc            = array();
+  protected   $ReplyTo        = array();
+  protected   $all_recipients = array();
+  protected   $attachment     = array();
+  protected   $CustomHeader   = array();
+  protected   $message_type   = '';
+  protected   $boundary       = array();
+  protected   $language       = array();
+  protected   $error_count    = 0;
+  protected   $sign_cert_file = '';
+  protected   $sign_key_file  = '';
+  protected   $sign_key_pass  = '';
+  protected   $exceptions     = false;
 
   /////////////////////////////////////////////////
   // CONSTANTS
 
   /////////////////////////////////////////////////
   // CONSTANTS
@@ -437,7 +467,7 @@ class PHPMailer {
    * @return boolean
    */
   public function AddReplyTo($address, $name = '') {
    * @return boolean
    */
   public function AddReplyTo($address, $name = '') {
-    return $this->AddAnAddress('ReplyTo', $address, $name);
+    return $this->AddAnAddress('Reply-To', $address, $name);
   }
 
   /**
   }
 
   /**
@@ -447,11 +477,17 @@ class PHPMailer {
    * @param string $address The email address to send to
    * @param string $name
    * @return boolean true on success, false if address already used or invalid in some way
    * @param string $address The email address to send to
    * @param string $name
    * @return boolean true on success, false if address already used or invalid in some way
-   * @access private
+   * @access protected
    */
    */
-  private function AddAnAddress($kind, $address, $name = '') {
-    if (!preg_match('/^(to|cc|bcc|ReplyTo)$/', $kind)) {
-      echo 'Invalid recipient array: ' . $kind;
+  protected function AddAnAddress($kind, $address, $name = '') {
+    if (!preg_match('/^(to|cc|bcc|Reply-To)$/', $kind)) {
+      $this->SetError($this->Lang('Invalid recipient array').': '.$kind);
+      if ($this->exceptions) {
+        throw new phpmailerException('Invalid recipient array: ' . $kind);
+      }
+         if ($this->SMTPDebug) {
+        echo $this->Lang('Invalid recipient array').': '.$kind;
+      }
       return false;
     }
     $address = trim($address);
       return false;
     }
     $address = trim($address);
@@ -461,10 +497,12 @@ class PHPMailer {
       if ($this->exceptions) {
         throw new phpmailerException($this->Lang('invalid_address').': '.$address);
       }
       if ($this->exceptions) {
         throw new phpmailerException($this->Lang('invalid_address').': '.$address);
       }
-      echo $this->Lang('invalid_address').': '.$address;
+         if ($this->SMTPDebug) {
+        echo $this->Lang('invalid_address').': '.$address;
+      }
       return false;
     }
       return false;
     }
-    if ($kind != 'ReplyTo') {
+    if ($kind != 'Reply-To') {
       if (!isset($this->all_recipients[strtolower($address)])) {
         array_push($this->$kind, array($address, $name));
         $this->all_recipients[strtolower($address)] = true;
       if (!isset($this->all_recipients[strtolower($address)])) {
         array_push($this->$kind, array($address, $name));
         $this->all_recipients[strtolower($address)] = true;
@@ -485,7 +523,7 @@ class PHPMailer {
  * @param string $name
  * @return boolean
  */
  * @param string $name
  * @return boolean
  */
-  public function SetFrom($address, $name = '',$auto=1) {
+  public function SetFrom($address, $name = '', $auto = 1) {
     $address = trim($address);
     $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
     if (!self::ValidateAddress($address)) {
     $address = trim($address);
     $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
     if (!self::ValidateAddress($address)) {
@@ -493,14 +531,16 @@ class PHPMailer {
       if ($this->exceptions) {
         throw new phpmailerException($this->Lang('invalid_address').': '.$address);
       }
       if ($this->exceptions) {
         throw new phpmailerException($this->Lang('invalid_address').': '.$address);
       }
-      echo $this->Lang('invalid_address').': '.$address;
+         if ($this->SMTPDebug) {
+        echo $this->Lang('invalid_address').': '.$address;
+      }
       return false;
     }
     $this->From = $address;
     $this->FromName = $name;
     if ($auto) {
       if (empty($this->ReplyTo)) {
       return false;
     }
     $this->From = $address;
     $this->FromName = $name;
     if ($auto) {
       if (empty($this->ReplyTo)) {
-        $this->AddAnAddress('ReplyTo', $address, $name);
+        $this->AddAnAddress('Reply-To', $address, $name);
       }
       if (empty($this->Sender)) {
         $this->Sender = $address;
       }
       if (empty($this->Sender)) {
         $this->Sender = $address;
@@ -544,6 +584,21 @@ class PHPMailer {
    */
   public function Send() {
     try {
    */
   public function Send() {
     try {
+      if(!$this->PreSend()) return false;
+      return $this->PostSend();
+    } catch (phpmailerException $e) {
+         $this->SentMIMEMessage = '';
+      $this->SetError($e->getMessage());
+      if ($this->exceptions) {
+        throw $e;
+      }
+      return false;
+    }
+  }
+
+  protected function PreSend() {
+    try {
+         $mailHeader = "";
       if ((count($this->to) + count($this->cc) + count($this->bcc)) < 1) {
         throw new phpmailerException($this->Lang('provide_address'), self::STOP_CRITICAL);
       }
       if ((count($this->to) + count($this->cc) + count($this->bcc)) < 1) {
         throw new phpmailerException($this->Lang('provide_address'), self::STOP_CRITICAL);
       }
@@ -555,27 +610,58 @@ class PHPMailer {
 
       $this->error_count = 0; // reset errors
       $this->SetMessageType();
 
       $this->error_count = 0; // reset errors
       $this->SetMessageType();
-      $header = $this->CreateHeader();
-      $body = $this->CreateBody();
-
+      //Refuse to send an empty message
       if (empty($this->Body)) {
         throw new phpmailerException($this->Lang('empty_message'), self::STOP_CRITICAL);
       }
 
       if (empty($this->Body)) {
         throw new phpmailerException($this->Lang('empty_message'), self::STOP_CRITICAL);
       }
 
+      $this->MIMEHeader = $this->CreateHeader();
+      $this->MIMEBody = $this->CreateBody();
+
+      // To capture the complete message when using mail(), create
+         // an extra header list which CreateHeader() doesn't fold in
+      if ($this->Mailer == 'mail') {
+        if (count($this->to) > 0) {
+          $mailHeader .= $this->AddrAppend("To", $this->to);
+        } else {
+          $mailHeader .= $this->HeaderLine("To", "undisclosed-recipients:;");
+        }
+        $mailHeader .= $this->HeaderLine('Subject', $this->EncodeHeader($this->SecureHeader(trim($this->Subject))));
+        // if(count($this->cc) > 0) {
+            // $mailHeader .= $this->AddrAppend("Cc", $this->cc);
+        // }
+      }
+
       // digitally sign with DKIM if enabled
       if ($this->DKIM_domain && $this->DKIM_private) {
       // digitally sign with DKIM if enabled
       if ($this->DKIM_domain && $this->DKIM_private) {
-        $header_dkim = $this->DKIM_Add($header,$this->Subject,$body);
-        $header = str_replace("\r\n","\n",$header_dkim) . $header;
+        $header_dkim = $this->DKIM_Add($this->MIMEHeader, $this->EncodeHeader($this->SecureHeader($this->Subject)), $this->MIMEBody);
+        $this->MIMEHeader = str_replace("\r\n", "\n", $header_dkim) . $this->MIMEHeader;
       }
 
       }
 
+      $this->SentMIMEMessage = sprintf("%s%s\r\n\r\n%s",$this->MIMEHeader,$mailHeader,$this->MIMEBody);
+      return true;
+
+    } catch (phpmailerException $e) {
+      $this->SetError($e->getMessage());
+      if ($this->exceptions) {
+        throw $e;
+      }
+      return false;
+    }
+  }
+
+  protected function PostSend() {
+    try {
       // Choose the mailer and send through it
       switch($this->Mailer) {
         case 'sendmail':
       // Choose the mailer and send through it
       switch($this->Mailer) {
         case 'sendmail':
-          return $this->SendmailSend($header, $body);
+          return $this->SendmailSend($this->MIMEHeader, $this->MIMEBody);
         case 'smtp':
         case 'smtp':
-          return $this->SmtpSend($header, $body);
+          return $this->SmtpSend($this->MIMEHeader, $this->MIMEBody);
+        case 'mail':
+          return $this->MailSend($this->MIMEHeader, $this->MIMEBody);
         default:
         default:
-          return $this->MailSend($header, $body);
+          return $this->MailSend($this->MIMEHeader, $this->MIMEBody);
       }
 
     } catch (phpmailerException $e) {
       }
 
     } catch (phpmailerException $e) {
@@ -583,7 +669,9 @@ class PHPMailer {
       if ($this->exceptions) {
         throw $e;
       }
       if ($this->exceptions) {
         throw $e;
       }
-      echo $e->getMessage()."\n";
+         if ($this->SMTPDebug) {
+        echo $e->getMessage()."\n";
+      }
       return false;
     }
   }
       return false;
     }
   }
@@ -612,7 +700,7 @@ class PHPMailer {
         $result = pclose($mail);
         // implement call back function if it exists
         $isSent = ($result == 0) ? 1 : 0;
         $result = pclose($mail);
         // implement call back function if it exists
         $isSent = ($result == 0) ? 1 : 0;
-        $this->doCallback($isSent,$val,$this->cc,$this->bcc,$this->Subject,$body);
+        $this->doCallback($isSent, $val, $this->cc, $this->bcc, $this->Subject, $body);
         if($result != 0) {
           throw new phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
         }
         if($result != 0) {
           throw new phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
         }
@@ -626,7 +714,7 @@ class PHPMailer {
       $result = pclose($mail);
       // implement call back function if it exists
       $isSent = ($result == 0) ? 1 : 0;
       $result = pclose($mail);
       // implement call back function if it exists
       $isSent = ($result == 0) ? 1 : 0;
-      $this->doCallback($isSent,$this->to,$this->cc,$this->bcc,$this->Subject,$body);
+      $this->doCallback($isSent, $this->to, $this->cc, $this->bcc, $this->Subject, $body);
       if($result != 0) {
         throw new phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
       }
       if($result != 0) {
         throw new phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
       }
@@ -648,8 +736,12 @@ class PHPMailer {
     }
     $to = implode(', ', $toArr);
 
     }
     $to = implode(', ', $toArr);
 
-    $params = sprintf("-oi -f %s", $this->Sender);
-    if ($this->Sender != '' && strlen(ini_get('safe_mode'))< 1) {
+    if (empty($this->Sender)) {
+      $params = "-oi ";
+    } else {
+      $params = sprintf("-oi -f %s", $this->Sender);
+    }
+    if ($this->Sender != '' and !ini_get('safe_mode')) {
       $old_from = ini_get('sendmail_from');
       ini_set('sendmail_from', $this->Sender);
       if ($this->SingleTo === true && count($toArr) > 1) {
       $old_from = ini_get('sendmail_from');
       ini_set('sendmail_from', $this->Sender);
       if ($this->SingleTo === true && count($toArr) > 1) {
@@ -657,13 +749,13 @@ class PHPMailer {
           $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
           // implement call back function if it exists
           $isSent = ($rt == 1) ? 1 : 0;
           $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
           // implement call back function if it exists
           $isSent = ($rt == 1) ? 1 : 0;
-          $this->doCallback($isSent,$val,$this->cc,$this->bcc,$this->Subject,$body);
+          $this->doCallback($isSent, $val, $this->cc, $this->bcc, $this->Subject, $body);
         }
       } else {
         $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
         // implement call back function if it exists
         $isSent = ($rt == 1) ? 1 : 0;
         }
       } else {
         $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
         // implement call back function if it exists
         $isSent = ($rt == 1) ? 1 : 0;
-        $this->doCallback($isSent,$to,$this->cc,$this->bcc,$this->Subject,$body);
+        $this->doCallback($isSent, $to, $this->cc, $this->bcc, $this->Subject, $body);
       }
     } else {
       if ($this->SingleTo === true && count($toArr) > 1) {
       }
     } else {
       if ($this->SingleTo === true && count($toArr) > 1) {
@@ -671,13 +763,13 @@ class PHPMailer {
           $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
           // implement call back function if it exists
           $isSent = ($rt == 1) ? 1 : 0;
           $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
           // implement call back function if it exists
           $isSent = ($rt == 1) ? 1 : 0;
-          $this->doCallback($isSent,$val,$this->cc,$this->bcc,$this->Subject,$body);
+          $this->doCallback($isSent, $val, $this->cc, $this->bcc, $this->Subject, $body);
         }
       } else {
         }
       } else {
-        $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header);
+        $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
         // implement call back function if it exists
         $isSent = ($rt == 1) ? 1 : 0;
         // implement call back function if it exists
         $isSent = ($rt == 1) ? 1 : 0;
-        $this->doCallback($isSent,$to,$this->cc,$this->bcc,$this->Subject,$body);
+        $this->doCallback($isSent, $to, $this->cc, $this->bcc, $this->Subject, $body);
       }
     }
     if (isset($old_from)) {
       }
     }
     if (isset($old_from)) {
@@ -716,11 +808,11 @@ class PHPMailer {
         $bad_rcpt[] = $to[0];
         // implement call back function if it exists
         $isSent = 0;
         $bad_rcpt[] = $to[0];
         // implement call back function if it exists
         $isSent = 0;
-        $this->doCallback($isSent,$to[0],'','',$this->Subject,$body);
+        $this->doCallback($isSent, $to[0], '', '', $this->Subject, $body);
       } else {
         // implement call back function if it exists
         $isSent = 1;
       } else {
         // implement call back function if it exists
         $isSent = 1;
-        $this->doCallback($isSent,$to[0],'','',$this->Subject,$body);
+        $this->doCallback($isSent, $to[0], '', '', $this->Subject, $body);
       }
     }
     foreach($this->cc as $cc) {
       }
     }
     foreach($this->cc as $cc) {
@@ -728,11 +820,11 @@ class PHPMailer {
         $bad_rcpt[] = $cc[0];
         // implement call back function if it exists
         $isSent = 0;
         $bad_rcpt[] = $cc[0];
         // implement call back function if it exists
         $isSent = 0;
-        $this->doCallback($isSent,'',$cc[0],'',$this->Subject,$body);
+        $this->doCallback($isSent, '', $cc[0], '', $this->Subject, $body);
       } else {
         // implement call back function if it exists
         $isSent = 1;
       } else {
         // implement call back function if it exists
         $isSent = 1;
-        $this->doCallback($isSent,'',$cc[0],'',$this->Subject,$body);
+        $this->doCallback($isSent, '', $cc[0], '', $this->Subject, $body);
       }
     }
     foreach($this->bcc as $bcc) {
       }
     }
     foreach($this->bcc as $bcc) {
@@ -740,11 +832,11 @@ class PHPMailer {
         $bad_rcpt[] = $bcc[0];
         // implement call back function if it exists
         $isSent = 0;
         $bad_rcpt[] = $bcc[0];
         // implement call back function if it exists
         $isSent = 0;
-        $this->doCallback($isSent,'','',$bcc[0],$this->Subject,$body);
+        $this->doCallback($isSent, '', '', $bcc[0], $this->Subject, $body);
       } else {
         // implement call back function if it exists
         $isSent = 1;
       } else {
         // implement call back function if it exists
         $isSent = 1;
-        $this->doCallback($isSent,'','',$bcc[0],$this->Subject,$body);
+        $this->doCallback($isSent, '', '', $bcc[0], $this->Subject, $body);
       }
     }
 
       }
     }
 
@@ -822,7 +914,9 @@ class PHPMailer {
       }
     } catch (phpmailerException $e) {
       $this->smtp->Reset();
       }
     } catch (phpmailerException $e) {
       $this->smtp->Reset();
-      throw $e;
+         if ($this->exceptions) {
+        throw $e;
+      }
     }
     return true;
   }
     }
     return true;
   }
@@ -942,7 +1036,7 @@ class PHPMailer {
 
     $line = explode($this->LE, $message);
     $message = '';
 
     $line = explode($this->LE, $message);
     $message = '';
-    for ($i=0 ;$i < count($line); $i++) {
+    for ($i = 0 ;$i < count($line); $i++) {
       $line_part = explode(' ', $line[$i]);
       $buf = '';
       for ($e = 0; $e<count($line_part); $e++) {
       $line_part = explode(' ', $line[$i]);
       $buf = '';
       for ($e = 0; $e<count($line_part); $e++) {
@@ -1056,7 +1150,9 @@ class PHPMailer {
 
     switch($this->message_type) {
       case 'alt':
 
     switch($this->message_type) {
       case 'alt':
-      case 'alt_attachments':
+      case 'alt_inline':
+      case 'alt_attach':
+      case 'alt_inline_attach':
         $this->AltBody = $this->WrapText($this->AltBody, $this->WordWrap);
         break;
       default:
         $this->AltBody = $this->WrapText($this->AltBody, $this->WordWrap);
         break;
       default:
@@ -1077,6 +1173,7 @@ class PHPMailer {
     $uniq_id = md5(uniqid(time()));
     $this->boundary[1] = 'b1_' . $uniq_id;
     $this->boundary[2] = 'b2_' . $uniq_id;
     $uniq_id = md5(uniqid(time()));
     $this->boundary[1] = 'b1_' . $uniq_id;
     $this->boundary[2] = 'b2_' . $uniq_id;
+    $this->boundary[3] = 'b3_' . $uniq_id;
 
     $result .= $this->HeaderLine('Date', self::RFCDate());
     if($this->Sender == '') {
 
     $result .= $this->HeaderLine('Date', self::RFCDate());
     if($this->Sender == '') {
@@ -1098,7 +1195,7 @@ class PHPMailer {
           $result .= $this->HeaderLine('To', 'undisclosed-recipients:;');
         }
       }
           $result .= $this->HeaderLine('To', 'undisclosed-recipients:;');
         }
       }
-    }
+       }
 
     $from = array();
     $from[0][0] = trim($this->From);
 
     $from = array();
     $from[0][0] = trim($this->From);
@@ -1116,7 +1213,7 @@ class PHPMailer {
     }
 
     if(count($this->ReplyTo) > 0) {
     }
 
     if(count($this->ReplyTo) > 0) {
-      $result .= $this->AddrAppend('Reply-to', $this->ReplyTo);
+      $result .= $this->AddrAppend('Reply-To', $this->ReplyTo);
     }
 
     // mail() sets the subject itself
     }
 
     // mail() sets the subject itself
@@ -1125,12 +1222,16 @@ class PHPMailer {
     }
 
     if($this->MessageID != '') {
     }
 
     if($this->MessageID != '') {
-      $result .= $this->HeaderLine('Message-ID',$this->MessageID);
+      $result .= $this->HeaderLine('Message-ID', $this->MessageID);
     } else {
       $result .= sprintf("Message-ID: <%s@%s>%s", $uniq_id, $this->ServerHostname(), $this->LE);
     }
     $result .= $this->HeaderLine('X-Priority', $this->Priority);
     } else {
       $result .= sprintf("Message-ID: <%s@%s>%s", $uniq_id, $this->ServerHostname(), $this->LE);
     }
     $result .= $this->HeaderLine('X-Priority', $this->Priority);
-    $result .= $this->HeaderLine('X-Mailer', 'PHPMailer '.$this->Version.' (phpmailer.sourceforge.net)');
+    if($this->XMailer) {
+      $result .= $this->HeaderLine('X-Mailer', $this->XMailer);
+    } else {
+      $result .= $this->HeaderLine('X-Mailer', 'PHPMailer '.$this->Version.' (http://code.google.com/a/apache-extras.org/p/phpmailer/)');
+    }
 
     if($this->ConfirmReadingTo != '') {
       $result .= $this->HeaderLine('Disposition-Notification-To', '<' . trim($this->ConfirmReadingTo) . '>');
 
     if($this->ConfirmReadingTo != '') {
       $result .= $this->HeaderLine('Disposition-Notification-To', '<' . trim($this->ConfirmReadingTo) . '>');
@@ -1158,18 +1259,21 @@ class PHPMailer {
     switch($this->message_type) {
       case 'plain':
         $result .= $this->HeaderLine('Content-Transfer-Encoding', $this->Encoding);
     switch($this->message_type) {
       case 'plain':
         $result .= $this->HeaderLine('Content-Transfer-Encoding', $this->Encoding);
-        $result .= sprintf("Content-Type: %s; charset=\"%s\"", $this->ContentType, $this->CharSet);
+        $result .= $this->TextLine('Content-Type: '.$this->ContentType.'; charset="'.$this->CharSet.'"');
         break;
         break;
-      case 'attachments':
-      case 'alt_attachments':
-        if($this->InlineImageExists()){
-          $result .= sprintf("Content-Type: %s;%s\ttype=\"text/html\";%s\tboundary=\"%s\"%s", 'multipart/related', $this->LE, $this->LE, $this->boundary[1], $this->LE);
-        } else {
-          $result .= $this->HeaderLine('Content-Type', 'multipart/mixed;');
-          $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');
-        }
+      case 'inline':
+        $result .= $this->HeaderLine('Content-Type', 'multipart/related;');
+        $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');
+        break;
+      case 'attach':
+      case 'inline_attach':
+      case 'alt_attach':
+      case 'alt_inline_attach':
+        $result .= $this->HeaderLine('Content-Type', 'multipart/mixed;');
+        $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');
         break;
       case 'alt':
         break;
       case 'alt':
+      case 'alt_inline':
         $result .= $this->HeaderLine('Content-Type', 'multipart/alternative;');
         $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');
         break;
         $result .= $this->HeaderLine('Content-Type', 'multipart/alternative;');
         $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');
         break;
@@ -1182,6 +1286,16 @@ class PHPMailer {
     return $result;
   }
 
     return $result;
   }
 
+  /**
+   * Returns the MIME message (headers and body). Only really valid post PreSend().
+   * @access public
+   * @return string
+   */
+  public function GetSentMIMEMessage() {
+    return $this->SentMIMEMessage;
+  }
+
+
   /**
    * Assembles the message body.  Returns an empty string on failure.
    * @access public
   /**
    * Assembles the message body.  Returns an empty string on failure.
    * @access public
@@ -1197,6 +1311,33 @@ class PHPMailer {
     $this->SetWordWrap();
 
     switch($this->message_type) {
     $this->SetWordWrap();
 
     switch($this->message_type) {
+      case 'plain':
+        $body .= $this->EncodeString($this->Body, $this->Encoding);
+        break;
+      case 'inline':
+        $body .= $this->GetBoundary($this->boundary[1], '', '', '');
+        $body .= $this->EncodeString($this->Body, $this->Encoding);
+        $body .= $this->LE.$this->LE;
+        $body .= $this->AttachAll("inline", $this->boundary[1]);
+        break;
+      case 'attach':
+        $body .= $this->GetBoundary($this->boundary[1], '', '', '');
+        $body .= $this->EncodeString($this->Body, $this->Encoding);
+        $body .= $this->LE.$this->LE;
+        $body .= $this->AttachAll("attachment", $this->boundary[1]);
+        break;
+      case 'inline_attach':
+        $body .= $this->TextLine("--" . $this->boundary[1]);
+        $body .= $this->HeaderLine('Content-Type', 'multipart/related;');
+        $body .= $this->TextLine("\tboundary=\"" . $this->boundary[2] . '"');
+        $body .= $this->LE;
+        $body .= $this->GetBoundary($this->boundary[2], '', '', '');
+        $body .= $this->EncodeString($this->Body, $this->Encoding);
+        $body .= $this->LE.$this->LE;
+        $body .= $this->AttachAll("inline", $this->boundary[2]);
+        $body .= $this->LE;
+        $body .= $this->AttachAll("attachment", $this->boundary[1]);
+        break;
       case 'alt':
         $body .= $this->GetBoundary($this->boundary[1], '', 'text/plain', '');
         $body .= $this->EncodeString($this->AltBody, $this->Encoding);
       case 'alt':
         $body .= $this->GetBoundary($this->boundary[1], '', 'text/plain', '');
         $body .= $this->EncodeString($this->AltBody, $this->Encoding);
@@ -1206,26 +1347,56 @@ class PHPMailer {
         $body .= $this->LE.$this->LE;
         $body .= $this->EndBoundary($this->boundary[1]);
         break;
         $body .= $this->LE.$this->LE;
         $body .= $this->EndBoundary($this->boundary[1]);
         break;
-      case 'plain':
+      case 'alt_inline':
+        $body .= $this->GetBoundary($this->boundary[1], '', 'text/plain', '');
+        $body .= $this->EncodeString($this->AltBody, $this->Encoding);
+        $body .= $this->LE.$this->LE;
+        $body .= $this->TextLine("--" . $this->boundary[1]);
+        $body .= $this->HeaderLine('Content-Type', 'multipart/related;');
+        $body .= $this->TextLine("\tboundary=\"" . $this->boundary[2] . '"');
+        $body .= $this->LE;
+        $body .= $this->GetBoundary($this->boundary[2], '', 'text/html', '');
         $body .= $this->EncodeString($this->Body, $this->Encoding);
         $body .= $this->EncodeString($this->Body, $this->Encoding);
+        $body .= $this->LE.$this->LE;
+        $body .= $this->AttachAll("inline", $this->boundary[2]);
+        $body .= $this->LE;
+        $body .= $this->EndBoundary($this->boundary[1]);
         break;
         break;
-      case 'attachments':
-        $body .= $this->GetBoundary($this->boundary[1], '', '', '');
+      case 'alt_attach':
+        $body .= $this->TextLine("--" . $this->boundary[1]);
+        $body .= $this->HeaderLine('Content-Type', 'multipart/alternative;');
+        $body .= $this->TextLine("\tboundary=\"" . $this->boundary[2] . '"');
+        $body .= $this->LE;
+        $body .= $this->GetBoundary($this->boundary[2], '', 'text/plain', '');
+        $body .= $this->EncodeString($this->AltBody, $this->Encoding);
+        $body .= $this->LE.$this->LE;
+        $body .= $this->GetBoundary($this->boundary[2], '', 'text/html', '');
         $body .= $this->EncodeString($this->Body, $this->Encoding);
         $body .= $this->EncodeString($this->Body, $this->Encoding);
+        $body .= $this->LE.$this->LE;
+        $body .= $this->EndBoundary($this->boundary[2]);
         $body .= $this->LE;
         $body .= $this->LE;
-        $body .= $this->AttachAll();
+        $body .= $this->AttachAll("attachment", $this->boundary[1]);
         break;
         break;
-      case 'alt_attachments':
-        $body .= sprintf("--%s%s", $this->boundary[1], $this->LE);
-        $body .= sprintf("Content-Type: %s;%s" . "\tboundary=\"%s\"%s", 'multipart/alternative', $this->LE, $this->boundary[2], $this->LE.$this->LE);
-        $body .= $this->GetBoundary($this->boundary[2], '', 'text/plain', '') . $this->LE; // Create text body
+      case 'alt_inline_attach':
+        $body .= $this->TextLine("--" . $this->boundary[1]);
+        $body .= $this->HeaderLine('Content-Type', 'multipart/alternative;');
+        $body .= $this->TextLine("\tboundary=\"" . $this->boundary[2] . '"');
+        $body .= $this->LE;
+        $body .= $this->GetBoundary($this->boundary[2], '', 'text/plain', '');
         $body .= $this->EncodeString($this->AltBody, $this->Encoding);
         $body .= $this->LE.$this->LE;
         $body .= $this->EncodeString($this->AltBody, $this->Encoding);
         $body .= $this->LE.$this->LE;
-        $body .= $this->GetBoundary($this->boundary[2], '', 'text/html', '') . $this->LE; // Create the HTML body
+        $body .= $this->TextLine("--" . $this->boundary[2]);
+        $body .= $this->HeaderLine('Content-Type', 'multipart/related;');
+        $body .= $this->TextLine("\tboundary=\"" . $this->boundary[3] . '"');
+        $body .= $this->LE;
+        $body .= $this->GetBoundary($this->boundary[3], '', 'text/html', '');
         $body .= $this->EncodeString($this->Body, $this->Encoding);
         $body .= $this->LE.$this->LE;
         $body .= $this->EncodeString($this->Body, $this->Encoding);
         $body .= $this->LE.$this->LE;
+        $body .= $this->AttachAll("inline", $this->boundary[3]);
+        $body .= $this->LE;
         $body .= $this->EndBoundary($this->boundary[2]);
         $body .= $this->EndBoundary($this->boundary[2]);
-        $body .= $this->AttachAll();
+        $body .= $this->LE;
+        $body .= $this->AttachAll("attachment", $this->boundary[1]);
         break;
     }
 
         break;
     }
 
@@ -1238,8 +1409,8 @@ class PHPMailer {
         $signed = tempnam("", "signed");
         if (@openssl_pkcs7_sign($file, $signed, "file://".$this->sign_cert_file, array("file://".$this->sign_key_file, $this->sign_key_pass), NULL)) {
           @unlink($file);
         $signed = tempnam("", "signed");
         if (@openssl_pkcs7_sign($file, $signed, "file://".$this->sign_cert_file, array("file://".$this->sign_key_file, $this->sign_key_pass), NULL)) {
           @unlink($file);
-          @unlink($signed);
           $body = file_get_contents($signed);
           $body = file_get_contents($signed);
+          @unlink($signed);
         } else {
           @unlink($file);
           @unlink($signed);
         } else {
           @unlink($file);
           @unlink($signed);
@@ -1258,9 +1429,10 @@ class PHPMailer {
 
   /**
    * Returns the start of a message boundary.
 
   /**
    * Returns the start of a message boundary.
-   * @access private
+   * @access protected
+   * @return string
    */
    */
-  private function GetBoundary($boundary, $charSet, $contentType, $encoding) {
+  protected function GetBoundary($boundary, $charSet, $contentType, $encoding) {
     $result = '';
     if($charSet == '') {
       $charSet = $this->CharSet;
     $result = '';
     if($charSet == '') {
       $charSet = $this->CharSet;
@@ -1272,7 +1444,7 @@ class PHPMailer {
       $encoding = $this->Encoding;
     }
     $result .= $this->TextLine('--' . $boundary);
       $encoding = $this->Encoding;
     }
     $result .= $this->TextLine('--' . $boundary);
-    $result .= sprintf("Content-Type: %s; charset = \"%s\"", $contentType, $charSet);
+    $result .= sprintf("Content-Type: %s; charset=\"%s\"", $contentType, $charSet);
     $result .= $this->LE;
     $result .= $this->HeaderLine('Content-Transfer-Encoding', $encoding);
     $result .= $this->LE;
     $result .= $this->LE;
     $result .= $this->HeaderLine('Content-Transfer-Encoding', $encoding);
     $result .= $this->LE;
@@ -1282,31 +1454,25 @@ class PHPMailer {
 
   /**
    * Returns the end of a message boundary.
 
   /**
    * Returns the end of a message boundary.
-   * @access private
+   * @access protected
+   * @return string
    */
    */
-  private function EndBoundary($boundary) {
+  protected function EndBoundary($boundary) {
     return $this->LE . '--' . $boundary . '--' . $this->LE;
   }
 
   /**
    * Sets the message type.
     return $this->LE . '--' . $boundary . '--' . $this->LE;
   }
 
   /**
    * Sets the message type.
-   * @access private
+   * @access protected
    * @return void
    */
    * @return void
    */
-  private function SetMessageType() {
-    if(count($this->attachment) < 1 && strlen($this->AltBody) < 1) {
-      $this->message_type = 'plain';
-    } else {
-      if(count($this->attachment) > 0) {
-        $this->message_type = 'attachments';
-      }
-      if(strlen($this->AltBody) > 0 && count($this->attachment) < 1) {
-        $this->message_type = 'alt';
-      }
-      if(strlen($this->AltBody) > 0 && count($this->attachment) > 0) {
-        $this->message_type = 'alt_attachments';
-      }
-    }
+  protected function SetMessageType() {
+    $this->message_type = array();
+    if($this->AlternativeExists()) $this->message_type[] = "alt";
+    if($this->InlineImageExists()) $this->message_type[] = "inline";
+    if($this->AttachmentExists()) $this->message_type[] = "attach";
+    $this->message_type = implode("_", $this->message_type);
+    if($this->message_type == "") $this->message_type = "plain";
   }
 
   /**
   }
 
   /**
@@ -1367,7 +1533,9 @@ class PHPMailer {
       if ($this->exceptions) {
         throw $e;
       }
       if ($this->exceptions) {
         throw $e;
       }
-      echo $e->getMessage()."\n";
+         if ($this->SMTPDebug) {
+        echo $e->getMessage()."\n";
+      }
       if ( $e->getCode() == self::STOP_CRITICAL ) {
         return false;
       }
       if ( $e->getCode() == self::STOP_CRITICAL ) {
         return false;
       }
@@ -1386,10 +1554,10 @@ class PHPMailer {
   /**
    * Attaches all fs, string, and binary attachments to the message.
    * Returns an empty string on failure.
   /**
    * Attaches all fs, string, and binary attachments to the message.
    * Returns an empty string on failure.
-   * @access private
+   * @access protected
    * @return string
    */
    * @return string
    */
-  private function AttachAll() {
+  protected function AttachAll($disposition_type, $boundary) {
     // Return text of body
     $mime = array();
     $cidUniq = array();
     // Return text of body
     $mime = array();
     $cidUniq = array();
@@ -1397,54 +1565,58 @@ class PHPMailer {
 
     // Add all attachments
     foreach ($this->attachment as $attachment) {
 
     // Add all attachments
     foreach ($this->attachment as $attachment) {
-      // Check for string attachment
-      $bString = $attachment[5];
-      if ($bString) {
-        $string = $attachment[0];
-      } else {
-        $path = $attachment[0];
-      }
+      // CHECK IF IT IS A VALID DISPOSITION_FILTER
+      if($attachment[6] == $disposition_type) {
+        // Check for string attachment
+        $bString = $attachment[5];
+        if ($bString) {
+          $string = $attachment[0];
+        } else {
+          $path = $attachment[0];
+        }
 
 
-      if (in_array($attachment[0], $incl)) { continue; }
-      $filename    = $attachment[1];
-      $name        = $attachment[2];
-      $encoding    = $attachment[3];
-      $type        = $attachment[4];
-      $disposition = $attachment[6];
-      $cid         = $attachment[7];
-      $incl[]      = $attachment[0];
-      if ( $disposition == 'inline' && isset($cidUniq[$cid]) ) { continue; }
-      $cidUniq[$cid] = true;
-
-      $mime[] = sprintf("--%s%s", $this->boundary[1], $this->LE);
-      $mime[] = sprintf("Content-Type: %s; name=\"%s\"%s", $type, $this->EncodeHeader($this->SecureHeader($name)), $this->LE);
-      $mime[] = sprintf("Content-Transfer-Encoding: %s%s", $encoding, $this->LE);
-
-      if($disposition == 'inline') {
-        $mime[] = sprintf("Content-ID: <%s>%s", $cid, $this->LE);
-      }
+        $inclhash = md5(serialize($attachment));
+        if (in_array($inclhash, $incl)) { continue; }
+        $incl[]      = $inclhash;
+        $filename    = $attachment[1];
+        $name        = $attachment[2];
+        $encoding    = $attachment[3];
+        $type        = $attachment[4];
+        $disposition = $attachment[6];
+        $cid         = $attachment[7];
+        if ( $disposition == 'inline' && isset($cidUniq[$cid]) ) { continue; }
+        $cidUniq[$cid] = true;
+
+        $mime[] = sprintf("--%s%s", $boundary, $this->LE);
+        $mime[] = sprintf("Content-Type: %s; name=\"%s\"%s", $type, $this->EncodeHeader($this->SecureHeader($name)), $this->LE);
+        $mime[] = sprintf("Content-Transfer-Encoding: %s%s", $encoding, $this->LE);
+
+        if($disposition == 'inline') {
+          $mime[] = sprintf("Content-ID: <%s>%s", $cid, $this->LE);
+        }
 
 
-      $mime[] = sprintf("Content-Disposition: %s; filename=\"%s\"%s", $disposition, $this->EncodeHeader($this->SecureHeader($name)), $this->LE.$this->LE);
+        $mime[] = sprintf("Content-Disposition: %s; filename=\"%s\"%s", $disposition, $this->EncodeHeader($this->SecureHeader($name)), $this->LE.$this->LE);
 
 
-      // Encode as string attachment
-      if($bString) {
-        $mime[] = $this->EncodeString($string, $encoding);
-        if($this->IsError()) {
-          return '';
-        }
-        $mime[] = $this->LE.$this->LE;
-      } else {
-        $mime[] = $this->EncodeFile($path, $encoding);
-        if($this->IsError()) {
-          return '';
+        // Encode as string attachment
+        if($bString) {
+          $mime[] = $this->EncodeString($string, $encoding);
+          if($this->IsError()) {
+            return '';
+          }
+          $mime[] = $this->LE.$this->LE;
+        } else {
+          $mime[] = $this->EncodeFile($path, $encoding);
+          if($this->IsError()) {
+            return '';
+          }
+          $mime[] = $this->LE.$this->LE;
         }
         }
-        $mime[] = $this->LE.$this->LE;
       }
     }
 
       }
     }
 
-    $mime[] = sprintf("--%s--%s", $this->boundary[1], $this->LE);
+    $mime[] = sprintf("--%s--%s", $boundary, $this->LE);
 
 
-    return join('', $mime);
+    return implode("", $mime);
   }
 
   /**
   }
 
   /**
@@ -1453,10 +1625,10 @@ class PHPMailer {
    * @param string $path The full path to the file
    * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable'
    * @see EncodeFile()
    * @param string $path The full path to the file
    * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable'
    * @see EncodeFile()
-   * @access private
+   * @access protected
    * @return string
    */
    * @return string
    */
-  private function EncodeFile($path, $encoding = 'base64') {
+  protected function EncodeFile($path, $encoding = 'base64') {
     try {
       if (!is_readable($path)) {
         throw new phpmailerException($this->Lang('file_open') . $path, self::STOP_CONTINUE);
     try {
       if (!is_readable($path)) {
         throw new phpmailerException($this->Lang('file_open') . $path, self::STOP_CONTINUE);
@@ -1466,13 +1638,23 @@ class PHPMailer {
           return false;
         }
       }
           return false;
         }
       }
-      if (PHP_VERSION < 6) {
-        $magic_quotes = get_magic_quotes_runtime();
-        set_magic_quotes_runtime(0);
-      }
+         $magic_quotes = get_magic_quotes_runtime();
+         if ($magic_quotes) {
+        if (version_compare(PHP_VERSION, '5.3.0', '<')) {
+          set_magic_quotes_runtime(0);
+        } else {
+                 ini_set('magic_quotes_runtime', 0);
+               }
+         }
       $file_buffer  = file_get_contents($path);
       $file_buffer  = $this->EncodeString($file_buffer, $encoding);
       $file_buffer  = file_get_contents($path);
       $file_buffer  = $this->EncodeString($file_buffer, $encoding);
-      if (PHP_VERSION < 6) { set_magic_quotes_runtime($magic_quotes); }
+         if ($magic_quotes) {
+        if (version_compare(PHP_VERSION, '5.3.0', '<')) {
+          set_magic_quotes_runtime($magic_quotes);
+        } else {
+                 ini_set('magic_quotes_runtime', $magic_quotes);
+           }
+         }
       return $file_buffer;
     } catch (Exception $e) {
       $this->SetError($e->getMessage());
       return $file_buffer;
     } catch (Exception $e) {
       $this->SetError($e->getMessage());
@@ -1488,7 +1670,7 @@ class PHPMailer {
    * @access public
    * @return string
    */
    * @access public
    * @return string
    */
-  public function EncodeString ($str, $encoding = 'base64') {
+  public function EncodeString($str, $encoding = 'base64') {
     $encoded = '';
     switch(strtolower($encoding)) {
       case 'base64':
     $encoded = '';
     switch(strtolower($encoding)) {
       case 'base64':
@@ -1637,7 +1819,7 @@ class PHPMailer {
   * @return string
   */
   public function EncodeQPphp( $input = '', $line_max = 76, $space_conv = false) {
   * @return string
   */
   public function EncodeQPphp( $input = '', $line_max = 76, $space_conv = false) {
-    $hex = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
+    $hex = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
     $lines = preg_split('/(?:\r\n|\r|\n)/', $input);
     $eol = "\r\n";
     $escape = '=';
     $lines = preg_split('/(?:\r\n|\r|\n)/', $input);
     $eol = "\r\n";
     $escape = '=';
@@ -1718,7 +1900,7 @@ class PHPMailer {
    * @access public
    * @return string
    */
    * @access public
    * @return string
    */
-  public function EncodeQ ($str, $position = 'text') {
+  public function EncodeQ($str, $position = 'text') {
     // There should not be any EOL in the string
     $encoded = preg_replace('/[\r\n]*/', '', $str);
 
     // There should not be any EOL in the string
     $encoded = preg_replace('/[\r\n]*/', '', $str);
 
@@ -1733,7 +1915,7 @@ class PHPMailer {
         // Replace every high ascii, control =, ? and _ characters
         //TODO using /e (equivalent to eval()) is probably not a good idea
         $encoded = preg_replace('/([\000-\011\013\014\016-\037\075\077\137\177-\377])/e',
         // Replace every high ascii, control =, ? and _ characters
         //TODO using /e (equivalent to eval()) is probably not a good idea
         $encoded = preg_replace('/([\000-\011\013\014\016-\037\075\077\137\177-\377])/e',
-              "'='.sprintf('%02X', ord('\\1'))", $encoded);
+                                "'='.sprintf('%02X', ord(stripslashes('\\1')))", $encoded);
         break;
     }
 
         break;
     }
 
@@ -1807,6 +1989,20 @@ class PHPMailer {
     return true;
   }
 
     return true;
   }
 
+  public function AddStringEmbeddedImage($string, $cid, $filename = '', $encoding = 'base64', $type = 'application/octet-stream') {
+    // Append to $attachment array
+    $this->attachment[] = array(
+      0 => $string,
+      1 => $filename,
+      2 => basename($filename),
+      3 => $encoding,
+      4 => $type,
+      5 => true,  // isStringAttachment
+      6 => 'inline',
+      7 => $cid
+    );
+  }
+
   /**
    * Returns true if an inline attachment is present.
    * @access public
   /**
    * Returns true if an inline attachment is present.
    * @access public
@@ -1821,6 +2017,19 @@ class PHPMailer {
     return false;
   }
 
     return false;
   }
 
+  public function AttachmentExists() {
+    foreach($this->attachment as $attachment) {
+      if ($attachment[6] == 'attachment') {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  public function AlternativeExists() {
+    return strlen($this->AltBody)>0;
+  }
+
   /////////////////////////////////////////////////
   // CLASS METHODS, MESSAGE RESET
   /////////////////////////////////////////////////
   /////////////////////////////////////////////////
   // CLASS METHODS, MESSAGE RESET
   /////////////////////////////////////////////////
@@ -1933,10 +2142,10 @@ class PHPMailer {
 
   /**
    * Returns the server hostname or 'localhost.localdomain' if unknown.
 
   /**
    * Returns the server hostname or 'localhost.localdomain' if unknown.
-   * @access private
+   * @access protected
    * @return string
    */
    * @return string
    */
-  private function ServerHostname() {
+  protected function ServerHostname() {
     if (!empty($this->Hostname)) {
       $result = $this->Hostname;
     } elseif (isset($_SERVER['SERVER_NAME'])) {
     if (!empty($this->Hostname)) {
       $result = $this->Hostname;
     } elseif (isset($_SERVER['SERVER_NAME'])) {
@@ -1950,10 +2159,10 @@ class PHPMailer {
 
   /**
    * Returns a message in the appropriate language.
 
   /**
    * Returns a message in the appropriate language.
-   * @access private
+   * @access protected
    * @return string
    */
    * @return string
    */
-  private function Lang($key) {
+  protected function Lang($key) {
     if(count($this->language) < 1) {
       $this->SetLanguage('en'); // set the default language
     }
     if(count($this->language) < 1) {
       $this->SetLanguage('en'); // set the default language
     }
@@ -1976,10 +2185,10 @@ class PHPMailer {
 
   /**
    * Changes every end of line from CR or LF to CRLF.
 
   /**
    * Changes every end of line from CR or LF to CRLF.
-   * @access private
+   * @access public
    * @return string
    */
    * @return string
    */
-  private function FixEOL($str) {
+  public function FixEOL($str) {
     $str = str_replace("\r\n", "\n", $str);
     $str = str_replace("\r", "\n", $str);
     $str = str_replace("\n", $this->LE, $str);
     $str = str_replace("\r\n", "\n", $str);
     $str = str_replace("\r", "\n", $str);
     $str = str_replace("\n", $this->LE, $str);
@@ -2001,34 +2210,37 @@ class PHPMailer {
    * @return $message
    */
   public function MsgHTML($message, $basedir = '') {
    * @return $message
    */
   public function MsgHTML($message, $basedir = '') {
-    preg_match_all("/(src|background)=\"(.*)\"/Ui", $message, $images);
+    preg_match_all("/(src|background)=[\"'](.*)[\"']/Ui", $message, $images);
     if(isset($images[2])) {
       foreach($images[2] as $i => $url) {
         // do not change urls for absolute images (thanks to corvuscorax)
     if(isset($images[2])) {
       foreach($images[2] as $i => $url) {
         // do not change urls for absolute images (thanks to corvuscorax)
-        if (!preg_match('#^[A-z]+://#',$url)) {
+        if (!preg_match('#^[A-z]+://#', $url)) {
           $filename = basename($url);
           $directory = dirname($url);
           $filename = basename($url);
           $directory = dirname($url);
-          ($directory == '.')?$directory='':'';
+          ($directory == '.') ? $directory='': '';
           $cid = 'cid:' . md5($filename);
           $ext = pathinfo($filename, PATHINFO_EXTENSION);
           $mimeType  = self::_mime_types($ext);
           $cid = 'cid:' . md5($filename);
           $ext = pathinfo($filename, PATHINFO_EXTENSION);
           $mimeType  = self::_mime_types($ext);
-          if ( strlen($basedir) > 1 && substr($basedir,-1) != '/') { $basedir .= '/'; }
-          if ( strlen($directory) > 1 && substr($directory,-1) != '/') { $directory .= '/'; }
-          if ( $this->AddEmbeddedImage($basedir.$directory.$filename, md5($filename), $filename, 'base64',$mimeType) ) {
-            $message = preg_replace("/".$images[1][$i]."=\"".preg_quote($url, '/')."\"/Ui", $images[1][$i]."=\"".$cid."\"", $message);
+          if ( strlen($basedir) > 1 && substr($basedir, -1) != '/') { $basedir .= '/'; }
+          if ( strlen($directory) > 1 && substr($directory, -1) != '/') { $directory .= '/'; }
+          if ( $this->AddEmbeddedImage($basedir.$directory.$filename, md5($filename), $filename, 'base64', $mimeType) ) {
+            $message = preg_replace("/".$images[1][$i]."=[\"']".preg_quote($url, '/')."[\"']/Ui", $images[1][$i]."=\"".$cid."\"", $message);
           }
         }
       }
     }
     $this->IsHTML(true);
     $this->Body = $message;
           }
         }
       }
     }
     $this->IsHTML(true);
     $this->Body = $message;
-    $textMsg = trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/s','',$message)));
-    if (!empty($textMsg) && empty($this->AltBody)) {
-      $this->AltBody = html_entity_decode($textMsg);
-    }
+       if (empty($this->AltBody)) {
+               $textMsg = trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/s', '', $message)));
+               if (!empty($textMsg)) {
+                       $this->AltBody = html_entity_decode($textMsg, ENT_QUOTES, $this->CharSet);
+               }
+       }
     if (empty($this->AltBody)) {
       $this->AltBody = 'To view this email message, open it in a program that understands HTML!' . "\n\n";
     }
     if (empty($this->AltBody)) {
       $this->AltBody = 'To view this email message, open it in a program that understands HTML!' . "\n\n";
     }
+       return $message;
   }
 
   /**
   }
 
   /**
@@ -2192,14 +2404,14 @@ class PHPMailer {
    * @param string $key_pass Password for private key
    */
   public function DKIM_QP($txt) {
    * @param string $key_pass Password for private key
    */
   public function DKIM_QP($txt) {
-    $tmp="";
-    $line="";
-    for ($i=0;$i<strlen($txt);$i++) {
-      $ord=ord($txt[$i]);
+    $tmp = '';
+    $line = '';
+    for ($i = 0; $i < strlen($txt); $i++) {
+      $ord = ord($txt[$i]);
       if ( ((0x21 <= $ord) && ($ord <= 0x3A)) || $ord == 0x3C || ((0x3E <= $ord) && ($ord <= 0x7E)) ) {
       if ( ((0x21 <= $ord) && ($ord <= 0x3A)) || $ord == 0x3C || ((0x3E <= $ord) && ($ord <= 0x7E)) ) {
-        $line.=$txt[$i];
+        $line .= $txt[$i];
       } else {
       } else {
-        $line.="=".sprintf("%02X",$ord);
+        $line .= "=".sprintf("%02X", $ord);
       }
     }
     return $line;
       }
     }
     return $line;
@@ -2213,8 +2425,8 @@ class PHPMailer {
    */
   public function DKIM_Sign($s) {
     $privKeyStr = file_get_contents($this->DKIM_private);
    */
   public function DKIM_Sign($s) {
     $privKeyStr = file_get_contents($this->DKIM_private);
-    if ($this->DKIM_passphrase!='') {
-      $privKey = openssl_pkey_get_private($privKeyStr,$this->DKIM_passphrase);
+    if ($this->DKIM_passphrase != '') {
+      $privKey = openssl_pkey_get_private($privKeyStr, $this->DKIM_passphrase);
     } else {
       $privKey = $privKeyStr;
     }
     } else {
       $privKey = $privKeyStr;
     }
@@ -2230,15 +2442,15 @@ class PHPMailer {
    * @param string $s Header
    */
   public function DKIM_HeaderC($s) {
    * @param string $s Header
    */
   public function DKIM_HeaderC($s) {
-    $s=preg_replace("/\r\n\s+/"," ",$s);
-    $lines=explode("\r\n",$s);
-    foreach ($lines as $key=>$line) {
-      list($heading,$value)=explode(":",$line,2);
-      $heading=strtolower($heading);
-      $value=preg_replace("/\s+/"," ",$value) ; // Compress useless spaces
-      $lines[$key]=$heading.":".trim($value) ; // Don't forget to remove WSP around the value
-    }
-    $s=implode("\r\n",$lines);
+    $s = preg_replace("/\r\n\s+/", " ", $s);
+    $lines = explode("\r\n", $s);
+    foreach ($lines as $key => $line) {
+      list($heading, $value) = explode(":", $line, 2);
+      $heading = strtolower($heading);
+      $value = preg_replace("/\s+/", " ", $value) ; // Compress useless spaces
+      $lines[$key] = $heading.":".trim($value) ; // Don't forget to remove WSP around the value
+    }
+    $s = implode("\r\n", $lines);
     return $s;
   }
 
     return $s;
   }
 
@@ -2251,11 +2463,11 @@ class PHPMailer {
   public function DKIM_BodyC($body) {
     if ($body == '') return "\r\n";
     // stabilize line endings
   public function DKIM_BodyC($body) {
     if ($body == '') return "\r\n";
     // stabilize line endings
-    $body=str_replace("\r\n","\n",$body);
-    $body=str_replace("\n","\r\n",$body);
+    $body = str_replace("\r\n", "\n", $body);
+    $body = str_replace("\n", "\r\n", $body);
     // END stabilize line endings
     // END stabilize line endings
-    while (substr($body,strlen($body)-4,4) == "\r\n\r\n") {
-      $body=substr($body,0,strlen($body)-2);
+    while (substr($body, strlen($body) - 4, 4) == "\r\n\r\n") {
+      $body = substr($body, 0, strlen($body) - 2);
     }
     return $body;
   }
     }
     return $body;
   }
@@ -2268,23 +2480,23 @@ class PHPMailer {
    * @param string $subject Subject
    * @param string $body Body
    */
    * @param string $subject Subject
    * @param string $body Body
    */
-  public function DKIM_Add($headers_line,$subject,$body) {
+  public function DKIM_Add($headers_line, $subject, $body) {
     $DKIMsignatureType    = 'rsa-sha1'; // Signature & hash algorithms
     $DKIMcanonicalization = 'relaxed/simple'; // Canonicalization of header/body
     $DKIMquery            = 'dns/txt'; // Query method
     $DKIMtime             = time() ; // Signature Timestamp = seconds since 00:00:00 - Jan 1, 1970 (UTC time zone)
     $subject_header       = "Subject: $subject";
     $DKIMsignatureType    = 'rsa-sha1'; // Signature & hash algorithms
     $DKIMcanonicalization = 'relaxed/simple'; // Canonicalization of header/body
     $DKIMquery            = 'dns/txt'; // Query method
     $DKIMtime             = time() ; // Signature Timestamp = seconds since 00:00:00 - Jan 1, 1970 (UTC time zone)
     $subject_header       = "Subject: $subject";
-    $headers              = explode("\r\n",$headers_line);
+    $headers              = explode($this->LE, $headers_line);
     foreach($headers as $header) {
     foreach($headers as $header) {
-      if (strpos($header,'From:') === 0) {
-        $from_header=$header;
-      } elseif (strpos($header,'To:') === 0) {
-        $to_header=$header;
+      if (strpos($header, 'From:') === 0) {
+        $from_header = $header;
+      } elseif (strpos($header, 'To:') === 0) {
+        $to_header = $header;
       }
     }
       }
     }
-    $from     = str_replace('|','=7C',$this->DKIM_QP($from_header));
-    $to       = str_replace('|','=7C',$this->DKIM_QP($to_header));
-    $subject  = str_replace('|','=7C',$this->DKIM_QP($subject_header)) ; // Copied header fields (dkim-quoted-printable
+    $from     = str_replace('|', '=7C', $this->DKIM_QP($from_header));
+    $to       = str_replace('|', '=7C', $this->DKIM_QP($to_header));
+    $subject  = str_replace('|', '=7C', $this->DKIM_QP($subject_header)) ; // Copied header fields (dkim-quoted-printable
     $body     = $this->DKIM_BodyC($body);
     $DKIMlen  = strlen($body) ; // Length of body
     $DKIMb64  = base64_encode(pack("H*", sha1($body))) ; // Base64 of packed binary SHA-1 hash of body
     $body     = $this->DKIM_BodyC($body);
     $DKIMlen  = strlen($body) ; // Length of body
     $DKIMb64  = base64_encode(pack("H*", sha1($body))) ; // Base64 of packed binary SHA-1 hash of body
@@ -2303,10 +2515,10 @@ class PHPMailer {
     return "X-PHPMAILER-DKIM: phpmailer.worxware.com\r\n".$dkimhdrs.$signed."\r\n";
   }
 
     return "X-PHPMAILER-DKIM: phpmailer.worxware.com\r\n".$dkimhdrs.$signed."\r\n";
   }
 
-  protected function doCallback($isSent,$to,$cc,$bcc,$subject,$body) {
+  protected function doCallback($isSent, $to, $cc, $bcc, $subject, $body) {
     if (!empty($this->action_function) && function_exists($this->action_function)) {
     if (!empty($this->action_function) && function_exists($this->action_function)) {
-      $params = array($isSent,$to,$cc,$bcc,$subject,$body);
-      call_user_func_array($this->action_function,$params);
+      $params = array($isSent, $to, $cc, $bcc, $subject, $body);
+      call_user_func_array($this->action_function, $params);
     }
   }
 }
     }
   }
 }
@@ -2317,4 +2529,4 @@ class phpmailerException extends Exception {
     return $errorMsg;
   }
 }
     return $errorMsg;
   }
 }
-?>
\ No newline at end of file
+?>
index 275033a822919fd101de6426664ba48671e4c59c..6128495d88c08007cc799d0c71f59ff83e310330 100644 (file)
@@ -1,12 +1,12 @@
 <?php
 <?php
-if ( !class_exists( 'SimplePie' ) ) :
+if ( ! class_exists( 'SimplePie' ) ) :
 /**
  * SimplePie
  *
  * A PHP-Based RSS and Atom Feed Framework.
  * Takes the hard work out of managing a complete RSS/Atom solution.
  *
 /**
  * SimplePie
  *
  * A PHP-Based RSS and Atom Feed Framework.
  * Takes the hard work out of managing a complete RSS/Atom solution.
  *
- * Copyright (c) 2004-2009, Ryan Parman and Geoffrey Sneddon
+ * Copyright (c) 2004-2011, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without modification, are
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without modification, are
@@ -34,10 +34,11 @@ if ( !class_exists( 'SimplePie' ) ) :
  * POSSIBILITY OF SUCH DAMAGE.
  *
  * @package SimplePie
  * POSSIBILITY OF SUCH DAMAGE.
  *
  * @package SimplePie
- * @version 1.2
- * @copyright 2004-2009 Ryan Parman, Geoffrey Sneddon
+ * @version 1.2.1
+ * @copyright 2004-2011 Ryan Parman, Geoffrey Sneddon, Ryan McCue
  * @author Ryan Parman
  * @author Geoffrey Sneddon
  * @author Ryan Parman
  * @author Geoffrey Sneddon
+ * @author Ryan McCue
  * @link http://simplepie.org/ SimplePie
  * @link http://simplepie.org/support/ Please submit all bug reports and feature requests to the SimplePie forums
  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
  * @link http://simplepie.org/ SimplePie
  * @link http://simplepie.org/support/ Please submit all bug reports and feature requests to the SimplePie forums
  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
@@ -52,12 +53,12 @@ define('SIMPLEPIE_NAME', 'SimplePie');
 /**
  * SimplePie Version
  */
 /**
  * SimplePie Version
  */
-define('SIMPLEPIE_VERSION', '1.2');
+define('SIMPLEPIE_VERSION', '1.2.1');
 
 /**
  * SimplePie Build
  */
 
 /**
  * SimplePie Build
  */
-define('SIMPLEPIE_BUILD', '20090627192103');
+define('SIMPLEPIE_BUILD', '20111015034325');
 
 /**
  * SimplePie Website URL
 
 /**
  * SimplePie Website URL
@@ -1672,7 +1673,7 @@ class SimplePie
                                                                $this->data = array('url' => $this->feed_url, 'feed_url' => $file->url, 'build' => SIMPLEPIE_BUILD);
                                                                if (!$cache->save($this))
                                                                {
                                                                $this->data = array('url' => $this->feed_url, 'feed_url' => $file->url, 'build' => SIMPLEPIE_BUILD);
                                                                if (!$cache->save($this))
                                                                {
-                                                                       trigger_error("$this->cache_location is not writeable", E_USER_WARNING);
+                                                                       trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
                                                                }
                                                                $cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, call_user_func($this->cache_name_function, $file->url), 'spc');
                                                        }
                                                                }
                                                                $cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, call_user_func($this->cache_name_function, $file->url), 'spc');
                                                        }
@@ -1680,7 +1681,7 @@ class SimplePie
                                                }
                                                else
                                                {
                                                }
                                                else
                                                {
-                                                       $this->error = "A feed could not be found at $this->feed_url";
+                                                       $this->error = "A feed could not be found at $this->feed_url. A feed with an invalid mime type may fall victim to this error, or " . SIMPLEPIE_NAME . " was unable to auto-discover it.. Use force_feed() if you are certain this URL is a real feed.";
                                                        SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
                                                        return false;
                                                }
                                                        SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
                                                        return false;
                                                }
@@ -1777,27 +1778,27 @@ class SimplePie
                                                        // Cache the file if caching is enabled
                                                        if ($cache && !$cache->save($this))
                                                        {
                                                        // Cache the file if caching is enabled
                                                        if ($cache && !$cache->save($this))
                                                        {
-                                                               trigger_error("$cache->name is not writeable", E_USER_WARNING);
+                                                               trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
                                                        }
                                                        return true;
                                                }
                                                else
                                                {
                                                        }
                                                        return true;
                                                }
                                                else
                                                {
-                                                       $this->error = "A feed could not be found at $this->feed_url";
+                                                       $this->error = "A feed could not be found at $this->feed_url. This does not appear to be a valid RSS or Atom feed.";
                                                        SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
                                                        return false;
                                                }
                                        }
                                }
                        }
                                                        SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
                                                        return false;
                                                }
                                        }
                                }
                        }
-                       if(isset($parser))
+                       if (isset($parser))
                        {
                                // We have an error, just set SimplePie_Misc::error to it and quit
                        {
                                // We have an error, just set SimplePie_Misc::error to it and quit
-                               $this->error = sprintf('XML error: %s at line %d, column %d', $parser->get_error_string(), $parser->get_current_line(), $parser->get_current_column());
+                               $this->error = sprintf('This XML document is invalid, likely due to invalid characters. XML error: %s at line %d, column %d', $parser->get_error_string(), $parser->get_current_line(), $parser->get_current_column());
                        }
                        else
                        {
                        }
                        else
                        {
-                               $this->error = 'The data could not be converted to UTF-8';
+                               $this->error = 'The data could not be converted to UTF-8. You MUST have either the iconv or mbstring extension installed. Upgrading to PHP 5.x (which includes iconv) is highly recommended.';
                        }
                        SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
                        return false;
                        }
                        SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
                        return false;
@@ -1831,7 +1832,7 @@ class SimplePie
        }
 
        /**
        }
 
        /**
-        * Return the error message for the occurred error
+        * Return the error message for the occured error
         *
         * @access public
         * @return string Error message
         *
         * @access public
         * @return string Error message
@@ -1984,7 +1985,7 @@ class SimplePie
                                                        }
                                                        else
                                                        {
                                                        }
                                                        else
                                                        {
-                                                               trigger_error("$cache->name is not writeable", E_USER_WARNING);
+                                                               trigger_error("$cache->name is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
                                                                return $this->sanitize($favicon, SIMPLEPIE_CONSTRUCT_IRI);
                                                        }
                                                }
                                                                return $this->sanitize($favicon, SIMPLEPIE_CONSTRUCT_IRI);
                                                        }
                                                }
@@ -2774,11 +2775,12 @@ class SimplePie
 
        function get_latitude()
        {
 
        function get_latitude()
        {
+
                if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat'))
                {
                        return (float) $return[0]['data'];
                }
                if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat'))
                {
                        return (float) $return[0]['data'];
                }
-               elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
+               elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
                {
                        return (float) $match[1];
                }
                {
                        return (float) $match[1];
                }
@@ -2798,7 +2800,7 @@ class SimplePie
                {
                        return (float) $return[0]['data'];
                }
                {
                        return (float) $return[0]['data'];
                }
-               elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
+               elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
                {
                        return (float) $match[2];
                }
                {
                        return (float) $match[2];
                }
@@ -3278,6 +3280,11 @@ class SimplePie_Item
                {
                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
                }
                {
                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
                }
+               elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description'))
+               {
+                       return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML);
+               }
+
                elseif (!$description_only)
                {
                        return $this->get_content(true);
                elseif (!$description_only)
                {
                        return $this->get_content(true);
@@ -3642,7 +3649,7 @@ class SimplePie_Item
                {
                        return $this->sanitize($this->get_date(''), SIMPLEPIE_CONSTRUCT_TEXT);
                }
                {
                        return $this->sanitize($this->get_date(''), SIMPLEPIE_CONSTRUCT_TEXT);
                }
-               elseif (($date = $this->get_date('U')) !== null)
+               elseif (($date = $this->get_date('U')) !== null && $date !== false)
                {
                        return strftime($date_format, $date);
                }
                {
                        return strftime($date_format, $date);
                }
@@ -4428,621 +4435,624 @@ class SimplePie_Item
                        // If we have media:group tags, loop through them.
                        foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'group') as $group)
                        {
                        // If we have media:group tags, loop through them.
                        foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'group') as $group)
                        {
-                               // If we have media:content tags, loop through them.
-                               foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)
-                               {
-                                       if (isset($content['attribs']['']['url']))
-                                       {
-                                               // Attributes
-                                               $bitrate = null;
-                                               $channels = null;
-                                               $duration = null;
-                                               $expression = null;
-                                               $framerate = null;
-                                               $height = null;
-                                               $javascript = null;
-                                               $lang = null;
-                                               $length = null;
-                                               $medium = null;
-                                               $samplingrate = null;
-                                               $type = null;
-                                               $url = null;
-                                               $width = null;
-
-                                               // Elements
-                                               $captions = null;
-                                               $categories = null;
-                                               $copyrights = null;
-                                               $credits = null;
-                                               $description = null;
-                                               $hashes = null;
-                                               $keywords = null;
-                                               $player = null;
-                                               $ratings = null;
-                                               $restrictions = null;
-                                               $thumbnails = null;
-                                               $title = null;
-
-                                               // Start checking the attributes of media:content
-                                               if (isset($content['attribs']['']['bitrate']))
-                                               {
-                                                       $bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               if (isset($content['attribs']['']['channels']))
-                                               {
-                                                       $channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               if (isset($content['attribs']['']['duration']))
-                                               {
-                                                       $duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               else
-                                               {
-                                                       $duration = $duration_parent;
-                                               }
-                                               if (isset($content['attribs']['']['expression']))
-                                               {
-                                                       $expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               if (isset($content['attribs']['']['framerate']))
-                                               {
-                                                       $framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               if (isset($content['attribs']['']['height']))
-                                               {
-                                                       $height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               if (isset($content['attribs']['']['lang']))
-                                               {
-                                                       $lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               if (isset($content['attribs']['']['fileSize']))
-                                               {
-                                                       $length = ceil($content['attribs']['']['fileSize']);
-                                               }
-                                               if (isset($content['attribs']['']['medium']))
-                                               {
-                                                       $medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               if (isset($content['attribs']['']['samplingrate']))
-                                               {
-                                                       $samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               if (isset($content['attribs']['']['type']))
-                                               {
-                                                       $type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               if (isset($content['attribs']['']['width']))
-                                               {
-                                                       $width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
-
-                                               // Checking the other optional media: elements. Priority: media:content, media:group, item, channel
-
-                                               // CAPTIONS
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
-                                               {
-                                                       foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
+                               if(isset($group['child']) && isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content']))
+                               {
+                                       // If we have media:content tags, loop through them.
+                                       foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)
+                                       {
+                                               if (isset($content['attribs']['']['url']))
+                                               {
+                                                       // Attributes
+                                                       $bitrate = null;
+                                                       $channels = null;
+                                                       $duration = null;
+                                                       $expression = null;
+                                                       $framerate = null;
+                                                       $height = null;
+                                                       $javascript = null;
+                                                       $lang = null;
+                                                       $length = null;
+                                                       $medium = null;
+                                                       $samplingrate = null;
+                                                       $type = null;
+                                                       $url = null;
+                                                       $width = null;
+
+                                                       // Elements
+                                                       $captions = null;
+                                                       $categories = null;
+                                                       $copyrights = null;
+                                                       $credits = null;
+                                                       $description = null;
+                                                       $hashes = null;
+                                                       $keywords = null;
+                                                       $player = null;
+                                                       $ratings = null;
+                                                       $restrictions = null;
+                                                       $thumbnails = null;
+                                                       $title = null;
+
+                                                       // Start checking the attributes of media:content
+                                                       if (isset($content['attribs']['']['bitrate']))
                                                        {
                                                        {
-                                                               $caption_type = null;
-                                                               $caption_lang = null;
-                                                               $caption_startTime = null;
-                                                               $caption_endTime = null;
-                                                               $caption_text = null;
-                                                               if (isset($caption['attribs']['']['type']))
-                                                               {
-                                                                       $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               if (isset($caption['attribs']['']['lang']))
-                                                               {
-                                                                       $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               if (isset($caption['attribs']['']['start']))
-                                                               {
-                                                                       $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               if (isset($caption['attribs']['']['end']))
-                                                               {
-                                                                       $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               if (isset($caption['data']))
-                                                               {
-                                                                       $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               $captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
+                                                               $bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT);
                                                        }
                                                        }
-                                                       if (is_array($captions))
+                                                       if (isset($content['attribs']['']['channels']))
                                                        {
                                                        {
-                                                               $captions = array_values(SimplePie_Misc::array_unique($captions));
+                                                               $channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT);
                                                        }
                                                        }
-                                               }
-                                               elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
-                                               {
-                                                       foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
+                                                       if (isset($content['attribs']['']['duration']))
                                                        {
                                                        {
-                                                               $caption_type = null;
-                                                               $caption_lang = null;
-                                                               $caption_startTime = null;
-                                                               $caption_endTime = null;
-                                                               $caption_text = null;
-                                                               if (isset($caption['attribs']['']['type']))
-                                                               {
-                                                                       $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               if (isset($caption['attribs']['']['lang']))
-                                                               {
-                                                                       $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               if (isset($caption['attribs']['']['start']))
-                                                               {
-                                                                       $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               if (isset($caption['attribs']['']['end']))
-                                                               {
-                                                                       $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               if (isset($caption['data']))
-                                                               {
-                                                                       $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               $captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
+                                                               $duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT);
                                                        }
                                                        }
-                                                       if (is_array($captions))
+                                                       else
                                                        {
                                                        {
-                                                               $captions = array_values(SimplePie_Misc::array_unique($captions));
+                                                               $duration = $duration_parent;
                                                        }
                                                        }
-                                               }
-                                               else
-                                               {
-                                                       $captions = $captions_parent;
-                                               }
-
-                                               // CATEGORIES
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
-                                               {
-                                                       foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
+                                                       if (isset($content['attribs']['']['expression']))
                                                        {
                                                        {
-                                                               $term = null;
-                                                               $scheme = null;
-                                                               $label = null;
-                                                               if (isset($category['data']))
-                                                               {
-                                                                       $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               if (isset($category['attribs']['']['scheme']))
-                                                               {
-                                                                       $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               else
-                                                               {
-                                                                       $scheme = 'http://search.yahoo.com/mrss/category_schema';
-                                                               }
-                                                               if (isset($category['attribs']['']['label']))
-                                                               {
-                                                                       $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               $categories[] =& new $this->feed->category_class($term, $scheme, $label);
+                                                               $expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT);
                                                        }
                                                        }
-                                               }
-                                               if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
-                                               {
-                                                       foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
+                                                       if (isset($content['attribs']['']['framerate']))
                                                        {
                                                        {
-                                                               $term = null;
-                                                               $scheme = null;
-                                                               $label = null;
-                                                               if (isset($category['data']))
-                                                               {
-                                                                       $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               if (isset($category['attribs']['']['scheme']))
-                                                               {
-                                                                       $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               else
-                                                               {
-                                                                       $scheme = 'http://search.yahoo.com/mrss/category_schema';
-                                                               }
-                                                               if (isset($category['attribs']['']['label']))
-                                                               {
-                                                                       $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               $categories[] =& new $this->feed->category_class($term, $scheme, $label);
+                                                               $framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT);
                                                        }
                                                        }
-                                               }
-                                               if (is_array($categories) && is_array($categories_parent))
-                                               {
-                                                       $categories = array_values(SimplePie_Misc::array_unique(array_merge($categories, $categories_parent)));
-                                               }
-                                               elseif (is_array($categories))
-                                               {
-                                                       $categories = array_values(SimplePie_Misc::array_unique($categories));
-                                               }
-                                               elseif (is_array($categories_parent))
-                                               {
-                                                       $categories = array_values(SimplePie_Misc::array_unique($categories_parent));
-                                               }
-
-                                               // COPYRIGHTS
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
-                                               {
-                                                       $copyright_url = null;
-                                                       $copyright_label = null;
-                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
+                                                       if (isset($content['attribs']['']['height']))
                                                        {
                                                        {
-                                                               $copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               $height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT);
                                                        }
                                                        }
-                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
+                                                       if (isset($content['attribs']['']['lang']))
                                                        {
                                                        {
-                                                               $copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               $lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
                                                        }
                                                        }
-                                                       $copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label);
-                                               }
-                                               elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
-                                               {
-                                                       $copyright_url = null;
-                                                       $copyright_label = null;
-                                                       if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
+                                                       if (isset($content['attribs']['']['fileSize']))
                                                        {
                                                        {
-                                                               $copyright_url = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               $length = ceil($content['attribs']['']['fileSize']);
                                                        }
                                                        }
-                                                       if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
+                                                       if (isset($content['attribs']['']['medium']))
                                                        {
                                                        {
-                                                               $copyright_label = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               $medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT);
                                                        }
                                                        }
-                                                       $copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label);
-                                               }
-                                               else
-                                               {
-                                                       $copyrights = $copyrights_parent;
-                                               }
+                                                       if (isset($content['attribs']['']['samplingrate']))
+                                                       {
+                                                               $samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                       }
+                                                       if (isset($content['attribs']['']['type']))
+                                                       {
+                                                               $type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                       }
+                                                       if (isset($content['attribs']['']['width']))
+                                                       {
+                                                               $width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                       }
+                                                       $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
 
 
-                                               // CREDITS
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
-                                               {
-                                                       foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
+                                                       // Checking the other optional media: elements. Priority: media:content, media:group, item, channel
+
+                                                       // CAPTIONS
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
                                                        {
                                                        {
-                                                               $credit_role = null;
-                                                               $credit_scheme = null;
-                                                               $credit_name = null;
-                                                               if (isset($credit['attribs']['']['role']))
+                                                               foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
                                                                {
                                                                {
-                                                                       $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       $caption_type = null;
+                                                                       $caption_lang = null;
+                                                                       $caption_startTime = null;
+                                                                       $caption_endTime = null;
+                                                                       $caption_text = null;
+                                                                       if (isset($caption['attribs']['']['type']))
+                                                                       {
+                                                                               $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($caption['attribs']['']['lang']))
+                                                                       {
+                                                                               $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($caption['attribs']['']['start']))
+                                                                       {
+                                                                               $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($caption['attribs']['']['end']))
+                                                                       {
+                                                                               $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($caption['data']))
+                                                                       {
+                                                                               $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       $captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
                                                                }
                                                                }
-                                                               if (isset($credit['attribs']['']['scheme']))
+                                                               if (is_array($captions))
                                                                {
                                                                {
-                                                                       $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       $captions = array_values(SimplePie_Misc::array_unique($captions));
                                                                }
                                                                }
-                                                               else
+                                                       }
+                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
+                                                       {
+                                                               foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
                                                                {
                                                                {
-                                                                       $credit_scheme = 'urn:ebu';
+                                                                       $caption_type = null;
+                                                                       $caption_lang = null;
+                                                                       $caption_startTime = null;
+                                                                       $caption_endTime = null;
+                                                                       $caption_text = null;
+                                                                       if (isset($caption['attribs']['']['type']))
+                                                                       {
+                                                                               $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($caption['attribs']['']['lang']))
+                                                                       {
+                                                                               $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($caption['attribs']['']['start']))
+                                                                       {
+                                                                               $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($caption['attribs']['']['end']))
+                                                                       {
+                                                                               $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($caption['data']))
+                                                                       {
+                                                                               $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       $captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
                                                                }
                                                                }
-                                                               if (isset($credit['data']))
+                                                               if (is_array($captions))
                                                                {
                                                                {
-                                                                       $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       $captions = array_values(SimplePie_Misc::array_unique($captions));
                                                                }
                                                                }
-                                                               $credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
                                                        }
                                                        }
-                                                       if (is_array($credits))
+                                                       else
                                                        {
                                                        {
-                                                               $credits = array_values(SimplePie_Misc::array_unique($credits));
+                                                               $captions = $captions_parent;
                                                        }
                                                        }
-                                               }
-                                               elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
-                                               {
-                                                       foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
+
+                                                       // CATEGORIES
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
                                                        {
                                                        {
-                                                               $credit_role = null;
-                                                               $credit_scheme = null;
-                                                               $credit_name = null;
-                                                               if (isset($credit['attribs']['']['role']))
+                                                               foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
                                                                {
                                                                {
-                                                                       $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               if (isset($credit['attribs']['']['scheme']))
-                                                               {
-                                                                       $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                                               }
-                                                               else
-                                                               {
-                                                                       $credit_scheme = 'urn:ebu';
+                                                                       $term = null;
+                                                                       $scheme = null;
+                                                                       $label = null;
+                                                                       if (isset($category['data']))
+                                                                       {
+                                                                               $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($category['attribs']['']['scheme']))
+                                                                       {
+                                                                               $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               $scheme = 'http://search.yahoo.com/mrss/category_schema';
+                                                                       }
+                                                                       if (isset($category['attribs']['']['label']))
+                                                                       {
+                                                                               $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       $categories[] =& new $this->feed->category_class($term, $scheme, $label);
                                                                }
                                                                }
-                                                               if (isset($credit['data']))
+                                                       }
+                                                       if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
+                                                       {
+                                                               foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
                                                                {
                                                                {
-                                                                       $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       $term = null;
+                                                                       $scheme = null;
+                                                                       $label = null;
+                                                                       if (isset($category['data']))
+                                                                       {
+                                                                               $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($category['attribs']['']['scheme']))
+                                                                       {
+                                                                               $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               $scheme = 'http://search.yahoo.com/mrss/category_schema';
+                                                                       }
+                                                                       if (isset($category['attribs']['']['label']))
+                                                                       {
+                                                                               $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       $categories[] =& new $this->feed->category_class($term, $scheme, $label);
                                                                }
                                                                }
-                                                               $credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
                                                        }
                                                        }
-                                                       if (is_array($credits))
+                                                       if (is_array($categories) && is_array($categories_parent))
                                                        {
                                                        {
-                                                               $credits = array_values(SimplePie_Misc::array_unique($credits));
+                                                               $categories = array_values(SimplePie_Misc::array_unique(array_merge($categories, $categories_parent)));
+                                                       }
+                                                       elseif (is_array($categories))
+                                                       {
+                                                               $categories = array_values(SimplePie_Misc::array_unique($categories));
+                                                       }
+                                                       elseif (is_array($categories_parent))
+                                                       {
+                                                               $categories = array_values(SimplePie_Misc::array_unique($categories_parent));
                                                        }
                                                        }
-                                               }
-                                               else
-                                               {
-                                                       $credits = $credits_parent;
-                                               }
-
-                                               // DESCRIPTION
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
-                                               {
-                                                       $description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
-                                               {
-                                                       $description = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               else
-                                               {
-                                                       $description = $description_parent;
-                                               }
 
 
-                                               // HASHES
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
-                                               {
-                                                       foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
+                                                       // COPYRIGHTS
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
                                                        {
                                                        {
-                                                               $value = null;
-                                                               $algo = null;
-                                                               if (isset($hash['data']))
+                                                               $copyright_url = null;
+                                                               $copyright_label = null;
+                                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
                                                                {
                                                                {
-                                                                       $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       $copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
                                                                }
                                                                }
-                                                               if (isset($hash['attribs']['']['algo']))
+                                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
                                                                {
                                                                {
-                                                                       $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       $copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
                                                                }
                                                                }
-                                                               else
+                                                               $copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label);
+                                                       }
+                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
+                                                       {
+                                                               $copyright_url = null;
+                                                               $copyright_label = null;
+                                                               if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
                                                                {
                                                                {
-                                                                       $algo = 'md5';
+                                                                       $copyright_url = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
                                                                }
                                                                }
-                                                               $hashes[] = $algo.':'.$value;
+                                                               if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
+                                                               {
+                                                                       $copyright_label = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                               }
+                                                               $copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label);
                                                        }
                                                        }
-                                                       if (is_array($hashes))
+                                                       else
                                                        {
                                                        {
-                                                               $hashes = array_values(SimplePie_Misc::array_unique($hashes));
+                                                               $copyrights = $copyrights_parent;
                                                        }
                                                        }
-                                               }
-                                               elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
-                                               {
-                                                       foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
+
+                                                       // CREDITS
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
                                                        {
                                                        {
-                                                               $value = null;
-                                                               $algo = null;
-                                                               if (isset($hash['data']))
+                                                               foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
                                                                {
                                                                {
-                                                                       $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       $credit_role = null;
+                                                                       $credit_scheme = null;
+                                                                       $credit_name = null;
+                                                                       if (isset($credit['attribs']['']['role']))
+                                                                       {
+                                                                               $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($credit['attribs']['']['scheme']))
+                                                                       {
+                                                                               $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               $credit_scheme = 'urn:ebu';
+                                                                       }
+                                                                       if (isset($credit['data']))
+                                                                       {
+                                                                               $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       $credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
                                                                }
                                                                }
-                                                               if (isset($hash['attribs']['']['algo']))
+                                                               if (is_array($credits))
                                                                {
                                                                {
-                                                                       $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       $credits = array_values(SimplePie_Misc::array_unique($credits));
                                                                }
                                                                }
-                                                               else
+                                                       }
+                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
+                                                       {
+                                                               foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
                                                                {
                                                                {
-                                                                       $algo = 'md5';
+                                                                       $credit_role = null;
+                                                                       $credit_scheme = null;
+                                                                       $credit_name = null;
+                                                                       if (isset($credit['attribs']['']['role']))
+                                                                       {
+                                                                               $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($credit['attribs']['']['scheme']))
+                                                                       {
+                                                                               $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               $credit_scheme = 'urn:ebu';
+                                                                       }
+                                                                       if (isset($credit['data']))
+                                                                       {
+                                                                               $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       $credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
+                                                               }
+                                                               if (is_array($credits))
+                                                               {
+                                                                       $credits = array_values(SimplePie_Misc::array_unique($credits));
                                                                }
                                                                }
-                                                               $hashes[] = $algo.':'.$value;
                                                        }
                                                        }
-                                                       if (is_array($hashes))
+                                                       else
                                                        {
                                                        {
-                                                               $hashes = array_values(SimplePie_Misc::array_unique($hashes));
+                                                               $credits = $credits_parent;
                                                        }
                                                        }
-                                               }
-                                               else
-                                               {
-                                                       $hashes = $hashes_parent;
-                                               }
 
 
-                                               // KEYWORDS
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
-                                               {
-                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
+                                                       // DESCRIPTION
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
                                                        {
                                                        {
-                                                               $temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
-                                                               foreach ($temp as $word)
-                                                               {
-                                                                       $keywords[] = trim($word);
-                                                               }
-                                                               unset($temp);
+                                                               $description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
                                                        }
                                                        }
-                                                       if (is_array($keywords))
+                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
                                                        {
                                                        {
-                                                               $keywords = array_values(SimplePie_Misc::array_unique($keywords));
+                                                               $description = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
                                                        }
                                                        }
-                                               }
-                                               elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
-                                               {
-                                                       if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
+                                                       else
                                                        {
                                                        {
-                                                               $temp = explode(',', $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
-                                                               foreach ($temp as $word)
+                                                               $description = $description_parent;
+                                                       }
+
+                                                       // HASHES
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
+                                                       {
+                                                               foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
                                                                {
                                                                {
-                                                                       $keywords[] = trim($word);
+                                                                       $value = null;
+                                                                       $algo = null;
+                                                                       if (isset($hash['data']))
+                                                                       {
+                                                                               $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($hash['attribs']['']['algo']))
+                                                                       {
+                                                                               $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               $algo = 'md5';
+                                                                       }
+                                                                       $hashes[] = $algo.':'.$value;
+                                                               }
+                                                               if (is_array($hashes))
+                                                               {
+                                                                       $hashes = array_values(SimplePie_Misc::array_unique($hashes));
                                                                }
                                                                }
-                                                               unset($temp);
                                                        }
                                                        }
-                                                       if (is_array($keywords))
+                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
                                                        {
                                                        {
-                                                               $keywords = array_values(SimplePie_Misc::array_unique($keywords));
-                                                       }
-                                               }
-                                               else
-                                               {
-                                                       $keywords = $keywords_parent;
-                                               }
-
-                                               // PLAYER
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
-                                               {
-                                                       $player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
-                                               }
-                                               elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
-                                               {
-                                                       $player = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
-                                               }
-                                               else
-                                               {
-                                                       $player = $player_parent;
-                                               }
+                                                               foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
+                                                               {
+                                                                       $value = null;
+                                                                       $algo = null;
+                                                                       if (isset($hash['data']))
+                                                                       {
+                                                                               $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($hash['attribs']['']['algo']))
+                                                                       {
+                                                                               $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               $algo = 'md5';
+                                                                       }
+                                                                       $hashes[] = $algo.':'.$value;
+                                                               }
+                                                               if (is_array($hashes))
+                                                               {
+                                                                       $hashes = array_values(SimplePie_Misc::array_unique($hashes));
+                                                               }
+                                                       }
+                                                       else
+                                                       {
+                                                               $hashes = $hashes_parent;
+                                                       }
 
 
-                                               // RATINGS
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
-                                               {
-                                                       foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
+                                                       // KEYWORDS
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
                                                        {
                                                        {
-                                                               $rating_scheme = null;
-                                                               $rating_value = null;
-                                                               if (isset($rating['attribs']['']['scheme']))
+                                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
                                                                {
                                                                {
-                                                                       $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       $temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+                                                                       foreach ($temp as $word)
+                                                                       {
+                                                                               $keywords[] = trim($word);
+                                                                       }
+                                                                       unset($temp);
                                                                }
                                                                }
-                                                               else
+                                                               if (is_array($keywords))
                                                                {
                                                                {
-                                                                       $rating_scheme = 'urn:simple';
+                                                                       $keywords = array_values(SimplePie_Misc::array_unique($keywords));
                                                                }
                                                                }
-                                                               if (isset($rating['data']))
+                                                       }
+                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
+                                                       {
+                                                               if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
                                                                {
                                                                {
-                                                                       $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       $temp = explode(',', $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+                                                                       foreach ($temp as $word)
+                                                                       {
+                                                                               $keywords[] = trim($word);
+                                                                       }
+                                                                       unset($temp);
+                                                               }
+                                                               if (is_array($keywords))
+                                                               {
+                                                                       $keywords = array_values(SimplePie_Misc::array_unique($keywords));
                                                                }
                                                                }
-                                                               $ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
                                                        }
                                                        }
-                                                       if (is_array($ratings))
+                                                       else
                                                        {
                                                        {
-                                                               $ratings = array_values(SimplePie_Misc::array_unique($ratings));
+                                                               $keywords = $keywords_parent;
                                                        }
                                                        }
-                                               }
-                                               elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
-                                               {
-                                                       foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
+
+                                                       // PLAYER
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
                                                        {
                                                        {
-                                                               $rating_scheme = null;
-                                                               $rating_value = null;
-                                                               if (isset($rating['attribs']['']['scheme']))
+                                                               $player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+                                                       }
+                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
+                                                       {
+                                                               $player = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+                                                       }
+                                                       else
+                                                       {
+                                                               $player = $player_parent;
+                                                       }
+
+                                                       // RATINGS
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
+                                                       {
+                                                               foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
                                                                {
                                                                {
-                                                                       $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       $rating_scheme = null;
+                                                                       $rating_value = null;
+                                                                       if (isset($rating['attribs']['']['scheme']))
+                                                                       {
+                                                                               $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               $rating_scheme = 'urn:simple';
+                                                                       }
+                                                                       if (isset($rating['data']))
+                                                                       {
+                                                                               $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       $ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
                                                                }
                                                                }
-                                                               else
+                                                               if (is_array($ratings))
                                                                {
                                                                {
-                                                                       $rating_scheme = 'urn:simple';
+                                                                       $ratings = array_values(SimplePie_Misc::array_unique($ratings));
                                                                }
                                                                }
-                                                               if (isset($rating['data']))
+                                                       }
+                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
+                                                       {
+                                                               foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
                                                                {
                                                                {
-                                                                       $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       $rating_scheme = null;
+                                                                       $rating_value = null;
+                                                                       if (isset($rating['attribs']['']['scheme']))
+                                                                       {
+                                                                               $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               $rating_scheme = 'urn:simple';
+                                                                       }
+                                                                       if (isset($rating['data']))
+                                                                       {
+                                                                               $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       $ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
+                                                               }
+                                                               if (is_array($ratings))
+                                                               {
+                                                                       $ratings = array_values(SimplePie_Misc::array_unique($ratings));
                                                                }
                                                                }
-                                                               $ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
                                                        }
                                                        }
-                                                       if (is_array($ratings))
+                                                       else
                                                        {
                                                        {
-                                                               $ratings = array_values(SimplePie_Misc::array_unique($ratings));
+                                                               $ratings = $ratings_parent;
                                                        }
                                                        }
-                                               }
-                                               else
-                                               {
-                                                       $ratings = $ratings_parent;
-                                               }
 
 
-                                               // RESTRICTIONS
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
-                                               {
-                                                       foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
+                                                       // RESTRICTIONS
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
                                                        {
                                                        {
-                                                               $restriction_relationship = null;
-                                                               $restriction_type = null;
-                                                               $restriction_value = null;
-                                                               if (isset($restriction['attribs']['']['relationship']))
+                                                               foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
                                                                {
                                                                {
-                                                                       $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       $restriction_relationship = null;
+                                                                       $restriction_type = null;
+                                                                       $restriction_value = null;
+                                                                       if (isset($restriction['attribs']['']['relationship']))
+                                                                       {
+                                                                               $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($restriction['attribs']['']['type']))
+                                                                       {
+                                                                               $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($restriction['data']))
+                                                                       {
+                                                                               $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       $restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
                                                                }
                                                                }
-                                                               if (isset($restriction['attribs']['']['type']))
+                                                               if (is_array($restrictions))
                                                                {
                                                                {
-                                                                       $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       $restrictions = array_values(SimplePie_Misc::array_unique($restrictions));
                                                                }
                                                                }
-                                                               if (isset($restriction['data']))
+                                                       }
+                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
+                                                       {
+                                                               foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
                                                                {
                                                                {
-                                                                       $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       $restriction_relationship = null;
+                                                                       $restriction_type = null;
+                                                                       $restriction_value = null;
+                                                                       if (isset($restriction['attribs']['']['relationship']))
+                                                                       {
+                                                                               $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($restriction['attribs']['']['type']))
+                                                                       {
+                                                                               $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       if (isset($restriction['data']))
+                                                                       {
+                                                                               $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       }
+                                                                       $restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+                                                               }
+                                                               if (is_array($restrictions))
+                                                               {
+                                                                       $restrictions = array_values(SimplePie_Misc::array_unique($restrictions));
                                                                }
                                                                }
-                                                               $restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
                                                        }
                                                        }
-                                                       if (is_array($restrictions))
+                                                       else
                                                        {
                                                        {
-                                                               $restrictions = array_values(SimplePie_Misc::array_unique($restrictions));
+                                                               $restrictions = $restrictions_parent;
                                                        }
                                                        }
-                                               }
-                                               elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
-                                               {
-                                                       foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
+
+                                                       // THUMBNAILS
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
                                                        {
                                                        {
-                                                               $restriction_relationship = null;
-                                                               $restriction_type = null;
-                                                               $restriction_value = null;
-                                                               if (isset($restriction['attribs']['']['relationship']))
+                                                               foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
                                                                {
                                                                {
-                                                                       $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
                                                                }
                                                                }
-                                                               if (isset($restriction['attribs']['']['type']))
+                                                               if (is_array($thumbnails))
                                                                {
                                                                {
-                                                                       $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       $thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails));
                                                                }
                                                                }
-                                                               if (isset($restriction['data']))
+                                                       }
+                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
+                                                       {
+                                                               foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
                                                                {
                                                                {
-                                                                       $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                                                       $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+                                                               }
+                                                               if (is_array($thumbnails))
+                                                               {
+                                                                       $thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails));
                                                                }
                                                                }
-                                                               $restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
                                                        }
                                                        }
-                                                       if (is_array($restrictions))
+                                                       else
                                                        {
                                                        {
-                                                               $restrictions = array_values(SimplePie_Misc::array_unique($restrictions));
+                                                               $thumbnails = $thumbnails_parent;
                                                        }
                                                        }
-                                               }
-                                               else
-                                               {
-                                                       $restrictions = $restrictions_parent;
-                                               }
 
 
-                                               // THUMBNAILS
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
-                                               {
-                                                       foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
+                                                       // TITLES
+                                                       if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
                                                        {
                                                        {
-                                                               $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
-                                                       }
-                                                       if (is_array($thumbnails))
-                                                       {
-                                                               $thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails));
+                                                               $title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
                                                        }
                                                        }
-                                               }
-                                               elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
-                                               {
-                                                       foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
+                                                       elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
                                                        {
                                                        {
-                                                               $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+                                                               $title = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
                                                        }
                                                        }
-                                                       if (is_array($thumbnails))
+                                                       else
                                                        {
                                                        {
-                                                               $thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails));
+                                                               $title = $title_parent;
                                                        }
                                                        }
-                                               }
-                                               else
-                                               {
-                                                       $thumbnails = $thumbnails_parent;
-                                               }
 
 
-                                               // TITLES
-                                               if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
-                                               {
-                                                       $title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
-                                               {
-                                                       $title = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
-                                               }
-                                               else
-                                               {
-                                                       $title = $title_parent;
+                                                       $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width);
                                                }
                                                }
-
-                                               $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width);
                                        }
                                }
                        }
                                        }
                                }
                        }
@@ -5052,7 +5062,7 @@ class SimplePie_Item
                        {
                                foreach ((array) $this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)
                                {
                        {
                                foreach ((array) $this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)
                                {
-                                       if (isset($content['attribs']['']['url']))
+                                       if (isset($content['attribs']['']['url']) || isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
                                        {
                                                // Attributes
                                                $bitrate = null;
                                        {
                                                // Attributes
                                                $bitrate = null;
@@ -5137,8 +5147,10 @@ class SimplePie_Item
                                                {
                                                        $width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);
                                                }
                                                {
                                                        $width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);
                                                }
-                                               $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
-
+                                               if (isset($content['attribs']['']['url']))
+                                               {
+                                                       $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+                                               }
                                                // Checking the other optional media: elements. Priority: media:content, media:group, item, channel
 
                                                // CAPTIONS
                                                // Checking the other optional media: elements. Priority: media:content, media:group, item, channel
 
                                                // CAPTIONS
@@ -5580,7 +5592,7 @@ class SimplePie_Item
                {
                        return (float) $return[0]['data'];
                }
                {
                        return (float) $return[0]['data'];
                }
-               elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
+               elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
                {
                        return (float) $match[1];
                }
                {
                        return (float) $match[1];
                }
@@ -5600,7 +5612,7 @@ class SimplePie_Item
                {
                        return (float) $return[0]['data'];
                }
                {
                        return (float) $return[0]['data'];
                }
-               elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
+               elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
                {
                        return (float) $match[2];
                }
                {
                        return (float) $match[2];
                }
@@ -6223,7 +6235,7 @@ class SimplePie_Source
                {
                        return (float) $return[0]['data'];
                }
                {
                        return (float) $return[0]['data'];
                }
-               elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
+               elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
                {
                        return (float) $match[1];
                }
                {
                        return (float) $match[1];
                }
@@ -6243,7 +6255,7 @@ class SimplePie_Source
                {
                        return (float) $return[0]['data'];
                }
                {
                        return (float) $return[0]['data'];
                }
-               elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
+               elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
                {
                        return (float) $match[2];
                }
                {
                        return (float) $match[2];
                }
@@ -7727,16 +7739,17 @@ class SimplePie_File
                        {
                                $this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_FSOCKOPEN;
                                $url_parts = parse_url($url);
                        {
                                $this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_FSOCKOPEN;
                                $url_parts = parse_url($url);
+                               $socket_host = $url_parts['host'];
                                if (isset($url_parts['scheme']) && strtolower($url_parts['scheme']) === 'https')
                                {
                                if (isset($url_parts['scheme']) && strtolower($url_parts['scheme']) === 'https')
                                {
-                                       $url_parts['host'] = "ssl://$url_parts[host]";
+                                       $socket_host = "ssl://$url_parts[host]";
                                        $url_parts['port'] = 443;
                                }
                                if (!isset($url_parts['port']))
                                {
                                        $url_parts['port'] = 80;
                                }
                                        $url_parts['port'] = 443;
                                }
                                if (!isset($url_parts['port']))
                                {
                                        $url_parts['port'] = 80;
                                }
-                               $fp = @fsockopen($url_parts['host'], $url_parts['port'], $errno, $errstr, $timeout);
+                               $fp = @fsockopen($socket_host, $url_parts['port'], $errno, $errstr, $timeout);
                                if (!$fp)
                                {
                                        $this->error = 'fsockopen error: ' . $errstr;
                                if (!$fp)
                                {
                                        $this->error = 'fsockopen error: ' . $errstr;
@@ -8482,7 +8495,7 @@ class SimplePie_gzdecode
 
                                // Get the length of the extra field
                                $len = current(unpack('v', substr($this->compressed_data, $this->position, 2)));
 
                                // Get the length of the extra field
                                $len = current(unpack('v', substr($this->compressed_data, $this->position, 2)));
-                               $position += 2;
+                               $this->position += 2;
 
                                // Check the length of the string is still valid
                                $this->min_compressed_size += $len + 4;
 
                                // Check the length of the string is still valid
                                $this->min_compressed_size += $len + 4;
@@ -9234,8 +9247,25 @@ class SimplePie_Misc
                                        $note = 'Unknown Error';
                                        break;
                        }
                                        $note = 'Unknown Error';
                                        break;
                        }
-                       error_log("$note: $message in $file on line $line", 0);
+
+                       $log_error = true;
+                       if (!function_exists('error_log'))
+                       {
+                               $log_error = false;
+                       }
+
+                       $log_file = @ini_get('error_log');
+                       if (!empty($log_file) && ('syslog' != $log_file) && !@is_writable($log_file))
+                       {
+                               $log_error = false;
+                       }
+
+                       if ($log_error)
+                       {
+                               @error_log("$note: $message in $file on line $line", 0);
+                       }
                }
                }
+
                return $message;
        }
 
                return $message;
        }
 
@@ -9432,7 +9462,7 @@ class SimplePie_Misc
                        return SimplePie_Misc::windows_1252_to_utf8($data);
                }
                // This is second, as behaviour of this varies only with PHP version (the middle part of this expression checks the encoding is supported).
                        return SimplePie_Misc::windows_1252_to_utf8($data);
                }
                // This is second, as behaviour of this varies only with PHP version (the middle part of this expression checks the encoding is supported).
-               elseif (function_exists('mb_convert_encoding') && @mb_convert_encoding("\x80", 'UTF-16BE', $input) !== "\x00\x80" && ($return = @mb_convert_encoding($data, $output, $input)))
+               elseif (function_exists('mb_convert_encoding') && @mb_convert_encoding("\x80", 'UTF-16BE', $input) !== "\x00\x80" && in_array($input, mb_list_encodings()) && ($return = @mb_convert_encoding($data, $output, $input)))
                {
                        return $return;
                }
                {
                        return $return;
                }
@@ -9448,6 +9478,17 @@ class SimplePie_Misc
                }
        }
 
                }
        }
 
+       /**
+        * Normalize an encoding name
+        *
+        * This is automatically generated by create.php
+        *
+        * To generate it, run `php create.php` on the command line, and copy the
+        * output to replace this function.
+        *
+        * @param string $charset Character set to standardise
+        * @return string Standardised name
+        */
        function encoding($charset)
        {
                // Normalization from UTS #22
        function encoding($charset)
        {
                // Normalization from UTS #22
@@ -9481,7 +9522,6 @@ class SimplePie_Misc
 
                        case 'big5':
                        case 'csbig5':
 
                        case 'big5':
                        case 'csbig5':
-                       case 'xxbig5':
                                return 'Big5';
 
                        case 'big5hkscs':
                                return 'Big5';
 
                        case 'big5hkscs':
@@ -9637,14 +9677,14 @@ class SimplePie_Misc
                        case 'isoir85':
                                return 'ES2';
 
                        case 'isoir85':
                                return 'ES2';
 
-                       case 'cseucfixwidjapanese':
-                       case 'extendedunixcodefixedwidthforjapanese':
-                               return 'Extended_UNIX_Code_Fixed_Width_for_Japanese';
-
                        case 'cseucpkdfmtjapanese':
                        case 'eucjp':
                        case 'extendedunixcodepackedformatforjapanese':
                        case 'cseucpkdfmtjapanese':
                        case 'eucjp':
                        case 'extendedunixcodepackedformatforjapanese':
-                               return 'Extended_UNIX_Code_Packed_Format_for_Japanese';
+                               return 'EUC-JP';
+
+                       case 'cseucfixwidjapanese':
+                       case 'extendedunixcodefixedwidthforjapanese':
+                               return 'Extended_UNIX_Code_Fixed_Width_for_Japanese';
 
                        case 'gb18030':
                                return 'GB18030';
 
                        case 'gb18030':
                                return 'GB18030';
@@ -9695,107 +9735,33 @@ class SimplePie_Misc
                                return 'HP-DeskTop';
 
                        case 'cshplegal':
                                return 'HP-DeskTop';
 
                        case 'cshplegal':
-                       case 'hplegal':
-                               return 'HP-Legal';
-
-                       case 'cshpmath8':
-                       case 'hpmath8':
-                               return 'HP-Math8';
-
-                       case 'cshppifont':
-                       case 'hppifont':
-                               return 'HP-Pi-font';
-
-                       case 'cshproman8':
-                       case 'hproman8':
-                       case 'r8':
-                       case 'roman8':
-                               return 'hp-roman8';
-
-                       case 'hzgb2312':
-                               return 'HZ-GB-2312';
-
-                       case 'csibmsymbols':
-                       case 'ibmsymbols':
-                               return 'IBM-Symbols';
-
-                       case 'csibmthai':
-                       case 'ibmthai':
-                               return 'IBM-Thai';
-
-                       case 'ccsid858':
-                       case 'cp858':
-                       case 'ibm858':
-                       case 'pcmultilingual850euro':
-                               return 'IBM00858';
-
-                       case 'ccsid924':
-                       case 'cp924':
-                       case 'ebcdiclatin9euro':
-                       case 'ibm924':
-                               return 'IBM00924';
-
-                       case 'ccsid1140':
-                       case 'cp1140':
-                       case 'ebcdicus37euro':
-                       case 'ibm1140':
-                               return 'IBM01140';
-
-                       case 'ccsid1141':
-                       case 'cp1141':
-                       case 'ebcdicde273euro':
-                       case 'ibm1141':
-                               return 'IBM01141';
-
-                       case 'ccsid1142':
-                       case 'cp1142':
-                       case 'ebcdicdk277euro':
-                       case 'ebcdicno277euro':
-                       case 'ibm1142':
-                               return 'IBM01142';
-
-                       case 'ccsid1143':
-                       case 'cp1143':
-                       case 'ebcdicfi278euro':
-                       case 'ebcdicse278euro':
-                       case 'ibm1143':
-                               return 'IBM01143';
+                       case 'hplegal':
+                               return 'HP-Legal';
 
 
-                       case 'ccsid1144':
-                       case 'cp1144':
-                       case 'ebcdicit280euro':
-                       case 'ibm1144':
-                               return 'IBM01144';
+                       case 'cshpmath8':
+                       case 'hpmath8':
+                               return 'HP-Math8';
 
 
-                       case 'ccsid1145':
-                       case 'cp1145':
-                       case 'ebcdices284euro':
-                       case 'ibm1145':
-                               return 'IBM01145';
+                       case 'cshppifont':
+                       case 'hppifont':
+                               return 'HP-Pi-font';
 
 
-                       case 'ccsid1146':
-                       case 'cp1146':
-                       case 'ebcdicgb285euro':
-                       case 'ibm1146':
-                               return 'IBM01146';
+                       case 'cshproman8':
+                       case 'hproman8':
+                       case 'r8':
+                       case 'roman8':
+                               return 'hp-roman8';
 
 
-                       case 'ccsid1147':
-                       case 'cp1147':
-                       case 'ebcdicfr297euro':
-                       case 'ibm1147':
-                               return 'IBM01147';
+                       case 'hzgb2312':
+                               return 'HZ-GB-2312';
 
 
-                       case 'ccsid1148':
-                       case 'cp1148':
-                       case 'ebcdicinternational500euro':
-                       case 'ibm1148':
-                               return 'IBM01148';
+                       case 'csibmsymbols':
+                       case 'ibmsymbols':
+                               return 'IBM-Symbols';
 
 
-                       case 'ccsid1149':
-                       case 'cp1149':
-                       case 'ebcdicis871euro':
-                       case 'ibm1149':
-                               return 'IBM01149';
+                       case 'csibmthai':
+                       case 'ibmthai':
+                               return 'IBM-Thai';
 
                        case 'cp37':
                        case 'csibm37':
 
                        case 'cp37':
                        case 'csibm37':
@@ -9944,6 +9910,12 @@ class SimplePie_Misc
                        case 'ibm857':
                                return 'IBM857';
 
                        case 'ibm857':
                                return 'IBM857';
 
+                       case 'ccsid858':
+                       case 'cp858':
+                       case 'ibm858':
+                       case 'pcmultilingual850euro':
+                               return 'IBM00858';
+
                        case '860':
                        case 'cp860':
                        case 'csibm860':
                        case '860':
                        case 'cp860':
                        case 'csibm860':
@@ -10046,6 +10018,12 @@ class SimplePie_Misc
                        case 'ibm918':
                                return 'IBM918';
 
                        case 'ibm918':
                                return 'IBM918';
 
+                       case 'ccsid924':
+                       case 'cp924':
+                       case 'ebcdiclatin9euro':
+                       case 'ibm924':
+                               return 'IBM00924';
+
                        case 'cp1026':
                        case 'csibm1026':
                        case 'ibm1026':
                        case 'cp1026':
                        case 'csibm1026':
                        case 'ibm1026':
@@ -10054,6 +10032,68 @@ class SimplePie_Misc
                        case 'ibm1047':
                                return 'IBM1047';
 
                        case 'ibm1047':
                                return 'IBM1047';
 
+                       case 'ccsid1140':
+                       case 'cp1140':
+                       case 'ebcdicus37euro':
+                       case 'ibm1140':
+                               return 'IBM01140';
+
+                       case 'ccsid1141':
+                       case 'cp1141':
+                       case 'ebcdicde273euro':
+                       case 'ibm1141':
+                               return 'IBM01141';
+
+                       case 'ccsid1142':
+                       case 'cp1142':
+                       case 'ebcdicdk277euro':
+                       case 'ebcdicno277euro':
+                       case 'ibm1142':
+                               return 'IBM01142';
+
+                       case 'ccsid1143':
+                       case 'cp1143':
+                       case 'ebcdicfi278euro':
+                       case 'ebcdicse278euro':
+                       case 'ibm1143':
+                               return 'IBM01143';
+
+                       case 'ccsid1144':
+                       case 'cp1144':
+                       case 'ebcdicit280euro':
+                       case 'ibm1144':
+                               return 'IBM01144';
+
+                       case 'ccsid1145':
+                       case 'cp1145':
+                       case 'ebcdices284euro':
+                       case 'ibm1145':
+                               return 'IBM01145';
+
+                       case 'ccsid1146':
+                       case 'cp1146':
+                       case 'ebcdicgb285euro':
+                       case 'ibm1146':
+                               return 'IBM01146';
+
+                       case 'ccsid1147':
+                       case 'cp1147':
+                       case 'ebcdicfr297euro':
+                       case 'ibm1147':
+                               return 'IBM01147';
+
+                       case 'ccsid1148':
+                       case 'cp1148':
+                       case 'ebcdicinternational500euro':
+                       case 'ibm1148':
+                               return 'IBM01148';
+
+                       case 'ccsid1149':
+                       case 'cp1149':
+                       case 'ebcdicis871euro':
+                       case 'ibm1149':
+                               return 'IBM01149';
+
                        case 'csiso143iecp271':
                        case 'iecp271':
                        case 'isoir143':
                        case 'csiso143iecp271':
                        case 'iecp271':
                        case 'isoir143':
@@ -10596,11 +10636,6 @@ class SimplePie_Misc
                        case 'sen850200c':
                                return 'SEN_850200_C';
 
                        case 'sen850200c':
                                return 'SEN_850200_C';
 
-                       case 'csshiftjis':
-                       case 'mskanji':
-                       case 'shiftjis':
-                               return 'Shift_JIS';
-
                        case 'csiso102t617bit':
                        case 'isoir102':
                        case 't617bit':
                        case 'csiso102t617bit':
                        case 'isoir102':
                        case 't617bit':
@@ -10699,7 +10734,10 @@ class SimplePie_Misc
                        case 'viscii':
                                return 'VISCII';
 
                        case 'viscii':
                                return 'VISCII';
 
+                       case 'csshiftjis':
                        case 'cswindows31j':
                        case 'cswindows31j':
+                       case 'mskanji':
+                       case 'shiftjis':
                        case 'windows31j':
                                return 'Windows-31J';
 
                        case 'windows31j':
                                return 'Windows-31J';
 
@@ -11360,6 +11398,58 @@ function embed_wmedia(width, height, link) {
 }
                <?php
        }
 }
                <?php
        }
+
+
+
+       /**
+        * Format debugging information
+        */
+       function debug($sp)
+       {
+               $info = 'SimplePie ' . SIMPLEPIE_VERSION . ' Build ' . SIMPLEPIE_BUILD . "\n";
+               $info .= 'PHP ' . PHP_VERSION . "\n";
+               if ($sp->error() !== null)
+               {
+                       $info .= 'Error occurred: ' . $sp->error() . "\n";
+               }
+               else
+               {
+                       $info .= "No error found.\n";
+               }
+               $info .= "Extensions:\n";
+               $extensions = array('pcre', 'curl', 'zlib', 'mbstring', 'iconv', 'xmlreader', 'xml');
+               foreach ($extensions as $ext)
+               {
+                       if (extension_loaded($ext))
+                       {
+                               $info .= "    $ext loaded\n";
+                               switch ($ext)
+                               {
+                                       case 'pcre':
+                                               $info .= '      Version ' . PCRE_VERSION . "\n";
+                                               break;
+                                       case 'curl':
+                                               $version = curl_version();
+                                               $info .= '      Version ' . $version['version'] . "\n";
+                                               break;
+                                       case 'mbstring':
+                                               $info .= '      Overloading: ' . mb_get_info('func_overload') . "\n";
+                                               break;
+                                       case 'iconv':
+                                               $info .= '      Version ' . ICONV_VERSION . "\n";
+                                               break;
+                                       case 'xml':
+                                               $info .= '      Version ' . LIBXML_DOTTED_VERSION . "\n";
+                                               break;
+                               }
+                       }
+                       else
+                       {
+                               $info .= "    $ext not loaded\n";
+                       }
+               }
+               return $info;
+       }
 }
 
 /**
 }
 
 /**
@@ -11831,14 +11921,135 @@ class SimplePie_IRI
        /**
         * Replace invalid character with percent encoding
         *
        /**
         * Replace invalid character with percent encoding
         *
-        * @access private
         * @param string $string Input string
         * @param string $valid_chars Valid characters
         * @param int $case Normalise case
         * @return string
         */
         * @param string $string Input string
         * @param string $valid_chars Valid characters
         * @param int $case Normalise case
         * @return string
         */
-       function replace_invalid_with_pct_encoding($string, $valid_chars, $case = SIMPLEPIE_SAME_CASE)
+       function replace_invalid_with_pct_encoding($string, $valid_chars, $case = SIMPLEPIE_SAME_CASE, $iprivate = false)
        {
        {
+               // Normalize as many pct-encoded sections as possible
+               $string = preg_replace_callback('/(?:%[A-Fa-f0-9]{2})+/', array(&$this, 'remove_iunreserved_percent_encoded'), $string);
+
+               // Replace invalid percent characters
+               $string = preg_replace('/%(?![A-Fa-f0-9]{2})/', '%25', $string);
+
+               // Add unreserved and % to $valid_chars (the latter is safe because all
+               // pct-encoded sections are now valid).
+               $valid_chars .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~%';
+
+               // Now replace any bytes that aren't allowed with their pct-encoded versions
+               $position = 0;
+               $strlen = strlen($string);
+               while (($position += strspn($string, $valid_chars, $position)) < $strlen)
+               {
+                       $value = ord($string[$position]);
+
+                       // Start position
+                       $start = $position;
+
+                       // By default we are valid
+                       $valid = true;
+
+                       // No one byte sequences are valid due to the while.
+                       // Two byte sequence:
+                       if (($value & 0xE0) === 0xC0)
+                       {
+                               $character = ($value & 0x1F) << 6;
+                               $length = 2;
+                               $remaining = 1;
+                       }
+                       // Three byte sequence:
+                       elseif (($value & 0xF0) === 0xE0)
+                       {
+                               $character = ($value & 0x0F) << 12;
+                               $length = 3;
+                               $remaining = 2;
+                       }
+                       // Four byte sequence:
+                       elseif (($value & 0xF8) === 0xF0)
+                       {
+                               $character = ($value & 0x07) << 18;
+                               $length = 4;
+                               $remaining = 3;
+                       }
+                       // Invalid byte:
+                       else
+                       {
+                               $valid = false;
+                               $length = 1;
+                               $remaining = 0;
+                       }
+
+                       if ($remaining)
+                       {
+                               if ($position + $length <= $strlen)
+                               {
+                                       for ($position++; $remaining; $position++)
+                                       {
+                                               $value = ord($string[$position]);
+
+                                               // Check that the byte is valid, then add it to the character:
+                                               if (($value & 0xC0) === 0x80)
+                                               {
+                                                       $character |= ($value & 0x3F) << (--$remaining * 6);
+                                               }
+                                               // If it is invalid, count the sequence as invalid and reprocess the current byte:
+                                               else
+                                               {
+                                                       $valid = false;
+                                                       $position--;
+                                                       break;
+                                               }
+                                       }
+                               }
+                               else
+                               {
+                                       $position = $strlen - 1;
+                                       $valid = false;
+                               }
+                       }
+
+                       // Percent encode anything invalid or not in ucschar
+                       if (
+                               // Invalid sequences
+                               !$valid
+                               // Non-shortest form sequences are invalid
+                               || $length > 1 && $character <= 0x7F
+                               || $length > 2 && $character <= 0x7FF
+                               || $length > 3 && $character <= 0xFFFF
+                               // Outside of range of ucschar codepoints
+                               // Noncharacters
+                               || ($character & 0xFFFE) === 0xFFFE
+                               || $character >= 0xFDD0 && $character <= 0xFDEF
+                               || (
+                                       // Everything else not in ucschar
+                                          $character > 0xD7FF && $character < 0xF900
+                                       || $character < 0xA0
+                                       || $character > 0xEFFFD
+                               )
+                               && (
+                                       // Everything not in iprivate, if it applies
+                                          !$iprivate
+                                       || $character < 0xE000
+                                       || $character > 0x10FFFD
+                               )
+                       )
+                       {
+                               // If we were a character, pretend we weren't, but rather an error.
+                               if ($valid)
+                                       $position--;
+
+                               for ($j = $start; $j <= $position; $j++)
+                               {
+                                       $string = substr_replace($string, sprintf('%%%02X', ord($string[$j])), $j, 1);
+                                       $j += 2;
+                                       $position += 2;
+                                       $strlen += 2;
+                               }
+                       }
+               }
+
                // Normalise case
                if ($case & SIMPLEPIE_LOWERCASE)
                {
                // Normalise case
                if ($case & SIMPLEPIE_LOWERCASE)
                {
@@ -11849,61 +12060,148 @@ class SimplePie_IRI
                        $string = strtoupper($string);
                }
 
                        $string = strtoupper($string);
                }
 
-               // Store position and string length (to avoid constantly recalculating this)
-               $position = 0;
-               $strlen = strlen($string);
+               return $string;
+       }
 
 
-               // Loop as long as we have invalid characters, advancing the position to the next invalid character
-               while (($position += strspn($string, $valid_chars, $position)) < $strlen)
+       /**
+        * Callback function for preg_replace_callback.
+        *
+        * Removes sequences of percent encoded bytes that represent UTF-8
+        * encoded characters in iunreserved
+        *
+        * @access private
+        * @param array $match PCRE match
+        * @return string Replacement
+        */
+       function remove_iunreserved_percent_encoded($match)
+       {
+               // As we just have valid percent encoded sequences we can just explode
+               // and ignore the first member of the returned array (an empty string).
+               $bytes = explode('%', $match[0]);
+
+               // Initialize the new string (this is what will be returned) and that
+               // there are no bytes remaining in the current sequence (unsurprising
+               // at the first byte!).
+               $string = '';
+               $remaining = 0;
+
+               // Loop over each and every byte, and set $value to its value
+               for ($i = 1, $len = count($bytes); $i < $len; $i++)
                {
                {
-                       // If we have a % character
-                       if ($string[$position] === '%')
+                       $value = hexdec($bytes[$i]);
+
+                       // If we're the first byte of sequence:
+                       if (!$remaining)
                        {
                        {
-                               // If we have a pct-encoded section
-                               if ($position + 2 < $strlen && strspn($string, '0123456789ABCDEFabcdef', $position + 1, 2) === 2)
-                               {
-                                       // Get the the represented character
-                                       $chr = chr(hexdec(substr($string, $position + 1, 2)));
+                               // Start position
+                               $start = $i;
 
 
-                                       // If the character is valid, replace the pct-encoded with the actual character while normalising case
-                                       if (strpos($valid_chars, $chr) !== false)
-                                       {
-                                               if ($case & SIMPLEPIE_LOWERCASE)
-                                               {
-                                                       $chr = strtolower($chr);
-                                               }
-                                               elseif ($case & SIMPLEPIE_UPPERCASE)
-                                               {
-                                                       $chr = strtoupper($chr);
-                                               }
-                                               $string = substr_replace($string, $chr, $position, 3);
-                                               $strlen -= 2;
-                                               $position++;
-                                       }
+                               // By default we are valid
+                               $valid = true;
 
 
-                                       // Otherwise just normalise the pct-encoded to uppercase
-                                       else
+                               // One byte sequence:
+                               if ($value <= 0x7F)
+                               {
+                                       $character = $value;
+                                       $length = 1;
+                               }
+                               // Two byte sequence:
+                               elseif (($value & 0xE0) === 0xC0)
+                               {
+                                       $character = ($value & 0x1F) << 6;
+                                       $length = 2;
+                                       $remaining = 1;
+                               }
+                               // Three byte sequence:
+                               elseif (($value & 0xF0) === 0xE0)
+                               {
+                                       $character = ($value & 0x0F) << 12;
+                                       $length = 3;
+                                       $remaining = 2;
+                               }
+                               // Four byte sequence:
+                               elseif (($value & 0xF8) === 0xF0)
+                               {
+                                       $character = ($value & 0x07) << 18;
+                                       $length = 4;
+                                       $remaining = 3;
+                               }
+                               // Invalid byte:
+                               else
+                               {
+                                       $valid = false;
+                                       $remaining = 0;
+                               }
+                       }
+                       // Continuation byte:
+                       else
+                       {
+                               // Check that the byte is valid, then add it to the character:
+                               if (($value & 0xC0) === 0x80)
+                               {
+                                       $remaining--;
+                                       $character |= ($value & 0x3F) << ($remaining * 6);
+                               }
+                               // If it is invalid, count the sequence as invalid and reprocess the current byte as the start of a sequence:
+                               else
+                               {
+                                       $valid = false;
+                                       $remaining = 0;
+                                       $i--;
+                               }
+                       }
+
+                       // If we've reached the end of the current byte sequence, append it to Unicode::$data
+                       if (!$remaining)
+                       {
+                               // Percent encode anything invalid or not in iunreserved
+                               if (
+                                       // Invalid sequences
+                                       !$valid
+                                       // Non-shortest form sequences are invalid
+                                       || $length > 1 && $character <= 0x7F
+                                       || $length > 2 && $character <= 0x7FF
+                                       || $length > 3 && $character <= 0xFFFF
+                                       // Outside of range of iunreserved codepoints
+                                       || $character < 0x2D
+                                       || $character > 0xEFFFD
+                                       // Noncharacters
+                                       || ($character & 0xFFFE) === 0xFFFE
+                                       || $character >= 0xFDD0 && $character <= 0xFDEF
+                                       // Everything else not in iunreserved (this is all BMP)
+                                       || $character === 0x2F
+                                       || $character > 0x39 && $character < 0x41
+                                       || $character > 0x5A && $character < 0x61
+                                       || $character > 0x7A && $character < 0x7E
+                                       || $character > 0x7E && $character < 0xA0
+                                       || $character > 0xD7FF && $character < 0xF900
+                               )
+                               {
+                                       for ($j = $start; $j <= $i; $j++)
                                        {
                                        {
-                                               $string = substr_replace($string, strtoupper(substr($string, $position + 1, 2)), $position + 1, 2);
-                                               $position += 3;
+                                               $string .= '%' . strtoupper($bytes[$j]);
                                        }
                                }
                                        }
                                }
-                               // If we don't have a pct-encoded section, just replace the % with its own esccaped form
                                else
                                {
                                else
                                {
-                                       $string = substr_replace($string, '%25', $position, 1);
-                                       $strlen += 2;
-                                       $position += 3;
+                                       for ($j = $start; $j <= $i; $j++)
+                                       {
+                                               $string .= chr(hexdec($bytes[$j]));
+                                       }
                                }
                        }
                                }
                        }
-                       // If we have an invalid character, change into its pct-encoded form
-                       else
+               }
+
+               // If we have any bytes left over they are invalid (i.e., we are
+               // mid-way through a multi-byte sequence)
+               if ($remaining)
+               {
+                       for ($j = $start; $j < $len; $j++)
                        {
                        {
-                               $replacement = sprintf("%%%02X", ord($string[$position]));
-                               $string = str_replace($string[$position], $replacement, $string);
-                               $strlen = strlen($string);
+                               $string .= '%' . strtoupper($bytes[$j]);
                        }
                }
                        }
                }
+
                return $string;
        }
 
                return $string;
        }
 
@@ -12031,7 +12329,7 @@ class SimplePie_IRI
                }
                elseif ($host[0] === '[' && substr($host, -1) === ']')
                {
                }
                elseif ($host[0] === '[' && substr($host, -1) === ']')
                {
-                       if (Net_IPv6::checkIPv6(substr($host, 1, -1)))
+                       if (SimplePie_Net_IPv6::checkIPv6(substr($host, 1, -1)))
                        {
                                $this->host = $host;
                                $this->valid[__FUNCTION__] = true;
                        {
                                $this->host = $host;
                                $this->valid[__FUNCTION__] = true;
@@ -12130,7 +12428,7 @@ class SimplePie_IRI
                }
                else
                {
                }
                else
                {
-                       $this->query = $this->replace_invalid_with_pct_encoding($query, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~!$&\'()*+,;=:@/?');
+                       $this->query = $this->replace_invalid_with_pct_encoding($query, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~!$\'()*+,;:@/?&=');
                }
                $this->valid[__FUNCTION__] = true;
                return true;
                }
                $this->valid[__FUNCTION__] = true;
                return true;
@@ -13933,7 +14231,7 @@ class SimplePie_XML_Declaration_Parser
                }
                else
                {
                }
                else
                {
-                       $this->state = 'standalone_name';
+                       $this->state = false;
                }
        }
 
                }
        }
 
@@ -13947,7 +14245,7 @@ class SimplePie_XML_Declaration_Parser
                }
                else
                {
                }
                else
                {
-                       $this->state = false;
+                       $this->state = 'standalone_name';
                }
        }
 
                }
        }
 
@@ -14425,7 +14723,7 @@ class SimplePie_Parser
                                        case constant('XMLReader::END_ELEMENT'):
                                                if ($xml->namespaceURI !== '')
                                                {
                                        case constant('XMLReader::END_ELEMENT'):
                                                if ($xml->namespaceURI !== '')
                                                {
-                                                       $tagName = "{$xml->namespaceURI}{$this->separator}{$xml->localName}";
+                                                       $tagName = $xml->namespaceURI . $this->separator . $xml->localName;
                                                }
                                                else
                                                {
                                                }
                                                else
                                                {
@@ -14437,7 +14735,7 @@ class SimplePie_Parser
                                                $empty = $xml->isEmptyElement;
                                                if ($xml->namespaceURI !== '')
                                                {
                                                $empty = $xml->isEmptyElement;
                                                if ($xml->namespaceURI !== '')
                                                {
-                                                       $tagName = "{$xml->namespaceURI}{$this->separator}{$xml->localName}";
+                                                       $tagName = $xml->namespaceURI . $this->separator . $xml->localName;
                                                }
                                                else
                                                {
                                                }
                                                else
                                                {
@@ -14448,7 +14746,7 @@ class SimplePie_Parser
                                                {
                                                        if ($xml->namespaceURI !== '')
                                                        {
                                                {
                                                        if ($xml->namespaceURI !== '')
                                                        {
-                                                               $attrName = "{$xml->namespaceURI}{$this->separator}{$xml->localName}";
+                                                               $attrName = $xml->namespaceURI . $this->separator . $xml->localName;
                                                        }
                                                        else
                                                        {
                                                        }
                                                        else
                                                        {
@@ -14913,7 +15211,7 @@ class SimplePie_Sanitize
                                                                        }
                                                                        else
                                                                        {
                                                                        }
                                                                        else
                                                                        {
-                                                                               trigger_error("$this->cache_location is not writeable", E_USER_WARNING);
+                                                                               trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
                                                                        }
                                                                }
                                                        }
                                                                        }
                                                                }
                                                        }
index c664d971eb62a9e7f8153a5c8307ff2ec4925441..6977bffad14745086a1effac05c7ced3806da154 100644 (file)
@@ -2,15 +2,15 @@
 /*~ class.smtp.php
 .---------------------------------------------------------------------------.
 |  Software: PHPMailer - PHP email class                                    |
 /*~ class.smtp.php
 .---------------------------------------------------------------------------.
 |  Software: PHPMailer - PHP email class                                    |
-|   Version: 5.1                                                            |
-|   Contact: via sourceforge.net support pages (also www.codeworxtech.com)  |
-|      Info: http://phpmailer.sourceforge.net                               |
-|   Support: http://sourceforge.net/projects/phpmailer/                     |
+|   Version: 5.2.1                                                          |
+|      Site: https://code.google.com/a/apache-extras.org/p/phpmailer/       |
 | ------------------------------------------------------------------------- |
 | ------------------------------------------------------------------------- |
-|     Admin: Andy Prevost (project admininistrator)                         |
+|     Admin: Jim Jagielski (project admininistrator)                        |
 |   Authors: Andy Prevost (codeworxtech) codeworxtech@users.sourceforge.net |
 |          : Marcus Bointon (coolbru) coolbru@users.sourceforge.net         |
 |   Authors: Andy Prevost (codeworxtech) codeworxtech@users.sourceforge.net |
 |          : Marcus Bointon (coolbru) coolbru@users.sourceforge.net         |
+|          : Jim Jagielski (jimjag) jimjag@gmail.com                        |
 |   Founder: Brent R. Matzelle (original founder)                           |
 |   Founder: Brent R. Matzelle (original founder)                           |
+| Copyright (c) 2010-2012, Jim Jagielski. All Rights Reserved.              |
 | Copyright (c) 2004-2009, Andy Prevost. All Rights Reserved.               |
 | Copyright (c) 2001-2003, Brent R. Matzelle                                |
 | ------------------------------------------------------------------------- |
 | Copyright (c) 2004-2009, Andy Prevost. All Rights Reserved.               |
 | Copyright (c) 2001-2003, Brent R. Matzelle                                |
 | ------------------------------------------------------------------------- |
 | This program is distributed in the hope that it will be useful - WITHOUT  |
 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     |
 | FITNESS FOR A PARTICULAR PURPOSE.                                         |
 | This program is distributed in the hope that it will be useful - WITHOUT  |
 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     |
 | FITNESS FOR A PARTICULAR PURPOSE.                                         |
-| ------------------------------------------------------------------------- |
-| We offer a number of paid services (www.codeworxtech.com):                |
-| - Web Hosting on highly optimized fast and secure servers                 |
-| - Technology Consulting                                                   |
-| - Oursourcing (highly qualified programmers and graphic designers)        |
 '---------------------------------------------------------------------------'
 */
 
 '---------------------------------------------------------------------------'
 */
 
  * @author Andy Prevost
  * @author Marcus Bointon
  * @copyright 2004 - 2008 Andy Prevost
  * @author Andy Prevost
  * @author Marcus Bointon
  * @copyright 2004 - 2008 Andy Prevost
+ * @author Jim Jagielski
+ * @copyright 2010 - 2012 Jim Jagielski
  * @license http://www.gnu.org/copyleft/lesser.html Distributed under the Lesser General Public License (LGPL)
  * @license http://www.gnu.org/copyleft/lesser.html Distributed under the Lesser General Public License (LGPL)
- * @version $Id: class.smtp.php 444 2009-05-05 11:22:26Z coolbru $
+ * @version $Id: class.smtp.php 450 2010-06-23 16:46:33Z coolbru $
  */
 
 /**
  */
 
 /**
@@ -71,6 +68,12 @@ class SMTP {
    */
   public $do_verp = false;
 
    */
   public $do_verp = false;
 
+  /**
+   * Sets the SMTP PHPMailer Version number
+   * @var string
+   */
+  public $Version         = '5.2.1';
+
   /////////////////////////////////////////////////
   // PROPERTIES, PRIVATE AND PROTECTED
   /////////////////////////////////////////////////
   /////////////////////////////////////////////////
   // PROPERTIES, PRIVATE AND PROTECTED
   /////////////////////////////////////////////////
@@ -794,7 +797,8 @@ class SMTP {
    */
   private function get_lines() {
     $data = "";
    */
   private function get_lines() {
     $data = "";
-    while($str = @fgets($this->smtp_conn,515)) {
+    while(!feof($this->smtp_conn)) {
+      $str = @fgets($this->smtp_conn,515);
       if($this->do_debug >= 4) {
         echo "SMTP -> get_lines(): \$data was \"$data\"" . $this->CRLF . '<br />';
         echo "SMTP -> get_lines(): \$str is \"$str\"" . $this->CRLF . '<br />';
       if($this->do_debug >= 4) {
         echo "SMTP -> get_lines(): \$data was \"$data\"" . $this->CRLF . '<br />';
         echo "SMTP -> get_lines(): \$str is \"$str\"" . $this->CRLF . '<br />';
@@ -811,4 +815,4 @@ class SMTP {
 
 }
 
 
 }
 
-?>
\ No newline at end of file
+?>
index 1b8f8b33911ead2aa5bfb242ad21d92c89d9e702..20fcf405872ae508097fd4a2650719d50a93cf7d 100644 (file)
@@ -321,7 +321,7 @@ class WP_Admin_Bar {
        }
 
        final protected function _render( $root ) {
        }
 
        final protected function _render( $root ) {
-               global $is_IE, $is_iphone;
+               global $is_IE;
 
                // Add browser classes.
                // We have to do this here since admin bar shows on the front end.
 
                // Add browser classes.
                // We have to do this here since admin bar shows on the front end.
@@ -333,7 +333,7 @@ class WP_Admin_Bar {
                                $class .= ' ie8';
                        elseif ( strpos( $_SERVER['HTTP_USER_AGENT'], 'MSIE 9' ) )
                                $class .= ' ie9';
                                $class .= ' ie8';
                        elseif ( strpos( $_SERVER['HTTP_USER_AGENT'], 'MSIE 9' ) )
                                $class .= ' ie9';
-               } elseif ( $is_iphone ) {
+               } elseif ( wp_is_mobile() ) {
                        $class .= ' mobile';
                }
 
                        $class .= ' mobile';
                }
 
@@ -471,4 +471,3 @@ class WP_Admin_Bar {
                do_action( 'add_admin_bar_menus' );
        }
 }
                do_action( 'add_admin_bar_menus' );
        }
 }
-?>
index 9c225c116ab95ee3dc84c6fe7b741a1525a5b0ed..2bf974a26502353772db308819bac9dabe093020 100644 (file)
@@ -131,8 +131,9 @@ class WP_Ajax_Response {
                foreach ( (array) $this->responses as $response )
                        echo $response;
                echo '</wp_ajax>';
                foreach ( (array) $this->responses as $response )
                        echo $response;
                echo '</wp_ajax>';
-               die();
+               if ( defined( 'DOING_AJAX' ) && DOING_AJAX )
+                       wp_die();
+               else
+                       die();
        }
 }
        }
 }
-
-?>
diff --git a/wp-includes/class-wp-atom-server.php b/wp-includes/class-wp-atom-server.php
new file mode 100644 (file)
index 0000000..d381673
--- /dev/null
@@ -0,0 +1,1487 @@
+<?php
+
+/**
+ * WordPress AtomPub API implementation.
+ *
+ * @package WordPress
+ * @subpackage Publishing
+ * @since 2.2.0
+ */
+class wp_atom_server {
+
+       /**
+        * ATOM content type.
+        *
+        * @since 2.2.0
+        * @var string
+        */
+       var $ATOM_CONTENT_TYPE = 'application/atom+xml';
+
+       /**
+        * Categories ATOM content type.
+        *
+        * @since 2.2.0
+        * @var string
+        */
+       var $CATEGORIES_CONTENT_TYPE = 'application/atomcat+xml';
+
+       /**
+        * Service ATOM content type.
+        *
+        * @since 2.3.0
+        * @var string
+        */
+       var $SERVICE_CONTENT_TYPE = 'application/atomsvc+xml';
+
+       /**
+        * ATOM XML namespace.
+        *
+        * @since 2.3.0
+        * @var string
+        */
+       var $ATOM_NS = 'http://www.w3.org/2005/Atom';
+
+       /**
+        * ATOMPUB XML namespace.
+        *
+        * @since 2.3.0
+        * @var string
+        */
+       var $ATOMPUB_NS = 'http://www.w3.org/2007/app';
+
+       /**
+        * Entries path.
+        *
+        * @since 2.2.0
+        * @var string
+        */
+       var $ENTRIES_PATH = "posts";
+
+       /**
+        * Categories path.
+        *
+        * @since 2.2.0
+        * @var string
+        */
+       var $CATEGORIES_PATH = "categories";
+
+       /**
+        * Media path.
+        *
+        * @since 2.2.0
+        * @var string
+        */
+       var $MEDIA_PATH = "attachments";
+
+       /**
+        * Entry path.
+        *
+        * @since 2.2.0
+        * @var string
+        */
+       var $ENTRY_PATH = "post";
+
+       /**
+        * Service path.
+        *
+        * @since 2.2.0
+        * @var string
+        */
+       var $SERVICE_PATH = "service";
+
+       /**
+        * Media single path.
+        *
+        * @since 2.2.0
+        * @var string
+        */
+       var $MEDIA_SINGLE_PATH = "attachment";
+
+       /**
+        * ATOMPUB parameters.
+        *
+        * @since 2.2.0
+        * @var array
+        */
+       var $params = array();
+
+       /**
+        * Supported ATOMPUB media types.
+        *
+        * @since 2.3.0
+        * @var array
+        */
+       var $media_content_types = array('image/*','audio/*','video/*');
+
+       /**
+        * ATOMPUB content type(s).
+        *
+        * @since 2.2.0
+        * @var array
+        */
+       var $atom_content_types = array('application/atom+xml');
+
+       /**
+        * ATOMPUB methods.
+        *
+        * @since 2.2.0
+        * @var unknown_type
+        */
+       var $selectors = array();
+
+       /**
+        * Whether to do output.
+        *
+        * Support for head.
+        *
+        * @since 2.2.0
+        * @var bool
+        */
+       var $do_output = true;
+
+       /**
+        * Constructor - Sets up object properties.
+        *
+        * @since 2.2.0
+        * @return AtomServer
+        */
+       function __construct() {
+
+               $var_by_ref = explode( '/', $_SERVER['SCRIPT_NAME'] );
+               $this->script_name = array_pop( $var_by_ref );
+               $this->app_base = site_url( $this->script_name . '/' );
+
+               $this->selectors = array(
+                       '@/service$@' =>
+                               array('GET' => 'get_service'),
+                       '@/categories$@' =>
+                               array('GET' => 'get_categories_xml'),
+                       '@/post/(\d+)$@' =>
+                               array('GET' => 'get_post',
+                                               'PUT' => 'put_post',
+                                               'DELETE' => 'delete_post'),
+                       '@/posts/?(\d+)?$@' =>
+                               array('GET' => 'get_posts',
+                                               'POST' => 'create_post'),
+                       '@/attachments/?(\d+)?$@' =>
+                               array('GET' => 'get_attachment',
+                                               'POST' => 'create_attachment'),
+                       '@/attachment/file/(\d+)$@' =>
+                               array('GET' => 'get_file',
+                                               'PUT' => 'put_file',
+                                               'DELETE' => 'delete_file'),
+                       '@/attachment/(\d+)$@' =>
+                               array('GET' => 'get_attachment',
+                                               'PUT' => 'put_attachment',
+                                               'DELETE' => 'delete_attachment'),
+               );
+       }
+
+       /**
+        * Handle ATOMPUB request.
+        *
+        * @since 2.2.0
+        */
+       function handle_request() {
+
+               if ( !empty( $_SERVER['ORIG_PATH_INFO'] ) )
+                       $path = $_SERVER['ORIG_PATH_INFO'];
+               else
+                       $path = $_SERVER['PATH_INFO'];
+
+               $method = $_SERVER['REQUEST_METHOD'];
+
+               $this->process_conditionals();
+               //$this->process_conditionals();
+
+               // exception case for HEAD (treat exactly as GET, but don't output)
+               if ($method == 'HEAD') {
+                       $this->do_output = false;
+                       $method = 'GET';
+               }
+
+               // redirect to /service in case no path is found.
+               if (strlen($path) == 0 || $path == '/')
+                       $this->redirect($this->get_service_url());
+
+               // check to see if AtomPub is enabled
+               if ( !get_option( 'enable_app' ) )
+                       $this->forbidden( sprintf( __( 'AtomPub services are disabled on this site. An admin user can enable them at %s' ), admin_url('options-writing.php') ) );
+
+               // dispatch
+               foreach ( $this->selectors as $regex => $funcs ) {
+                       if ( preg_match($regex, $path, $matches) ) {
+                               if ( isset($funcs[$method]) ) {
+
+                                       // authenticate regardless of the operation and set the current
+                                       // user. each handler will decide if auth is required or not.
+                                       if ( !$this->authenticate() ) {
+                                               $this->auth_required('Credentials required.');
+                                       }
+
+                                       array_shift($matches);
+                                       call_user_func_array(array($this,$funcs[$method]), $matches);
+                                       wp_die();
+                               } else {
+                                       // only allow what we have handlers for...
+                                       $this->not_allowed(array_keys($funcs));
+                               }
+                       }
+               }
+
+               // oops, nothing found
+               $this->not_found();
+       }
+
+       /**
+        * Retrieve XML for ATOMPUB service.
+        *
+        * @since 2.2.0
+        */
+       function get_service() {
+
+               if ( !current_user_can( 'edit_posts' ) )
+                       $this->auth_required( __( 'Sorry, you do not have the right to access this site.' ) );
+
+               $entries_url = esc_attr($this->get_entries_url());
+               $categories_url = esc_attr($this->get_categories_url());
+               $media_url = esc_attr($this->get_attachments_url());
+               $accepted_media_types = '';
+               foreach ($this->media_content_types as $med) {
+                       $accepted_media_types = $accepted_media_types . "<accept>" . $med . "</accept>";
+               }
+               $atom_prefix="atom";
+               $atom_blogname = get_bloginfo('name');
+               $service_doc = <<<EOD
+<service xmlns="$this->ATOMPUB_NS" xmlns:$atom_prefix="$this->ATOM_NS">
+  <workspace>
+    <$atom_prefix:title>$atom_blogname Workspace</$atom_prefix:title>
+    <collection href="$entries_url">
+      <$atom_prefix:title>$atom_blogname Posts</$atom_prefix:title>
+      <accept>$this->ATOM_CONTENT_TYPE;type=entry</accept>
+      <categories href="$categories_url" />
+    </collection>
+    <collection href="$media_url">
+      <$atom_prefix:title>$atom_blogname Media</$atom_prefix:title>
+      $accepted_media_types
+    </collection>
+  </workspace>
+</service>
+
+EOD;
+
+               $this->output($service_doc, $this->SERVICE_CONTENT_TYPE);
+       }
+
+       /**
+        * Retrieve categories list in XML format.
+        *
+        * @since 2.2.0
+        */
+       function get_categories_xml() {
+
+               if ( !current_user_can( 'edit_posts' ) )
+                       $this->auth_required( __( 'Sorry, you do not have the right to access this site.' ) );
+
+               $home = esc_attr(get_bloginfo_rss('url'));
+
+               $categories = "";
+               $cats = get_categories(array('hierarchical' => 0, 'hide_empty' => 0));
+               foreach ( (array) $cats as $cat ) {
+                       $categories .= "    <category term=\"" . esc_attr($cat->name) . "\" />\n";
+               }
+               $output = <<<EOD
+<app:categories xmlns:app="$this->ATOMPUB_NS"
+       xmlns="$this->ATOM_NS"
+       fixed="yes" scheme="$home">
+       $categories
+</app:categories>
+EOD;
+               $this->output($output, $this->CATEGORIES_CONTENT_TYPE);
+       }
+
+       /**
+        * Create new post.
+        *
+        * @since 2.2.0
+        */
+       function create_post() {
+               global $user_ID;
+               $this->get_accepted_content_type($this->atom_content_types);
+
+               $parser = new AtomParser();
+               if ( !$parser->parse() )
+                       $this->client_error();
+
+               $entry = array_pop($parser->feed->entries);
+
+               $catnames = array();
+               if ( !empty( $entry->categories ) ) {
+                       foreach ( $entry->categories as $cat ) {
+                               array_push($catnames, $cat["term"]);
+                       }
+               }
+
+               $wp_cats = get_categories(array('hide_empty' => false));
+
+               $post_category = array();
+
+               foreach ( $wp_cats as $cat ) {
+                       if ( in_array($cat->name, $catnames) )
+                               array_push($post_category, $cat->term_id);
+               }
+
+               $publish = ! ( isset( $entry->draft ) && 'yes' == trim( $entry->draft ) );
+
+               $cap = ($publish) ? 'publish_posts' : 'edit_posts';
+
+               if ( !current_user_can($cap) )
+                       $this->auth_required(__('Sorry, you do not have the right to edit/publish new posts.'));
+
+               $blog_ID = get_current_blog_id();
+               $post_status = ($publish) ? 'publish' : 'draft';
+               $post_author = (int) $user_ID;
+
+               $post_title   = '';
+               $post_content = '';
+               $post_excerpt = '';
+               $pubtimes     = '';
+
+               if ( isset( $entry->title ) && is_array( $entry->title ) && !empty( $entry->title[1] ) )
+                       $post_title = (string) $entry->title[1];
+               if ( isset( $entry->content ) && is_array( $entry->content ) && !empty( $entry->content[1] ) )
+                       $post_content = (string) $entry->content[1];
+               if ( isset( $entry->summary ) && is_array( $entry->summary ) && !empty( $entry->summary[1] ) )
+                       $post_excerpt = (string) $entry->summary[1];
+               if ( !empty( $entry->published ) )
+                       $pubtimes = (string) $entry->published;
+
+               $pubtimes = $this->get_publish_time( $pubtimes );
+
+               $post_date = $pubtimes[0];
+               $post_date_gmt = $pubtimes[1];
+
+               if ( isset( $_SERVER['HTTP_SLUG'] ) )
+                       $post_name = $_SERVER['HTTP_SLUG'];
+
+               $post_data = compact('blog_ID', 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_category', 'post_status', 'post_excerpt', 'post_name');
+
+               $this->escape($post_data);
+
+               $postID = wp_insert_post($post_data);
+               if ( is_wp_error( $postID ) )
+                       $this->internal_error($postID->get_error_message());
+
+               if ( !$postID )
+                       $this->internal_error(__('Sorry, your entry could not be posted. Something wrong happened.'));
+
+               // getting warning here about unable to set headers
+               // because something in the cache is printing to the buffer
+               // could we clean up wp_set_post_categories or cache to not print
+               // this could affect our ability to send back the right headers
+               @wp_set_post_categories($postID, $post_category);
+
+               do_action( 'atompub_create_post', $postID, $entry );
+
+               $output = $this->get_entry($postID);
+
+               $this->created($postID, $output);
+       }
+
+       /**
+        * Retrieve post.
+        *
+        * @since 2.2.0
+        *
+        * @param int $postID Post ID.
+        */
+       function get_post($postID) {
+               global $entry;
+
+               if ( !current_user_can( 'edit_post', $postID ) )
+                       $this->auth_required( __( 'Sorry, you do not have the right to access this post.' ) );
+
+               $this->set_current_entry($postID);
+               $output = $this->get_entry($postID);
+               $this->output($output);
+
+       }
+
+       /**
+        * Update post.
+        *
+        * @since 2.2.0
+        *
+        * @param int $postID Post ID.
+        */
+       function put_post($postID) {
+               // checked for valid content-types (atom+xml)
+               // quick check and exit
+               $this->get_accepted_content_type($this->atom_content_types);
+
+               $parser = new AtomParser();
+               if ( !$parser->parse() )
+                       $this->bad_request();
+
+               $parsed = array_pop($parser->feed->entries);
+
+               // check for not found
+               global $entry;
+               $this->set_current_entry($postID);
+
+               if ( !current_user_can('edit_post', $entry['ID']) )
+                       $this->auth_required(__('Sorry, you do not have the right to edit this post.'));
+
+               $publish = ! ( isset($parsed->draft) && 'yes' == trim($parsed->draft) );
+               $post_status = ($publish) ? 'publish' : 'draft';
+
+               extract($entry);
+
+               $post_title = $parsed->title[1];
+               $post_content = $parsed->content[1];
+               $post_excerpt = $parsed->summary[1];
+               $pubtimes = $this->get_publish_time($entry->published);
+               $post_date = $pubtimes[0];
+               $post_date_gmt = $pubtimes[1];
+               $pubtimes = $this->get_publish_time($parsed->updated);
+               $post_modified = $pubtimes[0];
+               $post_modified_gmt = $pubtimes[1];
+
+               $postdata = compact('ID', 'post_content', 'post_title', 'post_category', 'post_status', 'post_excerpt', 'post_date', 'post_date_gmt', 'post_modified', 'post_modified_gmt');
+               $this->escape($postdata);
+
+               $result = wp_update_post($postdata);
+
+               if ( !$result )
+                       $this->internal_error(__('For some strange yet very annoying reason, this post could not be edited.'));
+
+               do_action( 'atompub_put_post', $ID, $parsed );
+
+               $this->ok();
+       }
+
+       /**
+        * Remove post.
+        *
+        * @since 2.2.0
+        *
+        * @param int $postID Post ID.
+        */
+       function delete_post($postID) {
+
+               // check for not found
+               global $entry;
+               $this->set_current_entry($postID);
+
+               if ( !current_user_can('edit_post', $postID) )
+                       $this->auth_required(__('Sorry, you do not have the right to delete this post.'));
+
+               if ( $entry['post_type'] == 'attachment' ) {
+                       $this->delete_attachment($postID);
+               } else {
+                       $result = wp_delete_post($postID);
+
+                       if ( !$result ) {
+                               $this->internal_error(__('For some strange yet very annoying reason, this post could not be deleted.'));
+                       }
+
+                       $this->ok();
+               }
+
+       }
+
+       /**
+        * Retrieve attachment.
+        *
+        * @since 2.2.0
+        *
+        * @param int $postID Optional. Post ID.
+        */
+       function get_attachment($postID = null) {
+               if ( !current_user_can( 'upload_files' ) )
+                       $this->auth_required( __( 'You do not have permission to upload files.' ) );
+
+               if ( !isset($postID) ) {
+                       $this->get_attachments();
+               } else {
+                       $this->set_current_entry($postID);
+                       $output = $this->get_entry($postID, 'attachment');
+                       $this->output($output);
+               }
+       }
+
+       /**
+        * Create new attachment.
+        *
+        * @since 2.2.0
+        */
+       function create_attachment() {
+
+               $type = $this->get_accepted_content_type();
+
+               if ( !current_user_can('upload_files') )
+                       $this->auth_required( __( 'You do not have permission to upload files.' ) );
+
+               $fp = fopen("php://input", "rb");
+               $bits = null;
+               while ( !feof($fp) ) {
+                       $bits .= fread($fp, 4096);
+               }
+               fclose($fp);
+
+               $slug = '';
+               if ( isset( $_SERVER['HTTP_SLUG'] ) )
+                       $slug = $_SERVER['HTTP_SLUG'];
+               elseif ( isset( $_SERVER['HTTP_TITLE'] ) )
+                       $slug = $_SERVER['HTTP_TITLE'];
+               elseif ( empty( $slug ) ) // just make a random name
+                       $slug = substr( md5( uniqid( microtime() ) ), 0, 7);
+               $ext = preg_replace( '|.*/([a-z0-9]+)|', '$1', $_SERVER['CONTENT_TYPE'] );
+               $slug = sanitize_file_name( "$slug.$ext" );
+               $file = wp_upload_bits( $slug, null, $bits);
+
+               $url = $file['url'];
+               $file = $file['file'];
+
+               do_action('wp_create_file_in_uploads', $file); // replicate
+
+               // Construct the attachment array
+               $attachment = array(
+                       'post_title' => $slug,
+                       'post_content' => $slug,
+                       'post_status' => 'attachment',
+                       'post_parent' => 0,
+                       'post_mime_type' => $type,
+                       'guid' => $url
+                       );
+
+               // Save the data
+               $postID = wp_insert_attachment($attachment, $file);
+
+               if (!$postID)
+                       $this->internal_error(__('Sorry, your entry could not be posted. Something wrong happened.'));
+
+               $output = $this->get_entry($postID, 'attachment');
+
+               $this->created($postID, $output, 'attachment');
+       }
+
+       /**
+        * Update attachment.
+        *
+        * @since 2.2.0
+        *
+        * @param int $postID Post ID.
+        */
+       function put_attachment($postID) {
+               // checked for valid content-types (atom+xml)
+               // quick check and exit
+               $this->get_accepted_content_type($this->atom_content_types);
+
+               $parser = new AtomParser();
+               if (!$parser->parse()) {
+                       $this->bad_request();
+               }
+
+               $parsed = array_pop($parser->feed->entries);
+
+               // check for not found
+               global $entry;
+               $this->set_current_entry($postID);
+
+               if ( !current_user_can('edit_post', $entry['ID']) )
+                       $this->auth_required(__('Sorry, you do not have the right to edit this post.'));
+
+               extract($entry);
+
+               $post_title = $parsed->title[1];
+               $post_content = $parsed->summary[1];
+               $pubtimes = $this->get_publish_time($parsed->updated);
+               $post_modified = $pubtimes[0];
+               $post_modified_gmt = $pubtimes[1];
+
+               $postdata = compact('ID', 'post_content', 'post_title', 'post_category', 'post_status', 'post_excerpt', 'post_modified', 'post_modified_gmt');
+               $this->escape($postdata);
+
+               $result = wp_update_post($postdata);
+
+               if ( !$result )
+                       $this->internal_error(__('For some strange yet very annoying reason, this post could not be edited.'));
+
+               $this->ok();
+       }
+
+       /**
+        * Remove attachment.
+        *
+        * @since 2.2.0
+        *
+        * @param int $postID Post ID.
+        */
+       function delete_attachment($postID) {
+
+               // check for not found
+               global $entry;
+               $this->set_current_entry($postID);
+
+               if ( !current_user_can('edit_post', $postID) )
+                       $this->auth_required(__('Sorry, you do not have the right to delete this post.'));
+
+               $location = get_post_meta($entry['ID'], '_wp_attached_file', true);
+               $filetype = wp_check_filetype($location);
+
+               if ( !isset($location) || 'attachment' != $entry['post_type'] || empty($filetype['ext']) )
+                       $this->internal_error(__('Error occurred while accessing post metadata for file location.'));
+
+               // delete file
+               @unlink($location);
+
+               // delete attachment
+               $result = wp_delete_post($postID);
+
+               if ( !$result )
+                       $this->internal_error(__('For some strange yet very annoying reason, this post could not be deleted.'));
+
+               $this->ok();
+       }
+
+       /**
+        * Retrieve attachment from post.
+        *
+        * @since 2.2.0
+        *
+        * @param int $postID Post ID.
+        */
+       function get_file($postID) {
+
+               // check for not found
+               global $entry;
+               $this->set_current_entry($postID);
+
+               // then whether user can edit the specific post
+               if ( !current_user_can('edit_post', $postID) )
+                       $this->auth_required(__('Sorry, you do not have the right to edit this post.'));
+
+               $location = get_post_meta($entry['ID'], '_wp_attached_file', true);
+               $location = get_option ('upload_path') . '/' . $location;
+               $filetype = wp_check_filetype($location);
+
+               if ( !isset($location) || 'attachment' != $entry['post_type'] || empty($filetype['ext']) )
+                       $this->internal_error(__('Error occurred while accessing post metadata for file location.'));
+
+               status_header('200');
+               header('Content-Type: ' . $entry['post_mime_type']);
+               header('Connection: close');
+
+               if ( $fp = fopen($location, "rb") ) {
+                       status_header('200');
+                       header('Content-Type: ' . $entry['post_mime_type']);
+                       header('Connection: close');
+
+                       while ( !feof($fp) ) {
+                               echo fread($fp, 4096);
+                       }
+
+                       fclose($fp);
+               } else {
+                       status_header ('404');
+               }
+
+               wp_die();
+       }
+
+       /**
+        * Upload file to blog and add attachment to post.
+        *
+        * @since 2.2.0
+        *
+        * @param int $postID Post ID.
+        */
+       function put_file($postID) {
+
+               // first check if user can upload
+               if ( !current_user_can('upload_files') )
+                       $this->auth_required(__('You do not have permission to upload files.'));
+
+               // check for not found
+               global $entry;
+               $this->set_current_entry($postID);
+
+               // then whether user can edit the specific post
+               if ( !current_user_can('edit_post', $postID) )
+                       $this->auth_required(__('Sorry, you do not have the right to edit this post.'));
+
+               $upload_dir = wp_upload_dir( );
+               $location = get_post_meta($entry['ID'], '_wp_attached_file', true);
+               $filetype = wp_check_filetype($location);
+
+               $location = "{$upload_dir['basedir']}/{$location}";
+
+               if (!isset($location) || 'attachment' != $entry['post_type'] || empty($filetype['ext']))
+                       $this->internal_error(__('Error occurred while accessing post metadata for file location.'));
+
+               $fp = fopen("php://input", "rb");
+               $localfp = fopen($location, "w+");
+               while ( !feof($fp) ) {
+                       fwrite($localfp,fread($fp, 4096));
+               }
+               fclose($fp);
+               fclose($localfp);
+
+               $ID = $entry['ID'];
+               $pubtimes = $this->get_publish_time($entry->published);
+               $post_date = $pubtimes[0];
+               $post_date_gmt = $pubtimes[1];
+               $pubtimes = $this->get_publish_time($parsed->updated);
+               $post_modified = $pubtimes[0];
+               $post_modified_gmt = $pubtimes[1];
+
+               $post_data = compact('ID', 'post_date', 'post_date_gmt', 'post_modified', 'post_modified_gmt');
+               $result = wp_update_post($post_data);
+
+               if ( !$result )
+                       $this->internal_error(__('Sorry, your entry could not be posted. Something wrong happened.'));
+
+               wp_update_attachment_metadata( $postID, wp_generate_attachment_metadata( $postID, $location ) );
+
+               $this->ok();
+       }
+
+       /**
+        * Retrieve entries URL.
+        *
+        * @since 2.2.0
+        *
+        * @param int $page Page ID.
+        * @return string
+        */
+       function get_entries_url($page = null) {
+               if ( isset($GLOBALS['post_type']) && ( $GLOBALS['post_type'] == 'attachment' ) )
+                       $path = $this->MEDIA_PATH;
+               else
+                       $path = $this->ENTRIES_PATH;
+               $url = $this->app_base . $path;
+               if ( isset($page) && is_int($page) )
+                       $url .= "/$page";
+               return $url;
+       }
+
+       /**
+        * Display entries URL.
+        *
+        * @since 2.2.0
+        *
+        * @param int $page Page ID.
+        */
+       function the_entries_url($page = null) {
+               echo $this->get_entries_url($page);
+       }
+
+       /**
+        * Retrieve categories URL.
+        *
+        * @since 2.2.0
+        *
+        * @param mixed $deprecated Not used.
+        * @return string
+        */
+       function get_categories_url($deprecated = '') {
+               if ( !empty( $deprecated ) )
+                       _deprecated_argument( __FUNCTION__, '2.5' );
+               return $this->app_base . $this->CATEGORIES_PATH;
+       }
+
+       /**
+        * Display category URL.
+        *
+        * @since 2.2.0
+        */
+       function the_categories_url() {
+               echo $this->get_categories_url();
+       }
+
+       /**
+        * Retrieve attachment URL.
+        *
+        * @since 2.2.0
+        *
+        * @param int $page Page ID.
+        * @return string
+        */
+       function get_attachments_url($page = null) {
+               $url = $this->app_base . $this->MEDIA_PATH;
+               if (isset($page) && is_int($page)) {
+                       $url .= "/$page";
+               }
+               return $url;
+       }
+
+       /**
+        * Display attachment URL.
+        *
+        * @since 2.2.0
+        *
+        * @param int $page Page ID.
+        */
+       function the_attachments_url($page = null) {
+               echo $this->get_attachments_url($page);
+       }
+
+       /**
+        * Retrieve service URL.
+        *
+        * @since 2.3.0
+        *
+        * @return string
+        */
+       function get_service_url() {
+               return $this->app_base . $this->SERVICE_PATH;
+       }
+
+       /**
+        * Retrieve entry URL.
+        *
+        * @since 2.7.0
+        *
+        * @param int $postID Post ID.
+        * @return string
+        */
+       function get_entry_url($postID = null) {
+               if (!isset($postID)) {
+                       global $post;
+                       $postID = (int) $post->ID;
+               }
+
+               $url = $this->app_base . $this->ENTRY_PATH . "/$postID";
+
+               return $url;
+       }
+
+       /**
+        * Display entry URL.
+        *
+        * @since 2.7.0
+        *
+        * @param int $postID Post ID.
+        */
+       function the_entry_url($postID = null) {
+               echo $this->get_entry_url($postID);
+       }
+
+       /**
+        * Retrieve media URL.
+        *
+        * @since 2.2.0
+        *
+        * @param int $postID Post ID.
+        * @return string
+        */
+       function get_media_url($postID = null) {
+               if (!isset($postID)) {
+                       global $post;
+                       $postID = (int) $post->ID;
+               }
+
+               $url = $this->app_base . $this->MEDIA_SINGLE_PATH ."/file/$postID";
+
+               return $url;
+       }
+
+       /**
+        * Display the media URL.
+        *
+        * @since 2.2.0
+        *
+        * @param int $postID Post ID.
+        */
+       function the_media_url($postID = null) {
+               echo $this->get_media_url($postID);
+       }
+
+       /**
+        * Set the current entry to post ID.
+        *
+        * @since 2.2.0
+        *
+        * @param int $postID Post ID.
+        */
+       function set_current_entry($postID) {
+               global $entry;
+
+               if (!isset($postID)) {
+                       // $this->bad_request();
+                       $this->not_found();
+               }
+
+               $entry = wp_get_single_post($postID,ARRAY_A);
+
+               if (!isset($entry) || !isset($entry['ID']))
+                       $this->not_found();
+
+               return;
+       }
+
+       /**
+        * Display posts XML.
+        *
+        * @since 2.2.0
+        *
+        * @param int $page Optional. Page ID.
+        * @param string $post_type Optional, default is 'post'. Post Type.
+        */
+       function get_posts($page = 1, $post_type = 'post') {
+               $feed = $this->get_feed($page, $post_type);
+               $this->output($feed);
+       }
+
+       /**
+        * Display attachment XML.
+        *
+        * @since 2.2.0
+        *
+        * @param int $page Page ID.
+        * @param string $post_type Optional, default is 'attachment'. Post type.
+        */
+       function get_attachments($page = 1, $post_type = 'attachment') {
+               $GLOBALS['post_type'] = $post_type;
+               $feed = $this->get_feed($page, $post_type);
+               $this->output($feed);
+       }
+
+       /**
+        * Retrieve feed XML.
+        *
+        * @since 2.2.0
+        *
+        * @param int $page Page ID.
+        * @param string $post_type Optional, default is post. Post type.
+        * @return string
+        */
+       function get_feed($page = 1, $post_type = 'post') {
+               global $post, $wp, $wp_query, $posts, $wpdb, $blog_id;
+               ob_start();
+
+               $this->ENTRY_PATH = $post_type;
+
+               if (!isset($page)) {
+                       $page = 1;
+               }
+               $page = (int) $page;
+
+               $count = get_option('posts_per_rss');
+
+               wp('posts_per_page=' . $count . '&offset=' . ($count * ($page-1)) . '&orderby=modified&post_status=any');
+
+               $post = $GLOBALS['post'];
+               $posts = $GLOBALS['posts'];
+               $wp = $GLOBALS['wp'];
+               $wp_query = $GLOBALS['wp_query'];
+               $wpdb = $GLOBALS['wpdb'];
+               $blog_id = (int) $GLOBALS['blog_id'];
+
+               $last_page = $wp_query->max_num_pages;
+               $next_page = (($page + 1) > $last_page) ? null : $page + 1;
+               $prev_page = ($page - 1) < 1 ? null : $page - 1;
+               $last_page = ((int)$last_page == 1 || (int)$last_page == 0) ? null : (int) $last_page;
+               $self_page = $page > 1 ? $page : null;
+?><feed xmlns="<?php echo $this->ATOM_NS ?>" xmlns:app="<?php echo $this->ATOMPUB_NS ?>" xml:lang="<?php bloginfo_rss( 'language' ); ?>" <?php do_action('app_ns'); ?> >
+<id><?php $this->the_entries_url() ?></id>
+<updated><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_lastpostmodified('GMT'), false); ?></updated>
+<title type="text"><?php bloginfo_rss('name') ?></title>
+<subtitle type="text"><?php bloginfo_rss("description") ?></subtitle>
+<link rel="first" type="<?php echo $this->ATOM_CONTENT_TYPE ?>" href="<?php $this->the_entries_url() ?>" />
+<?php if (isset($prev_page)): ?>
+<link rel="previous" type="<?php echo $this->ATOM_CONTENT_TYPE ?>" href="<?php $this->the_entries_url($prev_page) ?>" />
+<?php endif; ?>
+<?php if (isset($next_page)): ?>
+<link rel="next" type="<?php echo $this->ATOM_CONTENT_TYPE ?>" href="<?php $this->the_entries_url($next_page) ?>" />
+<?php endif; ?>
+<link rel="last" type="<?php echo $this->ATOM_CONTENT_TYPE ?>" href="<?php $this->the_entries_url($last_page) ?>" />
+<link rel="self" type="<?php echo $this->ATOM_CONTENT_TYPE ?>" href="<?php $this->the_entries_url($self_page) ?>" />
+<rights type="text">Copyright <?php echo date('Y'); ?></rights>
+<?php do_action('app_head'); ?>
+<?php if ( have_posts() ) {
+                       while ( have_posts() ) {
+                               the_post();
+                               $this->echo_entry();
+                       }
+               }
+?></feed>
+<?php
+               $feed = ob_get_contents();
+               ob_end_clean();
+               return $feed;
+       }
+
+       /**
+        * Display entry XML.
+        *
+        * @since 2.2.0
+        *
+        * @param int $postID Post ID.
+        * @param string $post_type Optional, default is post. Post type.
+        * @return string.
+        */
+       function get_entry($postID, $post_type = 'post') {
+               ob_start();
+               switch($post_type) {
+                       case 'post':
+                               $varname = 'p';
+                               break;
+                       case 'attachment':
+                               $this->ENTRY_PATH = 'attachment';
+                               $varname = 'attachment_id';
+                               break;
+               }
+               query_posts($varname . '=' . $postID);
+               if ( have_posts() ) {
+                       while ( have_posts() ) {
+                               the_post();
+                               $this->echo_entry();
+                               $entry = ob_get_contents();
+                               break;
+                       }
+               }
+               ob_end_clean();
+
+               return $entry;
+       }
+
+       /**
+        * Display post content XML.
+        *
+        * @since 2.3.0
+        */
+       function echo_entry() { ?>
+<entry xmlns="<?php echo $this->ATOM_NS ?>"
+       xmlns:app="<?php echo $this->ATOMPUB_NS ?>" xml:lang="<?php bloginfo_rss( 'language' ); ?>">
+       <id><?php the_guid( $GLOBALS['post']->ID ); ?></id>
+<?php list($content_type, $content) = prep_atom_text_construct(get_the_title()); ?>
+       <title type="<?php echo $content_type ?>"><?php echo $content ?></title>
+       <updated><?php echo get_post_modified_time('Y-m-d\TH:i:s\Z', true); ?></updated>
+       <published><?php echo get_post_time('Y-m-d\TH:i:s\Z', true); ?></published>
+       <app:edited><?php echo get_post_modified_time('Y-m-d\TH:i:s\Z', true); ?></app:edited>
+       <app:control>
+               <app:draft><?php echo ($GLOBALS['post']->post_status == 'draft' ? 'yes' : 'no') ?></app:draft>
+       </app:control>
+       <author>
+               <name><?php the_author()?></name>
+<?php if ( get_the_author_meta('url') && get_the_author_meta('url') != 'http://' ) { ?>
+               <uri><?php the_author_meta('url') ?></uri>
+<?php } ?>
+       </author>
+<?php if ($GLOBALS['post']->post_type == 'attachment') { ?>
+       <link rel="edit-media" href="<?php $this->the_media_url() ?>" />
+       <content type="<?php echo $GLOBALS['post']->post_mime_type ?>" src="<?php the_guid() ; ?>"/>
+<?php } else { ?>
+       <link href="<?php the_permalink_rss() ?>" />
+<?php if ( strlen( $GLOBALS['post']->post_content ) ) :
+list($content_type, $content) = prep_atom_text_construct(get_the_content()); ?>
+       <content type="<?php echo $content_type ?>"><?php echo $content ?></content>
+<?php endif; ?>
+<?php } ?>
+       <link rel="edit" href="<?php $this->the_entry_url() ?>" />
+       <?php the_category_rss( 'atom' ); ?>
+<?php list($content_type, $content) = prep_atom_text_construct(get_the_excerpt()); ?>
+       <summary type="<?php echo $content_type ?>"><?php echo $content ?></summary>
+       <?php do_action('app_entry'); ?>
+</entry>
+<?php }
+
+       /**
+        * Set 'OK' (200) status header.
+        *
+        * @since 2.2.0
+        */
+       function ok() {
+               header('Content-Type: text/plain');
+               status_header('200');
+               wp_die();
+       }
+
+       /**
+        * Set 'No Content' (204) status header.
+        *
+        * @since 2.2.0
+        */
+       function no_content() {
+               header('Content-Type: text/plain');
+               status_header('204');
+               echo "Moved to Trash.";
+               wp_die();
+       }
+
+       /**
+        * Display 'Internal Server Error' (500) status header.
+        *
+        * @since 2.2.0
+        *
+        * @param string $msg Optional. Status string.
+        */
+       function internal_error($msg = 'Internal Server Error') {
+               header('Content-Type: text/plain');
+               status_header('500');
+               echo $msg;
+               wp_die();
+       }
+
+       /**
+        * Set 'Bad Request' (400) status header.
+        *
+        * @since 2.2.0
+        */
+       function bad_request() {
+               header('Content-Type: text/plain');
+               status_header('400');
+               wp_die();
+       }
+
+       /**
+        * Set 'Length Required' (411) status header.
+        *
+        * @since 2.2.0
+        */
+       function length_required() {
+               header("HTTP/1.1 411 Length Required");
+               header('Content-Type: text/plain');
+               status_header('411');
+               wp_die();
+       }
+
+       /**
+        * Set 'Unsupported Media Type' (415) status header.
+        *
+        * @since 2.2.0
+        */
+       function invalid_media() {
+               header("HTTP/1.1 415 Unsupported Media Type");
+               header('Content-Type: text/plain');
+               wp_die();
+       }
+
+       /**
+        * Set 'Forbidden' (403) status header.
+        *
+        * @since 2.6.0
+        */
+       function forbidden($reason='') {
+               header('Content-Type: text/plain');
+               status_header('403');
+               echo $reason;
+               wp_die();
+       }
+
+       /**
+        * Set 'Not Found' (404) status header.
+        *
+        * @since 2.2.0
+        */
+       function not_found() {
+               header('Content-Type: text/plain');
+               status_header('404');
+               wp_die();
+       }
+
+       /**
+        * Set 'Not Allowed' (405) status header.
+        *
+        * @since 2.2.0
+        */
+       function not_allowed($allow) {
+               header('Allow: ' . join(',', $allow));
+               status_header('405');
+               wp_die();
+       }
+
+       /**
+        * Display Redirect (302) content and set status headers.
+        *
+        * @since 2.3.0
+        */
+       function redirect($url) {
+               $escaped_url = esc_attr($url);
+               $content = <<<EOD
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
+<html>
+  <head>
+    <title>302 Found</title>
+  </head>
+<body>
+  <h1>Found</h1>
+  <p>The document has moved <a href="$escaped_url">here</a>.</p>
+  </body>
+</html>
+
+EOD;
+               header('HTTP/1.1 302 Moved');
+               header('Content-Type: text/html');
+               header('Location: ' . $url);
+               echo $content;
+               wp_die();
+
+       }
+
+       /**
+        * Set 'Client Error' (400) status header.
+        *
+        * @since 2.2.0
+        */
+       function client_error($msg = 'Client Error') {
+               header('Content-Type: text/plain');
+               status_header('400');
+               wp_die();
+       }
+
+       /**
+        * Set created status headers (201).
+        *
+        * Sets the 'content-type', 'content-location', and 'location'.
+        *
+        * @since 2.2.0
+        */
+       function created($post_ID, $content, $post_type = 'post') {
+               $edit = $this->get_entry_url($post_ID);
+               switch($post_type) {
+                       case 'post':
+                               $ctloc = $this->get_entry_url($post_ID);
+                               break;
+                       case 'attachment':
+                               $edit = $this->app_base . "attachments/$post_ID";
+                               break;
+               }
+               header("Content-Type: $this->ATOM_CONTENT_TYPE");
+               if (isset($ctloc))
+                       header('Content-Location: ' . $ctloc);
+               header('Location: ' . $edit);
+               status_header('201');
+               echo $content;
+               wp_die();
+       }
+
+       /**
+        * Set 'Auth Required' (401) headers.
+        *
+        * @since 2.2.0
+        *
+        * @param string $msg Status header content and HTML content.
+        */
+       function auth_required($msg) {
+               nocache_headers();
+               header('WWW-Authenticate: Basic realm="WordPress Atom Protocol"');
+               header("HTTP/1.1 401 $msg");
+               header('Status: 401 ' . $msg);
+               header('Content-Type: text/html');
+               $content = <<<EOD
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
+<html>
+  <head>
+    <title>401 Unauthorized</title>
+  </head>
+<body>
+    <h1>401 Unauthorized</h1>
+    <p>$msg</p>
+  </body>
+</html>
+
+EOD;
+               echo $content;
+               wp_die();
+       }
+
+       /**
+        * Display XML and set headers with content type.
+        *
+        * @since 2.2.0
+        *
+        * @param string $xml Display feed content.
+        * @param string $ctype Optional, default is 'atom+xml'. Feed content type.
+        */
+       function output($xml, $ctype = 'application/atom+xml') {
+               status_header('200');
+               $xml = '<?xml version="1.0" encoding="' . strtolower(get_option('blog_charset')) . '"?>'."\n".$xml;
+               header('Connection: close');
+               header('Content-Length: '. strlen($xml));
+               header('Content-Type: ' . $ctype);
+               header('Content-Disposition: attachment; filename=atom.xml');
+               header('Date: '. date('r'));
+               if ($this->do_output)
+                       echo $xml;
+               wp_die();
+       }
+
+       /**
+        * Sanitize content for database usage.
+        *
+        * @since 2.2.0
+        *
+        * @param array $array Sanitize array and multi-dimension array.
+        */
+       function escape(&$array) {
+               global $wpdb;
+
+               foreach ($array as $k => $v) {
+                               if (is_array($v)) {
+                                               $this->escape($array[$k]);
+                               } else if (is_object($v)) {
+                                               //skip
+                               } else {
+                                               $array[$k] = $wpdb->escape($v);
+                               }
+               }
+       }
+
+       /**
+        * Access credential through various methods and perform login.
+        *
+        * @since 2.2.0
+        *
+        * @return bool
+        */
+       function authenticate() {
+
+               // if using mod_rewrite/ENV hack
+               // http://www.besthostratings.com/articles/http-auth-php-cgi.html
+               if (isset($_SERVER['HTTP_AUTHORIZATION'])) {
+                       list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) =
+                               explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
+               } else if (isset($_SERVER['REDIRECT_REMOTE_USER'])) {
+                       // Workaround for setups that do not forward HTTP_AUTHORIZATION
+                       // See http://trac.wordpress.org/ticket/7361
+                       list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) =
+                               explode(':', base64_decode(substr($_SERVER['REDIRECT_REMOTE_USER'], 6)));
+               }
+
+               // If Basic Auth is working...
+               if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
+
+                       $user = wp_authenticate($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']);
+                       if ( $user && !is_wp_error($user) ) {
+                               wp_set_current_user($user->ID);
+                               return true;
+                       }
+               }
+
+               return false;
+       }
+
+       /**
+        * Retrieve accepted content types.
+        *
+        * @since 2.2.0
+        *
+        * @param array $types Optional. Content Types.
+        * @return string
+        */
+       function get_accepted_content_type($types = null) {
+
+               if (!isset($types)) {
+                       $types = $this->media_content_types;
+               }
+
+               if (!isset($_SERVER['CONTENT_LENGTH']) || !isset($_SERVER['CONTENT_TYPE'])) {
+                       $this->length_required();
+               }
+
+               $type = $_SERVER['CONTENT_TYPE'];
+               list($type,$subtype) = explode('/',$type);
+               list($subtype) = explode(";",$subtype); // strip MIME parameters
+
+               foreach($types as $t) {
+                       list($acceptedType,$acceptedSubtype) = explode('/',$t);
+                       if ($acceptedType == '*' || $acceptedType == $type) {
+                               if ($acceptedSubtype == '*' || $acceptedSubtype == $subtype)
+                                       return $type . "/" . $subtype;
+                       }
+               }
+
+               $this->invalid_media();
+       }
+
+       /**
+        * Process conditionals for posts.
+        *
+        * @since 2.2.0
+        */
+       function process_conditionals() {
+
+               if (empty($this->params)) return;
+               if ($_SERVER['REQUEST_METHOD'] == 'DELETE') return;
+
+               switch($this->params[0]) {
+                       case $this->ENTRY_PATH:
+                               global $post;
+                               $post = wp_get_single_post($this->params[1]);
+                               $wp_last_modified = get_post_modified_time('D, d M Y H:i:s', true);
+                               $post = null;
+                               break;
+                       case $this->ENTRIES_PATH:
+                               $wp_last_modified = mysql2date('D, d M Y H:i:s', get_lastpostmodified('GMT'), 0).' GMT';
+                               break;
+                       default:
+                               return;
+               }
+               $wp_etag = md5($wp_last_modified);
+               @header("Last-Modified: $wp_last_modified");
+               @header("ETag: $wp_etag");
+
+               // Support for Conditional GET
+               if (isset($_SERVER['HTTP_IF_NONE_MATCH']))
+                       $client_etag = stripslashes($_SERVER['HTTP_IF_NONE_MATCH']);
+               else
+                       $client_etag = false;
+
+               $client_last_modified = trim( $_SERVER['HTTP_IF_MODIFIED_SINCE']);
+               // If string is empty, return 0. If not, attempt to parse into a timestamp
+               $client_modified_timestamp = $client_last_modified ? strtotime($client_last_modified) : 0;
+
+               // Make a timestamp for our most recent modification...
+               $wp_modified_timestamp = strtotime($wp_last_modified);
+
+               if ( ($client_last_modified && $client_etag) ?
+               (($client_modified_timestamp >= $wp_modified_timestamp) && ($client_etag == $wp_etag)) :
+               (($client_modified_timestamp >= $wp_modified_timestamp) || ($client_etag == $wp_etag)) ) {
+                       status_header( 304 );
+                       wp_die();
+               }
+       }
+
+       /**
+        * Convert RFC3339 time string to timestamp.
+        *
+        * @since 2.3.0
+        *
+        * @param string $str String to time.
+        * @return bool|int false if format is incorrect.
+        */
+       function rfc3339_str2time($str) {
+
+               $match = false;
+               if (!preg_match("/(\d{4}-\d{2}-\d{2})T(\d{2}\:\d{2}\:\d{2})\.?\d{0,3}(Z|[+-]+\d{2}\:\d{2})/", $str, $match))
+                       return false;
+
+               if ($match[3] == 'Z')
+                       $match[3] = '+0000';
+
+               return strtotime($match[1] . " " . $match[2] . " " . $match[3]);
+       }
+
+       /**
+        * Retrieve published time to display in XML.
+        *
+        * @since 2.3.0
+        *
+        * @param string $published Time string.
+        * @return string
+        */
+       function get_publish_time($published) {
+
+               $pubtime = $this->rfc3339_str2time($published);
+
+               if (!$pubtime) {
+                       return array(current_time('mysql'),current_time('mysql',1));
+               } else {
+                       return array(date("Y-m-d H:i:s", $pubtime), gmdate("Y-m-d H:i:s", $pubtime));
+               }
+       }
+
+}
diff --git a/wp-includes/class-wp-customize-control.php b/wp-includes/class-wp-customize-control.php
new file mode 100644 (file)
index 0000000..5ded24c
--- /dev/null
@@ -0,0 +1,516 @@
+<?php
+/**
+ * Customize Control Class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 3.4.0
+ */
+
+class WP_Customize_Control {
+       public $manager;
+       public $id;
+
+       // All settings tied to the control.
+       public $settings;
+
+       // The primary setting for the control (if there is one).
+       public $setting = 'default';
+
+       public $priority          = 10;
+       public $section           = '';
+       public $label             = '';
+       // @todo: remove choices
+       public $choices           = array();
+
+       public $json = array();
+
+       public $type = 'text';
+
+
+       /**
+        * Constructor.
+        *
+        * If $args['settings'] is not defined, use the $id as the setting ID.
+        *
+        * @since 3.4.0
+        */
+       function __construct( $manager, $id, $args = array() ) {
+               $keys = array_keys( get_object_vars( $this ) );
+               foreach ( $keys as $key ) {
+                       if ( isset( $args[ $key ] ) )
+                               $this->$key = $args[ $key ];
+               }
+
+               $this->manager = $manager;
+               $this->id = $id;
+
+
+               // Process settings.
+               if ( empty( $this->settings ) )
+                       $this->settings = $id;
+
+               $settings = array();
+               if ( is_array( $this->settings ) ) {
+                       foreach ( $this->settings as $key => $setting ) {
+                               $settings[ $key ] = $this->manager->get_setting( $setting );
+                       }
+               } else {
+                       $this->setting = $this->manager->get_setting( $this->settings );
+                       $settings['default'] = $this->setting;
+               }
+               $this->settings = $settings;
+       }
+
+       /**
+        * Enqueue control related scripts/styles.
+        *
+        * @since 3.4.0
+        */
+       public function enqueue() {}
+
+
+       /**
+        * Fetch a setting's value.
+        * Grabs the main setting by default.
+        *
+        * @since 3.4.0
+        */
+       public final function value( $setting_key = 'default' ) {
+               if ( isset( $this->settings[ $setting_key ] ) )
+                       return $this->settings[ $setting_key ]->value();
+       }
+
+       /**
+        * Refresh the parameters passed to the JavaScript via JSON.
+        *
+        * @since 3.4.0
+        */
+       public function to_json() {
+               $this->json['settings'] = array();
+               foreach ( $this->settings as $key => $setting ) {
+                       $this->json['settings'][ $key ] = $setting->id;
+               }
+
+               $this->json['type'] = $this->type;
+       }
+
+       /**
+        * Check if the theme supports the control and check user capabilities.
+        *
+        * @since 3.4.0
+        *
+        * @return bool False if theme doesn't support the control or user doesn't have the required permissions, otherwise true.
+        */
+       public final function check_capabilities() {
+               foreach ( $this->settings as $setting ) {
+                       if ( ! $setting->check_capabilities() )
+                               return false;
+               }
+
+               $section = $this->manager->get_section( $this->section );
+               if ( isset( $section ) && ! $section->check_capabilities() )
+                       return false;
+
+               return true;
+       }
+
+       /**
+        * Check capabilities and render the control.
+        *
+        * @since 3.4.0
+        */
+       public final function maybe_render() {
+               if ( ! $this->check_capabilities() )
+                       return;
+
+               do_action( 'customize_render_control', $this );
+               do_action( 'customize_render_control_' . $this->id, $this );
+
+               $this->render();
+       }
+
+       /**
+        * Render the control. Renders the control wrapper, then calls $this->render_content().
+        *
+        * @since 3.4.0
+        */
+       protected function render() {
+               $id    = 'customize-control-' . str_replace( '[', '-', str_replace( ']', '', $this->id ) );
+               $class = 'customize-control customize-control-' . $this->type;
+
+               ?><li id="<?php echo esc_attr( $id ); ?>" class="<?php echo esc_attr( $class ); ?>">
+                       <?php $this->render_content(); ?>
+               </li><?php
+       }
+
+       public function get_link( $setting_key = 'default' ) {
+               if ( ! isset( $this->settings[ $setting_key ] ) )
+                       return '';
+
+               return 'data-customize-setting-link="' . esc_attr( $this->settings[ $setting_key ]->id ) . '"';
+       }
+
+       public function link( $setting_key = 'default' ) {
+               echo $this->get_link( $setting_key );
+       }
+
+       /**
+        * Render the control's content.
+        *
+        * Allows the content to be overriden without having to rewrite the wrapper.
+        *
+        * @since 3.4.0
+        */
+       protected function render_content() {
+               switch( $this->type ) {
+                       case 'text':
+                               ?>
+                               <label>
+                                       <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
+                                       <input type="text" value="<?php echo esc_attr( $this->value() ); ?>" <?php $this->link(); ?> />
+                               </label>
+                               <?php
+                               break;
+                       case 'checkbox':
+                               ?>
+                               <label>
+                                       <input type="checkbox" value="<?php echo esc_attr( $this->value() ); ?>" <?php $this->link(); checked( $this->value() ); ?> />
+                                       <?php echo esc_html( $this->label ); ?>
+                               </label>
+                               <?php
+                               break;
+                       case 'radio':
+                               if ( empty( $this->choices ) )
+                                       return;
+
+                               $name = '_customize-radio-' . $this->id;
+
+                               ?>
+                               <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
+                               <?php
+                               foreach ( $this->choices as $value => $label ) :
+                                       ?>
+                                       <label>
+                                               <input type="radio" value="<?php echo esc_attr( $value ); ?>" name="<?php echo esc_attr( $name ); ?>" <?php $this->link(); checked( $this->value(), $value ); ?> />
+                                               <?php echo esc_html( $label ); ?><br/>
+                                       </label>
+                                       <?php
+                               endforeach;
+                               break;
+                       case 'select':
+                               if ( empty( $this->choices ) )
+                                       return;
+
+                               ?>
+                               <label>
+                                       <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
+                                       <select <?php $this->link(); ?>>
+                                               <?php
+                                               foreach ( $this->choices as $value => $label )
+                                                       echo '<option value="' . esc_attr( $value ) . '"' . selected( $this->value(), $value, false ) . '>' . $label . '</option>';
+                                               ?>
+                                       </select>
+                               </label>
+                               <?php
+                               break;
+                       case 'dropdown-pages':
+                               $dropdown = wp_dropdown_pages(
+                                       array(
+                                               'name'              => '_customize-dropdown-pages-' . $this->id,
+                                               'echo'              => 0,
+                                               'show_option_none'  => __( '&mdash; Select &mdash;' ),
+                                               'option_none_value' => '0',
+                                               'selected'          => $this->value(),
+                                       )
+                               );
+
+                               // Hackily add in the data link parameter.
+                               $dropdown = str_replace( '<select', '<select ' . $this->get_link(), $dropdown );
+
+                               printf(
+                                       '<label class="customize-control-select"><span class="customize-control-title">%s</span> %s</label>',
+                                       $this->label,
+                                       $dropdown
+                               );
+                               break;
+               }
+       }
+}
+
+class WP_Customize_Color_Control extends WP_Customize_Control {
+       public $type = 'color';
+       public $statuses;
+
+       public function __construct( $manager, $id, $args = array() ) {
+               $this->statuses = array( '' => __('Default') );
+               parent::__construct( $manager, $id, $args );
+       }
+
+       public function enqueue() {
+               wp_enqueue_script( 'farbtastic' );
+               wp_enqueue_style( 'farbtastic' );
+       }
+
+       public function to_json() {
+               parent::to_json();
+               $this->json['statuses'] = $this->statuses;
+       }
+
+       public function render_content() {
+               ?>
+               <label>
+                       <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
+                       <div class="customize-control-content">
+                               <div class="dropdown">
+                                       <div class="dropdown-content">
+                                               <div class="dropdown-status"></div>
+                                       </div>
+                                       <div class="dropdown-arrow"></div>
+                               </div>
+                               <input class="color-picker-hex" type="text" maxlength="7" placeholder="<?php esc_attr_e('Hex Value'); ?>" />
+                       </div>
+                       <div class="farbtastic-placeholder"></div>
+               </label>
+               <?php
+       }
+}
+
+class WP_Customize_Upload_Control extends WP_Customize_Control {
+       public $type    = 'upload';
+       public $removed = '';
+       public $context;
+
+       public function enqueue() {
+               wp_enqueue_script( 'wp-plupload' );
+       }
+
+       public function to_json() {
+               parent::to_json();
+
+               $this->json['removed'] = $this->removed;
+
+               if ( $this->context )
+                       $this->json['context'] = $this->context;
+       }
+
+       public function render_content() {
+               ?>
+               <label>
+                       <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
+                       <div>
+                               <a href="#" class="button-secondary upload"><?php _e( 'Upload' ); ?></a>
+                               <a href="#" class="remove"><?php _e( 'Remove' ); ?></a>
+                       </div>
+               </label>
+               <?php
+       }
+}
+
+class WP_Customize_Image_Control extends WP_Customize_Upload_Control {
+       public $type = 'image';
+       public $get_url;
+       public $statuses;
+
+       protected $tabs = array();
+
+       public function __construct( $manager, $id, $args ) {
+               $this->statuses = array( '' => __('No Image') );
+
+               parent::__construct( $manager, $id, $args );
+
+               $this->add_tab( 'upload-new', __('Upload New'), array( $this, 'tab_upload_new' ) );
+               $this->add_tab( 'uploaded',   __('Uploaded'),   array( $this, 'tab_uploaded' ) );
+       }
+
+       public function to_json() {
+               parent::to_json();
+               $this->json['statuses'] = $this->statuses;
+       }
+
+       public function render_content() {
+               $src = $this->value();
+               if ( isset( $this->get_url ) )
+                       $src = call_user_func( $this->get_url, $src );
+
+               ?>
+               <div class="customize-image-picker">
+                       <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
+
+                       <div class="customize-control-content">
+                               <div class="dropdown preview-thumbnail">
+                                       <div class="dropdown-content">
+                                               <?php if ( empty( $src ) ): ?>
+                                                       <img style="display:none;" />
+                                               <?php else: ?>
+                                                       <img src="<?php echo esc_url( set_url_scheme( $src ) ); ?>" />
+                                               <?php endif; ?>
+                                               <div class="dropdown-status"></div>
+                                       </div>
+                                       <div class="dropdown-arrow"></div>
+                               </div>
+                       </div>
+
+                       <div class="library">
+                               <ul>
+                                       <?php foreach ( $this->tabs as $id => $tab ): ?>
+                                               <li data-customize-tab='<?php echo esc_attr( $id ); ?>'>
+                                                       <?php echo esc_html( $tab['label'] ); ?>
+                                               </li>
+                                       <?php endforeach; ?>
+                               </ul>
+                               <?php foreach ( $this->tabs as $id => $tab ): ?>
+                                       <div class="library-content" data-customize-tab='<?php echo esc_attr( $id ); ?>'>
+                                               <?php call_user_func( $tab['callback'] ); ?>
+                                       </div>
+                               <?php endforeach; ?>
+                       </div>
+
+                       <div class="actions">
+                               <a href="#" class="remove"><?php _e( 'Remove Image' ); ?></a>
+                       </div>
+               </div>
+               <?php
+       }
+
+       public function add_tab( $id, $label, $callback ) {
+               $this->tabs[ $id ] = array(
+                       'label'    => $label,
+                       'callback' => $callback,
+               );
+       }
+
+       public function remove_tab( $id ) {
+               unset( $this->tabs[ $id ] );
+       }
+
+       public function tab_upload_new() {
+               if ( ! _device_can_upload() ) {
+                       ?>
+                       <p><?php _e('The web browser on your device cannot be used to upload files. You may be able to use the <a href="http://wordpress.org/extend/mobile/">native app for your device</a> instead.'); ?></p>
+                       <?php
+               } else {
+                       ?>
+                       <div class="upload-dropzone">
+                               <?php _e('Drop a file here or <a href="#" class="upload">select a file</a>.'); ?>
+                       </div>
+                       <div class="upload-fallback">
+                               <span class="button-secondary"><?php _e('Select File'); ?></span>
+                       </div>
+                       <?php
+               }
+       }
+
+       public function tab_uploaded() {
+               ?>
+               <div class="uploaded-target"></div>
+               <?php
+       }
+
+       public function print_tab_image( $url, $thumbnail_url = null ) {
+               $url = set_url_scheme( $url );
+               $thumbnail_url = ( $thumbnail_url ) ? set_url_scheme( $thumbnail_url ) : $url;
+               ?>
+               <a href="#" class="thumbnail" data-customize-image-value="<?php echo esc_url( $url ); ?>">
+                       <img src="<?php echo esc_url( $thumbnail_url ); ?>" />
+               </a>
+               <?php
+       }
+}
+
+class WP_Customize_Background_Image_Control extends WP_Customize_Image_Control {
+       public function __construct( $manager ) {
+               parent::__construct( $manager, 'background_image', array(
+                       'label'    => __( 'Background Image' ),
+                       'section'  => 'background_image',
+                       'context'  => 'custom-background',
+                       'get_url'  => 'get_background_image',
+               ) );
+
+               if ( $this->setting->default )
+                       $this->add_tab( 'default',  __('Default'),  array( $this, 'tab_default_background' ) );
+       }
+
+       public function tab_uploaded() {
+               $backgrounds = get_posts( array(
+                       'post_type'  => 'attachment',
+                       'meta_key'   => '_wp_attachment_is_custom_background',
+                       'meta_value' => $this->manager->get_stylesheet(),
+                       'orderby'    => 'none',
+                       'nopaging'   => true,
+               ) );
+
+               ?><div class="uploaded-target"></div><?php
+
+               if ( empty( $backgrounds ) )
+                       return;
+
+               foreach ( (array) $backgrounds as $background )
+                       $this->print_tab_image( esc_url_raw( $background->guid ) );
+       }
+
+       public function tab_default_background() {
+               $this->print_tab_image( $this->setting->default );
+       }
+}
+
+class WP_Customize_Header_Image_Control extends WP_Customize_Image_Control {
+       public function __construct( $manager ) {
+               parent::__construct( $manager, 'header_image', array(
+                       'label'    => __( 'Header Image' ),
+                       'settings' => array(
+                               'default' => 'header_image',
+                               'data'    => 'header_image_data',
+                       ),
+                       'section'  => 'header_image',
+                       'context'  => 'custom-header',
+                       'removed'  => 'remove-header',
+                       'get_url'  => 'get_header_image',
+                       'statuses' => array(
+                               ''                      => __('Default'),
+                               'remove-header'         => __('No Image'),
+                               'random-default-image'  => __('Random Default Image'),
+                               'random-uploaded-image' => __('Random Uploaded Image'),
+                       )
+               ) );
+
+               $this->add_tab( 'default',  __('Default'),  array( $this, 'tab_default_headers' ) );
+       }
+
+       public function print_header_image( $choice, $header ) {
+               $header['url']           = set_url_scheme( $header['url'] );
+               $header['thumbnail_url'] = set_url_scheme( $header['thumbnail_url'] );
+
+               $header_image_data = array( 'choice' => $choice );
+               foreach ( array( 'attachment_id', 'width', 'height', 'url', 'thumbnail_url' ) as $key ) {
+                       if ( isset( $header[ $key ] ) )
+                               $header_image_data[ $key ] = $header[ $key ];
+               }
+
+
+               ?>
+               <a href="#" class="thumbnail"
+                       data-customize-image-value="<?php echo esc_url( $header['url'] ); ?>"
+                       data-customize-header-image-data="<?php echo esc_attr( json_encode( $header_image_data ) ); ?>">
+                       <img src="<?php echo esc_url( $header['thumbnail_url'] ); ?>" />
+               </a>
+               <?php
+       }
+
+       public function tab_uploaded() {
+               $headers = get_uploaded_header_images();
+
+               ?><div class="uploaded-target"></div><?php
+
+               foreach ( $headers as $choice => $header )
+                       $this->print_header_image( $choice, $header );
+       }
+
+       public function tab_default_headers() {
+               global $custom_image_header;
+               $custom_image_header->process_default_headers();
+
+               foreach ( $custom_image_header->default_headers as $choice => $header )
+                       $this->print_header_image( $choice, $header );
+       }
+}
\ No newline at end of file
diff --git a/wp-includes/class-wp-customize-manager.php b/wp-includes/class-wp-customize-manager.php
new file mode 100644 (file)
index 0000000..c1ce051
--- /dev/null
@@ -0,0 +1,1010 @@
+<?php
+/**
+ * Customize
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 3.4.0
+ */
+
+final class WP_Customize_Manager {
+       protected $theme;
+       protected $original_stylesheet;
+
+       protected $previewing = false;
+
+       protected $settings = array();
+       protected $sections = array();
+       protected $controls = array();
+
+       protected $customized;
+
+       private $_post_values;
+
+       /**
+        * Constructor.
+        *
+        * @since 3.4.0
+        */
+       public function __construct() {
+               require( ABSPATH . WPINC . '/class-wp-customize-setting.php' );
+               require( ABSPATH . WPINC . '/class-wp-customize-section.php' );
+               require( ABSPATH . WPINC . '/class-wp-customize-control.php' );
+
+               add_filter( 'wp_die_handler', array( $this, 'wp_die_handler' ) );
+
+               add_action( 'setup_theme',  array( $this, 'setup_theme' ) );
+               add_action( 'wp_loaded',    array( $this, 'wp_loaded' ) );
+
+               // Run wp_redirect_status late to make sure we override the status last.
+               add_action( 'wp_redirect_status', array( $this, 'wp_redirect_status' ), 1000 );
+
+               // Do not spawn cron (especially the alternate cron) while running the customizer.
+               remove_action( 'init', 'wp_cron' );
+
+               // Do not run update checks when rendering the controls.
+               remove_action( 'admin_init', '_maybe_update_core' );
+               remove_action( 'admin_init', '_maybe_update_plugins' );
+               remove_action( 'admin_init', '_maybe_update_themes' );
+
+               add_action( 'wp_ajax_customize_save', array( $this, 'save' ) );
+
+               add_action( 'customize_register',                 array( $this, 'register_controls' ) );
+               add_action( 'customize_controls_init',            array( $this, 'prepare_controls' ) );
+               add_action( 'customize_controls_enqueue_scripts', array( $this, 'enqueue_control_scripts' ) );
+       }
+
+       /**
+        * Return true if it's an AJAX request.
+        *
+        * @since 3.4.0
+        */
+       public function doing_ajax() {
+               return isset( $_POST['customized'] ) || ( defined( 'DOING_AJAX' ) && DOING_AJAX );
+       }
+
+       /**
+        * Custom wp_die wrapper. Returns either the standard message for UI
+        * or the AJAX message.
+        *
+        * @param  mixed $ajax_message AJAX return
+        * @param  mixed $message      UI message
+        *
+        * @since 3.4.0
+        */
+       protected function wp_die( $ajax_message, $message = null ) {
+               if ( $this->doing_ajax() )
+                       wp_die( $ajax_message );
+
+               if ( ! $message )
+                       $message = __( 'Cheatin&#8217; uh?' );
+
+               wp_die( $message );
+       }
+
+       /**
+        * Return the AJAX wp_die() handler if it's a customized request.
+        *
+        * @since 3.4.0
+        */
+       public function wp_die_handler() {
+               if ( $this->doing_ajax() )
+                       return '_ajax_wp_die_handler';
+
+               return '_default_wp_die_handler';
+       }
+       /**
+       * Start preview and customize theme.
+       *
+       * Check if customize query variable exist. Init filters to filter the current theme.
+        *
+        * @since 3.4.0
+        */
+       public function setup_theme() {
+               send_origin_headers();
+
+               if ( is_admin() && ! $this->doing_ajax() )
+                   auth_redirect();
+               elseif ( $this->doing_ajax() && ! is_user_logged_in() )
+                   $this->wp_die( 0 );
+
+               show_admin_bar( false );
+
+               if ( ! current_user_can( 'edit_theme_options' ) )
+                       $this->wp_die( -1 );
+
+               $this->original_stylesheet = get_stylesheet();
+
+               $this->theme = wp_get_theme( isset( $_REQUEST['theme'] ) ? $_REQUEST['theme'] : null );
+
+               if ( $this->is_theme_active() ) {
+                       // Once the theme is loaded, we'll validate it.
+                       add_action( 'after_setup_theme', array( $this, 'after_setup_theme' ) );
+               } else {
+                       if ( ! current_user_can( 'switch_themes' ) )
+                               $this->wp_die( -1 );
+
+                       // If the theme isn't active, you can't preview it if it is not allowed or has errors.
+                       if ( $this->theme()->errors() )
+                               $this->wp_die( -1 );
+
+                       if ( ! $this->theme()->is_allowed() )
+                               $this->wp_die( -1 );
+               }
+
+               $this->start_previewing_theme();
+       }
+
+       function after_setup_theme() {
+               if ( ! $this->doing_ajax() && ! validate_current_theme() ) {
+                       wp_redirect( 'themes.php?broken=true' );
+                       exit;
+               }
+       }
+
+       /**
+        * Start previewing the selected theme.
+        *
+        * Adds filters to change the current theme.
+        *
+        * @since 3.4.0
+        */
+       public function start_previewing_theme() {
+               // Bail if we're already previewing.
+               if ( $this->is_preview() )
+                       return;
+
+               $this->previewing = true;
+
+               if ( ! $this->is_theme_active() ) {
+                       add_filter( 'template', array( $this, 'get_template' ) );
+                       add_filter( 'stylesheet', array( $this, 'get_stylesheet' ) );
+                       add_filter( 'pre_option_current_theme', array( $this, 'current_theme' ) );
+
+                       // @link: http://core.trac.wordpress.org/ticket/20027
+                       add_filter( 'pre_option_stylesheet', array( $this, 'get_stylesheet' ) );
+                       add_filter( 'pre_option_template', array( $this, 'get_template' ) );
+
+                       // Handle custom theme roots.
+                       add_filter( 'pre_option_stylesheet_root', array( $this, 'get_stylesheet_root' ) );
+                       add_filter( 'pre_option_template_root', array( $this, 'get_template_root' ) );
+               }
+
+               do_action( 'start_previewing_theme', $this );
+       }
+
+       /**
+        * Stop previewing the selected theme.
+        *
+        * Removes filters to change the current theme.
+        *
+        * @since 3.4.0
+        */
+       public function stop_previewing_theme() {
+               if ( ! $this->is_preview() )
+                       return;
+
+               $this->previewing = false;
+
+               if ( ! $this->is_theme_active() ) {
+                       remove_filter( 'template', array( $this, 'get_template' ) );
+                       remove_filter( 'stylesheet', array( $this, 'get_stylesheet' ) );
+                       remove_filter( 'pre_option_current_theme', array( $this, 'current_theme' ) );
+
+                       // @link: http://core.trac.wordpress.org/ticket/20027
+                       remove_filter( 'pre_option_stylesheet', array( $this, 'get_stylesheet' ) );
+                       remove_filter( 'pre_option_template', array( $this, 'get_template' ) );
+
+                       // Handle custom theme roots.
+                       remove_filter( 'pre_option_stylesheet_root', array( $this, 'get_stylesheet_root' ) );
+                       remove_filter( 'pre_option_template_root', array( $this, 'get_template_root' ) );
+               }
+
+               do_action( 'stop_previewing_theme', $this );
+       }
+
+       /**
+        * Get the theme being customized.
+        *
+        * @since 3.4.0
+        *
+        * @return WP_Theme
+        */
+       public function theme() {
+               return $this->theme;
+       }
+
+       /**
+        * Get the registered settings.
+        *
+        * @since 3.4.0
+        *
+        * @return array
+        */
+       public function settings() {
+               return $this->settings;
+       }
+
+       /**
+        * Get the registered controls.
+        *
+        * @since 3.4.0
+        *
+        * @return array
+        */
+       public function controls() {
+               return $this->controls;
+       }
+
+       /**
+        * Get the registered sections.
+        *
+        * @since 3.4.0
+        *
+        * @return array
+        */
+       public function sections() {
+               return $this->sections;
+       }
+
+       /**
+        * Checks if the current theme is active.
+        *
+        * @since 3.4.0
+        *
+        * @return bool
+        */
+       public function is_theme_active() {
+               return $this->get_stylesheet() == $this->original_stylesheet;
+       }
+
+       /**
+        * Register styles/scripts and initialize the preview of each setting
+        *
+        * @since 3.4.0
+        */
+       public function wp_loaded() {
+               do_action( 'customize_register', $this );
+
+               if ( $this->is_preview() && ! is_admin() )
+                       $this->customize_preview_init();
+       }
+
+       /**
+        * Prevents AJAX requests from following redirects when previewing a theme
+        * by issuing a 200 response instead of a 30x.
+        *
+        * Instead, the JS will sniff out the location header.
+        *
+        * @since 3.4.0
+        */
+       public function wp_redirect_status( $status ) {
+               if ( $this->is_preview() && ! is_admin() )
+                       return 200;
+
+               return $status;
+       }
+
+       /**
+        * Decode the $_POST attribute used to override the WP_Customize_Setting values.
+        *
+        * @since 3.4.0
+        */
+       public function post_value( $setting ) {
+               if ( ! isset( $this->_post_values ) ) {
+                       if ( isset( $_POST['customized'] ) )
+                               $this->_post_values = json_decode( stripslashes( $_POST['customized'] ), true );
+                       else
+                               $this->_post_values = false;
+               }
+
+               if ( isset( $this->_post_values[ $setting->id ] ) )
+                       return $setting->sanitize( $this->_post_values[ $setting->id ] );
+       }
+
+       /**
+        * Print javascript settings.
+        *
+        * @since 3.4.0
+        */
+       public function customize_preview_init() {
+               $this->prepare_controls();
+
+               wp_enqueue_script( 'customize-preview' );
+               add_action( 'wp_head', array( $this, 'customize_preview_base' ) );
+               add_action( 'wp_head', array( $this, 'customize_preview_html5' ) );
+               add_action( 'wp_footer', array( $this, 'customize_preview_settings' ), 20 );
+               add_action( 'shutdown', array( $this, 'customize_preview_signature' ), 1000 );
+               add_filter( 'wp_die_handler', array( $this, 'remove_preview_signature' ) );
+
+               foreach ( $this->settings as $setting ) {
+                       $setting->preview();
+               }
+
+               do_action( 'customize_preview_init', $this );
+       }
+
+       /**
+        * Print base element for preview frame.
+        *
+        * @since 3.4.0
+        */
+       public function customize_preview_base() {
+               ?><base href="<?php echo home_url( '/' ); ?>" /><?php
+       }
+
+       /**
+        * Print a workaround to handle HTML5 tags in IE < 9
+        *
+        * @since 3.4.0
+        */
+       public function customize_preview_html5() { ?>
+               <!--[if lt IE 9]>
+               <script type="text/javascript">
+                       var e = [ 'abbr', 'article', 'aside', 'audio', 'canvas', 'datalist', 'details',
+                               'figure', 'footer', 'header', 'hgroup', 'mark', 'menu', 'meter', 'nav',
+                               'output', 'progress', 'section', 'time', 'video' ];
+                       for ( var i = 0; i < e.length; i++ ) {
+                               document.createElement( e[i] );
+                       }
+               </script>
+               <![endif]--><?php
+       }
+
+       /**
+        * Print javascript settings for preview frame.
+        *
+        * @since 3.4.0
+        */
+       public function customize_preview_settings() {
+               $settings = array(
+                       'values'  => array(),
+                       'channel' => esc_js( $_POST['customize_messenger_channel'] ),
+               );
+
+               foreach ( $this->settings as $id => $setting ) {
+                       $settings['values'][ $id ] = $setting->js_value();
+               }
+
+               ?>
+               <script type="text/javascript">
+                       var _wpCustomizeSettings = <?php echo json_encode( $settings ); ?>;
+               </script>
+               <?php
+       }
+
+       /**
+        * Prints a signature so we can ensure the customizer was properly executed.
+        *
+        * @since 3.4.0
+        */
+       public function customize_preview_signature() {
+               echo 'WP_CUSTOMIZER_SIGNATURE';
+       }
+
+       /**
+        * Removes the signature in case we experience a case where the customizer was not properly executed.
+        *
+        * @since 3.4.0
+        */
+       public function remove_preview_signature( $return = null ) {
+               remove_action( 'shutdown', array( $this, 'customize_preview_signature' ), 1000 );
+
+               return $return;
+       }
+
+       /**
+        * Is it a theme preview?
+        *
+        * @since 3.4.0
+        *
+        * @return bool True if it's a preview, false if not.
+        */
+       public function is_preview() {
+               return (bool) $this->previewing;
+       }
+
+       /**
+        * Retrieve the template name of the previewed theme.
+        *
+        * @since 3.4.0
+        *
+        * @return string Template name.
+        */
+       public function get_template() {
+               return $this->theme()->get_template();
+       }
+
+       /**
+        * Retrieve the stylesheet name of the previewed theme.
+        *
+        * @since 3.4.0
+        *
+        * @return string Stylesheet name.
+        */
+       public function get_stylesheet() {
+               return $this->theme()->get_stylesheet();
+       }
+
+       /**
+        * Retrieve the template root of the previewed theme.
+        *
+        * @since 3.4.0
+        *
+        * @return string Theme root.
+        */
+       public function get_template_root() {
+               return get_raw_theme_root( $this->get_template(), true );
+       }
+
+       /**
+        * Retrieve the stylesheet root of the previewed theme.
+        *
+        * @since 3.4.0
+        *
+        * @return string Theme root.
+        */
+       public function get_stylesheet_root() {
+               return get_raw_theme_root( $this->get_stylesheet(), true );
+       }
+
+       /**
+        * Filter the current theme and return the name of the previewed theme.
+        *
+        * @since 3.4.0
+        *
+        * @return string Theme name.
+        */
+       public function current_theme( $current_theme ) {
+               return $this->theme()->display('Name');
+       }
+
+       /**
+        * Switch the theme and trigger the save action of each setting.
+        *
+        * @since 3.4.0
+        */
+       public function save() {
+               if ( ! $this->is_preview() )
+                       die;
+
+               check_ajax_referer( 'customize_controls-' . $this->get_stylesheet(), 'nonce' );
+
+               // Do we have to switch themes?
+               if ( ! $this->is_theme_active() ) {
+                       // Temporarily stop previewing the theme to allow switch_themes()
+                       // to operate properly.
+                       $this->stop_previewing_theme();
+                       switch_theme( $this->get_template(), $this->get_stylesheet() );
+                       $this->start_previewing_theme();
+               }
+
+               do_action( 'customize_save', $this );
+
+               foreach ( $this->settings as $setting ) {
+                       $setting->save();
+               }
+
+               die;
+       }
+
+       /**
+        * Add a customize setting.
+        *
+        * @since 3.4.0
+        *
+        * @param string $id A specific ID of the setting. Can be a
+        *                   theme mod or option name.
+        * @param array $args Setting arguments.
+        */
+       public function add_setting( $id, $args = array() ) {
+               if ( is_a( $id, 'WP_Customize_Setting' ) )
+                       $setting = $id;
+               else
+                       $setting = new WP_Customize_Setting( $this, $id, $args );
+
+               $this->settings[ $setting->id ] = $setting;
+       }
+
+       /**
+        * Retrieve a customize setting.
+        *
+        * @since 3.4.0
+        *
+        * @param string $id A specific ID of the setting.
+        * @return object The settings object.
+        */
+       public function get_setting( $id ) {
+               if ( isset( $this->settings[ $id ] ) )
+                       return $this->settings[ $id ];
+       }
+
+       /**
+        * Remove a customize setting.
+        *
+        * @since 3.4.0
+        *
+        * @param string $id A specific ID of the setting.
+        */
+       public function remove_setting( $id ) {
+               unset( $this->settings[ $id ] );
+       }
+
+       /**
+        * Add a customize section.
+        *
+        * @since 3.4.0
+        *
+        * @param string $id A specific ID of the section.
+        * @param array $args Section arguments.
+        */
+       public function add_section( $id, $args = array() ) {
+               if ( is_a( $id, 'WP_Customize_Section' ) )
+                       $section = $id;
+               else
+                       $section = new WP_Customize_Section( $this, $id, $args );
+
+               $this->sections[ $section->id ] = $section;
+       }
+
+       /**
+        * Retrieve a customize section.
+        *
+        * @since 3.4.0
+        *
+        * @param string $id A specific ID of the section.
+        * @return object The section object.
+        */
+       public function get_section( $id ) {
+               if ( isset( $this->sections[ $id ] ) )
+                       return $this->sections[ $id ];
+       }
+
+       /**
+        * Remove a customize section.
+        *
+        * @since 3.4.0
+        *
+        * @param string $id A specific ID of the section.
+        */
+       public function remove_section( $id ) {
+               unset( $this->sections[ $id ] );
+       }
+
+       /**
+        * Add a customize control.
+        *
+        * @since 3.4.0
+        *
+        * @param string $id A specific ID of the control.
+        * @param array $args Setting arguments.
+        */
+       public function add_control( $id, $args = array() ) {
+               if ( is_a( $id, 'WP_Customize_Control' ) )
+                       $control = $id;
+               else
+                       $control = new WP_Customize_Control( $this, $id, $args );
+
+               $this->controls[ $control->id ] = $control;
+       }
+
+       /**
+        * Retrieve a customize control.
+        *
+        * @since 3.4.0
+        *
+        * @param string $id A specific ID of the control.
+        * @return object The settings object.
+        */
+       public function get_control( $id ) {
+               if ( isset( $this->controls[ $id ] ) )
+                       return $this->controls[ $id ];
+       }
+
+       /**
+        * Remove a customize setting.
+        *
+        * @since 3.4.0
+        *
+        * @param string $id A specific ID of the control.
+        */
+       public function remove_control( $id ) {
+               unset( $this->controls[ $id ] );
+       }
+
+       /**
+        * Helper function to compare two objects by priority.
+        *
+        * @since 3.4.0
+        *
+        * @param object $a Object A.
+        * @param object $b Object B.
+        */
+       protected final function _cmp_priority( $a, $b ) {
+               $ap = $a->priority;
+               $bp = $b->priority;
+
+               if ( $ap == $bp )
+                       return 0;
+               return ( $ap > $bp ) ? 1 : -1;
+       }
+
+       /**
+        * Prepare settings and sections.
+        *
+        * @since 3.4.0
+        */
+       public function prepare_controls() {
+               // Prepare controls
+               // Reversing makes uasort sort by time added when conflicts occur.
+
+               $this->controls = array_reverse( $this->controls );
+               $controls = array();
+
+               foreach ( $this->controls as $id => $control ) {
+                       if ( ! isset( $this->sections[ $control->section ] ) || ! $control->check_capabilities() )
+                               continue;
+
+                       $this->sections[ $control->section ]->controls[] = $control;
+                       $controls[ $id ] = $control;
+               }
+               $this->controls = $controls;
+
+               // Prepare sections
+               $this->sections = array_reverse( $this->sections );
+               uasort( $this->sections, array( $this, '_cmp_priority' ) );
+               $sections = array();
+
+               foreach ( $this->sections as $section ) {
+                       if ( ! $section->check_capabilities() || ! $section->controls )
+                               continue;
+
+                       usort( $section->controls, array( $this, '_cmp_priority' ) );
+                       $sections[] = $section;
+               }
+               $this->sections = $sections;
+       }
+
+       /**
+        * Enqueue scripts for customize controls.
+        *
+        * @since 3.4.0
+        */
+       public function enqueue_control_scripts() {
+               foreach ( $this->controls as $control ) {
+                       $control->enqueue();
+               }
+       }
+
+       /**
+        * Register some default controls.
+        *
+        * @since 3.4.0
+        */
+       public function register_controls() {
+
+               /* Site Title & Tagline */
+
+               $this->add_section( 'title_tagline', array(
+                       'title'    => __( 'Site Title & Tagline' ),
+                       'priority' => 20,
+               ) );
+
+               $this->add_setting( 'blogname', array(
+                       'default'    => get_option( 'blogname' ),
+                       'type'       => 'option',
+                       'capability' => 'manage_options',
+               ) );
+
+               $this->add_control( 'blogname', array(
+                       'label'      => __( 'Site Title' ),
+                       'section'    => 'title_tagline',
+               ) );
+
+               $this->add_setting( 'blogdescription', array(
+                       'default'    => get_option( 'blogdescription' ),
+                       'type'       => 'option',
+                       'capability' => 'manage_options',
+               ) );
+
+               $this->add_control( 'blogdescription', array(
+                       'label'      => __( 'Tagline' ),
+                       'section'    => 'title_tagline',
+               ) );
+
+               /* Colors */
+
+               $this->add_section( 'colors', array(
+                       'title'          => __( 'Colors' ),
+                       'priority'       => 40,
+               ) );
+
+               $this->add_setting( 'header_textcolor', array(
+                       'theme_supports' => array( 'custom-header', 'header-text' ),
+                       'default'        => get_theme_support( 'custom-header', 'default-text-color' ),
+
+                       'sanitize_callback'    => array( $this, '_sanitize_header_textcolor' ),
+                       'sanitize_js_callback' => 'maybe_hash_hex_color',
+               ) );
+
+               // Input type: checkbox
+               // With custom value
+               $this->add_control( 'display_header_text', array(
+                       'settings' => 'header_textcolor',
+                       'label'    => __( 'Display Header Text' ),
+                       'section'  => 'title_tagline',
+                       'type'     => 'checkbox',
+               ) );
+
+               $this->add_control( new WP_Customize_Color_Control( $this, 'header_textcolor', array(
+                       'label'   => __( 'Header Text Color' ),
+                       'section' => 'colors',
+               ) ) );
+
+               // Input type: Color
+               // With sanitize_callback
+               $this->add_setting( 'background_color', array(
+                       'default'        => get_theme_support( 'custom-background', 'default-color' ),
+                       'theme_supports' => 'custom-background',
+
+                       'sanitize_callback'    => 'sanitize_hex_color_no_hash',
+                       'sanitize_js_callback' => 'maybe_hash_hex_color',
+               ) );
+
+               $this->add_control( new WP_Customize_Color_Control( $this, 'background_color', array(
+                       'label'   => __( 'Background Color' ),
+                       'section' => 'colors',
+               ) ) );
+
+
+               /* Custom Header */
+
+               $this->add_section( 'header_image', array(
+                       'title'          => __( 'Header Image' ),
+                       'theme_supports' => 'custom-header',
+                       'priority'       => 60,
+               ) );
+
+               $this->add_setting( new WP_Customize_Filter_Setting( $this, 'header_image', array(
+                       'default'        => get_theme_support( 'custom-header', 'default-image' ),
+                       'theme_supports' => 'custom-header',
+               ) ) );
+
+               $this->add_setting( new WP_Customize_Header_Image_Setting( $this, 'header_image_data', array(
+                       // 'default'        => get_theme_support( 'custom-header', 'default-image' ),
+                       'theme_supports' => 'custom-header',
+               ) ) );
+
+               $this->add_control( new WP_Customize_Header_Image_Control( $this ) );
+
+               /* Custom Background */
+
+               $this->add_section( 'background_image', array(
+                       'title'          => __( 'Background Image' ),
+                       'theme_supports' => 'custom-background',
+                       'priority'       => 80,
+               ) );
+
+               $this->add_setting( 'background_image', array(
+                       'default'        => get_theme_support( 'custom-background', 'default-image' ),
+                       'theme_supports' => 'custom-background',
+               ) );
+
+               $this->add_setting( new WP_Customize_Background_Image_Setting( $this, 'background_image_thumb', array(
+                       'theme_supports' => 'custom-background',
+               ) ) );
+
+               $this->add_control( new WP_Customize_Background_Image_Control( $this ) );
+
+               $this->add_setting( 'background_repeat', array(
+                       'default'        => 'repeat',
+                       'theme_supports' => 'custom-background',
+               ) );
+
+               $this->add_control( 'background_repeat', array(
+                       'label'      => __( 'Background Repeat' ),
+                       'section'    => 'background_image',
+                       'type'       => 'radio',
+                       'choices'    => array(
+                               'no-repeat'  => __('No Repeat'),
+                               'repeat'     => __('Tile'),
+                               'repeat-x'   => __('Tile Horizontally'),
+                               'repeat-y'   => __('Tile Vertically'),
+                       ),
+               ) );
+
+               $this->add_setting( 'background_position_x', array(
+                       'default'        => 'left',
+                       'theme_supports' => 'custom-background',
+               ) );
+
+               $this->add_control( 'background_position_x', array(
+                       'label'      => __( 'Background Position' ),
+                       'section'    => 'background_image',
+                       'type'       => 'radio',
+                       'choices'    => array(
+                               'left'       => __('Left'),
+                               'center'     => __('Center'),
+                               'right'      => __('Right'),
+                       ),
+               ) );
+
+               $this->add_setting( 'background_attachment', array(
+                       'default'        => 'fixed',
+                       'theme_supports' => 'custom-background',
+               ) );
+
+               $this->add_control( 'background_attachment', array(
+                       'label'      => __( 'Background Attachment' ),
+                       'section'    => 'background_image',
+                       'type'       => 'radio',
+                       'choices'    => array(
+                               'fixed'      => __('Fixed'),
+                               'scroll'     => __('Scroll'),
+                       ),
+               ) );
+
+               // If the theme is using the default background callback, we can update
+               // the background CSS using postMessage.
+               if ( get_theme_support( 'custom-background', 'wp-head-callback' ) === '_custom_background_cb' ) {
+                       foreach ( array( 'color', 'image', 'position_x', 'repeat', 'attachment' ) as $prop ) {
+                               $this->get_setting( 'background_' . $prop )->transport = 'postMessage';
+                       }
+               }
+
+               /* Nav Menus */
+
+               $locations      = get_registered_nav_menus();
+               $menus          = wp_get_nav_menus();
+               $menu_locations = get_nav_menu_locations();
+               $num_locations  = count( array_keys( $locations ) );
+
+               $this->add_section( 'nav', array(
+                       'title'          => __( 'Navigation' ),
+                       'theme_supports' => 'menus',
+                       'priority'       => 100,
+                       'description'    => sprintf( _n('Your theme supports %s menu. Select which menu you would like to use.', 'Your theme supports %s menus. Select which menu appears in each location.', $num_locations ), number_format_i18n( $num_locations ) ) . "\n\n" . __('You can edit your menu content on the Menus screen in the Appearance section.'),
+               ) );
+
+               if ( $menus ) {
+                       $choices = array( 0 => __( '&mdash; Select &mdash;' ) );
+                       foreach ( $menus as $menu ) {
+                               $truncated_name = wp_html_excerpt( $menu->name, 40 );
+                               $truncated_name = ( $truncated_name == $menu->name ) ? $menu->name : trim( $truncated_name ) . '&hellip;';
+                               $choices[ $menu->term_id ] = $truncated_name;
+                       }
+
+                       foreach ( $locations as $location => $description ) {
+                               $menu_setting_id = "nav_menu_locations[{$location}]";
+
+                               $this->add_setting( $menu_setting_id, array(
+                                       'sanitize_callback' => 'absint',
+                                       'theme_supports'    => 'menus',
+                               ) );
+
+                               $this->add_control( $menu_setting_id, array(
+                                       'label'   => $description,
+                                       'section' => 'nav',
+                                       'type'    => 'select',
+                                       'choices' => $choices,
+                               ) );
+                       }
+               }
+
+               /* Static Front Page */
+               // #WP19627
+
+               $this->add_section( 'static_front_page', array(
+                       'title'          => __( 'Static Front Page' ),
+               //      'theme_supports' => 'static-front-page',
+                       'priority'       => 120,
+                       'description'    => __( 'Your theme supports a static front page.' ),
+               ) );
+
+               $this->add_setting( 'show_on_front', array(
+                       'default'        => get_option( 'show_on_front' ),
+                       'capability'     => 'manage_options',
+                       'type'           => 'option',
+               //      'theme_supports' => 'static-front-page',
+               ) );
+
+               $this->add_control( 'show_on_front', array(
+                       'label'   => __( 'Front page displays' ),
+                       'section' => 'static_front_page',
+                       'type'    => 'radio',
+                       'choices' => array(
+                               'posts' => __( 'Your latest posts' ),
+                               'page'  => __( 'A static page' ),
+                       ),
+               ) );
+
+               $this->add_setting( 'page_on_front', array(
+                       'type'       => 'option',
+                       'capability' => 'manage_options',
+               //      'theme_supports' => 'static-front-page',
+               ) );
+
+               $this->add_control( 'page_on_front', array(
+                       'label'      => __( 'Front page' ),
+                       'section'    => 'static_front_page',
+                       'type'       => 'dropdown-pages',
+               ) );
+
+               $this->add_setting( 'page_for_posts', array(
+                       'type'           => 'option',
+                       'capability'     => 'manage_options',
+               //      'theme_supports' => 'static-front-page',
+               ) );
+
+               $this->add_control( 'page_for_posts', array(
+                       'label'      => __( 'Posts page' ),
+                       'section'    => 'static_front_page',
+                       'type'       => 'dropdown-pages',
+               ) );
+       }
+
+       /**
+        * Callback for validating the header_textcolor value.
+        *
+        * Accepts 'blank', and otherwise uses sanitize_hex_color_no_hash().
+        *
+        * @since 3.4.0
+        */
+       public function _sanitize_header_textcolor( $color ) {
+               return ( 'blank' === $color ) ? 'blank' : sanitize_hex_color_no_hash( $color );
+       }
+};
+
+/**
+ * Validates a hex color.
+ *
+ * Returns either '', a 3 or 6 digit hex color (with #), or null.
+ * For validating values without a #, see sanitize_hex_color_no_hash().
+ *
+ * @since 3.4.0
+ */
+function sanitize_hex_color( $color ) {
+       if ( '' === $color )
+               return '';
+
+       // 3 or 6 hex digits, or the empty string.
+       if ( preg_match('|^#([A-Fa-f0-9]{3}){1,2}$|', $color ) )
+               return $color;
+
+       return null;
+}
+
+/**
+ * Sanitizes a hex color without a hash. Use sanitize_hex_color() when possible.
+ *
+ * Saving hex colors without a hash puts the burden of adding the hash on the
+ * UI, which makes it difficult to use or upgrade to other color types such as
+ * rgba, hsl, rgb, and html color names.
+ *
+ * Returns either '', a 3 or 6 digit hex color (without a #), or null.
+ *
+ * @since 3.4.0
+ */
+function sanitize_hex_color_no_hash( $color ) {
+       $color = ltrim( $color, '#' );
+
+       if ( '' === $color )
+               return '';
+
+       return sanitize_hex_color( '#' . $color ) ? $color : null;
+}
+
+/**
+ * Ensures that any hex color is properly hashed.
+ * Otherwise, returns value untouched.
+ *
+ * This method should only be necessary if using sanitize_hex_color_no_hash().
+ *
+ * @since 3.4.0
+ */
+function maybe_hash_hex_color( $color ) {
+       if ( $unhashed = sanitize_hex_color_no_hash( $color ) )
+               return '#' . $unhashed;
+
+       return $color;
+}
diff --git a/wp-includes/class-wp-customize-section.php b/wp-includes/class-wp-customize-section.php
new file mode 100644 (file)
index 0000000..b1b7d5f
--- /dev/null
@@ -0,0 +1,94 @@
+<?php
+/**
+ * Customize Section Class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 3.4.0
+ */
+
+class WP_Customize_Section {
+       public $manager;
+       public $id;
+       public $priority       = 10;
+       public $capability     = 'edit_theme_options';
+       public $theme_supports = '';
+       public $title          = '';
+       public $description    = '';
+       public $controls;
+
+       /**
+        * Constructor.
+        *
+        * @since 3.4.0
+        *
+        * @param string $id An specific ID of the section.
+        * @param array $args Section arguments.
+        */
+       function __construct( $manager, $id, $args = array() ) {
+               $keys = array_keys( get_class_vars( __CLASS__ ) );
+               foreach ( $keys as $key ) {
+                       if ( isset( $args[ $key ] ) )
+                               $this->$key = $args[ $key ];
+               }
+
+               $this->manager = $manager;
+               $this->id = $id;
+
+               $this->controls = array(); // Users cannot customize the $controls array.
+
+               return $this;
+       }
+
+       /**
+        * Check if the theme supports the section and check user capabilities.
+        *
+        * @since 3.4.0
+        *
+        * @return bool False if theme doesn't support the section or user doesn't have the capability.
+        */
+       public final function check_capabilities() {
+               if ( $this->capability && ! call_user_func_array( 'current_user_can', (array) $this->capability ) )
+                       return false;
+
+               if ( $this->theme_supports && ! call_user_func_array( 'current_theme_supports', (array) $this->theme_supports ) )
+                       return false;
+
+               return true;
+       }
+
+       /**
+        * Check capabilities and render the section.
+        *
+        * @since 3.4.0
+        */
+       public final function maybe_render() {
+               if ( ! $this->check_capabilities() )
+                       return;
+
+               do_action( 'customize_render_section', $this );
+               do_action( 'customize_render_section_' . $this->id );
+
+               $this->render();
+       }
+
+
+       /**
+        * Render the section.
+        *
+        * @since 3.4.0
+        */
+       protected function render() {
+               ?>
+               <li id="customize-section-<?php echo esc_attr( $this->id ); ?>" class="control-section customize-section">
+                       <h3 class="customize-section-title" title="<?php echo esc_attr( $this->description ); ?>"><?php echo esc_html( $this->title ); ?></h3>
+                       <ul class="customize-section-content">
+                               <?php
+                               foreach ( $this->controls as $control )
+                                       $control->maybe_render();
+                               ?>
+                       </ul>
+               </li>
+               <?php
+       }
+}
diff --git a/wp-includes/class-wp-customize-setting.php b/wp-includes/class-wp-customize-setting.php
new file mode 100644 (file)
index 0000000..c4cff0e
--- /dev/null
@@ -0,0 +1,409 @@
+<?php
+/**
+ * Customize Setting Class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 3.4.0
+ */
+
+class WP_Customize_Setting {
+       public $manager;
+       public $id;
+
+       public $type            = 'theme_mod';
+       public $capability      = 'edit_theme_options';
+       public $theme_supports  = '';
+       public $default         = '';
+       public $transport       = 'refresh';
+
+       public $sanitize_callback    = '';
+       public $sanitize_js_callback = '';
+
+       protected $id_data = array();
+       private $_post_value; // Cached, sanitized $_POST value.
+
+       /**
+        * Constructor.
+        *
+        * @since 3.4.0
+        *
+        * @param string $id An specific ID of the setting. Can be a
+        *                   theme mod or option name.
+        * @param array $args Setting arguments.
+        */
+       function __construct( $manager, $id, $args = array() ) {
+               $keys = array_keys( get_class_vars( __CLASS__ ) );
+               foreach ( $keys as $key ) {
+                       if ( isset( $args[ $key ] ) )
+                               $this->$key = $args[ $key ];
+               }
+
+               $this->manager = $manager;
+               $this->id = $id;
+
+               // Parse the ID for array keys.
+               $this->id_data[ 'keys' ] = preg_split( '/\[/', str_replace( ']', '', $this->id ) );
+               $this->id_data[ 'base' ] = array_shift( $this->id_data[ 'keys' ] );
+
+               // Rebuild the ID.
+               $this->id = $this->id_data[ 'base' ];
+               if ( ! empty( $this->id_data[ 'keys' ] ) )
+                       $this->id .= '[' . implode( '][', $this->id_data[ 'keys' ] ) . ']';
+
+               if ( $this->sanitize_callback )
+                       add_filter( "customize_sanitize_{$this->id}", $this->sanitize_callback, 10, 2 );
+
+               if ( $this->sanitize_js_callback )
+                       add_filter( "customize_sanitize_js_{$this->id}", $this->sanitize_js_callback, 10, 2 );
+
+               return $this;
+       }
+
+       /**
+        * Handle previewing the setting.
+        *
+        * @since 3.4.0
+        */
+       public function preview() {
+               switch( $this->type ) {
+                       case 'theme_mod' :
+                               add_filter( 'theme_mod_' . $this->id_data[ 'base' ], array( $this, '_preview_filter' ) );
+                               break;
+                       case 'option' :
+                               if ( empty( $this->id_data[ 'keys' ] ) )
+                                       add_filter( 'pre_option_' . $this->id_data[ 'base' ], array( $this, '_preview_filter' ) );
+                               else {
+                                       add_filter( 'option_' . $this->id_data[ 'base' ], array( $this, '_preview_filter' ) );
+                                       add_filter( 'default_option_' . $this->id_data[ 'base' ], array( $this, '_preview_filter' ) );
+                               }
+                               break;
+                       default :
+                               do_action( 'customize_preview_' . $this->id );
+               }
+       }
+
+       /**
+        * Callback function to filter the theme mods and options.
+        *
+        * @since 3.4.0
+        *
+        * @param mixed Old value.
+        * @return mixed New or old value.
+        */
+       public function _preview_filter( $original ) {
+               return $this->multidimensional_replace( $original, $this->id_data[ 'keys' ], $this->post_value() );
+       }
+
+       /**
+        * Set the value of the parameter for a specific theme.
+        *
+        * @since 3.4.0
+        *
+        * @return bool False if cap check fails or value isn't set.
+        */
+       public final function save() {
+               $value = $this->post_value();
+
+               if ( ! $this->check_capabilities() || ! isset( $value ) )
+                       return false;
+
+               do_action( 'customize_save_' . $this->id_data[ 'base' ] );
+
+               $this->update( $value );
+       }
+
+       /**
+        * Fetches, validates, and sanitizes the $_POST value.
+        *
+        * @since 3.4.0
+        *
+        * @param $default mixed A default value which is used as a fallback. Default is null.
+        * @return mixed Either the default value on failure or sanitized value.
+        */
+       public final function post_value( $default = null ) {
+               if ( isset( $this->_post_value ) )
+                       return $this->_post_value;
+
+               $result = $this->manager->post_value( $this );
+
+               if ( isset( $result ) )
+                       return $this->_post_value = $result;
+               else
+                       return $default;
+       }
+
+       /**
+        * Sanitize an input.
+        *
+        * @since 3.4.0
+        *
+        * @param $value mixed The value to sanitize.
+        * @return mixed Null if an input isn't valid, otherwise the sanitized value.
+        */
+       public function sanitize( $value ) {
+               $value = stripslashes_deep( $value );
+               return apply_filters( "customize_sanitize_{$this->id}", $value, $this );
+       }
+
+       /**
+        * Set the value of the parameter for a specific theme.
+        *
+        * @since 3.4.0
+        *
+        * @param $value mixed The value to update.
+        * @return mixed The result of saving the value.
+        */
+       protected function update( $value ) {
+               switch( $this->type ) {
+                       case 'theme_mod' :
+                               return $this->_update_theme_mod( $value );
+                               break;
+                       case 'option' :
+                               return $this->_update_option( $value );
+                               break;
+                       default :
+                               return do_action( 'customize_update_' . $this->type, $value );
+               }
+       }
+
+       /**
+        * Update the theme mod from the value of the parameter.
+        *
+        * @since 3.4.0
+        *
+        * @param $value mixed The value to update.
+        * @return mixed The result of saving the value.
+        */
+       protected function _update_theme_mod( $value ) {
+               // Handle non-array theme mod.
+               if ( empty( $this->id_data[ 'keys' ] ) )
+                       return set_theme_mod( $this->id_data[ 'base' ], $value );
+
+               // Handle array-based theme mod.
+               $mods = get_theme_mod( $this->id_data[ 'base' ] );
+               $mods = $this->multidimensional_replace( $mods, $this->id_data[ 'keys' ], $value );
+               if ( isset( $mods ) )
+                       return set_theme_mod( $this->id_data[ 'base' ], $mods );
+       }
+
+       /**
+        * Update the theme mod from the value of the parameter.
+        *
+        * @since 3.4.0
+        *
+        * @param $value mixed The value to update.
+        * @return mixed The result of saving the value.
+        */
+       protected function _update_option( $value ) {
+               // Handle non-array option.
+               if ( empty( $this->id_data[ 'keys' ] ) )
+                       return update_option( $this->id_data[ 'base' ], $value );
+
+               // Handle array-based options.
+               $options = get_option( $this->id_data[ 'base' ] );
+               $options = $this->multidimensional_replace( $options, $this->id_data[ 'keys' ], $value );
+               if ( isset( $options ) )
+                       return update_option( $this->id_data[ 'base' ], $options );
+       }
+
+       /**
+        * Fetch the value of the parameter for a specific theme.
+        *
+        * @since 3.4.0
+        *
+        * @return mixed The requested value.
+        */
+       public function value() {
+               switch( $this->type ) {
+                       case 'theme_mod' :
+                               $function = 'get_theme_mod';
+                               break;
+                       case 'option' :
+                               $function = 'get_option';
+                               break;
+                       default :
+                               return apply_filters( 'customize_value_' . $this->id_data[ 'base' ], $this->default );
+               }
+
+               // Handle non-array value
+               if ( empty( $this->id_data[ 'keys' ] ) )
+                       return $function( $this->id_data[ 'base' ], $this->default );
+
+               // Handle array-based value
+               $values = $function( $this->id_data[ 'base' ] );
+               return $this->multidimensional_get( $values, $this->id_data[ 'keys' ], $this->default );
+       }
+
+       /**
+        * Escape the parameter's value for use in JavaScript.
+        *
+        * @since 3.4.0
+        *
+        * @return mixed The requested escaped value.
+        */
+       public function js_value() {
+               $value = apply_filters( "customize_sanitize_js_{$this->id}", $this->value(), $this );
+
+               if ( is_string( $value ) )
+                       return html_entity_decode( $value, ENT_QUOTES, 'UTF-8');
+
+               return $value;
+       }
+
+       /**
+        * Check if the theme supports the setting and check user capabilities.
+        *
+        * @since 3.4.0
+        *
+        * @return bool False if theme doesn't support the setting or user can't change setting, otherwise true.
+        */
+       public final function check_capabilities() {
+               if ( $this->capability && ! call_user_func_array( 'current_user_can', (array) $this->capability ) )
+                       return false;
+
+               if ( $this->theme_supports && ! call_user_func_array( 'current_theme_supports', (array) $this->theme_supports ) )
+                       return false;
+
+               return true;
+       }
+
+       /**
+        * Multidimensional helper function.
+        *
+        * @since 3.4.0
+        *
+        * @param $root
+        * @param $keys
+        * @param bool $create Default is false.
+        * @return null|array
+        */
+       final protected function multidimensional( &$root, $keys, $create = false ) {
+               if ( $create && empty( $root ) )
+                       $root = array();
+
+               if ( ! isset( $root ) || empty( $keys ) )
+                       return;
+
+               $last = array_pop( $keys );
+               $node = &$root;
+
+               foreach ( $keys as $key ) {
+                       if ( $create && ! isset( $node[ $key ] ) )
+                               $node[ $key ] = array();
+
+                       if ( ! is_array( $node ) || ! isset( $node[ $key ] ) )
+                               return;
+
+                       $node = &$node[ $key ];
+               }
+
+               if ( $create && ! isset( $node[ $last ] ) )
+                       $node[ $last ] = array();
+
+               if ( ! isset( $node[ $last ] ) )
+                       return;
+
+               return array(
+                       'root' => &$root,
+                       'node' => &$node,
+                       'key'  => $last,
+               );
+       }
+
+       /**
+        * Will attempt to replace a specific value in a multidimensional array.
+        *
+        * @since 3.4.0
+        *
+        * @param $root
+        * @param $keys
+        * @param mixed $value The value to update.
+        * @return
+        */
+       final protected function multidimensional_replace( $root, $keys, $value ) {
+               if ( ! isset( $value ) )
+                       return $root;
+               elseif ( empty( $keys ) ) // If there are no keys, we're replacing the root.
+                       return $value;
+
+               $result = $this->multidimensional( $root, $keys, true );
+
+               if ( isset( $result ) )
+                       $result['node'][ $result['key'] ] = $value;
+
+               return $root;
+       }
+
+       /**
+        * Will attempt to fetch a specific value from a multidimensional array.
+        *
+        * @since 3.4.0
+        *
+        * @param $root
+        * @param $keys
+        * @param $default A default value which is used as a fallback. Default is null.
+        * @return mixed The requested value or the default value.
+        */
+       final protected function multidimensional_get( $root, $keys, $default = null ) {
+               if ( empty( $keys ) ) // If there are no keys, test the root.
+                       return isset( $root ) ? $root : $default;
+
+               $result = $this->multidimensional( $root, $keys );
+               return isset( $result ) ? $result['node'][ $result['key'] ] : $default;
+       }
+
+       /**
+        * Will attempt to check if a specific value in a multidimensional array is set.
+        *
+        * @since 3.4.0
+        *
+        * @param $root
+        * @param $keys
+        * @return bool True if value is set, false if not.
+        */
+       final protected function multidimensional_isset( $root, $keys ) {
+               $result = $this->multidimensional_get( $root, $keys );
+               return isset( $result );
+       }
+}
+
+/**
+ * A setting that is used to filter a value, but will not save the results.
+ *
+ * Results should be properly handled using another setting or callback.
+ */
+class WP_Customize_Filter_Setting extends WP_Customize_Setting {
+       public function update() {}
+}
+
+/**
+ * A setting that is used to filter a value, but will not save the results.
+ *
+ * Results should be properly handled using another setting or callback.
+ */
+final class WP_Customize_Header_Image_Setting extends WP_Customize_Setting {
+       public $id = 'header_image_data';
+
+       public function update( $value ) {
+               global $custom_image_header;
+
+               // If the value doesn't exist (removed or random),
+               // use the header_image value.
+               if ( ! $value )
+                       $value = $this->manager->get_setting('header_image')->post_value();
+
+               if ( is_array( $value ) && isset( $value['choice'] ) )
+                       $custom_image_header->set_header_image( $value['choice'] );
+               else
+                       $custom_image_header->set_header_image( $value );
+       }
+}
+
+final class WP_Customize_Background_Image_Setting extends WP_Customize_Setting {
+       public $id = 'background_image_thumb';
+
+       public function update( $value ) {
+               remove_theme_mod( 'background_image_thumb' );
+       }
+}
index a272eb7ef672e94fda595b21cfbd5342f704dfbd..04bb7c91a58886ea4edf42da6324f1ce73ad360e 100644 (file)
@@ -3,7 +3,7 @@
  * Facilitates adding of the WordPress editor as used on the Write and Edit screens.
  *
  * @package WordPress
  * Facilitates adding of the WordPress editor as used on the Write and Edit screens.
  *
  * @package WordPress
- * @since 3.3
+ * @since 3.3.0
  *
  * Private, not included by default. See wp_editor() in wp-includes/general-template.php.
  */
  *
  * Private, not included by default. See wp_editor() in wp-includes/general-template.php.
  */
@@ -124,7 +124,7 @@ final class _WP_Editors {
        }
 
        public static function editor_settings($editor_id, $set) {
        }
 
        public static function editor_settings($editor_id, $set) {
-               global $editor_styles;
+               global $editor_styles, $post;
                $first_run = false;
 
                if ( empty(self::$first_init) ) {
                $first_run = false;
 
                if ( empty(self::$first_init) ) {
@@ -167,10 +167,10 @@ final class _WP_Editors {
                                $no_captions = (bool) apply_filters( 'disable_captions', '' );
                                $plugins = array( 'inlinepopups', 'spellchecker', 'tabfocus', 'paste', 'media', 'fullscreen', 'wordpress', 'wpeditimage', 'wpgallery', 'wplink', 'wpdialogs' );
                                $first_run = true;
                                $no_captions = (bool) apply_filters( 'disable_captions', '' );
                                $plugins = array( 'inlinepopups', 'spellchecker', 'tabfocus', 'paste', 'media', 'fullscreen', 'wordpress', 'wpeditimage', 'wpgallery', 'wplink', 'wpdialogs' );
                                $first_run = true;
+                               $ext_plugins = '';
 
                                if ( $set['teeny'] ) {
                                        self::$plugins = $plugins = apply_filters( 'teeny_mce_plugins', array('inlinepopups', 'fullscreen', 'wordpress', 'wplink', 'wpdialogs'), $editor_id );
 
                                if ( $set['teeny'] ) {
                                        self::$plugins = $plugins = apply_filters( 'teeny_mce_plugins', array('inlinepopups', 'fullscreen', 'wordpress', 'wplink', 'wpdialogs'), $editor_id );
-                                       $ext_plugins = '';
                                } else {
                                        /*
                                        The following filter takes an associative array of external plugins for TinyMCE in the form 'plugin_name' => 'url'.
                                } else {
                                        /*
                                        The following filter takes an associative array of external plugins for TinyMCE in the form 'plugin_name' => 'url'.
@@ -181,7 +181,6 @@ final class _WP_Editors {
                                        */
                                        $mce_external_plugins = apply_filters('mce_external_plugins', array());
 
                                        */
                                        $mce_external_plugins = apply_filters('mce_external_plugins', array());
 
-                                       $ext_plugins = '';
                                        if ( ! empty($mce_external_plugins) ) {
 
                                                /*
                                        if ( ! empty($mce_external_plugins) ) {
 
                                                /*
@@ -247,8 +246,6 @@ final class _WP_Editors {
 
                                                        $ext_plugins .= 'tinyMCEPreInit.load_ext("' . $plugurl . '", "' . $mce_locale . '");' . "\n";
                                                        $ext_plugins .= 'tinymce.PluginManager.load("' . $name . '", "' . $url . '");' . "\n";
 
                                                        $ext_plugins .= 'tinyMCEPreInit.load_ext("' . $plugurl . '", "' . $mce_locale . '");' . "\n";
                                                        $ext_plugins .= 'tinymce.PluginManager.load("' . $name . '", "' . $url . '");' . "\n";
-
-                                                       self::$ext_plugins .= $ext_plugins;
                                                }
                                        }
 
                                                }
                                        }
 
@@ -259,14 +256,22 @@ final class _WP_Editors {
                                        $plugins[] = 'wpfullscreen';
 
                                self::$plugins = $plugins;
                                        $plugins[] = 'wpfullscreen';
 
                                self::$plugins = $plugins;
+                               self::$ext_plugins = $ext_plugins;
+
+                               /*
+                               translators: These languages show up in the spellchecker drop-down menu, in the order specified, and with the first
+                               language listed being the default language. They must be comma-separated and take the format of name=code, where name
+                               is the language name (which you may internationalize), and code is a valid ISO 639 language code. Please test the
+                               spellchecker with your values.
+                               */
+                               $mce_spellchecker_languages = __( 'English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv' );
 
                                /*
                                The following filter allows localization scripts to change the languages displayed in the spellchecker's drop-down menu.
                                By default it uses Google's spellchecker API, but can be configured to use PSpell/ASpell if installed on the server.
 
                                /*
                                The following filter allows localization scripts to change the languages displayed in the spellchecker's drop-down menu.
                                By default it uses Google's spellchecker API, but can be configured to use PSpell/ASpell if installed on the server.
-                               The + sign marks the default language. More information:
-                               http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker
+                               The + sign marks the default language. More: http://www.tinymce.com/wiki.php/Plugin:spellchecker.
                                */
                                */
-                               $mce_spellchecker_languages = apply_filters('mce_spellchecker_languages', '+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv');
+                               $mce_spellchecker_languages = apply_filters( 'mce_spellchecker_languages', '+' . $mce_spellchecker_languages );
 
                                self::$first_init = array(
                                        'mode' => 'exact',
 
                                self::$first_init = array(
                                        'mode' => 'exact',
@@ -301,15 +306,17 @@ final class _WP_Editors {
                                        'convert_urls' => false,
                                        'remove_linebreaks' => true,
                                        'gecko_spellcheck' => true,
                                        'convert_urls' => false,
                                        'remove_linebreaks' => true,
                                        'gecko_spellcheck' => true,
+                                       'fix_list_elements' => true,
                                        'keep_styles' => false,
                                        'entities' => '38,amp,60,lt,62,gt',
                                        'accessibility_focus' => true,
                                        'keep_styles' => false,
                                        'entities' => '38,amp,60,lt,62,gt',
                                        'accessibility_focus' => true,
-                                       'tabfocus_elements' => 'major-publishing-actions',
+                                       'tabfocus_elements' => 'title,publish',
                                        'media_strict' => false,
                                        'paste_remove_styles' => true,
                                        'paste_remove_spans' => true,
                                        'paste_strip_class_attributes' => 'all',
                                        'paste_text_use_dialog' => true,
                                        'media_strict' => false,
                                        'paste_remove_styles' => true,
                                        'paste_remove_spans' => true,
                                        'paste_strip_class_attributes' => 'all',
                                        'paste_text_use_dialog' => true,
+                                       'spellchecker_rpc_url' => self::$baseurl . '/plugins/spellchecker/rpc.php',
                                        'extended_valid_elements' => 'article[*],aside[*],audio[*],canvas[*],command[*],datalist[*],details[*],embed[*],figcaption[*],figure[*],footer[*],header[*],hgroup[*],keygen[*],mark[*],meter[*],nav[*],output[*],progress[*],section[*],source[*],summary,time[*],video[*],wbr',
                                        'wpeditimage_disable_captions' => $no_captions,
                                        'wp_fullscreen_content_css' => self::$baseurl . '/plugins/wpfullscreen/css/wp-fullscreen.css',
                                        'extended_valid_elements' => 'article[*],aside[*],audio[*],canvas[*],command[*],datalist[*],details[*],embed[*],figcaption[*],figure[*],footer[*],header[*],hgroup[*],keygen[*],mark[*],meter[*],nav[*],output[*],progress[*],section[*],source[*],summary,time[*],video[*],wbr',
                                        'wpeditimage_disable_captions' => $no_captions,
                                        'wp_fullscreen_content_css' => self::$baseurl . '/plugins/wpfullscreen/css/wp-fullscreen.css',
@@ -321,24 +328,25 @@ final class _WP_Editors {
                                        $mce_css = array();
                                        $editor_styles = array_unique($editor_styles);
                                        $style_uri = get_stylesheet_directory_uri();
                                        $mce_css = array();
                                        $editor_styles = array_unique($editor_styles);
                                        $style_uri = get_stylesheet_directory_uri();
-                                       if ( ! is_child_theme() ) {
-                                               foreach ( $editor_styles as $file )
-                                                       $mce_css[] = "$style_uri/$file";
-                                       } else {
-                                               $style_dir    = get_stylesheet_directory();
+                                       $style_dir = get_stylesheet_directory();
+
+                                       if ( is_child_theme() ) {
                                                $template_uri = get_template_directory_uri();
                                                $template_dir = get_template_directory();
 
                                                $template_uri = get_template_directory_uri();
                                                $template_dir = get_template_directory();
 
-                                               foreach ( $editor_styles as $file ) {
-                                                       if ( file_exists( "$template_dir/$file" ) )
+                                               foreach ( $editor_styles as $key => $file ) {
+                                                       if ( $file && file_exists( "$template_dir/$file" ) ) {
                                                                $mce_css[] = "$template_uri/$file";
                                                                $mce_css[] = "$template_uri/$file";
+                                                               $editor_styles[$key] = '';
+                                                       }
                                                }
                                                }
+                                       }
 
 
-                                               foreach ( $editor_styles as $file ) {
-                                                       if ( file_exists( "$style_dir/$file" ) )
-                                                               $mce_css[] = "$style_uri/$file";
-                                               }
+                                       foreach ( $editor_styles as $file ) {
+                                               if ( $file && file_exists( "$style_dir/$file" ) )
+                                                       $mce_css[] = "$style_uri/$file";
                                        }
                                        }
+
                                        $mce_css = implode( ',', $mce_css );
                                } else {
                                        $mce_css = '';
                                        $mce_css = implode( ',', $mce_css );
                                } else {
                                        $mce_css = '';
@@ -360,6 +368,16 @@ final class _WP_Editors {
                                $mce_buttons_4 = apply_filters('mce_buttons_4', array(), $editor_id);
                        }
 
                                $mce_buttons_4 = apply_filters('mce_buttons_4', array(), $editor_id);
                        }
 
+                       $body_class = $editor_id;
+
+                       if ( isset($post) )
+                               $body_class .= " post-type-$post->post_type";
+
+                       if ( !empty($set['tinymce']['body_class']) ) {
+                               $body_class .= ' ' . $set['tinymce']['body_class'];
+                               unset($set['tinymce']['body_class']);
+                       }
+
                        if ( $set['dfw'] ) {
                                // replace the first 'fullscreen' with 'wp_fullscreen'
                                if ( ($key = array_search('fullscreen', $mce_buttons)) !== false )
                        if ( $set['dfw'] ) {
                                // replace the first 'fullscreen' with 'wp_fullscreen'
                                if ( ($key = array_search('fullscreen', $mce_buttons)) !== false )
@@ -380,7 +398,8 @@ final class _WP_Editors {
                                'theme_advanced_buttons1' => implode($mce_buttons, ','),
                                'theme_advanced_buttons2' => implode($mce_buttons_2, ','),
                                'theme_advanced_buttons3' => implode($mce_buttons_3, ','),
                                'theme_advanced_buttons1' => implode($mce_buttons, ','),
                                'theme_advanced_buttons2' => implode($mce_buttons_2, ','),
                                'theme_advanced_buttons3' => implode($mce_buttons_3, ','),
-                               'theme_advanced_buttons4' => implode($mce_buttons_4, ',')
+                               'theme_advanced_buttons4' => implode($mce_buttons_4, ','),
+                               'body_class' => $body_class
                        );
 
                        if ( $first_run )
                        );
 
                        if ( $first_run )
@@ -499,13 +518,15 @@ final class _WP_Editors {
                        'language' => self::$mce_locale
                );
 
                        'language' => self::$mce_locale
                );
 
+               $suffix = ( defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ) ? '_src' : '';
+
                do_action('before_wp_tiny_mce', self::$mce_settings);
 ?>
 
        <script type="text/javascript">
                tinyMCEPreInit = {
                        base : "<?php echo self::$baseurl; ?>",
                do_action('before_wp_tiny_mce', self::$mce_settings);
 ?>
 
        <script type="text/javascript">
                tinyMCEPreInit = {
                        base : "<?php echo self::$baseurl; ?>",
-                       suffix : "",
+                       suffix : "<?php echo $suffix; ?>",
                        query : "<?php echo $version; ?>",
                        mceInit : <?php echo $mceInit; ?>,
                        qtInit : <?php echo $qtInit; ?>,
                        query : "<?php echo $version; ?>",
                        mceInit : <?php echo $mceInit; ?>,
                        qtInit : <?php echo $qtInit; ?>,
@@ -575,7 +596,7 @@ final class _WP_Editors {
                }
 
                if ( !is_admin() )
                }
 
                if ( !is_admin() )
-                       echo 'var ajaxurl = "' . admin_url('admin-ajax.php') . '";';
+                       echo 'var ajaxurl = "' . admin_url( 'admin-ajax.php', 'relative' ) . '";';
 ?>
        </script>
 <?php
 ?>
        </script>
 <?php
@@ -597,7 +618,7 @@ final class _WP_Editors {
                $dfw_width = get_user_setting( 'dfw_width', $width );
                $save = isset($post->post_status) && $post->post_status == 'publish' ? __('Update') : __('Save');
        ?>
                $dfw_width = get_user_setting( 'dfw_width', $width );
                $save = isset($post->post_status) && $post->post_status == 'publish' ? __('Update') : __('Save');
        ?>
-       <div id="wp-fullscreen-body">
+       <div id="wp-fullscreen-body"<?php if ( is_rtl() ) echo ' class="rtl"'; ?>>
        <div id="fullscreen-topbar">
                <div id="wp-fullscreen-toolbar">
                        <div id="wp-fullscreen-close"><a href="#" onclick="fullscreen.off();return false;"><?php _e('Exit fullscreen'); ?></a></div>
        <div id="fullscreen-topbar">
                <div id="wp-fullscreen-toolbar">
                        <div id="wp-fullscreen-close"><a href="#" onclick="fullscreen.off();return false;"><?php _e('Exit fullscreen'); ?></a></div>
@@ -648,7 +669,7 @@ final class _WP_Editors {
 
                        <div id="wp-fullscreen-save">
                                <span><?php if ( $post->post_status == 'publish' ) _e('Updated.'); else _e('Saved.'); ?></span>
 
                        <div id="wp-fullscreen-save">
                                <span><?php if ( $post->post_status == 'publish' ) _e('Updated.'); else _e('Saved.'); ?></span>
-                               <img src="images/wpspin_light.gif" alt="" />
+                               <img src="<?php echo admin_url('images/wpspin_light.gif'); ?>" alt="" />
                                <input type="button" class="button-primary" value="<?php echo $save; ?>" onclick="fullscreen.save();" />
                        </div>
 
                                <input type="button" class="button-primary" value="<?php echo $save; ?>" onclick="fullscreen.save();" />
                        </div>
 
@@ -763,7 +784,7 @@ final class _WP_Editors {
                        <div class="link-search-wrapper">
                                <label>
                                        <span><?php _e( 'Search' ); ?></span>
                        <div class="link-search-wrapper">
                                <label>
                                        <span><?php _e( 'Search' ); ?></span>
-                                       <input type="text" id="search-field" class="link-search-field" tabindex="60" autocomplete="off" />
+                                       <input type="search" id="search-field" class="link-search-field" tabindex="60" autocomplete="off" />
                                        <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
                                </label>
                        </div>
                                        <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
                                </label>
                        </div>
@@ -795,4 +816,3 @@ final class _WP_Editors {
        <?php
        }
 }
        <?php
        }
 }
-
index b34d0cfdaa7089a22410a77b0bb3cf9bc7789a89..a3331da95078f8ce149330b44267af7345990c2c 100644 (file)
@@ -208,5 +208,3 @@ function is_wp_error($thing) {
                return true;
        return false;
 }
                return true;
        return false;
 }
-
-?>
\ No newline at end of file
index 9e202ed63cc7bee3498e030d217aa60fcf585b31..736fc5a223b6105a5c102354b39357a447caeeb2 100644 (file)
@@ -90,4 +90,3 @@ class WP_HTTP_IXR_Client extends IXR_Client {
                return true;
        }
 }
                return true;
        }
 }
-?>
diff --git a/wp-includes/class-wp-theme.php b/wp-includes/class-wp-theme.php
new file mode 100644 (file)
index 0000000..b07e0b5
--- /dev/null
@@ -0,0 +1,1189 @@
+<?php
+/**
+ * WP_Theme Class
+ *
+ * @package WordPress
+ * @subpackage Theme
+ */
+
+final class WP_Theme implements ArrayAccess {
+
+       /**
+        * Headers for style.css files.
+        *
+        * @static
+        * @access private
+        * @var array
+        */
+       private static $file_headers = array(
+               'Name'        => 'Theme Name',
+               'ThemeURI'    => 'Theme URI',
+               'Description' => 'Description',
+               'Author'      => 'Author',
+               'AuthorURI'   => 'Author URI',
+               'Version'     => 'Version',
+               'Template'    => 'Template',
+               'Status'      => 'Status',
+               'Tags'        => 'Tags',
+               'TextDomain'  => 'Text Domain',
+               'DomainPath'  => 'Domain Path',
+       );
+
+       /**
+        * Default themes.
+        *
+        * @static
+        * @access private
+        * @var array
+        */
+       private static $default_themes = array(
+               'classic'      => 'WordPress Classic',
+               'default'      => 'WordPress Default',
+               'twentyten'    => 'Twenty Ten',
+               'twentyeleven' => 'Twenty Eleven',
+       );
+
+       /**
+        * Absolute path to the theme root, usually wp-content/themes
+        *
+        * @access private
+        * @var string
+        */
+       private $theme_root;
+
+       /**
+        * Header data from the theme's style.css file.
+        *
+        * @access private
+        * @var array
+        */
+       private $headers = array();
+
+       /**
+        * Header data from the theme's style.css file after being sanitized.
+        *
+        * @access private
+        * @var array
+        */
+       private $headers_sanitized;
+
+       /**
+        * Header name from the theme's style.css after being translated.
+        *
+        * Cached due to sorting functions running over the translated name.
+        */
+       private $name_translated;
+
+       /**
+        * Errors encountered when initializing the theme.
+        *
+        * @access private
+        * @var WP_Error
+        */
+       private $errors;
+
+       /**
+        * The directory name of the theme's files, inside the theme root.
+        *
+        * In the case of a child theme, this is directory name of the the child theme.
+        * Otherwise, 'stylesheet' is the same as 'template'.
+        *
+        * @access private
+        * @var string
+        */
+       private $stylesheet;
+
+       /**
+        * The directory name of the theme's files, inside the theme root.
+        *
+        * In the case of a child theme, this is the directory name of the parent theme.
+        * Otherwise, 'template' is the same as 'stylesheet'.
+        *
+        * @access private
+        * @var string
+        */
+       private $template;
+
+       /**
+        * A reference to the parent theme, in the case of a child theme.
+        *
+        * @access private
+        * @var WP_Theme
+        */
+       private $parent;
+
+       /**
+        * URL to the theme root, usually an absolute URL to wp-content/themes
+        *
+        * @access private
+        * var string
+        */
+       private $theme_root_uri;
+
+       /**
+        * Flag for whether the theme's textdomain is loaded.
+        *
+        * @access private
+        * @var bool
+        */
+       private $textdomain_loaded;
+
+       /**
+        * Stores an md5 hash of the theme root, to function as the cache key.
+        *
+        * @access private
+        * @var string
+        */
+       private $cache_hash;
+
+       /**
+        * Flag for whether the themes cache bucket should be persistently cached.
+        *
+        * Default is false. Can be set with the wp_cache_themes_persistently filter.
+        *
+        * @access private
+        * @var bool
+        */
+       private static $persistently_cache;
+
+       /**
+        * Expiration time for the themes cache bucket.
+        *
+        * By default the bucket is not cached, so this value is useless.
+        *
+        * @access private
+        * @var bool
+        */
+       private static $cache_expiration = 1800;
+
+       /**
+        * Constructor for WP_Theme.
+        *
+        * @param string $theme_dir Directory of the theme within the theme_root.
+        * @param string $theme_root Theme root.
+        * @param WP_Error|null $_child If this theme is a parent theme, the child may be passed for validation purposes.
+        */
+       public function __construct( $theme_dir, $theme_root, $_child = null ) {
+               global $wp_theme_directories;
+
+               // Initialize caching on first run.
+               if ( ! isset( self::$persistently_cache ) ) {
+                       self::$persistently_cache = apply_filters( 'wp_cache_themes_persistently', false, 'WP_Theme' );
+                       if ( self::$persistently_cache ) {
+                               wp_cache_add_global_groups( 'themes' );
+                               if ( is_int( self::$persistently_cache ) )
+                                       self::$cache_expiration = self::$persistently_cache;
+                       } else {
+                               wp_cache_add_non_persistent_groups( 'themes' );
+                       }
+               }
+
+               $this->theme_root = $theme_root;
+               $this->stylesheet = $theme_dir;
+
+               // Correct a situation where the theme is 'some-directory/some-theme' but 'some-directory' was passed in as part of the theme root instead.
+               if ( ! in_array( $theme_root, (array) $wp_theme_directories ) && in_array( dirname( $theme_root ), (array) $wp_theme_directories ) ) {
+                       $this->stylesheet = basename( $this->theme_root ) . '/' . $this->stylesheet;
+                       $this->theme_root = dirname( $theme_root );
+               }
+
+               $this->cache_hash = md5( $this->theme_root . '/' . $this->stylesheet );
+               $theme_file = $this->stylesheet . '/style.css';
+
+               $cache = $this->cache_get( 'theme' );
+
+               if ( is_array( $cache ) ) {
+                       foreach ( array( 'errors', 'headers', 'template' ) as $key ) {
+                               if ( isset( $cache[ $key ] ) )
+                                       $this->$key = $cache[ $key ];
+                       }
+                       if ( $this->errors )
+                               return;
+                       if ( isset( $cache['theme_root_template'] ) )
+                               $theme_root_template = $cache['theme_root_template'];
+               } elseif ( ! file_exists( $this->theme_root . '/' . $theme_file ) ) {
+                       $this->headers['Name'] = $this->stylesheet;
+                       if ( ! file_exists( $this->theme_root . '/' . $this->stylesheet ) )
+                               $this->errors = new WP_Error( 'theme_not_found', __( 'The theme directory does not exist.' ) );
+                       else
+                               $this->errors = new WP_Error( 'theme_no_stylesheet', __( 'Stylesheet is missing.' ) );
+                       $this->template = $this->stylesheet;
+                       $this->cache_add( 'theme', array( 'headers' => $this->headers, 'errors' => $this->errors, 'stylesheet' => $this->stylesheet, 'template' => $this->template ) );
+                       if ( ! file_exists( $this->theme_root ) ) // Don't cache this one.
+                               $this->errors->add( 'theme_root_missing', __( 'ERROR: The themes directory is either empty or doesn&#8217;t exist. Please check your installation.' ) );
+                       return;
+               } elseif ( ! is_readable( $this->theme_root . '/' . $theme_file ) ) {
+                       $this->headers['Name'] = $this->stylesheet;
+                       $this->errors = new WP_Error( 'theme_stylesheet_not_readable', __( 'Stylesheet is not readable.' ) );
+                       $this->template = $this->stylesheet;
+                       $this->cache_add( 'theme', array( 'headers' => $this->headers, 'errors' => $this->errors, 'stylesheet' => $this->stylesheet, 'template' => $this->template ) );
+                       return;
+               } else {
+                       $this->headers = get_file_data( $this->theme_root . '/' . $theme_file, self::$file_headers, 'theme' );
+                       // Default themes always trump their pretenders.
+                       // Properly identify default themes that are inside a directory within wp-content/themes.
+                       if ( $default_theme_slug = array_search( $this->headers['Name'], self::$default_themes ) ) {
+                               if ( basename( $this->stylesheet ) != $default_theme_slug )
+                                       $this->headers['Name'] .= '/' . $this->stylesheet;
+                       }
+               }
+
+               // (If template is set from cache [and there are no errors], we know it's good.)
+               if ( ! $this->template && ! ( $this->template = $this->headers['Template'] ) ) {
+                       $this->template = $this->stylesheet;
+                       if ( ! file_exists( $this->theme_root . '/' . $this->stylesheet . '/index.php' ) ) {
+                               $this->errors = new WP_Error( 'theme_no_index', __( 'Template is missing.' ) );
+                               $this->cache_add( 'theme', array( 'headers' => $this->headers, 'errors' => $this->errors, 'stylesheet' => $this->stylesheet, 'template' => $this->template ) );
+                               return;
+                       }
+               }
+
+               // If we got our data from cache, we can assume that 'template' is pointing to the right place.
+               if ( ! is_array( $cache ) && $this->template != $this->stylesheet && ! file_exists( $this->theme_root . '/' . $this->template . '/index.php' ) ) {
+                       // If we're in a directory of themes inside /themes, look for the parent nearby.
+                       // wp-content/themes/directory-of-themes/*
+                       $parent_dir = dirname( $this->stylesheet );
+                       if ( '.' != $parent_dir && file_exists( $this->theme_root . '/' . $parent_dir . '/' . $this->template . '/index.php' ) ) {
+                               $this->template = $parent_dir . '/' . $this->template;
+                       } elseif ( ( $directories = search_theme_directories() ) && isset( $directories[ $this->template ] ) ) {
+                               // Look for the template in the search_theme_directories() results, in case it is in another theme root.
+                               // We don't look into directories of themes, just the theme root.
+                               $theme_root_template = $directories[ $this->template ]['theme_root'];
+                       } else {
+                               // Parent theme is missing.
+                               $this->errors = new WP_Error( 'theme_no_parent', sprintf( __( 'The parent theme is missing. Please install the "%s" parent theme.' ), $this->template ) );
+                               $this->cache_add( 'theme', array( 'headers' => $this->headers, 'errors' => $this->errors, 'stylesheet' => $this->stylesheet, 'template' => $this->template ) );
+                               return;
+                       }
+               }
+
+               // Set the parent, if we're a child theme.
+               if ( $this->template != $this->stylesheet ) {
+                       // If we are a parent, then there is a problem. Only two generations allowed! Cancel things out.
+                       if ( is_a( $_child, 'WP_Theme' ) && $_child->template == $this->stylesheet ) {
+                               $_child->parent = null;
+                               $_child->errors = new WP_Error( 'theme_parent_invalid', sprintf( __( 'The "%s" theme is not a valid parent theme.' ), $_child->template ) );
+                               $_child->cache_add( 'theme', array( 'headers' => $_child->headers, 'errors' => $_child->errors, 'stylesheet' => $_child->stylesheet, 'template' => $_child->template ) );
+                               // The two themes actually reference each other with the Template header.
+                               if ( $_child->stylesheet == $this->template ) {
+                                       $this->errors = new WP_Error( 'theme_parent_invalid', sprintf( __( 'The "%s" theme is not a valid parent theme.' ), $this->template ) );
+                                       $this->cache_add( 'theme', array( 'headers' => $this->headers, 'errors' => $this->errors, 'stylesheet' => $this->stylesheet, 'template' => $this->template ) );
+                               }
+                               return;
+                       }
+                       // Set the parent. Pass the current instance so we can do the crazy checks above and assess errors.
+                       $this->parent = new WP_Theme( $this->template, isset( $theme_root_template ) ? $theme_root_template : $this->theme_root, $this );
+               }
+
+               // We're good. If we didn't retrieve from cache, set it.
+               if ( ! is_array( $cache ) ) {
+                       $cache = array( 'headers' => $this->headers, 'errors' => $this->errors, 'stylesheet' => $this->stylesheet, 'template' => $this->template );
+                       // If the parent theme is in another root, we'll want to cache this. Avoids an entire branch of filesystem calls above.
+                       if ( isset( $theme_root_template ) )
+                               $cache['theme_root_template'] = $theme_root_template;
+                       $this->cache_add( 'theme', $cache );
+               }
+       }
+
+       /**
+        * When converting the object to a string, the theme name is returned.
+        *
+        * @return string Theme name, ready for display (translated)
+        */
+       public function __toString() {
+               return (string) $this->display('Name');
+       }
+
+       /**
+        * __isset() magic method for properties formerly returned by current_theme_info()
+        */
+       public function __isset( $offset ) {
+               static $properties = array(
+                       'name', 'title', 'version', 'parent_theme', 'template_dir', 'stylesheet_dir', 'template', 'stylesheet',
+                       'screenshot', 'description', 'author', 'tags', 'theme_root', 'theme_root_uri',
+               );
+
+               return in_array( $offset, $properties );
+       }
+
+       /**
+        * __get() magic method for properties formerly returned by current_theme_info()
+        */
+       public function __get( $offset ) {
+               switch ( $offset ) {
+                       case 'name' :
+                       case 'title' :
+                               return $this->get('Name');
+                       case 'version' :
+                               return $this->get('Version');
+                       case 'parent_theme' :
+                               return $this->parent() ? $this->parent()->get('Name') : '';
+                       case 'template_dir' :
+                               return $this->get_template_directory();
+                       case 'stylesheet_dir' :
+                               return $this->get_stylesheet_directory();
+                       case 'template' :
+                               return $this->get_template();
+                       case 'stylesheet' :
+                               return $this->get_stylesheet();
+                       case 'screenshot' :
+                               return $this->get_screenshot( 'relative' );
+                       // 'author' and 'description' did not previously return translated data.
+                       case 'description' :
+                               return $this->display('Description');
+                       case 'author' :
+                               return $this->display('Author');
+                       case 'tags' :
+                               return $this->get( 'Tags' );
+                       case 'theme_root' :
+                               return $this->get_theme_root();
+                       case 'theme_root_uri' :
+                               return $this->get_theme_root_uri();
+                       // For cases where the array was converted to an object.
+                       default :
+                               return $this->offsetGet( $offset );
+               }
+       }
+
+       /**
+        * Method to implement ArrayAccess for keys formerly returned by get_themes()
+        */
+       public function offsetSet( $offset, $value ) {}
+
+       /**
+        * Method to implement ArrayAccess for keys formerly returned by get_themes()
+        */
+       public function offsetUnset( $offset ) {}
+
+       /**
+        * Method to implement ArrayAccess for keys formerly returned by get_themes()
+        */
+       public function offsetExists( $offset ) {
+               static $keys = array(
+                       'Name', 'Version', 'Status', 'Title', 'Author', 'Author Name', 'Author URI', 'Description',
+                       'Template', 'Stylesheet', 'Template Files', 'Stylesheet Files', 'Template Dir', 'Stylesheet Dir',
+                        'Screenshot', 'Tags', 'Theme Root', 'Theme Root URI', 'Parent Theme',
+               );
+
+               return in_array( $offset, $keys );
+       }
+
+       /**
+        * Method to implement ArrayAccess for keys formerly returned by get_themes().
+        *
+        * Author, Author Name, Author URI, and Description did not previously return
+        * translated data. We are doing so now as it is safe to do. However, as
+        * Name and Title could have been used as the key for get_themes(), both remain
+        * untranslated for back compatibility. This means that ['Name'] is not ideal,
+        * and care should be taken to use $theme->display('Name') to get a properly
+        * translated header.
+        */
+       public function offsetGet( $offset ) {
+               switch ( $offset ) {
+                       case 'Name' :
+                       case 'Title' :
+                               // See note above about using translated data. get() is not ideal.
+                               // It is only for backwards compatibility. Use display().
+                               return $this->get('Name');
+                       case 'Author' :
+                               return $this->display( 'Author');
+                       case 'Author Name' :
+                               return $this->display( 'Author', false);
+                       case 'Author URI' :
+                               return $this->display('AuthorURI');
+                       case 'Description' :
+                               return $this->display( 'Description');
+                       case 'Version' :
+                       case 'Status' :
+                               return $this->get( $offset );
+                       case 'Template' :
+                               return $this->get_template();
+                       case 'Stylesheet' :
+                               return $this->get_stylesheet();
+                       case 'Template Files' :
+                               return $this->get_files( 'php', 1, true );
+                       case 'Stylesheet Files' :
+                               return $this->get_files( 'css', 0, false );
+                       case 'Template Dir' :
+                               return $this->get_template_directory();
+                       case 'Stylesheet Dir' :
+                               return $this->get_stylesheet_directory();
+                       case 'Screenshot' :
+                               return $this->get_screenshot( 'relative' );
+                       case 'Tags' :
+                               return $this->get('Tags');
+                       case 'Theme Root' :
+                               return $this->get_theme_root();
+                       case 'Theme Root URI' :
+                               return $this->get_theme_root_uri();
+                       case 'Parent Theme' :
+                               return $this->parent() ? $this->parent()->get('Name') : '';
+                       default :
+                               return null;
+               }
+       }
+
+       /**
+        * Returns errors property.
+        *
+        * @since 3.4.0
+        * @access public
+        *
+        * @return WP_Error|bool WP_Error if there are errors, or false.
+        */
+       public function errors() {
+               return is_wp_error( $this->errors ) ? $this->errors : false;
+       }
+
+       /**
+        * Whether the theme exists.
+        *
+        * A theme with errors exists. A theme with the error of 'theme_not_found',
+        * meaning that the theme's directory was not found, does not exist.
+        *
+        * @since 3.4.0
+        * @access public
+        *
+        * @return bool Whether the theme exists.
+        */
+       public function exists() {
+               return ! ( $this->errors() && in_array( 'theme_not_found', $this->errors()->get_error_codes() ) );
+       }
+
+       /**
+        * Returns reference to the parent theme.
+        *
+        * @since 3.4.0
+        * @access public
+        *
+        * @return WP_Theme|bool Parent theme, or false if the current theme is not a child theme.
+        */
+       public function parent() {
+               return isset( $this->parent ) ? $this->parent : false;
+       }
+
+       /**
+        * Adds theme data to cache.
+        *
+        * Cache entries keyed by the theme and the type of data.
+        *
+        * @access private
+        * @since 3.4.0
+        *
+        * @param string $key Type of data to store (theme, screenshot, headers, page_templates)
+        * @param string $data Data to store
+        * @return bool Return value from wp_cache_add()
+        */
+       private function cache_add( $key, $data ) {
+               return wp_cache_add( $key . '-' . $this->cache_hash, $data, 'themes', self::$cache_expiration );
+       }
+
+       /**
+        * Gets theme data from cache.
+        *
+        * Cache entries are keyed by the theme and the type of data.
+        *
+        * @access private
+        * @since 3.4.0
+        *
+        * @param string $key Type of data to retrieve (theme, screenshot, headers, page_templates)
+        * @return mixed Retrieved data
+        */
+       private function cache_get( $key ) {
+               return wp_cache_get( $key . '-' . $this->cache_hash, 'themes' );
+       }
+
+       /**
+        * Clears the cache for the theme.
+        *
+        * @access public
+        * @since 3.4.0
+        */
+       public function cache_delete() {
+               foreach ( array( 'theme', 'screenshot', 'headers', 'page_templates' ) as $key )
+                       wp_cache_delete( $key . '-' . $this->cache_hash, 'themes' );
+               $this->template = $this->textdomain_loaded = $this->theme_root_uri = $this->parent = $this->errors = $this->headers_sanitized = $this->name_translated = null;
+               $this->headers = array();
+               $this->__construct( $this->stylesheet, $this->theme_root );
+       }
+
+       /**
+        * Get a raw, unformatted theme header.
+        *
+        * The header is sanitized, but is not translated, and is not marked up for display.
+        * To get a theme header for display, use the display() method.
+        *
+        * Use the get_template() method, not the 'Template' header, for finding the template.
+        * The 'Template' header is only good for what was written in the style.css, while
+        * get_template() takes into account where WordPress actually located the theme and
+        * whether it is actually valid.
+        *
+        * @access public
+        * @since 3.4.0
+        *
+        * @param string $header Theme header. Name, Description, Author, Version, ThemeURI, AuthorURI, Status, Tags.
+        * @return string String on success, false on failure.
+        */
+       public function get( $header ) {
+               if ( ! isset( $this->headers[ $header ] ) )
+                       return false;
+
+               if ( ! isset( $this->headers_sanitized ) ) {
+                       $this->headers_sanitized = $this->cache_get( 'headers' );
+                       if ( ! is_array( $this->headers_sanitized ) )
+                               $this->headers_sanitized = array();
+               }
+
+               if ( isset( $this->headers_sanitized[ $header ] ) )
+                       return $this->headers_sanitized[ $header ];
+
+               // If themes are a persistent group, sanitize everything and cache it. One cache add is better than many cache sets.
+               if ( self::$persistently_cache ) {
+                       foreach ( array_keys( $this->headers ) as $_header )
+                               $this->headers_sanitized[ $_header ] = $this->sanitize_header( $_header, $this->headers[ $_header ] );
+                       $this->cache_add( 'headers', $this->headers_sanitized );
+               } else {
+                       $this->headers_sanitized[ $header ] = $this->sanitize_header( $header, $this->headers[ $header ] );
+               }
+
+               return $this->headers_sanitized[ $header ];
+       }
+
+       /**
+        * Gets a theme header, formatted and translated for display.
+        *
+        * @access public
+        * @since 3.4.0
+        *
+        * @param string $header Theme header. Name, Description, Author, Version, ThemeURI, AuthorURI, Status, Tags.
+        * @param bool $markup Optional. Whether to mark up the header. Defaults to true.
+        * @param bool $translate Optional. Whether to translate the header. Defaults to true.
+        * @return string Processed header, false on failure.
+        */
+       public function display( $header, $markup = true, $translate = true ) {
+               $value = $this->get( $header );
+
+               if ( $translate && ( empty( $value ) || ! $this->load_textdomain() ) )
+                       $translate = false;
+
+               if ( $translate )
+                       $value = $this->translate_header( $header, $value );
+
+               if ( $markup )
+                       $value = $this->markup_header( $header, $value, $translate );
+
+               return $value;
+       }
+
+       /**
+        * Sanitize a theme header.
+        *
+        * @param string $header Theme header. Name, Description, Author, Version, ThemeURI, AuthorURI, Status, Tags.
+        * @param string $value Value to sanitize.
+        */
+       private function sanitize_header( $header, $value ) {
+               switch ( $header ) {
+                       case 'Status' :
+                               if ( ! $value ) {
+                                       $value = 'publish';
+                                       break;
+                               }
+                               // Fall through otherwise.
+                       case 'Name' :
+                               static $header_tags = array(
+                                       'abbr'    => array( 'title' => true ),
+                                       'acronym' => array( 'title' => true ),
+                                       'code'    => true,
+                                       'em'      => true,
+                                       'strong'  => true,
+                               );
+                               $value = wp_kses( $value, $header_tags );
+                               break;
+                       case 'Author' :
+                               // There shouldn't be anchor tags in Author, but some themes like to be challenging.
+                       case 'Description' :
+                               static $header_tags_with_a = array(
+                                       'a'       => array( 'href' => true, 'title' => true ),
+                                       'abbr'    => array( 'title' => true ),
+                                       'acronym' => array( 'title' => true ),
+                                       'code'    => true,
+                                       'em'      => true,
+                                       'strong'  => true,
+                               );
+                               $value = wp_kses( $value, $header_tags_with_a );
+                               break;
+                       case 'ThemeURI' :
+                       case 'AuthorURI' :
+                               $value = esc_url_raw( $value );
+                               break;
+                       case 'Tags' :
+                               $value = array_filter( array_map( 'trim', explode( ',', strip_tags( $value ) ) ) );
+                               break;
+               }
+
+               return $value;
+       }
+
+       /**
+        * Mark up a theme header.
+        *
+        * @access private
+        * @since 3.4.0
+        *
+        * @param string $header Theme header. Name, Description, Author, Version, ThemeURI, AuthorURI, Status, Tags.
+        * @param string $value Value to mark up.
+        * @param string $translate Whether the header has been translated.
+        * @return string Value, marked up.
+        */
+       private function markup_header( $header, $value, $translate ) {
+               switch ( $header ) {
+                       case 'Name' :
+                               if ( empty( $value ) )
+                                       $value = $this->get_stylesheet();
+                               break;
+                       case 'Description' :
+                               $value = wptexturize( $value );
+                               break;
+                       case 'Author' :
+                               if ( $this->get('AuthorURI') ) {
+                                       static $attr = null;
+                                       if ( ! isset( $attr ) )
+                                               $attr = esc_attr__( 'Visit author homepage' );
+                                       $value = sprintf( '<a href="%1$s" title="%2$s">%3$s</a>', $this->display( 'AuthorURI', true, $translate ), $attr, $value );
+                               } elseif ( ! $value ) {
+                                       $value = __( 'Anonymous' );
+                               }
+                               break;
+                       case 'Tags' :
+                               static $comma = null;
+                               if ( ! isset( $comma ) ) {
+                                       /* translators: used between list items, there is a space after the comma */
+                                       $comma = __( ', ' );
+                               }
+                               $value = implode( $comma, $value );
+                               break;
+                       case 'ThemeURI' :
+                       case 'AuthorURI' :
+                               $value = esc_url( $value );
+                               break;
+               }
+
+               return $value;
+       }
+
+       /**
+        * Translate a theme header.
+        *
+        * @access private
+        * @since 3.4.0
+        *
+        * @param string $header Theme header. Name, Description, Author, Version, ThemeURI, AuthorURI, Status, Tags.
+        * @param string $value Value to translate.
+        * @return string Translated value.
+        */
+       private function translate_header( $header, $value ) {
+               switch ( $header ) {
+                       case 'Name' :
+                               // Cached for sorting reasons.
+                               if ( isset( $this->name_translated ) )
+                                       return $this->name_translated;
+                               $this->name_translated = translate( $value, $this->get('TextDomain' ) );
+                               return $this->name_translated;
+                       case 'Tags' :
+                               if ( empty( $value ) || ! function_exists( 'get_theme_feature_list' ) )
+                                       return $value;
+
+                               static $tags_list;
+                               if ( ! isset( $tags_list ) ) {
+                                       $tags_list = array();
+                                       $feature_list = get_theme_feature_list( false ); // No API
+                                       foreach ( $feature_list as $tags )
+                                               $tags_list += $tags;
+                               }
+
+                               foreach ( $value as &$tag ) {
+                                       if ( isset( $tags_list[ $tag ] ) )
+                                               $tag = $tags_list[ $tag ];
+                               }
+
+                               return $value;
+                               break;
+                       default :
+                               $value = translate( $value, $this->get('TextDomain') );
+               }
+               return $value;
+       }
+
+       /**
+        * The directory name of the theme's "stylesheet" files, inside the theme root.
+        *
+        * In the case of a child theme, this is directory name of the the child theme.
+        * Otherwise, get_stylesheet() is the same as get_template().
+        *
+        * @since 3.4.0
+        * @access public
+        *
+        * @return string Stylesheet
+        */
+       public function get_stylesheet() {
+               return $this->stylesheet;
+       }
+
+       /**
+        * The directory name of the theme's "template" files, inside the theme root.
+        *
+        * In the case of a child theme, this is the directory name of the parent theme.
+        * Otherwise, the get_template() is the same as get_stylesheet().
+        *
+        * @since 3.4.0
+        * @access public
+        *
+        * @return string Template
+        */
+       public function get_template() {
+               return $this->template;
+       }
+
+       /**
+        * Returns the absolute path to the directory of a theme's "stylesheet" files.
+        *
+        * In the case of a child theme, this is the absolute path to the directory
+        * of the child theme's files.
+        *
+        * @since 3.4.0
+        * @access public
+        *
+        * @return string Absolute path of the stylesheet directory.
+        */
+       public function get_stylesheet_directory() {
+               if ( $this->errors() && in_array( 'theme_root_missing', $this->errors()->get_error_codes() ) )
+                       return '';
+
+               return $this->theme_root . '/' . $this->stylesheet;
+       }
+
+       /**
+        * Returns the absolute path to the directory of a theme's "template" files.
+        *
+        * In the case of a child theme, this is the absolute path to the directory
+        * of the parent theme's files.
+        *
+        * @since 3.4.0
+        * @access public
+        *
+        * @return string Absolute path of the template directory.
+        */
+       public function get_template_directory() {
+               if ( $this->parent() )
+                       $theme_root = $this->parent()->theme_root;
+               else
+                       $theme_root = $this->theme_root;
+
+               return $theme_root . '/' . $this->template;
+       }
+
+       /**
+        * Returns the URL to the directory of a theme's "stylesheet" files.
+        *
+        * In the case of a child theme, this is the URL to the directory of the
+        * child theme's files.
+        *
+        * @since 3.4.0
+        * @access public
+        *
+        * @return string URL to the stylesheet directory.
+        */
+       public function get_stylesheet_directory_uri() {
+               return $this->get_theme_root_uri() . '/' . $this->stylesheet;
+       }
+
+       /**
+        * Returns the URL to the directory of a theme's "template" files.
+        *
+        * In the case of a child theme, this is the URL to the directory of the
+        * parent theme's files.
+        *
+        * @since 3.4.0
+        * @access public
+        *
+        * @return string URL to the template directory.
+        */
+       public function get_template_directory_uri() {
+               if ( $this->parent() )
+                       $theme_root_uri = $this->parent()->get_theme_root_uri();
+               else
+                       $theme_root_uri = $this->get_theme_root_uri();
+
+               return $theme_root . '/' . $this->template;
+       }
+
+       /**
+        * The absolute path to the directory of the theme root.
+        *
+        * This is typically the absolute path to wp-content/themes.
+        *
+        * @since 3.4.0
+        * @access public
+        *
+        * @return string Theme root.
+        */
+       public function get_theme_root() {
+               return $this->theme_root;
+       }
+
+       /**
+        * Returns the URL to the directory of the theme root.
+        *
+        * This is typically the absolute URL to wp-content/themes. This forms the basis
+        * for all other URLs returned by WP_Theme, so we pass it to the public function
+        * get_theme_root_uri() and allow it to run the theme_root_uri filter.
+        *
+        * @uses get_theme_root_uri()
+        *
+        * @since 3.4.0
+        * @access public
+        *
+        * @return string Theme root URI.
+        */
+       public function get_theme_root_uri() {
+               if ( ! isset( $this->theme_root_uri ) )
+                       $this->theme_root_uri = get_theme_root_uri( $this->stylesheet, $this->theme_root );
+               return $this->theme_root_uri;
+       }
+
+       /**
+        * Returns the main screenshot file for the theme.
+        *
+        * The main screenshot is called screenshot.png. gif and jpg extensions are also allowed.
+        *
+        * Screenshots for a theme must be in the stylesheet directory. (In the case of child
+        * themes, parent theme screenshots are not inherited.)
+        *
+        * @since 3.4.0
+        * @access public
+        *
+        * @param string $uri Type of URL to return, either 'relative' or an absolute URI. Defaults to absolute URI.
+        * @return mixed Screenshot file. False if the theme does not have a screenshot.
+        */
+       public function get_screenshot( $uri = 'uri' ) {
+               $screenshot = $this->cache_get( 'screenshot' );
+               if ( $screenshot ) {
+                       if ( 'relative' == $uri )
+                               return $screenshot;
+                       return $this->get_stylesheet_directory_uri() . '/' . $screenshot;
+               } elseif ( 0 === $screenshot ) {
+                       return false;
+               }
+
+               foreach ( array( 'png', 'gif', 'jpg', 'jpeg' ) as $ext ) {
+                       if ( file_exists( $this->get_stylesheet_directory() . "/screenshot.$ext" ) ) {
+                               $this->cache_add( 'screenshot', 'screenshot.' . $ext );
+                               if ( 'relative' == $uri )
+                                       return 'screenshot.' . $ext;
+                               return $this->get_stylesheet_directory_uri() . '/' . 'screenshot.' . $ext;
+                       }
+               }
+
+               $this->cache_add( 'screenshot', 0 );
+               return false;
+       }
+
+       /**
+        * Return files in the theme's directory.
+        *
+        * @since 3.4.0
+        * @access public
+        *
+        * @param mixed $type Optional. Array of extensions to return. Defaults to all files (null).
+        * @param int $depth Optional. How deep to search for files. Defaults to a flat scan (0 depth). -1 depth is infinite.
+        * @param bool $search_parent Optional. Whether to return parent files. Defaults to false.
+        * @return array Array of files, keyed by the path to the file relative to the theme's directory, with the values
+        *      being absolute paths.
+        */
+       public function get_files( $type = null, $depth = 0, $search_parent = false ) {
+               $files = (array) self::scandir( $this->get_stylesheet_directory(), $type, $depth );
+
+               if ( $search_parent && $this->parent() )
+                       $files += (array) self::scandir( $this->get_template_directory(), $type, $depth );
+
+               return $files;
+       }
+
+       /**
+        * Returns the theme's page templates.
+        *
+        * @since 3.4.0
+        * @access public
+        *
+        * @return array Array of page templates, keyed by filename, with the value of the translated header name.
+        */
+       public function get_page_templates() {
+               // If you screw up your current theme and we invalidate your parent, most things still work. Let it slide.
+               if ( $this->errors() && $this->errors()->get_error_codes() !== array( 'theme_parent_invalid' ) )
+                       return array();
+
+               $page_templates = $this->cache_get( 'page_templates' );
+
+               if ( ! is_array( $page_templates ) ) {
+                       $page_templates = array();
+
+                       $files = (array) $this->get_files( 'php', 1 );
+
+                       foreach ( $files as $file => $full_path ) {
+                               $headers = get_file_data( $full_path, array( 'Template Name' => 'Template Name' ) );
+                               if ( empty( $headers['Template Name'] ) )
+                                       continue;
+                               $page_templates[ $file ] = $headers['Template Name'];
+                       }
+
+                       $this->cache_add( 'page_templates', $page_templates );
+               }
+
+               if ( $this->load_textdomain() ) {
+                       foreach ( $page_templates as &$page_template ) {
+                               $page_template = $this->translate_header( 'Template Name', $page_template );
+                       }
+               }
+
+               if ( $this->parent() )
+                       $page_templates += $this->parent()->get_page_templates();
+
+               return $page_templates;
+       }
+
+       /**
+        * Scans a directory for files of a certain extension.
+        *
+        * @since 3.4.0
+        * @access private
+        *
+        * @param string $path Absolute path to search.
+        * @param mixed  Array of extensions to find, string of a single extension, or null for all extensions.
+        * @param int $depth How deep to search for files. Optional, defaults to a flat scan (0 depth). -1 depth is infinite.
+        * @param string $relative_path The basename of the absolute path. Used to control the returned path
+        *      for the found files, particularly when this function recurses to lower depths.
+        */
+       private static function scandir( $path, $extensions = null, $depth = 0, $relative_path = '' ) {
+               if ( ! is_dir( $path ) )
+                       return false;
+
+               if ( $extensions ) {
+                       $extensions = (array) $extensions;
+                       $_extensions = implode( '|', $extensions );
+               }
+
+               $relative_path = trailingslashit( $relative_path );
+               if ( '/' == $relative_path )
+                       $relative_path = '';
+
+               $results = scandir( $path );
+               $files = array();
+
+               foreach ( $results as $result ) {
+                       if ( '.' == $result[0] )
+                               continue;
+                       if ( is_dir( $path . '/' . $result ) ) {
+                               if ( ! $depth || 'CVS' == $result )
+                                       continue;
+                               $found = self::scandir( $path . '/' . $result, $extensions, $depth - 1 , $relative_path . $result );
+                               $files = array_merge_recursive( $files, $found );
+                       } elseif ( ! $extensions || preg_match( '~\.(' . $_extensions . ')$~', $result ) ) {
+                               $files[ $relative_path . $result ] = $path . '/' . $result;
+                       }
+               }
+
+               return $files;
+       }
+
+       /**
+        * Loads the theme's textdomain.
+        *
+        * Translation files are not inherited from the parent theme. Todo: if this fails for the
+        * child theme, it should probably try to load the parent theme's translations.
+        *
+        * @since 3.4.0
+        * @access public
+        *
+        * @return True if the textdomain was successfully loaded or has already been loaded. False if
+        *      no textdomain was specified in the file headers, or if the domain could not be loaded.
+        */
+       public function load_textdomain() {
+               if ( isset( $this->textdomain_loaded ) )
+                       return $this->textdomain_loaded;
+
+               $textdomain = $this->get('TextDomain');
+               if ( ! $textdomain ) {
+                       $this->textdomain_loaded = false;
+                       return false;
+               }
+
+               if ( is_textdomain_loaded( $textdomain ) ) {
+                       $this->textdomain_loaded = true;
+                       return true;
+               }
+
+               $path = $this->get_stylesheet_directory();
+               if ( $domainpath = $this->get('DomainPath') )
+                       $path .= $domainpath;
+               else
+                       $path .= '/languages';
+
+               $this->textdomain_loaded = load_theme_textdomain( $textdomain, $path );
+               return $this->textdomain_loaded;
+       }
+
+       /**
+        * Whether the theme is allowed (multisite only).
+        *
+        * @since 3.4.0
+        * @access public
+        *
+        * @param string $check Optional. Whether to check only the 'network'-wide settings, the 'site'
+        *      settings, or 'both'. Defaults to 'both'.
+        * @param int $blog_id Optional. Ignored if only network-wide settings are checked. Defaults to current blog.
+        * @return bool Whether the theme is allowed for the network. Returns true in single-site.
+        */
+       public function is_allowed( $check = 'both', $blog_id = null ) {
+               if ( ! is_multisite() )
+                       return true;
+
+               if ( 'both' == $check || 'network' == $check ) {
+                       $allowed = self::get_allowed_on_network();
+                       if ( ! empty( $allowed[ $this->get_stylesheet() ] ) )
+                               return true;
+               }
+
+               if ( 'both' == $check || 'site' == $check ) {
+                       $allowed = self::get_allowed_on_site( $blog_id );
+                       if ( ! empty( $allowed[ $this->get_stylesheet() ] ) )
+                               return true;
+               }
+
+               return false;
+       }
+
+       /**
+        * Returns array of stylesheet names of themes allowed on the site or network.
+        *
+        * @since 3.4.0
+        * @access public
+        *
+        * @param int $blog_id Optional. Defaults to current blog.
+        * @return array Array of stylesheet names.
+        */
+       public static function get_allowed( $blog_id = null ) {
+               return self::get_allowed_on_network() + self::get_allowed_on_site( $blog_id );
+       }
+
+       /**
+        * Returns array of stylesheet names of themes allowed on the network.
+        *
+        * @since 3.4.0
+        * @access public
+        *
+        * @return array Array of stylesheet names.
+        */
+       public static function get_allowed_on_network() {
+               static $allowed_themes;
+               if ( ! isset( $allowed_themes ) )
+                       $allowed_themes = (array) get_site_option( 'allowedthemes' );
+               return $allowed_themes;
+       }
+
+       /**
+        * Returns array of stylesheet names of themes allowed on the site.
+        *
+        * @since 3.4.0
+        * @access public
+        *
+        * @param int $blog_id Optional. Defaults to current blog.
+        * @return array Array of stylesheet names.
+        */
+       public static function get_allowed_on_site( $blog_id = null ) {
+               static $allowed_themes = array();
+
+               if ( ! $blog_id )
+                       $blog_id = get_current_blog_id();
+
+               if ( isset( $allowed_themes[ $blog_id ] ) )
+                       return $allowed_themes[ $blog_id ];
+
+               $current = $blog_id == get_current_blog_id();
+
+               if ( $current )
+                       $allowed_themes[ $blog_id ] = get_option( 'allowedthemes' );
+               else
+                       $allowed_themes[ $blog_id ] = get_blog_option( $blog_id, 'allowedthemes' );
+
+               // This is all super old MU back compat joy.
+               // 'allowedthemes' keys things by stylesheet. 'allowed_themes' keyed things by name.
+               if ( false === $allowed_themes[ $blog_id ] ) {
+                       if ( $current )
+                               $allowed_themes[ $blog_id ] = get_option( 'allowed_themes' );
+                       else
+                               $allowed_themes[ $blog_id ] = get_blog_option( $blog_id, 'allowed_themes' );
+
+                       if ( ! is_array( $allowed_themes[ $blog_id ] ) || empty( $allowed_themes[ $blog_id ] ) ) {
+                               $allowed_themes[ $blog_id ] = array();
+                       } else {
+                               $converted = array();
+                               $themes = wp_get_themes();
+                               foreach ( $themes as $stylesheet => $theme_data ) {
+                                       if ( isset( $allowed_themes[ $blog_id ][ $theme_data->get('Name') ] ) )
+                                               $converted[ $stylesheet ] = true;
+                               }
+                               $allowed_themes[ $blog_id ] = $converted;
+                       }
+                       // Set the option so we never have to go through this pain again.
+                       if ( is_admin() && $allowed_themes[ $blog_id ] ) {
+                               if ( $current ) {
+                                       update_option( 'allowedthemes', $allowed_themes[ $blog_id ] );
+                                       delete_option( 'allowed_themes' );
+                               } else {
+                                       update_blog_option( $blog_id, 'allowedthemes', $allowed_themes[ $blog_id ] );
+                                       delete_blog_option( $blog_id, 'allowed_themes' );
+                               }
+                       }
+               }
+
+               return (array) $allowed_themes[ $blog_id ];
+       }
+
+       /**
+        * Sort themes by name.
+        *
+        * @since 3.4.0
+        * @access public
+        */
+       public static function sort_by_name( &$themes ) {
+               if ( 0 === strpos( get_locale(), 'en_' ) ) {
+                       uasort( $themes, array( 'WP_Theme', '_name_sort' ) );
+               } else {
+                       uasort( $themes, array( 'WP_Theme', '_name_sort_i18n' ) );
+               }
+       }
+
+       /**
+        * Callback function for usort() to naturally sort themes by name.
+        *
+        * Accesses the Name header directly from the class for maximum speed.
+        * Would choke on HTML but we don't care enough to slow it down with strip_tags().
+        *
+        * @since 3.4.0
+        * @access private
+        */
+       private static function _name_sort( $a, $b ) {
+               return strnatcasecmp( $a->headers['Name'], $b->headers['Name'] );
+       }
+
+       /**
+        * Name sort (with translation).
+        *
+        * @since 3.4.0
+        * @access private
+        */
+       private static function _name_sort_i18n( $a, $b ) {
+               // Don't mark up; Do translate.
+               return strnatcasecmp( $a->display( 'Name', false, true ), $b->display( 'Name', false, true ) );
+       }
+}
index 25e040592cf87c170b44c65b3d5ec5c5827fa095..5478da90d8a7f67bd7de69c722a7b3fdbc1070cf 100644 (file)
@@ -52,7 +52,7 @@ class Walker {
         *
         * @param string $output Passed by reference. Used to append additional content.
         */
         *
         * @param string $output Passed by reference. Used to append additional content.
         */
-       function start_lvl(&$output) {}
+       function start_lvl( &$output, $depth = 0, $args = array() ) {}
 
        /**
         * Ends the list of after the elements are added.
 
        /**
         * Ends the list of after the elements are added.
@@ -66,7 +66,7 @@ class Walker {
         *
         * @param string $output Passed by reference. Used to append additional content.
         */
         *
         * @param string $output Passed by reference. Used to append additional content.
         */
-       function end_lvl(&$output)   {}
+       function end_lvl( &$output, $depth = 0, $args = array() )   {}
 
        /**
         * Start the element output.
 
        /**
         * Start the element output.
@@ -80,7 +80,7 @@ class Walker {
         *
         * @param string $output Passed by reference. Used to append additional content.
         */
         *
         * @param string $output Passed by reference. Used to append additional content.
         */
-       function start_el(&$output)  {}
+       function start_el( &$output, $object, $depth, $args, $current_object_id = 0 )  {}
 
        /**
         * Ends the element output, if needed.
 
        /**
         * Ends the element output, if needed.
@@ -93,7 +93,7 @@ class Walker {
         *
         * @param string $output Passed by reference. Used to append additional content.
         */
         *
         * @param string $output Passed by reference. Used to append additional content.
         */
-       function end_el(&$output)    {}
+       function end_el( &$output, $object, $depth = 0, $args = array() )    {}
 
        /**
         * Traverse elements to create list from elements.
 
        /**
         * Traverse elements to create list from elements.
@@ -395,5 +395,3 @@ class Walker {
 
        }
 }
 
        }
 }
-
-?>
\ No newline at end of file
index 24807cd2abba071da640689e017d336af0f624e5..7334a85dcbd9631a034bfd0189dbe5871a44a714 100644 (file)
@@ -36,6 +36,18 @@ class wp_xmlrpc_server extends IXR_Server {
                $this->methods = array(
                        // WordPress API
                        'wp.getUsersBlogs'              => 'this:wp_getUsersBlogs',
                $this->methods = array(
                        // WordPress API
                        'wp.getUsersBlogs'              => 'this:wp_getUsersBlogs',
+                       'wp.newPost'                    => 'this:wp_newPost',
+                       'wp.editPost'                   => 'this:wp_editPost',
+                       'wp.deletePost'                 => 'this:wp_deletePost',
+                       'wp.getPost'                    => 'this:wp_getPost',
+                       'wp.getPosts'                   => 'this:wp_getPosts',
+                       'wp.newTerm'                    => 'this:wp_newTerm',
+                       'wp.editTerm'                   => 'this:wp_editTerm',
+                       'wp.deleteTerm'                 => 'this:wp_deleteTerm',
+                       'wp.getTerm'                    => 'this:wp_getTerm',
+                       'wp.getTerms'                   => 'this:wp_getTerms',
+                       'wp.getTaxonomy'                => 'this:wp_getTaxonomy',
+                       'wp.getTaxonomies'              => 'this:wp_getTaxonomies',
                        'wp.getPage'                    => 'this:wp_getPage',
                        'wp.getPages'                   => 'this:wp_getPages',
                        'wp.newPage'                    => 'this:wp_newPage',
                        'wp.getPage'                    => 'this:wp_getPage',
                        'wp.getPages'                   => 'this:wp_getPages',
                        'wp.newPage'                    => 'this:wp_newPage',
@@ -64,6 +76,8 @@ class wp_xmlrpc_server extends IXR_Server {
                        'wp.getMediaItem'               => 'this:wp_getMediaItem',
                        'wp.getMediaLibrary'    => 'this:wp_getMediaLibrary',
                        'wp.getPostFormats'     => 'this:wp_getPostFormats',
                        'wp.getMediaItem'               => 'this:wp_getMediaItem',
                        'wp.getMediaLibrary'    => 'this:wp_getMediaLibrary',
                        'wp.getPostFormats'     => 'this:wp_getPostFormats',
+                       'wp.getPostType'                => 'this:wp_getPostType',
+                       'wp.getPostTypes'               => 'this:wp_getPostTypes',
 
                        // Blogger API
                        'blogger.getUsersBlogs' => 'this:blogger_getUsersBlogs',
 
                        // Blogger API
                        'blogger.getUsersBlogs' => 'this:blogger_getUsersBlogs',
@@ -109,7 +123,7 @@ class wp_xmlrpc_server extends IXR_Server {
                        'demo.addTwoNumbers' => 'this:addTwoNumbers'
                );
 
                        'demo.addTwoNumbers' => 'this:addTwoNumbers'
                );
 
-               $this->initialise_blog_option_info( );
+               $this->initialise_blog_option_info();
                $this->methods = apply_filters('xmlrpc_methods', $this->methods);
        }
 
                $this->methods = apply_filters('xmlrpc_methods', $this->methods);
        }
 
@@ -156,7 +170,7 @@ class wp_xmlrpc_server extends IXR_Server {
         */
        function login_pass_ok($user_login, $user_pass) {
                if ( !get_option( 'enable_xmlrpc' ) ) {
         */
        function login_pass_ok($user_login, $user_pass) {
                if ( !get_option( 'enable_xmlrpc' ) ) {
-                       $this->error = new IXR_Error( 405, sprintf( __( 'XML-RPC services are disabled on this site.  An admin user can enable them at %s'),  admin_url('options-writing.php') ) );
+                       $this->error = new IXR_Error( 405, sprintf( __( 'XML-RPC services are disabled on this site. An admin user can enable them at %s'),  admin_url('options-writing.php') ) );
                        return false;
                }
 
                        return false;
                }
 
@@ -178,7 +192,7 @@ class wp_xmlrpc_server extends IXR_Server {
         */
        function login($username, $password) {
                if ( !get_option( 'enable_xmlrpc' ) ) {
         */
        function login($username, $password) {
                if ( !get_option( 'enable_xmlrpc' ) ) {
-                       $this->error = new IXR_Error( 405, sprintf( __( 'XML-RPC services are disabled on this site.  An admin user can enable them at %s'),  admin_url('options-writing.php') ) );
+                       $this->error = new IXR_Error( 405, sprintf( __( 'XML-RPC services are disabled on this site. An admin user can enable them at %s'),  admin_url('options-writing.php') ) );
                        return false;
                }
 
                        return false;
                }
 
@@ -262,11 +276,11 @@ class wp_xmlrpc_server extends IXR_Server {
                        if ( isset($meta['id']) ) {
                                $meta['id'] = (int) $meta['id'];
                                $pmeta = get_metadata_by_mid( 'post', $meta['id'] );
                        if ( isset($meta['id']) ) {
                                $meta['id'] = (int) $meta['id'];
                                $pmeta = get_metadata_by_mid( 'post', $meta['id'] );
-                               $meta['value'] = stripslashes_deep( $meta['value'] );
                                if ( isset($meta['key']) ) {
                                        $meta['key'] = stripslashes( $meta['key'] );
                                        if ( $meta['key'] != $pmeta->meta_key )
                                                continue;
                                if ( isset($meta['key']) ) {
                                        $meta['key'] = stripslashes( $meta['key'] );
                                        if ( $meta['key'] != $pmeta->meta_key )
                                                continue;
+                                       $meta['value'] = stripslashes_deep( $meta['value'] );
                                        if ( current_user_can( 'edit_post_meta', $post_id, $meta['key'] ) )
                                                update_metadata_by_mid( 'post', $meta['id'], $meta['value'] );
                                } elseif ( current_user_can( 'delete_post_meta', $post_id, $pmeta->meta_key ) ) {
                                        if ( current_user_can( 'edit_post_meta', $post_id, $meta['key'] ) )
                                                update_metadata_by_mid( 'post', $meta['id'], $meta['value'] );
                                } elseif ( current_user_can( 'delete_post_meta', $post_id, $pmeta->meta_key ) ) {
@@ -285,153 +299,1613 @@ class wp_xmlrpc_server extends IXR_Server {
         *
         * @since 2.6.0
         */
         *
         * @since 2.6.0
         */
-       function initialise_blog_option_info( ) {
+       function initialise_blog_option_info() {
                global $wp_version;
 
                $this->blog_options = array(
                        // Read only options
                global $wp_version;
 
                $this->blog_options = array(
                        // Read only options
-                       'software_name'         => array(
-                               'desc'                  => __( 'Software Name' ),
-                               'readonly'              => true,
-                               'value'                 => 'WordPress'
+                       'software_name'     => array(
+                               'desc'          => __( 'Software Name' ),
+                               'readonly'      => true,
+                               'value'         => 'WordPress'
                        ),
                        ),
-                       'software_version'      => array(
-                               'desc'                  => __( 'Software Version' ),
-                               'readonly'              => true,
-                               'value'                 => $wp_version
+                       'software_version'  => array(
+                               'desc'          => __( 'Software Version' ),
+                               'readonly'      => true,
+                               'value'         => $wp_version
                        ),
                        ),
-                       'blog_url'                      => array(
-                               'desc'                  => __( 'Site URL' ),
-                               'readonly'              => true,
-                               'option'                => 'siteurl'
+                       'blog_url'          => array(
+                               'desc'          => __( 'Site URL' ),
+                               'readonly'      => true,
+                               'option'        => 'siteurl'
                        ),
                        ),
+                       'image_default_link_type' => array(
+                               'desc'          => __( 'Image default link type' ),
+                               'readonly'      => true,
+                               'option'        => 'image_default_link_type'
+                       ),
+                       'image_default_size' => array(
+                               'desc'          => __( 'Image default size' ),
+                               'readonly'      => true,
+                               'option'        => 'image_default_size'
+                       ),
+                       'image_default_align' => array(
+                               'desc'          => __( 'Image default align' ),
+                               'readonly'      => true,
+                               'option'        => 'image_default_align'
+                       ),
+                       'template'          => array(
+                               'desc'          => __( 'Template' ),
+                               'readonly'      => true,
+                               'option'        => 'template'
+                       ),
+                       'stylesheet'        => array(
+                               'desc'          => __( 'Stylesheet' ),
+                               'readonly'      => true,
+                               'option'        => 'stylesheet'
+                       ),
+                       'post_thumbnail'    => array(
+                               'desc'          => __('Post Thumbnail'),
+                               'readonly'      => true,
+                               'value'         => current_theme_supports( 'post-thumbnails' )
+                       ),
+
+                       // Updatable options
+                       'time_zone'         => array(
+                               'desc'          => __( 'Time Zone' ),
+                               'readonly'      => false,
+                               'option'        => 'gmt_offset'
+                       ),
+                       'blog_title'        => array(
+                               'desc'          => __( 'Site Title' ),
+                               'readonly'      => false,
+                               'option'        => 'blogname'
+                       ),
+                       'blog_tagline'      => array(
+                               'desc'          => __( 'Site Tagline' ),
+                               'readonly'      => false,
+                               'option'        => 'blogdescription'
+                       ),
+                       'date_format'       => array(
+                               'desc'          => __( 'Date Format' ),
+                               'readonly'      => false,
+                               'option'        => 'date_format'
+                       ),
+                       'time_format'       => array(
+                               'desc'          => __( 'Time Format' ),
+                               'readonly'      => false,
+                               'option'        => 'time_format'
+                       ),
+                       'users_can_register' => array(
+                               'desc'          => __( 'Allow new users to sign up' ),
+                               'readonly'      => false,
+                               'option'        => 'users_can_register'
+                       ),
+                       'thumbnail_size_w'  => array(
+                               'desc'          => __( 'Thumbnail Width' ),
+                               'readonly'      => false,
+                               'option'        => 'thumbnail_size_w'
+                       ),
+                       'thumbnail_size_h'  => array(
+                               'desc'          => __( 'Thumbnail Height' ),
+                               'readonly'      => false,
+                               'option'        => 'thumbnail_size_h'
+                       ),
+                       'thumbnail_crop'    => array(
+                               'desc'          => __( 'Crop thumbnail to exact dimensions' ),
+                               'readonly'      => false,
+                               'option'        => 'thumbnail_crop'
+                       ),
+                       'medium_size_w'     => array(
+                               'desc'          => __( 'Medium size image width' ),
+                               'readonly'      => false,
+                               'option'        => 'medium_size_w'
+                       ),
+                       'medium_size_h'     => array(
+                               'desc'          => __( 'Medium size image height' ),
+                               'readonly'      => false,
+                               'option'        => 'medium_size_h'
+                       ),
+                       'large_size_w'      => array(
+                               'desc'          => __( 'Large size image width' ),
+                               'readonly'      => false,
+                               'option'        => 'large_size_w'
+                       ),
+                       'large_size_h'      => array(
+                               'desc'          => __( 'Large size image height' ),
+                               'readonly'      => false,
+                               'option'        => 'large_size_h'
+                       ),
+                       'default_comment_status' => array(
+                               'desc'          => __( 'Allow people to post comments on new articles' ),
+                               'readonly'      => false,
+                               'option'        => 'default_comment_status'
+                       ),
+                       'default_ping_status' => array(
+                               'desc'          => __( 'Allow link notifications from other blogs (pingbacks and trackbacks)' ),
+                               'readonly'      => false,
+                               'option'        => 'default_ping_status'
+                       )
+               );
+
+               $this->blog_options = apply_filters( 'xmlrpc_blog_options', $this->blog_options );
+       }
+
+       /**
+        * Retrieve the blogs of the user.
+        *
+        * @since 2.6.0
+        *
+        * @param array $args Method parameters. Contains:
+        *  - username
+        *  - password
+        * @return array. Contains:
+        *  - 'isAdmin'
+        *  - 'url'
+        *  - 'blogid'
+        *  - 'blogName'
+        *  - 'xmlrpc' - url of xmlrpc endpoint
+        */
+       function wp_getUsersBlogs( $args ) {
+               global $current_site;
+               // If this isn't on WPMU then just use blogger_getUsersBlogs
+               if ( !is_multisite() ) {
+                       array_unshift( $args, 1 );
+                       return $this->blogger_getUsersBlogs( $args );
+               }
+
+               $this->escape( $args );
+
+               $username = $args[0];
+               $password = $args[1];
+
+               if ( !$user = $this->login($username, $password) )
+                       return $this->error;
+
+               do_action( 'xmlrpc_call', 'wp.getUsersBlogs' );
+
+               $blogs = (array) get_blogs_of_user( $user->ID );
+               $struct = array();
+
+               foreach ( $blogs as $blog ) {
+                       // Don't include blogs that aren't hosted at this site
+                       if ( $blog->site_id != $current_site->id )
+                               continue;
+
+                       $blog_id = $blog->userblog_id;
+                       switch_to_blog($blog_id);
+                       $is_admin = current_user_can('manage_options');
+
+                       $struct[] = array(
+                               'isAdmin'               => $is_admin,
+                               'url'                   => get_option( 'home' ) . '/',
+                               'blogid'                => (string) $blog_id,
+                               'blogName'              => get_option( 'blogname' ),
+                               'xmlrpc'                => site_url( 'xmlrpc.php' )
+                       );
+
+                       restore_current_blog();
+               }
+
+               return $struct;
+       }
+
+       /**
+        * Checks if the method received at least the minimum number of arguments.
+        *
+        * @since 3.4.0
+        *
+        * @param string|array $args Sanitize single string or array of strings.
+        * @param int $count Minimum number of arguments.
+        * @return boolean if $args contains at least $count arguments.
+        */
+       protected function minimum_args( $args, $count ) {
+               if ( count( $args ) < $count ) {
+                       $this->error = new IXR_Error( 400, __( 'Insufficient arguments passed to this XML-RPC method.' ) );
+                       return false;
+               }
+
+               return true;
+       }
+
+       /**
+        * Prepares taxonomy data for return in an XML-RPC object.
+        *
+        * @access protected
+        *
+        * @param object $taxonomy The unprepared taxonomy data
+        * @param array $fields The subset of taxonomy fields to return
+        * @return array The prepared taxonomy data
+        */
+       protected function _prepare_taxonomy( $taxonomy, $fields ) {
+               $_taxonomy = array(
+                       'name' => $taxonomy->name,
+                       'label' => $taxonomy->label,
+                       'hierarchical' => (bool) $taxonomy->hierarchical,
+                       'public' => (bool) $taxonomy->public,
+                       'show_ui' => (bool) $taxonomy->show_ui,
+                       '_builtin' => (bool) $taxonomy->_builtin,
+               );
+
+               if ( in_array( 'labels', $fields ) )
+                       $_taxonomy['labels'] = (array) $taxonomy->labels;
+
+               if ( in_array( 'cap', $fields ) )
+                       $_taxonomy['cap'] = (array) $taxonomy->cap;
+
+               if ( in_array( 'object_type', $fields ) )
+                       $_taxonomy['object_type'] = array_unique( (array) $taxonomy->object_type );
+
+               return apply_filters( 'xmlrpc_prepare_taxonomy', $_taxonomy, $taxonomy, $fields );
+       }
+
+       /**
+        * Prepares term data for return in an XML-RPC object.
+        *
+        * @access protected
+        *
+        * @param array|object $term The unprepared term data
+        * @return array The prepared term data
+        */
+       protected function _prepare_term( $term ) {
+               $_term = $term;
+               if ( ! is_array( $_term) )
+                       $_term = get_object_vars( $_term );
+
+               // For Intergers which may be largeer than XMLRPC supports ensure we return strings.
+               $_term['term_id'] = strval( $_term['term_id'] );
+               $_term['term_group'] = strval( $_term['term_group'] );
+               $_term['term_taxonomy_id'] = strval( $_term['term_taxonomy_id'] );
+               $_term['parent'] = strval( $_term['parent'] );
+
+               // Count we are happy to return as an Integer because people really shouldn't use Terms that much.
+               $_term['count'] = intval( $_term['count'] );
+
+               return apply_filters( 'xmlrpc_prepare_term', $_term, $term );
+       }
+
+       /**
+        * Convert a WordPress date string to an IXR_Date object.
+        *
+        * @access protected
+        *
+        * @param string $date
+        * @return IXR_Date
+        */
+       protected function _convert_date( $date ) {
+               if ( $date === '0000-00-00 00:00:00' ) {
+                       return new IXR_Date( '00000000T00:00:00Z' );
+               }
+               return new IXR_Date( mysql2date( 'Ymd\TH:i:s', $date, false ) );
+       }
+
+       /**
+        * Convert a WordPress GMT date string to an IXR_Date object.
+        *
+        * @access protected
+        *
+        * @param string $date_gmt
+        * @param string $date
+        * @return IXR_Date
+        */
+       protected function _convert_date_gmt( $date_gmt, $date ) {
+               if ( $date !== '0000-00-00 00:00:00' && $date_gmt === '0000-00-00 00:00:00' ) {
+                       return new IXR_Date( get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $date, false ), 'Ymd\TH:i:s' ) );
+               }
+               return $this->_convert_date( $date_gmt );
+       }
+
+       /**
+        * Prepares post data for return in an XML-RPC object.
+        *
+        * @access protected
+        *
+        * @param array $post The unprepared post data
+        * @param array $fields The subset of post type fields to return
+        * @return array The prepared post data
+        */
+       protected function _prepare_post( $post, $fields ) {
+               // holds the data for this post. built up based on $fields
+               $_post = array( 'post_id' => strval( $post['ID'] ) );
+
+               // prepare common post fields
+               $post_fields = array(
+                       'post_title'        => $post['post_title'],
+                       'post_date'         => $this->_convert_date( $post['post_date'] ),
+                       'post_date_gmt'     => $this->_convert_date_gmt( $post['post_date_gmt'], $post['post_date'] ),
+                       'post_modified'     => $this->_convert_date( $post['post_modified'] ),
+                       'post_modified_gmt' => $this->_convert_date_gmt( $post['post_modified_gmt'], $post['post_modified'] ),
+                       'post_status'       => $post['post_status'],
+                       'post_type'         => $post['post_type'],
+                       'post_name'         => $post['post_name'],
+                       'post_author'       => $post['post_author'],
+                       'post_password'     => $post['post_password'],
+                       'post_excerpt'      => $post['post_excerpt'],
+                       'post_content'      => $post['post_content'],
+                       'link'              => post_permalink( $post['ID'] ),
+                       'comment_status'    => $post['comment_status'],
+                       'ping_status'       => $post['ping_status'],
+                       'sticky'            => ( $post['post_type'] === 'post' && is_sticky( $post['ID'] ) ),
+               );
+
+               // Thumbnail
+               $post_fields['post_thumbnail'] = array();
+               $thumbnail_id = get_post_thumbnail_id( $post['ID'] );
+               if ( $thumbnail_id ) {
+                       $thumbnail_size = current_theme_supports('post-thumbnail') ? 'post-thumbnail' : 'thumbnail';
+                       $post_fields['post_thumbnail'] = $this->_prepare_media_item( get_post( $thumbnail_id ), $thumbnail_size );
+               }
+
+               // Consider future posts as published
+               if ( $post_fields['post_status'] === 'future' )
+                       $post_fields['post_status'] = 'publish';
+
+               // Fill in blank post format
+               $post_fields['post_format'] = get_post_format( $post['ID'] );
+               if ( empty( $post_fields['post_format'] ) )
+                       $post_fields['post_format'] = 'standard';
+
+               // Merge requested $post_fields fields into $_post
+               if ( in_array( 'post', $fields ) ) {
+                       $_post = array_merge( $_post, $post_fields );
+               } else {
+                       $requested_fields = array_intersect_key( $post_fields, array_flip( $fields ) );
+                       $_post = array_merge( $_post, $requested_fields );
+               }
+
+               $all_taxonomy_fields = in_array( 'taxonomies', $fields );
+
+               if ( $all_taxonomy_fields || in_array( 'terms', $fields ) ) {
+                       $post_type_taxonomies = get_object_taxonomies( $post['post_type'], 'names' );
+                       $terms = wp_get_object_terms( $post['ID'], $post_type_taxonomies );
+                       $_post['terms'] = array();
+                       foreach ( $terms as $term ) {
+                               $_post['terms'][] = $this->_prepare_term( $term );
+                       }
+               }
+
+               if ( in_array( 'custom_fields', $fields ) )
+                       $_post['custom_fields'] = $this->get_custom_fields( $post['ID'] );
+
+               if ( in_array( 'enclosure', $fields ) ) {
+                       $_post['enclosure'] = array();
+                       $enclosures = (array) get_post_meta( $post['ID'], 'enclosure' );
+                       if ( ! empty( $enclosures ) ) {
+                               $encdata = explode( "\n", $enclosures[0] );
+                               $_post['enclosure']['url'] = trim( htmlspecialchars( $encdata[0] ) );
+                               $_post['enclosure']['length'] = (int) trim( $encdata[1] );
+                               $_post['enclosure']['type'] = trim( $encdata[2] );
+                       }
+               }
+
+               return apply_filters( 'xmlrpc_prepare_post', $_post, $post, $fields );
+       }
+
+       /**
+        * Prepares post data for return in an XML-RPC object.
+        *
+        * @access protected
+        *
+        * @param object $post_type Post type object
+        * @param array $fields The subset of post fields to return
+        * @return array The prepared post type data
+        */
+       protected function _prepare_post_type( $post_type, $fields ) {
+               $_post_type = array(
+                       'name' => $post_type->name,
+                       'label' => $post_type->label,
+                       'hierarchical' => (bool) $post_type->hierarchical,
+                       'public' => (bool) $post_type->public,
+                       'show_ui' => (bool) $post_type->show_ui,
+                       '_builtin' => (bool) $post_type->_builtin,
+                       'has_archive' => (bool) $post_type->has_archive,
+                       'supports' => get_all_post_type_supports( $post_type->name ),
+               );
+
+               if ( in_array( 'labels', $fields ) ) {
+                       $_post_type['labels'] = (array) $post_type->labels;
+               }
+
+               if ( in_array( 'cap', $fields ) ) {
+                       $_post_type['cap'] = (array) $post_type->cap;
+                       $_post_type['map_meta_cap'] = (bool) $post_type->map_meta_cap;
+               }
+
+               if ( in_array( 'menu', $fields ) ) {
+                       $_post_type['menu_position'] = (int) $post_type->menu_position;
+                       $_post_type['menu_icon'] = $post_type->menu_icon;
+                       $_post_type['show_in_menu'] = (bool) $post_type->show_in_menu;
+               }
+
+               if ( in_array( 'taxonomies', $fields ) )
+                       $_post_type['taxonomies'] = get_object_taxonomies( $post_type->name, 'names' );
+
+               return apply_filters( 'xmlrpc_prepare_post_type', $_post_type, $post_type );
+       }
+
+       /**
+        * Prepares media item data for return in an XML-RPC object.
+        *
+        * @access protected
+        *
+        * @param object $media_item The unprepared media item data
+        * @param string $thumbnail_size The image size to use for the thumbnail URL
+        * @return array The prepared media item data
+        */
+       protected function _prepare_media_item( $media_item, $thumbnail_size = 'thumbnail' ) {
+               $_media_item = array(
+                       'attachment_id'    => strval( $media_item->ID ),
+                       'date_created_gmt' => $this->_convert_date_gmt( $media_item->post_date_gmt, $media_item->post_date ),
+                       'parent'           => $media_item->post_parent,
+                       'link'             => wp_get_attachment_url( $media_item->ID ),
+                       'title'            => $media_item->post_title,
+                       'caption'          => $media_item->post_excerpt,
+                       'description'      => $media_item->post_content,
+                       'metadata'         => wp_get_attachment_metadata( $media_item->ID ),
+               );
+
+               $thumbnail_src = image_downsize( $media_item->ID, $thumbnail_size );
+               if ( $thumbnail_src )
+                       $_media_item['thumbnail'] = $thumbnail_src[0];
+               else
+                       $_media_item['thumbnail'] = $_media_item['link'];
+
+               return apply_filters( 'xmlrpc_prepare_media_item', $_media_item, $media_item, $thumbnail_size );
+       }
+
+       /**
+        * Prepares page data for return in an XML-RPC object.
+        *
+        * @access protected
+        *
+        * @param object $page The unprepared page data
+        * @return array The prepared page data
+        */
+       protected function _prepare_page( $page ) {
+               // Get all of the page content and link.
+               $full_page = get_extended( $page->post_content );
+               $link = post_permalink( $page->ID );
+
+               // Get info the page parent if there is one.
+               $parent_title = "";
+               if ( ! empty( $page->post_parent ) ) {
+                       $parent = get_page( $page->post_parent );
+                       $parent_title = $parent->post_title;
+               }
+
+               // Determine comment and ping settings.
+               $allow_comments = comments_open( $page->ID ) ? 1 : 0;
+               $allow_pings = pings_open( $page->ID ) ? 1 : 0;
+
+               // Format page date.
+               $page_date = $this->_convert_date( $page->post_date );
+               $page_date_gmt = $this->_convert_date_gmt( $page->post_date_gmt, $page->post_date );
+
+               // Pull the categories info together.
+               $categories = array();
+               foreach ( wp_get_post_categories( $page->ID ) as $cat_id ) {
+                       $categories[] = get_cat_name( $cat_id );
+               }
+
+               // Get the author info.
+               $author = get_userdata( $page->post_author );
+
+               $page_template = get_page_template_slug( $page->ID );
+               if ( empty( $page_template ) )
+                       $page_template = 'default';
+
+               $_page = array(
+                       'dateCreated'            => $page_date,
+                       'userid'                 => $page->post_author,
+                       'page_id'                => $page->ID,
+                       'page_status'            => $page->post_status,
+                       'description'            => $full_page['main'],
+                       'title'                  => $page->post_title,
+                       'link'                   => $link,
+                       'permaLink'              => $link,
+                       'categories'             => $categories,
+                       'excerpt'                => $page->post_excerpt,
+                       'text_more'              => $full_page['extended'],
+                       'mt_allow_comments'      => $allow_comments,
+                       'mt_allow_pings'         => $allow_pings,
+                       'wp_slug'                => $page->post_name,
+                       'wp_password'            => $page->post_password,
+                       'wp_author'              => $author->display_name,
+                       'wp_page_parent_id'      => $page->post_parent,
+                       'wp_page_parent_title'   => $parent_title,
+                       'wp_page_order'          => $page->menu_order,
+                       'wp_author_id'           => (string) $author->ID,
+                       'wp_author_display_name' => $author->display_name,
+                       'date_created_gmt'       => $page_date_gmt,
+                       'custom_fields'          => $this->get_custom_fields( $page->ID ),
+                       'wp_page_template'       => $page_template
+               );
+
+               return apply_filters( 'xmlrpc_prepare_page', $_page, $page );
+       }
+
+       /**
+        * Prepares comment data for return in an XML-RPC object.
+        *
+        * @access protected
+        *
+        * @param object $comment The unprepared comment data
+        * @return array The prepared comment data
+        */
+       protected function _prepare_comment( $comment ) {
+               // Format page date.
+               $comment_date = $this->_convert_date( $comment->comment_date );
+               $comment_date_gmt = $this->_convert_date_gmt( $comment->comment_date_gmt, $comment->comment_date );
+
+               if ( '0' == $comment->comment_approved )
+                       $comment_status = 'hold';
+               else if ( 'spam' == $comment->comment_approved )
+                       $comment_status = 'spam';
+               else if ( '1' == $comment->comment_approved )
+                       $comment_status = 'approve';
+               else
+                       $comment_status = $comment->comment_approved;
+
+               $_comment = array(
+                       'date_created_gmt' => $comment_date_gmt,
+                       'user_id'          => $comment->user_id,
+                       'comment_id'       => $comment->comment_ID,
+                       'parent'           => $comment->comment_parent,
+                       'status'           => $comment_status,
+                       'content'          => $comment->comment_content,
+                       'link'             => get_comment_link($comment),
+                       'post_id'          => $comment->comment_post_ID,
+                       'post_title'       => get_the_title($comment->comment_post_ID),
+                       'author'           => $comment->comment_author,
+                       'author_url'       => $comment->comment_author_url,
+                       'author_email'     => $comment->comment_author_email,
+                       'author_ip'        => $comment->comment_author_IP,
+                       'type'             => $comment->comment_type,
+               );
+
+               return apply_filters( 'xmlrpc_prepare_comment', $_comment, $comment );
+       }
+
+       /**
+        * Create a new post for any registered post type.
+        *
+        * @since 3.4.0
+        *
+        * @param array $args Method parameters. Contains:
+        *  - int     $blog_id
+        *  - string  $username
+        *  - string  $password
+        *  - array   $content_struct
+        *      $content_struct can contain:
+        *      - post_type (default: 'post')
+        *      - post_status (default: 'draft')
+        *      - post_title
+        *      - post_author
+        *      - post_exerpt
+        *      - post_content
+        *      - post_date_gmt | post_date
+        *      - post_format
+        *      - post_password
+        *      - comment_status - can be 'open' | 'closed'
+        *      - ping_status - can be 'open' | 'closed'
+        *      - sticky
+        *      - post_thumbnail - ID of a media item to use as the post thumbnail/featured image
+        *      - custom_fields - array, with each element containing 'key' and 'value'
+        *      - terms - array, with taxonomy names as keys and arrays of term IDs as values
+        *      - terms_names - array, with taxonomy names as keys and arrays of term names as values
+        *      - enclosure
+        *      - any other fields supported by wp_insert_post()
+        * @return string post_id
+        */
+       function wp_newPost( $args ) {
+               if ( ! $this->minimum_args( $args, 4 ) )
+                       return $this->error;
+
+               $this->escape( $args );
+
+               $blog_id        = (int) $args[0];
+               $username       = $args[1];
+               $password       = $args[2];
+               $content_struct = $args[3];
+
+               if ( ! $user = $this->login( $username, $password ) )
+                       return $this->error;
+
+               do_action( 'xmlrpc_call', 'wp.newPost' );
+
+               unset( $content_struct['ID'] );
+
+               return $this->_insert_post( $user, $content_struct );
+       }
+
+       /**
+        * Helper method for filtering out elements from an array.
+        *
+        * @since 3.4.0
+        *
+        * @param int $count Number to compare to one.
+        */
+       private function _is_greater_than_one( $count ) {
+               return $count > 1;
+       }
+
+       /**
+        * Helper method for wp_newPost and wp_editPost, containing shared logic.
+        *
+        * @since 3.4.0
+        * @uses wp_insert_post()
+        *
+        * @param WP_User $user The post author if post_author isn't set in $content_struct.
+        * @param array $content_struct Post data to insert.
+        */
+       protected function _insert_post( $user, $content_struct ) {
+               $defaults = array( 'post_status' => 'draft', 'post_type' => 'post', 'post_author' => 0,
+                       'post_password' => '', 'post_excerpt' => '', 'post_content' => '', 'post_title' => '' );
+
+               $post_data = wp_parse_args( $content_struct, $defaults );
+
+               $post_type = get_post_type_object( $post_data['post_type'] );
+               if ( ! $post_type )
+                       return new IXR_Error( 403, __( 'Invalid post type' ) );
+
+               $update = ! empty( $post_data['ID'] );
+
+               if ( $update ) {
+                       if ( ! get_post( $post_data['ID'] ) )
+                               return new IXR_Error( 401, __( 'Invalid post ID.' ) );
+                       if ( ! current_user_can( $post_type->cap->edit_post, $post_data['ID'] ) )
+                               return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit this post.' ) );
+                       if ( $post_data['post_type'] != get_post_type( $post_data['ID'] ) )
+                               return new IXR_Error( 401, __( 'The post type may not be changed.' ) );
+               } else {
+                       if ( ! current_user_can( $post_type->cap->edit_posts ) )
+                               return new IXR_Error( 401, __( 'Sorry, you are not allowed to post on this site.' ) );
+               }
+
+               switch ( $post_data['post_status'] ) {
+                       case 'draft':
+                       case 'pending':
+                               break;
+                       case 'private':
+                               if ( ! current_user_can( $post_type->cap->publish_posts ) )
+                                       return new IXR_Error( 401, __( 'Sorry, you are not allowed to create private posts in this post type' ) );
+                               break;
+                       case 'publish':
+                       case 'future':
+                               if ( ! current_user_can( $post_type->cap->publish_posts ) )
+                                       return new IXR_Error( 401, __( 'Sorry, you are not allowed to publish posts in this post type' ) );
+                               break;
+                       default:
+                               $post_data['post_status'] = 'draft';
+                       break;
+               }
+
+               if ( ! empty( $post_data['post_password'] ) && ! current_user_can( $post_type->cap->publish_posts ) )
+                       return new IXR_Error( 401, __( 'Sorry, you are not allowed to create password protected posts in this post type' ) );
+
+               $post_data['post_author'] = absint( $post_data['post_author'] );
+               if ( ! empty( $post_data['post_author'] ) && $post_data['post_author'] != $user->ID ) {
+                       if ( ! current_user_can( $post_type->cap->edit_others_posts ) )
+                               return new IXR_Error( 401, __( 'You are not allowed to create posts as this user.' ) );
+
+                       $author = get_userdata( $post_data['post_author'] );
+
+                       if ( ! $author )
+                               return new IXR_Error( 404, __( 'Invalid author ID.' ) );
+               } else {
+                       $post_data['post_author'] = $user->ID;
+               }
+
+               if ( isset( $post_data['comment_status'] ) && $post_data['comment_status'] != 'open' && $post_data['comment_status'] != 'closed' )
+                       unset( $post_data['comment_status'] );
+
+               if ( isset( $post_data['ping_status'] ) && $post_data['ping_status'] != 'open' && $post_data['ping_status'] != 'closed' )
+                       unset( $post_data['ping_status'] );
+
+               // Do some timestamp voodoo
+               if ( ! empty( $post_data['post_date_gmt'] ) ) {
+                       // We know this is supposed to be GMT, so we're going to slap that Z on there by force
+                       $dateCreated = rtrim( $post_data['post_date_gmt']->getIso(), 'Z' ) . 'Z';
+               } elseif ( ! empty( $post_data['post_date'] ) ) {
+                       $dateCreated = $post_data['post_date']->getIso();
+               }
+
+               if ( ! empty( $dateCreated ) ) {
+                       $post_data['post_date'] = get_date_from_gmt( iso8601_to_datetime( $dateCreated ) );
+                       $post_data['post_date_gmt'] = iso8601_to_datetime( $dateCreated, 'GMT' );
+               }
+
+               if ( ! isset( $post_data['ID'] ) )
+                       $post_data['ID'] = get_default_post_to_edit( $post_data['post_type'], true )->ID;
+               $post_ID = $post_data['ID'];
+
+               if ( $post_data['post_type'] == 'post' ) {
+                       // Private and password-protected posts cannot be stickied.
+                       if ( $post_data['post_status'] == 'private' || ! empty( $post_data['post_password'] ) ) {
+                               // Error if the client tried to stick the post, otherwise, silently unstick.
+                               if ( ! empty( $post_data['sticky'] ) )
+                                       return new IXR_Error( 401, __( 'Sorry, you cannot stick a private post.' ) );
+                               if ( $update )
+                                       unstick_post( $post_ID );
+                       } elseif ( isset( $post_data['sticky'] ) )  {
+                               if ( ! current_user_can( $post_type->cap->edit_others_posts ) )
+                                       return new IXR_Error( 401, __( 'Sorry, you are not allowed to stick this post.' ) );
+                               if ( $post_data['sticky'] )
+                                       stick_post( $post_ID );
+                               else
+                                       unstick_post( $post_ID );
+                       }
+               }
+
+               if ( isset( $post_data['post_thumbnail'] ) ) {
+                       // empty value deletes, non-empty value adds/updates
+                       if ( ! $post_data['post_thumbnail'] )
+                               delete_post_thumbnail( $post_ID );
+                       elseif ( ! set_post_thumbnail( $post_ID, $post_data['post_thumbnail'] ) )
+                                       return new IXR_Error( 404, __( 'Invalid attachment ID.' ) );
+                       unset( $content_struct['post_thumbnail'] );
+               }
+
+               if ( isset( $post_data['custom_fields'] ) )
+                       $this->set_custom_fields( $post_ID, $post_data['custom_fields'] );
+
+               if ( isset( $post_data['terms'] ) || isset( $post_data['terms_names'] ) ) {
+                       $post_type_taxonomies = get_object_taxonomies( $post_data['post_type'], 'objects' );
+
+                       // accumulate term IDs from terms and terms_names
+                       $terms = array();
+
+                       // first validate the terms specified by ID
+                       if ( isset( $post_data['terms'] ) && is_array( $post_data['terms'] ) ) {
+                               $taxonomies = array_keys( $post_data['terms'] );
+
+                               // validating term ids
+                               foreach ( $taxonomies as $taxonomy ) {
+                                       if ( ! array_key_exists( $taxonomy , $post_type_taxonomies ) )
+                                               return new IXR_Error( 401, __( 'Sorry, one of the given taxonomies is not supported by the post type.' ) );
+
+                                       if ( ! current_user_can( $post_type_taxonomies[$taxonomy]->cap->assign_terms ) )
+                                               return new IXR_Error( 401, __( 'Sorry, you are not allowed to assign a term to one of the given taxonomies.' ) );
+
+                                       $term_ids = $post_data['terms'][$taxonomy];
+                                       foreach ( $term_ids as $term_id ) {
+                                               $term = get_term_by( 'id', $term_id, $taxonomy );
+
+                                               if ( ! $term )
+                                                       return new IXR_Error( 403, __( 'Invalid term ID' ) );
+
+                                               $terms[$taxonomy][] = (int) $term_id;
+                                       }
+                               }
+                       }
+
+                       // now validate terms specified by name
+                       if ( isset( $post_data['terms_names'] ) && is_array( $post_data['terms_names'] ) ) {
+                               $taxonomies = array_keys( $post_data['terms_names'] );
+
+                               foreach ( $taxonomies as $taxonomy ) {
+                                       if ( ! array_key_exists( $taxonomy , $post_type_taxonomies ) )
+                                               return new IXR_Error( 401, __( 'Sorry, one of the given taxonomies is not supported by the post type.' ) );
+
+                                       if ( ! current_user_can( $post_type_taxonomies[$taxonomy]->cap->assign_terms ) )
+                                               return new IXR_Error( 401, __( 'Sorry, you are not allowed to assign a term to one of the given taxonomies.' ) );
+
+                                       // for hierarchical taxonomies, we can't assign a term when multiple terms in the hierarchy share the same name
+                                       $ambiguous_terms = array();
+                                       if ( is_taxonomy_hierarchical( $taxonomy ) ) {
+                                               $tax_term_names = get_terms( $taxonomy, array( 'fields' => 'names', 'hide_empty' => false ) );
+
+                                               // count the number of terms with the same name
+                                               $tax_term_names_count = array_count_values( $tax_term_names );
+
+                                               // filter out non-ambiguous term names
+                                               $ambiguous_tax_term_counts = array_filter( $tax_term_names_count, array( $this, '_is_greater_than_one') );
+
+                                               $ambiguous_terms = array_keys( $ambiguous_tax_term_counts );
+                                       }
+
+                                       $term_names = $post_data['terms_names'][$taxonomy];
+                                       foreach ( $term_names as $term_name ) {
+                                               if ( in_array( $term_name, $ambiguous_terms ) )
+                                                       return new IXR_Error( 401, __( 'Ambiguous term name used in a hierarchical taxonomy. Please use term ID instead.' ) );
+
+                                               $term = get_term_by( 'name', $term_name, $taxonomy );
+
+                                               if ( ! $term ) {
+                                                       // term doesn't exist, so check that the user is allowed to create new terms
+                                                       if ( ! current_user_can( $post_type_taxonomies[$taxonomy]->cap->edit_terms ) )
+                                                               return new IXR_Error( 401, __( 'Sorry, you are not allowed to add a term to one of the given taxonomies.' ) );
+
+                                                       // create the new term
+                                                       $term_info = wp_insert_term( $term_name, $taxonomy );
+                                                       if ( is_wp_error( $term_info ) )
+                                                               return new IXR_Error( 500, $term_info->get_error_message() );
+
+                                                       $terms[$taxonomy][] = (int) $term_info['term_id'];
+                                               } else {
+                                                       $terms[$taxonomy][] = (int) $term->term_id;
+                                               }
+                                       }
+                               }
+                       }
+
+                       $post_data['tax_input'] = $terms;
+                       unset( $post_data['terms'], $post_data['terms_names'] );
+               } else {
+                       // do not allow direct submission of 'tax_input', clients must use 'terms' and/or 'terms_names'
+                       unset( $post_data['tax_input'], $post_data['post_category'], $post_data['tags_input'] );
+               }
+
+               if ( isset( $post_data['post_format'] ) ) {
+                       $format = set_post_format( $post_ID, $post_data['post_format'] );
+
+                       if ( is_wp_error( $format ) )
+                               return new IXR_Error( 500, $format->get_error_message() );
+
+                       unset( $post_data['post_format'] );
+               }
+
+               // Handle enclosures
+               $enclosure = isset( $post_data['enclosure'] ) ? $post_data['enclosure'] : null;
+               $this->add_enclosure_if_new( $post_ID, $enclosure );
+
+               $this->attach_uploads( $post_ID, $post_data['post_content'] );
+
+               $post_data = apply_filters( 'xmlrpc_wp_insert_post_data', $post_data, $content_struct );
+
+               $post_ID = wp_insert_post( $post_data, true );
+               if ( is_wp_error( $post_ID ) )
+                       return new IXR_Error( 500, $post_ID->get_error_message() );
+
+               if ( ! $post_ID )
+                       return new IXR_Error( 401, __( 'Sorry, your entry could not be posted. Something wrong happened.' ) );
+
+               return strval( $post_ID );
+       }
+
+       /**
+        * Edit a post for any registered post type.
+        *
+        * The $content_struct parameter only needs to contain fields that
+        * should be changed. All other fields will retain their existing values.
+        *
+        * @since 3.4.0
+        *
+        * @param array $args Method parameters. Contains:
+        *  - int     $blog_id
+        *  - string  $username
+        *  - string  $password
+        *  - int     $post_id
+        *  - array   $content_struct
+        * @return true on success
+        */
+       function wp_editPost( $args ) {
+               if ( ! $this->minimum_args( $args, 5 ) )
+                       return $this->error;
+
+               $this->escape( $args );
+
+               $blog_id        = (int) $args[0];
+               $username       = $args[1];
+               $password       = $args[2];
+               $post_id        = (int) $args[3];
+               $content_struct = $args[4];
+
+               if ( ! $user = $this->login( $username, $password ) )
+                       return $this->error;
+
+               do_action( 'xmlrpc_call', 'wp.editPost' );
+
+               $post = get_post( $post_id, ARRAY_A );
+
+               if ( empty( $post['ID'] ) )
+                       return new IXR_Error( 404, __( 'Invalid post ID.' ) );
+
+               // convert the date field back to IXR form
+               $post['post_date'] = $this->_convert_date( $post['post_date'] );
+
+               // ignore the existing GMT date if it is empty or a non-GMT date was supplied in $content_struct,
+               // since _insert_post will ignore the non-GMT date if the GMT date is set
+               if ( $post['post_date_gmt'] == '0000-00-00 00:00:00' || isset( $content_struct['post_date'] ) )
+                       unset( $post['post_date_gmt'] );
+               else
+                       $post['post_date_gmt'] = $this->_convert_date( $post['post_date_gmt'] );
+
+               $this->escape( $post );
+               $merged_content_struct = array_merge( $post, $content_struct );
+
+               $retval = $this->_insert_post( $user, $merged_content_struct );
+               if ( $retval instanceof IXR_Error )
+                       return $retval;
+
+               return true;
+       }
+
+       /**
+        * Delete a post for any registered post type.
+        *
+        * @since 3.4.0
+        *
+        * @uses wp_delete_post()
+        * @param array $args Method parameters. Contains:
+        *  - int     $blog_id
+        *  - string  $username
+        *  - string  $password
+        *  - int     $post_id
+        * @return true on success
+        */
+       function wp_deletePost( $args ) {
+               if ( ! $this->minimum_args( $args, 4 ) )
+                       return $this->error;
+
+               $this->escape( $args );
+
+               $blog_id    = (int) $args[0];
+               $username   = $args[1];
+               $password   = $args[2];
+               $post_id    = (int) $args[3];
+
+               if ( ! $user = $this->login( $username, $password ) )
+                       return $this->error;
+
+               do_action( 'xmlrpc_call', 'wp.deletePost' );
+
+               $post = wp_get_single_post( $post_id, ARRAY_A );
+               if ( empty( $post['ID'] ) )
+                       return new IXR_Error( 404, __( 'Invalid post ID.' ) );
+
+               $post_type = get_post_type_object( $post['post_type'] );
+               if ( ! current_user_can( $post_type->cap->delete_post, $post_id ) )
+                       return new IXR_Error( 401, __( 'Sorry, you are not allowed to delete this post.' ) );
+
+               $result = wp_delete_post( $post_id );
+
+               if ( ! $result )
+                       return new IXR_Error( 500, __( 'The post cannot be deleted.' ) );
+
+               return true;
+       }
+
+       /**
+        * Retrieve a post.
+        *
+        * @since 3.4.0
+        *
+        * The optional $fields parameter specifies what fields will be included
+        * in the response array. This should be a list of field names. 'post_id' will
+        * always be included in the response regardless of the value of $fields.
+        *
+        * Instead of, or in addition to, individual field names, conceptual group
+        * names can be used to specify multiple fields. The available conceptual
+        * groups are 'post' (all basic fields), 'taxonomies', 'custom_fields',
+        * and 'enclosure'.
+        *
+        * @uses wp_get_single_post()
+        * @param array $args Method parameters. Contains:
+        *  - int     $post_id
+        *  - string  $username
+        *  - string  $password
+        *  - array   $fields optional
+        * @return array contains (based on $fields parameter):
+        *  - 'post_id'
+        *  - 'post_title'
+        *  - 'post_date'
+        *  - 'post_date_gmt'
+        *  - 'post_modified'
+        *  - 'post_modified_gmt'
+        *  - 'post_status'
+        *  - 'post_type'
+        *  - 'post_name'
+        *  - 'post_author'
+        *  - 'post_password'
+        *  - 'post_excerpt'
+        *  - 'post_content'
+        *  - 'link'
+        *  - 'comment_status'
+        *  - 'ping_status'
+        *  - 'sticky'
+        *  - 'custom_fields'
+        *  - 'terms'
+        *  - 'categories'
+        *  - 'tags'
+        *  - 'enclosure'
+        */
+       function wp_getPost( $args ) {
+               if ( ! $this->minimum_args( $args, 4 ) )
+                       return $this->error;
+
+               $this->escape( $args );
+
+               $blog_id            = (int) $args[0];
+               $username           = $args[1];
+               $password           = $args[2];
+               $post_id            = (int) $args[3];
+
+               if ( isset( $args[4] ) )
+                       $fields = $args[4];
+               else
+                       $fields = apply_filters( 'xmlrpc_default_post_fields', array( 'post', 'terms', 'custom_fields' ), 'wp.getPost' );
+
+               if ( ! $user = $this->login( $username, $password ) )
+                       return $this->error;
+
+               do_action( 'xmlrpc_call', 'wp.getPost' );
+
+               $post = wp_get_single_post( $post_id, ARRAY_A );
+
+               if ( empty( $post['ID'] ) )
+                       return new IXR_Error( 404, __( 'Invalid post ID.' ) );
+
+               $post_type = get_post_type_object( $post['post_type'] );
+               if ( ! current_user_can( $post_type->cap->edit_posts, $post_id ) )
+                       return new IXR_Error( 401, __( 'Sorry, you cannot edit this post.' ) );
+
+               return $this->_prepare_post( $post, $fields );
+       }
+
+       /**
+        * Retrieve posts.
+        *
+        * @since 3.4.0
+        *
+        * The optional $filter parameter modifies the query used to retrieve posts.
+        * Accepted keys are 'post_type', 'post_status', 'number', 'offset',
+        * 'orderby', and 'order'.
+        *
+        * The optional $fields parameter specifies what fields will be included
+        * in the response array.
+        *
+        * @uses wp_get_recent_posts()
+        * @see wp_getPost() for more on $fields
+        * @see get_posts() for more on $filter values
+        *
+        * @param array $args Method parameters. Contains:
+        *  - int     $blog_id
+        *  - string  $username
+        *  - string  $password
+        *  - array   $filter optional
+        *  - array   $fields optional
+        * @return array contains a collection of posts.
+        */
+       function wp_getPosts( $args ) {
+               if ( ! $this->minimum_args( $args, 3 ) )
+                       return $this->error;
+
+               $this->escape( $args );
+
+               $blog_id    = (int) $args[0];
+               $username   = $args[1];
+               $password   = $args[2];
+               $filter     = isset( $args[3] ) ? $args[3] : array();
+
+               if ( isset( $args[4] ) )
+                       $fields = $args[4];
+               else
+                       $fields = apply_filters( 'xmlrpc_default_post_fields', array( 'post', 'terms', 'custom_fields' ), 'wp.getPosts' );
+
+               if ( ! $user = $this->login( $username, $password ) )
+                       return $this->error;
+
+               do_action( 'xmlrpc_call', 'wp.getPosts' );
+
+               $query = array();
+
+               if ( isset( $filter['post_type'] ) ) {
+                       $post_type = get_post_type_object( $filter['post_type'] );
+                       if ( ! ( (bool) $post_type ) )
+                               return new IXR_Error( 403, __( 'The post type specified is not valid' ) );
+
+                       if ( ! current_user_can( $post_type->cap->edit_posts ) )
+                               return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit posts in this post type' ));
+
+                       $query['post_type'] = $filter['post_type'];
+               }
+
+               if ( isset( $filter['post_status'] ) )
+                       $query['post_status'] = $filter['post_status'];
+
+               if ( isset( $filter['number'] ) )
+                       $query['numberposts'] = absint( $filter['number'] );
+
+               if ( isset( $filter['offset'] ) )
+                       $query['offset'] = absint( $filter['offset'] );
+
+               if ( isset( $filter['orderby'] ) ) {
+                       $query['orderby'] = $filter['orderby'];
+
+                       if ( isset( $filter['order'] ) )
+                               $query['order'] = $filter['order'];
+               }
+
+               $posts_list = wp_get_recent_posts( $query );
+
+               if ( ! $posts_list )
+                       return array();
+
+               // holds all the posts data
+               $struct = array();
+
+               foreach ( $posts_list as $post ) {
+                       $post_type = get_post_type_object( $post['post_type'] );
+                       if ( ! current_user_can( $post_type->cap->edit_posts, $post['ID'] ) )
+                               continue;
+
+                       $struct[] = $this->_prepare_post( $post, $fields );
+               }
+
+               return $struct;
+       }
+
+       /**
+        * Create a new term.
+        *
+        * @since 3.4.0
+        *
+        * @uses wp_insert_term()
+        * @param array $args Method parameters. Contains:
+        *  - int     $blog_id
+        *  - string  $username
+        *  - string  $password
+        *  - array   $content_struct
+        *      The $content_struct must contain:
+        *      - 'name'
+        *      - 'taxonomy'
+        *      Also, it can optionally contain:
+        *      - 'parent'
+        *      - 'description'
+        *      - 'slug'
+        * @return string term_id
+        */
+       function wp_newTerm( $args ) {
+               if ( ! $this->minimum_args( $args, 4 ) )
+                       return $this->error;
+
+               $this->escape( $args );
+
+               $blog_id            = (int) $args[0];
+               $username           = $args[1];
+               $password           = $args[2];
+               $content_struct     = $args[3];
+
+               if ( ! $user = $this->login( $username, $password ) )
+                       return $this->error;
+
+               do_action( 'xmlrpc_call', 'wp.newTerm' );
+
+               if ( ! taxonomy_exists( $content_struct['taxonomy'] ) )
+                       return new IXR_Error( 403, __( 'Invalid taxonomy' ) );
+
+               $taxonomy = get_taxonomy( $content_struct['taxonomy'] );
+
+               if ( ! current_user_can( $taxonomy->cap->manage_terms ) )
+                       return new IXR_Error( 401, __( 'You are not allowed to create terms in this taxonomy.' ) );
+
+               $taxonomy = (array) $taxonomy;
+
+               // hold the data of the term
+               $term_data = array();
+
+               $term_data['name'] = trim( $content_struct['name'] );
+               if ( empty( $term_data['name'] ) )
+                       return new IXR_Error( 403, __( 'The term name cannot be empty.' ) );
+
+               if ( isset( $content_struct['parent'] ) ) {
+                       if ( ! $taxonomy['hierarchical'] )
+                               return new IXR_Error( 403, __( 'This taxonomy is not hierarchical.' ) );
+
+                       $parent_term_id = (int) $content_struct['parent'];
+                       $parent_term = get_term( $parent_term_id , $taxonomy['name'] );
+
+                       if ( is_wp_error( $parent_term ) )
+                               return new IXR_Error( 500, $parent_term->get_error_message() );
+
+                       if ( ! $parent_term )
+                               return new IXR_Error( 403, __( 'Parent term does not exist.' ) );
+
+                       $term_data['parent'] = $content_struct['parent'];
+               }
+
+               if ( isset( $content_struct['description'] ) )
+                       $term_data['description'] = $content_struct['description'];
+
+               if ( isset( $content_struct['slug'] ) )
+                       $term_data['slug'] = $content_struct['slug'];
+
+               $term = wp_insert_term( $term_data['name'] , $taxonomy['name'] , $term_data );
+
+               if ( is_wp_error( $term ) )
+                       return new IXR_Error( 500, $term->get_error_message() );
+
+               if ( ! $term )
+                       return new IXR_Error( 500, __( 'Sorry, your term could not be created. Something wrong happened.' ) );
+
+               return strval( $term['term_id'] );
+       }
+
+       /**
+        * Edit a term.
+        *
+        * @since 3.4.0
+        *
+        * @uses wp_update_term()
+        * @param array $args Method parameters. Contains:
+        *  - int     $blog_id
+        *  - string  $username
+        *  - string  $password
+        *  - string  $term_id
+        *  - array   $content_struct
+        *      The $content_struct must contain:
+        *      - 'taxonomy'
+        *      Also, it can optionally contain:
+        *      - 'name'
+        *      - 'parent'
+        *      - 'description'
+        *      - 'slug'
+        * @return bool True, on success.
+        */
+       function wp_editTerm( $args ) {
+               if ( ! $this->minimum_args( $args, 5 ) )
+                       return $this->error;
+
+               $this->escape( $args );
+
+               $blog_id            = (int) $args[0];
+               $username           = $args[1];
+               $password           = $args[2];
+               $term_id            = (int) $args[3];
+               $content_struct     = $args[4];
+
+               if ( ! $user = $this->login( $username, $password ) )
+                       return $this->error;
+
+               do_action( 'xmlrpc_call', 'wp.editTerm' );
+
+               if ( ! taxonomy_exists( $content_struct['taxonomy'] ) )
+                       return new IXR_Error( 403, __( 'Invalid taxonomy' ) );
+
+               $taxonomy = get_taxonomy( $content_struct['taxonomy'] );
+
+               if ( ! current_user_can( $taxonomy->cap->edit_terms ) )
+                       return new IXR_Error( 401, __( 'You are not allowed to edit terms in this taxonomy.' ) );
+
+               $taxonomy = (array) $taxonomy;
+
+               // hold the data of the term
+               $term_data = array();
+
+               $term = get_term( $term_id , $content_struct['taxonomy'] );
+
+               if ( is_wp_error( $term ) )
+                       return new IXR_Error( 500, $term->get_error_message() );
+
+               if ( ! $term )
+                       return new IXR_Error( 404, __( 'Invalid term ID' ) );
+
+               if ( isset( $content_struct['name'] ) ) {
+                       $term_data['name'] = trim( $content_struct['name'] );
+
+                       if ( empty( $term_data['name'] ) )
+                               return new IXR_Error( 403, __( 'The term name cannot be empty.' ) );
+               }
+
+               if ( isset( $content_struct['parent'] ) ) {
+                       if ( ! $taxonomy['hierarchical'] )
+                               return new IXR_Error( 403, __( "This taxonomy is not hierarchical so you can't set a parent." ) );
+
+                       $parent_term_id = (int) $content_struct['parent'];
+                       $parent_term = get_term( $parent_term_id , $taxonomy['name'] );
+
+                       if ( is_wp_error( $parent_term ) )
+                               return new IXR_Error( 500, $parent_term->get_error_message() );
+
+                       if ( ! $parent_term )
+                               return new IXR_Error( 403, __( 'Parent term does not exist.' ) );
+
+                       $term_data['parent'] = $content_struct['parent'];
+               }
+
+               if ( isset( $content_struct['description'] ) )
+                       $term_data['description'] = $content_struct['description'];
+
+               if ( isset( $content_struct['slug'] ) )
+                       $term_data['slug'] = $content_struct['slug'];
+
+               $term = wp_update_term( $term_id , $taxonomy['name'] , $term_data );
+
+               if ( is_wp_error( $term ) )
+                       return new IXR_Error( 500, $term->get_error_message() );
+
+               if ( ! $term )
+                       return new IXR_Error( 500, __( 'Sorry, editing the term failed.' ) );
+
+               return true;
+       }
+
+       /**
+        * Delete a term.
+        *
+        * @since 3.4.0
+        *
+        * @uses wp_delete_term()
+        * @param array $args Method parameters. Contains:
+        *  - int     $blog_id
+        *  - string  $username
+        *  - string  $password
+        *  - string  $taxnomy_name
+        *  - string     $term_id
+        * @return boolean|IXR_Error If it suceeded true else a reason why not
+        */
+       function wp_deleteTerm( $args ) {
+               if ( ! $this->minimum_args( $args, 5 ) )
+                       return $this->error;
+
+               $this->escape( $args );
+
+               $blog_id            = (int) $args[0];
+               $username           = $args[1];
+               $password           = $args[2];
+               $taxonomy           = $args[3];
+               $term_id            = (int) $args[4];
+
+               if ( ! $user = $this->login( $username, $password ) )
+                       return $this->error;
+
+               do_action( 'xmlrpc_call', 'wp.deleteTerm' );
+
+               if ( ! taxonomy_exists( $taxonomy ) )
+                       return new IXR_Error( 403, __( 'Invalid taxonomy' ) );
+
+               $taxonomy = get_taxonomy( $taxonomy );
+
+               if ( ! current_user_can( $taxonomy->cap->delete_terms ) )
+                       return new IXR_Error( 401, __( 'You are not allowed to delete terms in this taxonomy.' ) );
+
+               $term = get_term( $term_id, $taxonomy->name );
+
+               if ( is_wp_error( $term ) )
+                       return new IXR_Error( 500, $term->get_error_message() );
+
+               if ( ! $term )
+                       return new IXR_Error( 404, __( 'Invalid term ID' ) );
+
+               $result = wp_delete_term( $term_id, $taxonomy->name );
+
+               if ( is_wp_error( $result ) )
+                       return new IXR_Error( 500, $term->get_error_message() );
+
+               if ( ! $result )
+                       return new IXR_Error( 500, __( 'Sorry, deleting the term failed.' ) );
+
+               return $result;
+       }
+
+       /**
+        * Retrieve a term.
+        *
+        * @since 3.4.0
+        *
+        * @uses get_term()
+        * @param array $args Method parameters. Contains:
+        *  - int     $blog_id
+        *  - string  $username
+        *  - string  $password
+        *  - string  $taxonomy
+        *  - string  $term_id
+        * @return array contains:
+        *  - 'term_id'
+        *  - 'name'
+        *  - 'slug'
+        *  - 'term_group'
+        *  - 'term_taxonomy_id'
+        *  - 'taxonomy'
+        *  - 'description'
+        *  - 'parent'
+        *  - 'count'
+        */
+       function wp_getTerm( $args ) {
+               if ( ! $this->minimum_args( $args, 5 ) )
+                       return $this->error;
+
+               $this->escape( $args );
+
+               $blog_id            = (int) $args[0];
+               $username           = $args[1];
+               $password           = $args[2];
+               $taxonomy           = $args[3];
+               $term_id            = (int) $args[4];
+
+               if ( ! $user = $this->login( $username, $password ) )
+                       return $this->error;
+
+               do_action( 'xmlrpc_call', 'wp.getTerm' );
+
+               if ( ! taxonomy_exists( $taxonomy ) )
+                       return new IXR_Error( 403, __( 'Invalid taxonomy' ) );
+
+               $taxonomy = get_taxonomy( $taxonomy );
+
+               if ( ! current_user_can( $taxonomy->cap->assign_terms ) )
+                       return new IXR_Error( 401, __( 'You are not allowed to assign terms in this taxonomy.' ) );
+
+               $term = get_term( $term_id , $taxonomy->name, ARRAY_A );
+
+               if ( is_wp_error( $term ) )
+                       return new IXR_Error( 500, $term->get_error_message() );
+
+               if ( ! $term )
+                       return new IXR_Error( 404, __( 'Invalid term ID' ) );
+
+               return $this->_prepare_term( $term );
+       }
+
+       /**
+        * Retrieve all terms for a taxonomy.
+        *
+        * @since 3.4.0
+        *
+        * The optional $filter parameter modifies the query used to retrieve terms.
+        * Accepted keys are 'number', 'offset', 'orderby', 'order', 'hide_empty', and 'search'.
+        *
+        * @uses get_terms()
+        * @param array $args Method parameters. Contains:
+        *  - int     $blog_id
+        *  - string  $username
+        *  - string  $password
+        *  - string  $taxonomy
+        *  - array   $filter optional
+        * @return array terms
+        */
+       function wp_getTerms( $args ) {
+               if ( ! $this->minimum_args( $args, 4 ) )
+                       return $this->error;
+
+               $this->escape( $args );
+
+               $blog_id        = (int) $args[0];
+               $username       = $args[1];
+               $password       = $args[2];
+               $taxonomy       = $args[3];
+               $filter         = isset( $args[4] ) ? $args[4] : array();
+
+               if ( ! $user = $this->login( $username, $password ) )
+                       return $this->error;
+
+               do_action( 'xmlrpc_call', 'wp.getTerms' );
+
+               if ( ! taxonomy_exists( $taxonomy ) )
+                       return new IXR_Error( 403, __( 'Invalid taxonomy' ) );
+
+               $taxonomy = get_taxonomy( $taxonomy );
+
+               if ( ! current_user_can( $taxonomy->cap->assign_terms ) )
+                       return new IXR_Error( 401, __( 'You are not allowed to assign terms in this taxonomy.' ) );
+
+               $query = array();
+
+               if ( isset( $filter['number'] ) )
+                       $query['number'] = absint( $filter['number'] );
+
+               if ( isset( $filter['offset'] ) )
+                       $query['offset'] = absint( $filter['offset'] );
+
+               if ( isset( $filter['orderby'] ) ) {
+                       $query['orderby'] = $filter['orderby'];
+
+                       if ( isset( $filter['order'] ) )
+                               $query['order'] = $filter['order'];
+               }
+
+               if ( isset( $filter['hide_empty'] ) )
+                       $query['hide_empty'] = $filter['hide_empty'];
+               else
+                       $query['get'] = 'all';
+
+               if ( isset( $filter['search'] ) )
+                       $query['search'] = $filter['search'];
+
+               $terms = get_terms( $taxonomy->name, $query );
+
+               if ( is_wp_error( $terms ) )
+                       return new IXR_Error( 500, $terms->get_error_message() );
+
+               $struct = array();
+
+               foreach ( $terms as $term ) {
+                       $struct[] = $this->_prepare_term( $term );
+               }
+
+               return $struct;
+       }
+
+       /**
+        * Retrieve a taxonomy.
+        *
+        * @since 3.4.0
+        *
+        * @uses get_taxonomy()
+        * @param array $args Method parameters. Contains:
+        *  - int     $blog_id
+        *  - string  $username
+        *  - string  $password
+        *  - string  $taxonomy
+        * @return array (@see get_taxonomy())
+        */
+       function wp_getTaxonomy( $args ) {
+               if ( ! $this->minimum_args( $args, 4 ) )
+                       return $this->error;
+
+               $this->escape( $args );
+
+               $blog_id        = (int) $args[0];
+               $username       = $args[1];
+               $password       = $args[2];
+               $taxonomy       = $args[3];
+
+               if ( isset( $args[4] ) )
+                       $fields = $args[4];
+               else
+                       $fields = apply_filters( 'xmlrpc_default_taxonomy_fields', array( 'labels', 'cap', 'object_type' ), 'wp.getTaxonomy' );
+
+               if ( ! $user = $this->login( $username, $password ) )
+                       return $this->error;
 
 
-                       // Updatable options
-                       'time_zone'                     => array(
-                               'desc'                  => __( 'Time Zone' ),
-                               'readonly'              => false,
-                               'option'                => 'gmt_offset'
-                       ),
-                       'blog_title'            => array(
-                               'desc'                  => __( 'Site Title' ),
-                               'readonly'              => false,
-                               'option'                        => 'blogname'
-                       ),
-                       'blog_tagline'          => array(
-                               'desc'                  => __( 'Site Tagline' ),
-                               'readonly'              => false,
-                               'option'                => 'blogdescription'
-                       ),
-                       'date_format'           => array(
-                               'desc'                  => __( 'Date Format' ),
-                               'readonly'              => false,
-                               'option'                => 'date_format'
-                       ),
-                       'time_format'           => array(
-                               'desc'                  => __( 'Time Format' ),
-                               'readonly'              => false,
-                               'option'                => 'time_format'
-                       ),
-                       'users_can_register'    => array(
-                               'desc'                  => __( 'Allow new users to sign up' ),
-                               'readonly'              => false,
-                               'option'                => 'users_can_register'
-                       ),
-                       'thumbnail_size_w'      => array(
-                               'desc'                  => __( 'Thumbnail Width' ),
-                               'readonly'              => false,
-                               'option'                => 'thumbnail_size_w'
-                       ),
-                       'thumbnail_size_h'      => array(
-                               'desc'                  => __( 'Thumbnail Height' ),
-                               'readonly'              => false,
-                               'option'                => 'thumbnail_size_h'
-                       ),
-                       'thumbnail_crop'        => array(
-                               'desc'                  => __( 'Crop thumbnail to exact dimensions' ),
-                               'readonly'              => false,
-                               'option'                => 'thumbnail_crop'
-                       ),
-                       'medium_size_w' => array(
-                               'desc'                  => __( 'Medium size image width' ),
-                               'readonly'              => false,
-                               'option'                => 'medium_size_w'
-                       ),
-                       'medium_size_h' => array(
-                               'desc'                  => __( 'Medium size image height' ),
-                               'readonly'              => false,
-                               'option'                => 'medium_size_h'
-                       ),
-                       'large_size_w'  => array(
-                               'desc'                  => __( 'Large size image width' ),
-                               'readonly'              => false,
-                               'option'                => 'large_size_w'
-                       ),
-                       'large_size_h'  => array(
-                               'desc'                  => __( 'Large size image height' ),
-                               'readonly'              => false,
-                               'option'                => 'large_size_h'
-                       )
-               );
+               do_action( 'xmlrpc_call', 'wp.getTaxonomy' );
 
 
-               $this->blog_options = apply_filters( 'xmlrpc_blog_options', $this->blog_options );
+               if ( ! taxonomy_exists( $taxonomy ) )
+                       return new IXR_Error( 403, __( 'Invalid taxonomy' ) );
+
+               $taxonomy = get_taxonomy( $taxonomy );
+
+               if ( ! current_user_can( $taxonomy->cap->assign_terms ) )
+                       return new IXR_Error( 401, __( 'You are not allowed to assign terms in this taxonomy.' ) );
+
+               return $this->_prepare_taxonomy( $taxonomy, $fields );
        }
 
        /**
        }
 
        /**
-        * Retrieve the blogs of the user.
+        * Retrieve all taxonomies.
         *
         *
-        * @since 2.6.0
+        * @since 3.4.0
         *
         *
+        * @uses get_taxonomies()
         * @param array $args Method parameters. Contains:
         * @param array $args Method parameters. Contains:
-        *  - username
-        *  - password
-        * @return array. Contains:
-        *  - 'isAdmin'
-        *  - 'url'
-        *  - 'blogid'
-        *  - 'blogName'
-        *  - 'xmlrpc' - url of xmlrpc endpoint
+        *  - int     $blog_id
+        *  - string  $username
+        *  - string  $password
+        * @return array taxonomies
         */
         */
-       function wp_getUsersBlogs( $args ) {
-               global $current_site;
-               // If this isn't on WPMU then just use blogger_getUsersBlogs
-               if ( !is_multisite() ) {
-                       array_unshift( $args, 1 );
-                       return $this->blogger_getUsersBlogs( $args );
-               }
+       function wp_getTaxonomies( $args ) {
+               if ( ! $this->minimum_args( $args, 3 ) )
+                       return $this->error;
 
                $this->escape( $args );
 
 
                $this->escape( $args );
 
-               $username = $args[0];
-               $password = $args[1];
+               $blog_id            = (int) $args[0];
+               $username           = $args[1];
+               $password           = $args[2];
+               $filter             = isset( $args[3] ) ? $args[3] : array( 'public' => true );
 
 
-               if ( !$user = $this->login($username, $password) )
+               if ( isset( $args[4] ) )
+                       $fields = $args[4];
+               else
+                       $fields = apply_filters( 'xmlrpc_default_taxonomy_fields', array( 'labels', 'cap', 'object_type' ), 'wp.getTaxonomies' );
+
+               if ( ! $user = $this->login( $username, $password ) )
                        return $this->error;
 
                        return $this->error;
 
+               do_action( 'xmlrpc_call', 'wp.getTaxonomies' );
 
 
-               do_action( 'xmlrpc_call', 'wp.getUsersBlogs' );
+               $taxonomies = get_taxonomies( $filter, 'objects' );
 
 
-               $blogs = (array) get_blogs_of_user( $user->ID );
-               $struct = array( );
+               // holds all the taxonomy data
+               $struct = array();
 
 
-               foreach ( $blogs as $blog ) {
-                       // Don't include blogs that aren't hosted at this site
-                       if ( $blog->site_id != $current_site->id )
+               foreach ( $taxonomies as $taxonomy ) {
+                       // capability check for post_types
+                       if ( ! current_user_can( $taxonomy->cap->assign_terms ) )
                                continue;
 
                                continue;
 
-                       $blog_id = $blog->userblog_id;
-                       switch_to_blog($blog_id);
-                       $is_admin = current_user_can('manage_options');
-
-                       $struct[] = array(
-                               'isAdmin'               => $is_admin,
-                               'url'                   => get_option( 'home' ) . '/',
-                               'blogid'                => (string) $blog_id,
-                               'blogName'              => get_option( 'blogname' ),
-                               'xmlrpc'                => site_url( 'xmlrpc.php' )
-                       );
-
-                       restore_current_blog( );
+                       $struct[] = $this->_prepare_taxonomy( $taxonomy, $fields );
                }
 
                return $struct;
                }
 
                return $struct;
@@ -461,80 +1935,18 @@ class wp_xmlrpc_server extends IXR_Server {
                        return $this->error;
                }
 
                        return $this->error;
                }
 
+               $page = get_page($page_id);
+               if ( ! $page )
+                       return new IXR_Error( 404, __( 'Invalid post ID.' ) );
+
                if ( !current_user_can( 'edit_page', $page_id ) )
                        return new IXR_Error( 401, __( 'Sorry, you cannot edit this page.' ) );
 
                do_action('xmlrpc_call', 'wp.getPage');
 
                if ( !current_user_can( 'edit_page', $page_id ) )
                        return new IXR_Error( 401, __( 'Sorry, you cannot edit this page.' ) );
 
                do_action('xmlrpc_call', 'wp.getPage');
 
-               // Lookup page info.
-               $page = get_page($page_id);
-
                // If we found the page then format the data.
                if ( $page->ID && ($page->post_type == 'page') ) {
                // If we found the page then format the data.
                if ( $page->ID && ($page->post_type == 'page') ) {
-                       // Get all of the page content and link.
-                       $full_page = get_extended($page->post_content);
-                       $link = post_permalink($page->ID);
-
-                       // Get info the page parent if there is one.
-                       $parent_title = "";
-                       if ( !empty($page->post_parent) ) {
-                               $parent = get_page($page->post_parent);
-                               $parent_title = $parent->post_title;
-                       }
-
-                       // Determine comment and ping settings.
-                       $allow_comments = comments_open($page->ID) ? 1 : 0;
-                       $allow_pings = pings_open($page->ID) ? 1 : 0;
-
-                       // Format page date.
-                       $page_date = mysql2date('Ymd\TH:i:s', $page->post_date, false);
-                       $page_date_gmt = mysql2date('Ymd\TH:i:s', $page->post_date_gmt, false);
-
-                       // For drafts use the GMT version of the date
-                       if ( $page->post_status == 'draft' )
-                               $page_date_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $page->post_date ), 'Ymd\TH:i:s' );
-
-                       // Pull the categories info together.
-                       $categories = array();
-                       foreach ( wp_get_post_categories($page->ID) as $cat_id ) {
-                               $categories[] = get_cat_name($cat_id);
-                       }
-
-                       // Get the author info.
-                       $author = get_userdata($page->post_author);
-
-                       $page_template = get_post_meta( $page->ID, '_wp_page_template', true );
-                       if ( empty( $page_template ) )
-                               $page_template = 'default';
-
-                       $page_struct = array(
-                               'dateCreated'                   => new IXR_Date($page_date),
-                               'userid'                                => $page->post_author,
-                               'page_id'                               => $page->ID,
-                               'page_status'                   => $page->post_status,
-                               'description'                   => $full_page['main'],
-                               'title'                                 => $page->post_title,
-                               'link'                                  => $link,
-                               'permaLink'                             => $link,
-                               'categories'                    => $categories,
-                               'excerpt'                               => $page->post_excerpt,
-                               'text_more'                             => $full_page['extended'],
-                               'mt_allow_comments'             => $allow_comments,
-                               'mt_allow_pings'                => $allow_pings,
-                               'wp_slug'                               => $page->post_name,
-                               'wp_password'                   => $page->post_password,
-                               'wp_author'                             => $author->display_name,
-                               'wp_page_parent_id'             => $page->post_parent,
-                               'wp_page_parent_title'  => $parent_title,
-                               'wp_page_order'                 => $page->menu_order,
-                               'wp_author_id'                  => (string) $author->ID,
-                               'wp_author_display_name'        => $author->display_name,
-                               'date_created_gmt'              => new IXR_Date($page_date_gmt),
-                               'custom_fields'                 => $this->get_custom_fields($page_id),
-                               'wp_page_template'              => $page_template
-                       );
-
-                       return($page_struct);
+                       return $this->_prepare_page( $page );
                }
                // If the page doesn't exist indicate that.
                else {
                }
                // If the page doesn't exist indicate that.
                else {
@@ -577,11 +1989,9 @@ class wp_xmlrpc_server extends IXR_Server {
                if ( $num_pages >= 1 ) {
                        $pages_struct = array();
 
                if ( $num_pages >= 1 ) {
                        $pages_struct = array();
 
-                       for ( $i = 0; $i < $num_pages; $i++ ) {
-                               $page = wp_xmlrpc_server::wp_getPage(array(
-                                       $blog_id, $pages[$i]->ID, $username, $password
-                               ));
-                               $pages_struct[] = $page;
+                       foreach ($pages as $page) {
+                               if ( current_user_can( 'edit_page', $page->ID ) )
+                                       $pages_struct[] = $this->_prepare_page( $page );
                        }
 
                        return($pages_struct);
                        }
 
                        return($pages_struct);
@@ -612,10 +2022,6 @@ class wp_xmlrpc_server extends IXR_Server {
 
                do_action('xmlrpc_call', 'wp.newPage');
 
 
                do_action('xmlrpc_call', 'wp.newPage');
 
-               // Make sure the user is allowed to add new pages.
-               if ( !current_user_can('publish_pages') )
-                       return(new IXR_Error(401, __('Sorry, you cannot add new pages.')));
-
                // Mark this as content for a page.
                $args[3]["post_type"] = 'page';
 
                // Mark this as content for a page.
                $args[3]["post_type"] = 'page';
 
@@ -659,6 +2065,8 @@ class wp_xmlrpc_server extends IXR_Server {
                if ( !$result )
                        return(new IXR_Error(500, __('Failed to delete the page.')));
 
                if ( !$result )
                        return(new IXR_Error(500, __('Failed to delete the page.')));
 
+               do_action( 'xmlrpc_call_success_wp_deletePage', $page_id, $args );
+
                return(true);
        }
 
                return(true);
        }
 
@@ -750,17 +2158,8 @@ class wp_xmlrpc_server extends IXR_Server {
                // The date needs to be formatted properly.
                $num_pages = count($page_list);
                for ( $i = 0; $i < $num_pages; $i++ ) {
                // The date needs to be formatted properly.
                $num_pages = count($page_list);
                for ( $i = 0; $i < $num_pages; $i++ ) {
-                       $post_date = mysql2date('Ymd\TH:i:s', $page_list[$i]->post_date, false);
-                       $post_date_gmt = mysql2date('Ymd\TH:i:s', $page_list[$i]->post_date_gmt, false);
-
-                       $page_list[$i]->dateCreated = new IXR_Date($post_date);
-                       $page_list[$i]->date_created_gmt = new IXR_Date($post_date_gmt);
-
-                       // For drafts use the GMT version of the date
-                       if ( $page_list[$i]->post_status == 'draft' ) {
-                               $page_list[$i]->date_created_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $page_list[$i]->post_date ), 'Ymd\TH:i:s' );
-                               $page_list[$i]->date_created_gmt = new IXR_Date( $page_list[$i]->date_created_gmt );
-                       }
+                       $page_list[$i]->dateCreated = $this->_convert_date(  $page_list[$i]->post_date );
+                       $page_list[$i]->date_created_gmt = $this->_convert_date_gmt( $page_list[$i]->post_date_gmt, $page_list[$i]->post_date );
 
                        unset($page_list[$i]->post_date_gmt);
                        unset($page_list[$i]->post_date);
 
                        unset($page_list[$i]->post_date_gmt);
                        unset($page_list[$i]->post_date);
@@ -809,7 +2208,7 @@ class wp_xmlrpc_server extends IXR_Server {
        /**
         * Get list of all tags
         *
        /**
         * Get list of all tags
         *
-        * @since 2.7
+        * @since 2.7.0
         *
         * @param array $args Method parameters.
         * @return array
         *
         * @param array $args Method parameters.
         * @return array
@@ -829,7 +2228,7 @@ class wp_xmlrpc_server extends IXR_Server {
 
                do_action( 'xmlrpc_call', 'wp.getKeywords' );
 
 
                do_action( 'xmlrpc_call', 'wp.getKeywords' );
 
-               $tags = array( );
+               $tags = array();
 
                if ( $all_tags = get_tags() ) {
                        foreach( (array) $all_tags as $tag ) {
 
                if ( $all_tags = get_tags() ) {
                        foreach( (array) $all_tags as $tag ) {
@@ -903,7 +2302,9 @@ class wp_xmlrpc_server extends IXR_Server {
                        return(new IXR_Error(500, __('Sorry, the new category failed.')));
                }
 
                        return(new IXR_Error(500, __('Sorry, the new category failed.')));
                }
 
-               return($cat_id);
+               do_action( 'xmlrpc_call_success_wp_newCategory', $cat_id, $args );
+
+               return $cat_id;
        }
 
        /**
        }
 
        /**
@@ -930,7 +2331,12 @@ class wp_xmlrpc_server extends IXR_Server {
                if ( !current_user_can('manage_categories') )
                        return new IXR_Error( 401, __( 'Sorry, you do not have the right to delete a category.' ) );
 
                if ( !current_user_can('manage_categories') )
                        return new IXR_Error( 401, __( 'Sorry, you do not have the right to delete a category.' ) );
 
-               return wp_delete_term( $category_id, 'category' );
+               $status = wp_delete_term( $category_id, 'category' );
+
+               if( true == $status )
+                       do_action( 'xmlrpc_call_success_wp_deleteCategory', $category_id, $args );
+
+               return $status;
        }
 
        /**
        }
 
        /**
@@ -997,39 +2403,7 @@ class wp_xmlrpc_server extends IXR_Server {
                if ( ! $comment = get_comment($comment_id) )
                        return new IXR_Error( 404, __( 'Invalid comment ID.' ) );
 
                if ( ! $comment = get_comment($comment_id) )
                        return new IXR_Error( 404, __( 'Invalid comment ID.' ) );
 
-               // Format page date.
-               $comment_date = mysql2date('Ymd\TH:i:s', $comment->comment_date, false);
-               $comment_date_gmt = mysql2date('Ymd\TH:i:s', $comment->comment_date_gmt, false);
-
-               if ( '0' == $comment->comment_approved )
-                       $comment_status = 'hold';
-               else if ( 'spam' == $comment->comment_approved )
-                       $comment_status = 'spam';
-               else if ( '1' == $comment->comment_approved )
-                       $comment_status = 'approve';
-               else
-                       $comment_status = $comment->comment_approved;
-
-               $link = get_comment_link($comment);
-
-               $comment_struct = array(
-                       'date_created_gmt'              => new IXR_Date($comment_date_gmt),
-                       'user_id'                               => $comment->user_id,
-                       'comment_id'                    => $comment->comment_ID,
-                       'parent'                                => $comment->comment_parent,
-                       'status'                                => $comment_status,
-                       'content'                               => $comment->comment_content,
-                       'link'                                  => $link,
-                       'post_id'                               => $comment->comment_post_ID,
-                       'post_title'                    => get_the_title($comment->comment_post_ID),
-                       'author'                                => $comment->comment_author,
-                       'author_url'                    => $comment->comment_author_url,
-                       'author_email'                  => $comment->comment_author_email,
-                       'author_ip'                             => $comment->comment_author_IP,
-                       'type'                                  => $comment->comment_type,
-               );
-
-               return $comment_struct;
+               return $this->_prepare_comment( $comment );
        }
 
        /**
        }
 
        /**
@@ -1052,13 +2426,12 @@ class wp_xmlrpc_server extends IXR_Server {
         * @return array. Contains a collection of comments. See {@link wp_xmlrpc_server::wp_getComment()} for a description of each item contents
         */
        function wp_getComments($args) {
         * @return array. Contains a collection of comments. See {@link wp_xmlrpc_server::wp_getComment()} for a description of each item contents
         */
        function wp_getComments($args) {
-               $raw_args = $args;
                $this->escape($args);
 
                $blog_id        = (int) $args[0];
                $username       = $args[1];
                $password       = $args[2];
                $this->escape($args);
 
                $blog_id        = (int) $args[0];
                $username       = $args[1];
                $password       = $args[2];
-               $struct         = $args[3];
+               $struct         = isset( $args[3] ) ? $args[3] : array();
 
                if ( !$user = $this->login($username, $password) )
                        return $this->error;
 
                if ( !$user = $this->login($username, $password) )
                        return $this->error;
@@ -1086,19 +2459,11 @@ class wp_xmlrpc_server extends IXR_Server {
                        $number = absint($struct['number']);
 
                $comments = get_comments( array('status' => $status, 'post_id' => $post_id, 'offset' => $offset, 'number' => $number ) );
                        $number = absint($struct['number']);
 
                $comments = get_comments( array('status' => $status, 'post_id' => $post_id, 'offset' => $offset, 'number' => $number ) );
-               $num_comments = count($comments);
-
-               if ( ! $num_comments )
-                       return array();
 
                $comments_struct = array();
 
 
                $comments_struct = array();
 
-    // FIXME: we already have the comments, why query them again?
-               for ( $i = 0; $i < $num_comments; $i++ ) {
-                       $comment = wp_xmlrpc_server::wp_getComment(array(
-                               $raw_args[0], $raw_args[1], $raw_args[2], $comments[$i]->comment_ID,
-                       ));
-                       $comments_struct[] = $comment;
+               foreach ( $comments as $comment ) {
+                       $comments_struct[] = $this->_prepare_comment( $comment );
                }
 
                return $comments_struct;
                }
 
                return $comments_struct;
@@ -1142,7 +2507,12 @@ class wp_xmlrpc_server extends IXR_Server {
 
                do_action('xmlrpc_call', 'wp.deleteComment');
 
 
                do_action('xmlrpc_call', 'wp.deleteComment');
 
-               return wp_delete_comment($comment_ID);
+               $status = wp_delete_comment( $comment_ID );
+
+               if( true == $status )
+                       do_action( 'xmlrpc_call_success_wp_deleteComment', $comment_ID, $args );
+
+               return $status;
        }
 
        /**
        }
 
        /**
@@ -1203,7 +2573,8 @@ class wp_xmlrpc_server extends IXR_Server {
 
                // Do some timestamp voodoo
                if ( !empty( $content_struct['date_created_gmt'] ) ) {
 
                // Do some timestamp voodoo
                if ( !empty( $content_struct['date_created_gmt'] ) ) {
-                       $dateCreated = str_replace( 'Z', '', $content_struct['date_created_gmt']->getIso() ) . 'Z'; // We know this is supposed to be GMT, so we're going to slap that Z on there by force
+                       // We know this is supposed to be GMT, so we're going to slap that Z on there by force
+                       $dateCreated = rtrim( $content_struct['date_created_gmt']->getIso(), 'Z' ) . 'Z';
                        $comment_date = get_date_from_gmt(iso8601_to_datetime($dateCreated));
                        $comment_date_gmt = iso8601_to_datetime($dateCreated, 'GMT');
                }
                        $comment_date = get_date_from_gmt(iso8601_to_datetime($dateCreated));
                        $comment_date_gmt = iso8601_to_datetime($dateCreated, 'GMT');
                }
@@ -1230,6 +2601,8 @@ class wp_xmlrpc_server extends IXR_Server {
                if ( !$result )
                        return new IXR_Error(500, __('Sorry, the comment could not be edited. Something wrong happened.'));
 
                if ( !$result )
                        return new IXR_Error(500, __('Sorry, the comment could not be edited. Something wrong happened.'));
 
+               do_action( 'xmlrpc_call_success_wp_editComment', $comment_ID, $args );
+
                return true;
        }
 
                return true;
        }
 
@@ -1313,7 +2686,11 @@ class wp_xmlrpc_server extends IXR_Server {
 
                do_action('xmlrpc_call', 'wp.newComment');
 
 
                do_action('xmlrpc_call', 'wp.newComment');
 
-               return wp_new_comment($comment);
+               $comment_ID = wp_new_comment( $comment );
+
+               do_action( 'xmlrpc_call_success_wp_newComment', $comment_ID, $args );
+
+               return $comment_ID;
        }
 
        /**
        }
 
        /**
@@ -1339,7 +2716,7 @@ class wp_xmlrpc_server extends IXR_Server {
 
                do_action('xmlrpc_call', 'wp.getCommentStatusList');
 
 
                do_action('xmlrpc_call', 'wp.getCommentStatusList');
 
-               return get_comment_statuses( );
+               return get_comment_statuses();
        }
 
        /**
        }
 
        /**
@@ -1398,7 +2775,7 @@ class wp_xmlrpc_server extends IXR_Server {
 
                do_action('xmlrpc_call', 'wp.getPostStatusList');
 
 
                do_action('xmlrpc_call', 'wp.getPostStatusList');
 
-               return get_post_statuses( );
+               return get_post_statuses();
        }
 
        /**
        }
 
        /**
@@ -1424,7 +2801,7 @@ class wp_xmlrpc_server extends IXR_Server {
 
                do_action('xmlrpc_call', 'wp.getPageStatusList');
 
 
                do_action('xmlrpc_call', 'wp.getPageStatusList');
 
-               return get_page_statuses( );
+               return get_page_statuses();
        }
 
        /**
        }
 
        /**
@@ -1448,7 +2825,7 @@ class wp_xmlrpc_server extends IXR_Server {
                if ( !current_user_can( 'edit_pages' ) )
                        return new IXR_Error( 403, __( 'You are not allowed access to details about this site.' ) );
 
                if ( !current_user_can( 'edit_pages' ) )
                        return new IXR_Error( 403, __( 'You are not allowed access to details about this site.' ) );
 
-               $templates = get_page_templates( );
+               $templates = get_page_templates();
                $templates['Default'] = 'default';
 
                return $templates;
                $templates['Default'] = 'default';
 
                return $templates;
@@ -1489,7 +2866,7 @@ class wp_xmlrpc_server extends IXR_Server {
         * @return array
         */
        function _getOptions($options) {
         * @return array
         */
        function _getOptions($options) {
-               $data = array( );
+               $data = array();
                foreach ( $options as $option ) {
                        if ( array_key_exists( $option, $this->blog_options ) ) {
                                $data[$option] = $this->blog_options[$option];
                foreach ( $options as $option ) {
                        if ( array_key_exists( $option, $this->blog_options ) ) {
                                $data[$option] = $this->blog_options[$option];
@@ -1573,32 +2950,14 @@ class wp_xmlrpc_server extends IXR_Server {
                        return $this->error;
 
                if ( !current_user_can( 'upload_files' ) )
                        return $this->error;
 
                if ( !current_user_can( 'upload_files' ) )
-                       return new IXR_Error( 403, __( 'You are not allowed to upload files to this site.' ) );
+                       return new IXR_Error( 403, __( 'You do not have permission to upload files.' ) );
 
                do_action('xmlrpc_call', 'wp.getMediaItem');
 
                if ( ! $attachment = get_post($attachment_id) )
                        return new IXR_Error( 404, __( 'Invalid attachment ID.' ) );
 
 
                do_action('xmlrpc_call', 'wp.getMediaItem');
 
                if ( ! $attachment = get_post($attachment_id) )
                        return new IXR_Error( 404, __( 'Invalid attachment ID.' ) );
 
-               // Format page date.
-               $attachment_date = mysql2date('Ymd\TH:i:s', $attachment->post_date, false);
-               $attachment_date_gmt = mysql2date('Ymd\TH:i:s', $attachment->post_date_gmt, false);
-
-               $link = wp_get_attachment_url($attachment->ID);
-               $thumbnail_link = wp_get_attachment_thumb_url($attachment->ID);
-
-               $attachment_struct = array(
-                       'date_created_gmt'              => new IXR_Date($attachment_date_gmt),
-                       'parent'                                => $attachment->post_parent,
-                       'link'                                  => $link,
-                       'thumbnail'                             => $thumbnail_link,
-                       'title'                                 => $attachment->post_title,
-                       'caption'                               => $attachment->post_excerpt,
-                       'description'                   => $attachment->post_content,
-                       'metadata'                              => wp_get_attachment_metadata($attachment->ID),
-               );
-
-               return $attachment_struct;
+               return $this->_prepare_media_item( $attachment );
        }
 
        /**
        }
 
        /**
@@ -1625,7 +2984,6 @@ class wp_xmlrpc_server extends IXR_Server {
         * @return array. Contains a collection of media items. See {@link wp_xmlrpc_server::wp_getMediaItem()} for a description of each item contents
         */
        function wp_getMediaLibrary($args) {
         * @return array. Contains a collection of media items. See {@link wp_xmlrpc_server::wp_getMediaItem()} for a description of each item contents
         */
        function wp_getMediaLibrary($args) {
-               $raw_args = $args;
                $this->escape($args);
 
                $blog_id        = (int) $args[0];
                $this->escape($args);
 
                $blog_id        = (int) $args[0];
@@ -1637,7 +2995,7 @@ class wp_xmlrpc_server extends IXR_Server {
                        return $this->error;
 
                if ( !current_user_can( 'upload_files' ) )
                        return $this->error;
 
                if ( !current_user_can( 'upload_files' ) )
-                       return new IXR_Error( 401, __( 'Sorry, you cannot upload files.' ) );
+                       return new IXR_Error( 401, __( 'You do not have permission to upload files.' ) );
 
                do_action('xmlrpc_call', 'wp.getMediaLibrary');
 
 
                do_action('xmlrpc_call', 'wp.getMediaLibrary');
 
@@ -1647,15 +3005,11 @@ class wp_xmlrpc_server extends IXR_Server {
                $number = ( isset($struct['number']) ) ? absint($struct['number']) : -1 ;
 
                $attachments = get_posts( array('post_type' => 'attachment', 'post_parent' => $parent_id, 'offset' => $offset, 'numberposts' => $number, 'post_mime_type' => $mime_type ) );
                $number = ( isset($struct['number']) ) ? absint($struct['number']) : -1 ;
 
                $attachments = get_posts( array('post_type' => 'attachment', 'post_parent' => $parent_id, 'offset' => $offset, 'numberposts' => $number, 'post_mime_type' => $mime_type ) );
-               $num_attachments = count($attachments);
-
-               if ( ! $num_attachments )
-                       return array();
 
                $attachments_struct = array();
 
                foreach ($attachments as $attachment )
 
                $attachments_struct = array();
 
                foreach ($attachments as $attachment )
-                       $attachments_struct[] = $this->wp_getMediaItem( array( $raw_args[0], $raw_args[1], $raw_args[2], $attachment->ID ) );
+                       $attachments_struct[] = $this->_prepare_media_item( $attachment );
 
                return $attachments_struct;
        }
 
                return $attachments_struct;
        }
@@ -1681,6 +3035,9 @@ class wp_xmlrpc_server extends IXR_Server {
                if ( !$user = $this->login( $username, $password ) )
                        return $this->error;
 
                if ( !$user = $this->login( $username, $password ) )
                        return $this->error;
 
+               if ( !current_user_can( 'edit_posts' ) )
+                       return new IXR_Error( 403, __( 'You are not allowed access to details about this site.' ) );
+
                do_action( 'xmlrpc_call', 'wp.getPostFormats' );
 
                $formats = get_post_format_strings();
                do_action( 'xmlrpc_call', 'wp.getPostFormats' );
 
                $formats = get_post_format_strings();
@@ -1702,6 +3059,110 @@ class wp_xmlrpc_server extends IXR_Server {
                return $formats;
        }
 
                return $formats;
        }
 
+       /**
+        * Retrieves a post type
+        *
+        * @since 3.4.0
+        *
+        * @uses get_post_type_object()
+        * @param array $args Method parameters. Contains:
+        *  - int     $blog_id
+        *  - string  $username
+        *  - string  $password
+        *  - string  $post_type_name
+        *  - array   $fields
+        * @return array contains:
+        *  - 'labels'
+        *  - 'description'
+        *  - 'capability_type'
+        *  - 'cap'
+        *  - 'map_meta_cap'
+        *  - 'hierarchical'
+        *  - 'menu_position'
+        *  - 'taxonomies'
+        *  - 'supports'
+        */
+       function wp_getPostType( $args ) {
+               if ( ! $this->minimum_args( $args, 4 ) )
+                       return $this->error;
+
+               $this->escape( $args );
+
+               $blog_id        = (int) $args[0];
+               $username       = $args[1];
+               $password       = $args[2];
+               $post_type_name = $args[3];
+
+               if ( isset( $args[4] ) )
+                       $fields = $args[4];
+               else
+                       $fields = apply_filters( 'xmlrpc_default_posttype_fields', array( 'labels', 'cap', 'taxonomies' ), 'wp.getPostType' );
+
+               if ( !$user = $this->login( $username, $password ) )
+                       return $this->error;
+
+               do_action( 'xmlrpc_call', 'wp.getPostType' );
+
+               if( ! post_type_exists( $post_type_name ) )
+                       return new IXR_Error( 403, __( 'Invalid post type' ) );
+
+               $post_type = get_post_type_object( $post_type_name );
+
+               if( ! current_user_can( $post_type->cap->edit_posts ) )
+                       return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit this post type.' ) );
+
+               return $this->_prepare_post_type( $post_type, $fields );
+       }
+
+       /**
+        * Retrieves a post types
+        *
+        * @since 3.4.0
+        *
+        * @uses get_post_types()
+        * @param array $args Method parameters. Contains:
+        *  - int     $blog_id
+        *  - string  $username
+        *  - string  $password
+        *  - array   $filter
+        *  - array   $fields
+        * @return array
+        */
+       function wp_getPostTypes( $args ) {
+               if ( ! $this->minimum_args( $args, 3 ) )
+                       return $this->error;
+
+               $this->escape( $args );
+
+               $blog_id            = (int) $args[0];
+               $username           = $args[1];
+               $password           = $args[2];
+               $filter             = isset( $args[3] ) ? $args[3] : array( 'public' => true );
+
+               if ( isset( $args[4] ) )
+                       $fields = $args[4];
+               else
+                       $fields = apply_filters( 'xmlrpc_default_posttype_fields', array( 'labels', 'cap', 'taxonomies' ), 'wp.getPostTypes' );
+
+               if ( ! $user = $this->login( $username, $password ) )
+                       return $this->error;
+
+               do_action( 'xmlrpc_call', 'wp.getPostTypes' );
+
+               $post_types = get_post_types( $filter, 'objects' );
+
+               $struct = array();
+
+               foreach( $post_types as $post_type ) {
+                       if( ! current_user_can( $post_type->cap->edit_posts ) )
+                               continue;
+
+                       $struct[$post_type->name] = $this->_prepare_post_type( $post_type, $fields );
+               }
+
+               return $struct;
+       }
+
        /* Blogger API functions.
         * specs on http://plant.blogger.com/api and http://groups.yahoo.com/group/bloggerDev/
         */
        /* Blogger API functions.
         * specs on http://plant.blogger.com/api and http://groups.yahoo.com/group/bloggerDev/
         */
@@ -1827,13 +3288,15 @@ class wp_xmlrpc_server extends IXR_Server {
                if ( !$user = $this->login($username, $password) )
                        return $this->error;
 
                if ( !$user = $this->login($username, $password) )
                        return $this->error;
 
+               $post_data = wp_get_single_post($post_ID, ARRAY_A);
+               if ( ! $post_data )
+                       return new IXR_Error( 404, __( 'Invalid post ID.' ) );
+
                if ( !current_user_can( 'edit_post', $post_ID ) )
                        return new IXR_Error( 401, __( 'Sorry, you cannot edit this post.' ) );
 
                do_action('xmlrpc_call', 'blogger.getPost');
 
                if ( !current_user_can( 'edit_post', $post_ID ) )
                        return new IXR_Error( 401, __( 'Sorry, you cannot edit this post.' ) );
 
                do_action('xmlrpc_call', 'blogger.getPost');
 
-               $post_data = wp_get_single_post($post_ID, ARRAY_A);
-
                $categories = implode(',', wp_get_post_categories($post_ID));
 
                $content  = '<title>'.stripslashes($post_data['post_title']).'</title>';
                $categories = implode(',', wp_get_post_categories($post_ID));
 
                $content  = '<title>'.stripslashes($post_data['post_title']).'</title>';
@@ -1842,7 +3305,7 @@ class wp_xmlrpc_server extends IXR_Server {
 
                $struct = array(
                        'userid'    => $post_data['post_author'],
 
                $struct = array(
                        'userid'    => $post_data['post_author'],
-                       'dateCreated' => new IXR_Date(mysql2date('Ymd\TH:i:s', $post_data['post_date'], false)),
+                       'dateCreated' => $this->_convert_date( $post_data['post_date'] ),
                        'content'     => $content,
                        'postid'  => (string) $post_data['ID']
                );
                        'content'     => $content,
                        'postid'  => (string) $post_data['ID']
                );
@@ -1887,7 +3350,7 @@ class wp_xmlrpc_server extends IXR_Server {
                        if ( !current_user_can( 'edit_post', $entry['ID'] ) )
                                continue;
 
                        if ( !current_user_can( 'edit_post', $entry['ID'] ) )
                                continue;
 
-                       $post_date = mysql2date('Ymd\TH:i:s', $entry['post_date'], false);
+                       $post_date  = $this->_convert_date( $entry['post_date'] );
                        $categories = implode(',', wp_get_post_categories($entry['ID']));
 
                        $content  = '<title>'.stripslashes($entry['post_title']).'</title>';
                        $categories = implode(',', wp_get_post_categories($entry['ID']));
 
                        $content  = '<title>'.stripslashes($entry['post_title']).'</title>';
@@ -1896,7 +3359,7 @@ class wp_xmlrpc_server extends IXR_Server {
 
                        $struct[] = array(
                                'userid' => $entry['post_author'],
 
                        $struct[] = array(
                                'userid' => $entry['post_author'],
-                               'dateCreated' => new IXR_Date($post_date),
+                               'dateCreated' => $post_date,
                                'content' => $content,
                                'postid' => (string) $entry['ID'],
                        );
                                'content' => $content,
                                'postid' => (string) $entry['ID'],
                        );
@@ -1934,7 +3397,7 @@ class wp_xmlrpc_server extends IXR_Server {
                do_action('xmlrpc_call', 'blogger.getTemplate');
 
                if ( !current_user_can('edit_themes') )
                do_action('xmlrpc_call', 'blogger.getTemplate');
 
                if ( !current_user_can('edit_themes') )
-                       return new IXR_Error(401, __('Sorry, this user can not edit the template.'));
+                       return new IXR_Error(401, __('Sorry, this user cannot edit the template.'));
 
                /* warning: here we make the assumption that the blog's URL is on the same server */
                $filename = get_option('home') . '/';
 
                /* warning: here we make the assumption that the blog's URL is on the same server */
                $filename = get_option('home') . '/';
@@ -1945,7 +3408,7 @@ class wp_xmlrpc_server extends IXR_Server {
                fclose($f);
 
                /* so it is actually editable with a windows/mac client */
                fclose($f);
 
                /* so it is actually editable with a windows/mac client */
-               // FIXME: (or delete me) do we really want to cater to bad clients at the expense of good ones by BEEPing up their line breaks? commented.     $content = str_replace("\n", "\r\n", $content);
+               // FIXME: (or delete me) do we really want to cater to bad clients at the expense of good ones by BEEPing up their line breaks? commented. $content = str_replace("\n", "\r\n", $content);
 
                return $content;
        }
 
                return $content;
        }
@@ -2039,7 +3502,7 @@ class wp_xmlrpc_server extends IXR_Server {
 
                $this->attach_uploads( $post_ID, $post_content );
 
 
                $this->attach_uploads( $post_ID, $post_content );
 
-               logIO('O', "Posted ! ID: $post_ID");
+               do_action( 'xmlrpc_call_success_blogger_newPost', $post_ID, $args );
 
                return $post_ID;
        }
 
                return $post_ID;
        }
@@ -2095,6 +3558,8 @@ class wp_xmlrpc_server extends IXR_Server {
 
                $this->attach_uploads( $ID, $post_content );
 
 
                $this->attach_uploads( $ID, $post_content );
 
+               do_action( 'xmlrpc_call_success_blogger_editPost', $post_ID, $args );
+
                return true;
        }
 
                return true;
        }
 
@@ -2132,6 +3597,8 @@ class wp_xmlrpc_server extends IXR_Server {
                if ( !$result )
                        return new IXR_Error(500, __('For some strange yet very annoying reason, this post could not be deleted.'));
 
                if ( !$result )
                        return new IXR_Error(500, __('For some strange yet very annoying reason, this post could not be deleted.'));
 
+               do_action( 'xmlrpc_call_success_blogger_deletePost', $post_ID, $args );
+
                return true;
        }
 
                return true;
        }
 
@@ -2162,6 +3629,7 @@ class wp_xmlrpc_server extends IXR_Server {
         *  - mt_allow_pings - can be 'open' or 'closed'
         *  - date_created_gmt
         *  - dateCreated
         *  - mt_allow_pings - can be 'open' or 'closed'
         *  - date_created_gmt
         *  - dateCreated
+        *  - wp_post_thumbnail
         *
         * @since 1.5.0
         *
         *
         * @since 1.5.0
         *
@@ -2176,7 +3644,7 @@ class wp_xmlrpc_server extends IXR_Server {
        function mw_newPost($args) {
                $this->escape($args);
 
        function mw_newPost($args) {
                $this->escape($args);
 
-               $blog_ID     = (int) $args[0]; // we will support this in the near future
+               $blog_ID     = (int) $args[0];
                $username  = $args[1];
                $password   = $args[2];
                $content_struct = $args[3];
                $username  = $args[1];
                $password   = $args[2];
                $content_struct = $args[3];
@@ -2192,7 +3660,7 @@ class wp_xmlrpc_server extends IXR_Server {
                        if ( $content_struct['post_type'] == 'page' ) {
                                if ( $publish )
                                        $cap  = 'publish_pages';
                        if ( $content_struct['post_type'] == 'page' ) {
                                if ( $publish )
                                        $cap  = 'publish_pages';
-                               elseif ('publish' == $content_struct['page_status'])
+                               elseif ( isset( $content_struct['page_status'] ) && 'publish' == $content_struct['page_status'] )
                                        $cap  = 'publish_pages';
                                else
                                        $cap = 'edit_pages';
                                        $cap  = 'publish_pages';
                                else
                                        $cap = 'edit_pages';
@@ -2203,7 +3671,7 @@ class wp_xmlrpc_server extends IXR_Server {
                        } elseif ( $content_struct['post_type'] == 'post' ) {
                                if ( $publish )
                                        $cap  = 'publish_posts';
                        } elseif ( $content_struct['post_type'] == 'post' ) {
                                if ( $publish )
                                        $cap  = 'publish_posts';
-                               elseif ('publish' == $content_struct['post_status'])
+                               elseif ( isset( $content_struct['post_status'] ) && 'publish' == $content_struct['post_status'] )
                                        $cap  = 'publish_posts';
                                else
                                        $cap = 'edit_posts';
                                        $cap  = 'publish_posts';
                                else
                                        $cap = 'edit_posts';
@@ -2211,12 +3679,12 @@ class wp_xmlrpc_server extends IXR_Server {
                                $post_type = 'post';
                        } else {
                                // No other post_type values are allowed here
                                $post_type = 'post';
                        } else {
                                // No other post_type values are allowed here
-                               return new IXR_Error( 401, __( 'Invalid post type.' ) );
+                               return new IXR_Error( 401, __( 'Invalid post type' ) );
                        }
                } else {
                        if ( $publish )
                                $cap  = 'publish_posts';
                        }
                } else {
                        if ( $publish )
                                $cap  = 'publish_posts';
-                       elseif ('publish' == $content_struct['post_status'])
+                       elseif ( isset( $content_struct['post_status'] ) && 'publish' == $content_struct['post_status'])
                                $cap  = 'publish_posts';
                        else
                                $cap = 'edit_posts';
                                $cap  = 'publish_posts';
                        else
                                $cap = 'edit_posts';
@@ -2267,9 +3735,12 @@ class wp_xmlrpc_server extends IXR_Server {
                                                return(new IXR_Error(401, __('You are not allowed to create pages as this user')));
                                        break;
                                default:
                                                return(new IXR_Error(401, __('You are not allowed to create pages as this user')));
                                        break;
                                default:
-                                       return(new IXR_Error(401, __('Invalid post type.')));
+                                       return(new IXR_Error(401, __('Invalid post type')));
                                        break;
                        }
                                        break;
                        }
+                       $author = get_userdata( $content_struct['wp_author_id'] );
+                       if ( ! $author )
+                               return new IXR_Error( 404, __( 'Invalid author ID.' ) );
                        $post_author = $content_struct['wp_author_id'];
                }
 
                        $post_author = $content_struct['wp_author_id'];
                }
 
@@ -2370,7 +3841,8 @@ class wp_xmlrpc_server extends IXR_Server {
 
                // Do some timestamp voodoo
                if ( !empty( $content_struct['date_created_gmt'] ) )
 
                // Do some timestamp voodoo
                if ( !empty( $content_struct['date_created_gmt'] ) )
-                       $dateCreated = str_replace( 'Z', '', $content_struct['date_created_gmt']->getIso() ) . 'Z'; // We know this is supposed to be GMT, so we're going to slap that Z on there by force
+                       // We know this is supposed to be GMT, so we're going to slap that Z on there by force
+                       $dateCreated = rtrim( $content_struct['date_created_gmt']->getIso(), 'Z' ) . 'Z';
                elseif ( !empty( $content_struct['dateCreated']) )
                        $dateCreated = $content_struct['dateCreated']->getIso();
 
                elseif ( !empty( $content_struct['dateCreated']) )
                        $dateCreated = $content_struct['dateCreated']->getIso();
 
@@ -2385,7 +3857,6 @@ class wp_xmlrpc_server extends IXR_Server {
                $post_category = array();
                if ( isset( $content_struct['categories'] ) ) {
                        $catnames = $content_struct['categories'];
                $post_category = array();
                if ( isset( $content_struct['categories'] ) ) {
                        $catnames = $content_struct['categories'];
-                       logIO('O', 'Post cats: ' . var_export($catnames,true));
 
                        if ( is_array($catnames) ) {
                                foreach ($catnames as $cat) {
 
                        if ( is_array($catnames) ) {
                                foreach ($catnames as $cat) {
@@ -2409,6 +3880,13 @@ class wp_xmlrpc_server extends IXR_Server {
                if ( isset($content_struct['custom_fields']) )
                        $this->set_custom_fields($post_ID, $content_struct['custom_fields']);
 
                if ( isset($content_struct['custom_fields']) )
                        $this->set_custom_fields($post_ID, $content_struct['custom_fields']);
 
+               if ( isset ( $content_struct['wp_post_thumbnail'] ) ) {
+                       if ( set_post_thumbnail( $post_ID, $content_struct['wp_post_thumbnail'] ) === false )
+                               return new IXR_Error( 404, __( 'Invalid attachment ID.' ) );
+
+                       unset( $content_struct['wp_post_thumbnail'] );
+               }
+
                // Handle enclosures
                $thisEnclosure = isset($content_struct['enclosure']) ? $content_struct['enclosure'] : null;
                $this->add_enclosure_if_new($post_ID, $thisEnclosure);
                // Handle enclosures
                $thisEnclosure = isset($content_struct['enclosure']) ? $content_struct['enclosure'] : null;
                $this->add_enclosure_if_new($post_ID, $thisEnclosure);
@@ -2427,7 +3905,7 @@ class wp_xmlrpc_server extends IXR_Server {
                if ( !$post_ID )
                        return new IXR_Error(500, __('Sorry, your entry could not be posted. Something wrong happened.'));
 
                if ( !$post_ID )
                        return new IXR_Error(500, __('Sorry, your entry could not be posted. Something wrong happened.'));
 
-               logIO('O', "Posted ! ID: $post_ID");
+               do_action( 'xmlrpc_call_success_mw_newPost', $post_ID, $args );
 
                return strval($post_ID);
        }
 
                return strval($post_ID);
        }
@@ -2485,53 +3963,35 @@ class wp_xmlrpc_server extends IXR_Server {
 
                $this->escape($args);
 
 
                $this->escape($args);
 
-               $post_ID     = (int) $args[0];
-               $username  = $args[1];
-               $password   = $args[2];
+               $post_ID        = (int) $args[0];
+               $username       = $args[1];
+               $password       = $args[2];
                $content_struct = $args[3];
                $content_struct = $args[3];
-               $publish     = $args[4];
+               $publish        = isset( $args[4] ) ? $args[4] : 0;
 
 
-               if ( !$user = $this->login($username, $password) )
+               if ( ! $user = $this->login($username, $password) )
                        return $this->error;
 
                do_action('xmlrpc_call', 'metaWeblog.editPost');
 
                        return $this->error;
 
                do_action('xmlrpc_call', 'metaWeblog.editPost');
 
-               $cap = ( $publish ) ? 'publish_posts' : 'edit_posts';
-               $error_message = __( 'Sorry, you are not allowed to publish posts on this site.' );
-               $post_type = 'post';
-               $page_template = '';
-               if ( !empty( $content_struct['post_type'] ) ) {
-                       if ( $content_struct['post_type'] == 'page' ) {
-                               if ( $publish || 'publish' == $content_struct['page_status'] )
-                                       $cap  = 'publish_pages';
-                               else
-                                       $cap = 'edit_pages';
-                               $error_message = __( 'Sorry, you are not allowed to publish pages on this site.' );
-                               $post_type = 'page';
-                               if ( !empty( $content_struct['wp_page_template'] ) )
-                                       $page_template = $content_struct['wp_page_template'];
-                       } elseif ( $content_struct['post_type'] == 'post' ) {
-                               if ( $publish || 'publish' == $content_struct['post_status'] )
-                                       $cap  = 'publish_posts';
-                               else
-                                       $cap = 'edit_posts';
-                               $error_message = __( 'Sorry, you are not allowed to publish posts on this site.' );
-                               $post_type = 'post';
-                       } else {
-                               // No other post_type values are allowed here
-                               return new IXR_Error( 401, __( 'Invalid post type.' ) );
-                       }
-               } else {
-                       if ( $publish || 'publish' == $content_struct['post_status'] )
-                               $cap  = 'publish_posts';
-                       else
-                               $cap = 'edit_posts';
-                       $error_message = __( 'Sorry, you are not allowed to publish posts on this site.' );
-                       $post_type = 'post';
-               }
+               $postdata = wp_get_single_post( $post_ID, ARRAY_A );
 
 
-               if ( !current_user_can( $cap ) )
-                       return new IXR_Error( 401, $error_message );
+               // If there is no post data for the give post id, stop
+               // now and return an error. Other wise a new post will be
+               // created (which was the old behavior).
+               if ( ! $postdata || empty( $postdata[ 'ID' ] ) )
+                       return new IXR_Error( 404, __( 'Invalid post ID.' ) );
+
+               if ( ! current_user_can( 'edit_post', $post_ID ) )
+                       return new IXR_Error( 401, __( 'Sorry, you do not have the right to edit this post.' ) );
+
+               // Use wp.editPost to edit post types other than post and page.
+               if ( ! in_array( $postdata[ 'post_type' ], array( 'post', 'page' ) ) )
+                       return new IXR_Error( 401, __( 'Invalid post type' ) );
+
+               // Thwart attempt to change the post type.
+               if ( ! empty( $content_struct[ 'post_type' ] ) && ( $content_struct['post_type'] != $postdata[ 'post_type' ] ) )
+                       return new IXR_Error( 401, __( 'The post type may not be changed.' ) );
 
                // Check for a valid post format if one was given
                if ( isset( $content_struct['wp_post_format'] ) ) {
 
                // Check for a valid post format if one was given
                if ( isset( $content_struct['wp_post_format'] ) ) {
@@ -2541,14 +4001,6 @@ class wp_xmlrpc_server extends IXR_Server {
                        }
                }
 
                        }
                }
 
-               $postdata = wp_get_single_post($post_ID, ARRAY_A);
-
-               // If there is no post data for the give post id, stop
-               // now and return an error.  Other wise a new post will be
-               // created (which was the old behavior).
-               if ( empty($postdata["ID"]) )
-                       return(new IXR_Error(404, __('Invalid post ID.')));
-
                $this->escape($postdata);
                extract($postdata, EXTR_SKIP);
 
                $this->escape($postdata);
                extract($postdata, EXTR_SKIP);
 
@@ -2570,6 +4022,9 @@ class wp_xmlrpc_server extends IXR_Server {
                if ( isset($content_struct['wp_page_order']) )
                        $menu_order = $content_struct['wp_page_order'];
 
                if ( isset($content_struct['wp_page_order']) )
                        $menu_order = $content_struct['wp_page_order'];
 
+               if ( ! empty( $content_struct['wp_page_template'] ) && 'page' == $post_type )
+                       $page_template = $content_struct['wp_page_template'];
+
                $post_author = $postdata['post_author'];
 
                // Only set the post_author if one is set.
                $post_author = $postdata['post_author'];
 
                // Only set the post_author if one is set.
@@ -2584,7 +4039,7 @@ class wp_xmlrpc_server extends IXR_Server {
                                                return(new IXR_Error(401, __('You are not allowed to change the page author as this user.')));
                                        break;
                                default:
                                                return(new IXR_Error(401, __('You are not allowed to change the page author as this user.')));
                                        break;
                                default:
-                                       return(new IXR_Error(401, __('Invalid post type.')));
+                                       return(new IXR_Error(401, __('Invalid post type')));
                                        break;
                        }
                        $post_author = $content_struct['wp_author_id'];
                                        break;
                        }
                        $post_author = $content_struct['wp_author_id'];
@@ -2647,8 +4102,11 @@ class wp_xmlrpc_server extends IXR_Server {
                        }
                }
 
                        }
                }
 
-               $post_title = isset( $content_struct['title'] ) ? $content_struct['title'] : null;
-               $post_content = isset( $content_struct['description'] ) ? $content_struct['description'] : null;
+               if ( isset( $content_struct['title'] ) )
+                       $post_title =  $content_struct['title'];
+
+               if ( isset( $content_struct['description'] ) )
+                       $post_content = $content_struct['description'];
 
                $post_category = array();
                if ( isset( $content_struct['categories'] ) ) {
 
                $post_category = array();
                if ( isset( $content_struct['categories'] ) ) {
@@ -2660,7 +4118,9 @@ class wp_xmlrpc_server extends IXR_Server {
                        }
                }
 
                        }
                }
 
-               $post_excerpt = isset( $content_struct['mt_excerpt'] ) ? $content_struct['mt_excerpt'] : null;
+               if ( isset( $content_struct['mt_excerpt'] ) )
+                       $post_excerpt =  $content_struct['mt_excerpt'];
+
                $post_more = isset( $content_struct['mt_text_more'] ) ? $content_struct['mt_text_more'] : null;
 
                $post_status = $publish ? 'publish' : 'draft';
                $post_more = isset( $content_struct['mt_text_more'] ) ? $content_struct['mt_text_more'] : null;
 
                $post_status = $publish ? 'publish' : 'draft';
@@ -2699,7 +4159,8 @@ class wp_xmlrpc_server extends IXR_Server {
 
                // Do some timestamp voodoo
                if ( !empty( $content_struct['date_created_gmt'] ) )
 
                // Do some timestamp voodoo
                if ( !empty( $content_struct['date_created_gmt'] ) )
-                       $dateCreated = str_replace( 'Z', '', $content_struct['date_created_gmt']->getIso() ) . 'Z'; // We know this is supposed to be GMT, so we're going to slap that Z on there by force
+                       // We know this is supposed to be GMT, so we're going to slap that Z on there by force
+                       $dateCreated = rtrim( $content_struct['date_created_gmt']->getIso(), 'Z' ) . 'Z';
                elseif ( !empty( $content_struct['dateCreated']) )
                        $dateCreated = $content_struct['dateCreated']->getIso();
 
                elseif ( !empty( $content_struct['dateCreated']) )
                        $dateCreated = $content_struct['dateCreated']->getIso();
 
@@ -2732,6 +4193,17 @@ class wp_xmlrpc_server extends IXR_Server {
                if ( isset($content_struct['custom_fields']) )
                        $this->set_custom_fields($post_ID, $content_struct['custom_fields']);
 
                if ( isset($content_struct['custom_fields']) )
                        $this->set_custom_fields($post_ID, $content_struct['custom_fields']);
 
+               if ( isset ( $content_struct['wp_post_thumbnail'] ) ) {
+                       // empty value deletes, non-empty value adds/updates
+                       if ( empty( $content_struct['wp_post_thumbnail'] ) ) {
+                               delete_post_thumbnail( $post_ID );
+                       } else {
+                               if ( set_post_thumbnail( $post_ID, $content_struct['wp_post_thumbnail'] ) === false )
+                                       return new IXR_Error( 404, __( 'Invalid attachment ID.' ) );
+                       }
+                       unset( $content_struct['wp_post_thumbnail'] );
+               }
+
                // Handle enclosures
                $thisEnclosure = isset($content_struct['enclosure']) ? $content_struct['enclosure'] : null;
                $this->add_enclosure_if_new($post_ID, $thisEnclosure);
                // Handle enclosures
                $thisEnclosure = isset($content_struct['enclosure']) ? $content_struct['enclosure'] : null;
                $this->add_enclosure_if_new($post_ID, $thisEnclosure);
@@ -2743,7 +4215,7 @@ class wp_xmlrpc_server extends IXR_Server {
                if ( isset( $content_struct['wp_post_format'] ) )
                        wp_set_post_terms( $post_ID, array( 'post-format-' . $content_struct['wp_post_format'] ), 'post_format' );
 
                if ( isset( $content_struct['wp_post_format'] ) )
                        wp_set_post_terms( $post_ID, array( 'post-format-' . $content_struct['wp_post_format'] ), 'post_format' );
 
-               logIO('O',"(MW) Edited ! ID: $post_ID");
+               do_action( 'xmlrpc_call_success_mw_editPost', $post_ID, $args );
 
                return true;
        }
 
                return true;
        }
@@ -2767,20 +4239,20 @@ class wp_xmlrpc_server extends IXR_Server {
                if ( !$user = $this->login($username, $password) )
                        return $this->error;
 
                if ( !$user = $this->login($username, $password) )
                        return $this->error;
 
+               $postdata = wp_get_single_post($post_ID, ARRAY_A);
+               if ( ! $postdata )
+                       return new IXR_Error( 404, __( 'Invalid post ID.' ) );
+
                if ( !current_user_can( 'edit_post', $post_ID ) )
                        return new IXR_Error( 401, __( 'Sorry, you cannot edit this post.' ) );
 
                do_action('xmlrpc_call', 'metaWeblog.getPost');
 
                if ( !current_user_can( 'edit_post', $post_ID ) )
                        return new IXR_Error( 401, __( 'Sorry, you cannot edit this post.' ) );
 
                do_action('xmlrpc_call', 'metaWeblog.getPost');
 
-               $postdata = wp_get_single_post($post_ID, ARRAY_A);
-
                if ($postdata['post_date'] != '') {
                if ($postdata['post_date'] != '') {
-                       $post_date = mysql2date('Ymd\TH:i:s', $postdata['post_date'], false);
-                       $post_date_gmt = mysql2date('Ymd\TH:i:s', $postdata['post_date_gmt'], false);
-
-                       // For drafts use the GMT version of the post date
-                       if ( $postdata['post_status'] == 'draft' )
-                               $post_date_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $postdata['post_date'] ), 'Ymd\TH:i:s' );
+                       $post_date = $this->_convert_date( $postdata['post_date'] );
+                       $post_date_gmt = $this->_convert_date_gmt( $postdata['post_date_gmt'],  $postdata['post_date'] );
+                       $post_modified = $this->_convert_date( $postdata['post_modified'] );
+                       $post_modified_gmt = $this->_convert_date_gmt( $postdata['post_modified_gmt'], $postdata['post_modified'] );
 
                        $categories = array();
                        $catids = wp_get_post_categories($post_ID);
 
                        $categories = array();
                        $catids = wp_get_post_categories($post_ID);
@@ -2823,7 +4295,7 @@ class wp_xmlrpc_server extends IXR_Server {
                        foreach ( (array) get_post_custom($post_ID) as $key => $val) {
                                if ($key == 'enclosure') {
                                        foreach ( (array) $val as $enc ) {
                        foreach ( (array) get_post_custom($post_ID) as $key => $val) {
                                if ($key == 'enclosure') {
                                        foreach ( (array) $val as $enc ) {
-                                               $encdata = split("\n", $enc);
+                                               $encdata = explode("\n", $enc);
                                                $enclosure['url'] = trim(htmlspecialchars($encdata[0]));
                                                $enclosure['length'] = (int) trim($encdata[1]);
                                                $enclosure['type'] = trim($encdata[2]);
                                                $enclosure['url'] = trim(htmlspecialchars($encdata[0]));
                                                $enclosure['length'] = (int) trim($encdata[1]);
                                                $enclosure['type'] = trim($encdata[2]);
@@ -2833,7 +4305,7 @@ class wp_xmlrpc_server extends IXR_Server {
                        }
 
                        $resp = array(
                        }
 
                        $resp = array(
-                               'dateCreated' => new IXR_Date($post_date),
+                               'dateCreated' => $post_date,
                                'userid' => $postdata['post_author'],
                                'postid' => $postdata['ID'],
                                'description' => $post['main'],
                                'userid' => $postdata['post_author'],
                                'postid' => $postdata['ID'],
                                'description' => $post['main'],
@@ -2845,22 +4317,27 @@ class wp_xmlrpc_server extends IXR_Server {
                                'categories' => $categories,
                                'mt_excerpt' => $postdata['post_excerpt'],
                                'mt_text_more' => $post['extended'],
                                'categories' => $categories,
                                'mt_excerpt' => $postdata['post_excerpt'],
                                'mt_text_more' => $post['extended'],
+                               'wp_more_text' => $post['more_text'],
                                'mt_allow_comments' => $allow_comments,
                                'mt_allow_pings' => $allow_pings,
                                'mt_keywords' => $tagnames,
                                'wp_slug' => $postdata['post_name'],
                                'wp_password' => $postdata['post_password'],
                                'wp_author_id' => (string) $author->ID,
                                'mt_allow_comments' => $allow_comments,
                                'mt_allow_pings' => $allow_pings,
                                'mt_keywords' => $tagnames,
                                'wp_slug' => $postdata['post_name'],
                                'wp_password' => $postdata['post_password'],
                                'wp_author_id' => (string) $author->ID,
-                               'wp_author_display_name'        => $author->display_name,
-                               'date_created_gmt' => new IXR_Date($post_date_gmt),
+                               'wp_author_display_name' => $author->display_name,
+                               'date_created_gmt' => $post_date_gmt,
                                'post_status' => $postdata['post_status'],
                                'custom_fields' => $this->get_custom_fields($post_ID),
                                'wp_post_format' => $post_format,
                                'post_status' => $postdata['post_status'],
                                'custom_fields' => $this->get_custom_fields($post_ID),
                                'wp_post_format' => $post_format,
-                               'sticky' => $sticky
+                               'sticky' => $sticky,
+                               'date_modified' => $post_modified,
+                               'date_modified_gmt' => $post_modified_gmt
                        );
 
                        if ( !empty($enclosure) ) $resp['enclosure'] = $enclosure;
 
                        );
 
                        if ( !empty($enclosure) ) $resp['enclosure'] = $enclosure;
 
+                       $resp['wp_post_thumbnail'] = get_post_thumbnail_id( $postdata['ID'] );
+
                        return $resp;
                } else {
                        return new IXR_Error(404, __('Sorry, no such post.'));
                        return $resp;
                } else {
                        return new IXR_Error(404, __('Sorry, no such post.'));
@@ -2895,18 +4372,16 @@ class wp_xmlrpc_server extends IXR_Server {
                $posts_list = wp_get_recent_posts( $query );
 
                if ( !$posts_list )
                $posts_list = wp_get_recent_posts( $query );
 
                if ( !$posts_list )
-                       return array( );
+                       return array();
 
                foreach ($posts_list as $entry) {
                        if ( !current_user_can( 'edit_post', $entry['ID'] ) )
                                continue;
 
 
                foreach ($posts_list as $entry) {
                        if ( !current_user_can( 'edit_post', $entry['ID'] ) )
                                continue;
 
-                       $post_date = mysql2date('Ymd\TH:i:s', $entry['post_date'], false);
-                       $post_date_gmt = mysql2date('Ymd\TH:i:s', $entry['post_date_gmt'], false);
-
-                       // For drafts use the GMT version of the date
-                       if ( $entry['post_status'] == 'draft' )
-                               $post_date_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $entry['post_date'] ), 'Ymd\TH:i:s' );
+                       $post_date = $this->_convert_date( $entry['post_date'] );
+                       $post_date_gmt = $this->_convert_date_gmt( $entry['post_date_gmt'], $entry['post_date'] );
+                       $post_modified = $this->_convert_date( $entry['post_modified'] );
+                       $post_modified_gmt = $this->_convert_date_gmt( $entry['post_modified_gmt'], $entry['post_modified'] );
 
                        $categories = array();
                        $catids = wp_get_post_categories($entry['ID']);
 
                        $categories = array();
                        $catids = wp_get_post_categories($entry['ID']);
@@ -2943,7 +4418,7 @@ class wp_xmlrpc_server extends IXR_Server {
                                $post_format = 'standard';
 
                        $struct[] = array(
                                $post_format = 'standard';
 
                        $struct[] = array(
-                               'dateCreated' => new IXR_Date($post_date),
+                               'dateCreated' => $post_date,
                                'userid' => $entry['post_author'],
                                'postid' => (string) $entry['ID'],
                                'description' => $post['main'],
                                'userid' => $entry['post_author'],
                                'postid' => (string) $entry['ID'],
                                'description' => $post['main'],
@@ -2955,6 +4430,7 @@ class wp_xmlrpc_server extends IXR_Server {
                                'categories' => $categories,
                                'mt_excerpt' => $entry['post_excerpt'],
                                'mt_text_more' => $post['extended'],
                                'categories' => $categories,
                                'mt_excerpt' => $entry['post_excerpt'],
                                'mt_text_more' => $post['extended'],
+                               'wp_more_text' => $post['more_text'],
                                'mt_allow_comments' => $allow_comments,
                                'mt_allow_pings' => $allow_pings,
                                'mt_keywords' => $tagnames,
                                'mt_allow_comments' => $allow_comments,
                                'mt_allow_pings' => $allow_pings,
                                'mt_keywords' => $tagnames,
@@ -2962,12 +4438,16 @@ class wp_xmlrpc_server extends IXR_Server {
                                'wp_password' => $entry['post_password'],
                                'wp_author_id' => (string) $author->ID,
                                'wp_author_display_name' => $author->display_name,
                                'wp_password' => $entry['post_password'],
                                'wp_author_id' => (string) $author->ID,
                                'wp_author_display_name' => $author->display_name,
-                               'date_created_gmt' => new IXR_Date($post_date_gmt),
+                               'date_created_gmt' => $post_date_gmt,
                                'post_status' => $entry['post_status'],
                                'custom_fields' => $this->get_custom_fields($entry['ID']),
                                'post_status' => $entry['post_status'],
                                'custom_fields' => $this->get_custom_fields($entry['ID']),
-                               'wp_post_format' => $post_format
+                               'wp_post_format' => $post_format,
+                               'date_modified' => $post_modified,
+                               'date_modified_gmt' => $post_modified_gmt
                        );
 
                        );
 
+                       $entry_index = count( $struct ) - 1;
+                       $struct[ $entry_index ][ 'wp_post_thumbnail' ] = get_post_thumbnail_id( $entry['ID'] );
                }
 
                $recent_posts = array();
                }
 
                $recent_posts = array();
@@ -3045,16 +4525,13 @@ class wp_xmlrpc_server extends IXR_Server {
                $type = $data['type'];
                $bits = $data['bits'];
 
                $type = $data['type'];
                $bits = $data['bits'];
 
-               logIO('O', '(MW) Received '.strlen($bits).' bytes');
-
                if ( !$user = $this->login($username, $password) )
                        return $this->error;
 
                do_action('xmlrpc_call', 'metaWeblog.newMediaObject');
 
                if ( !current_user_can('upload_files') ) {
                if ( !$user = $this->login($username, $password) )
                        return $this->error;
 
                do_action('xmlrpc_call', 'metaWeblog.newMediaObject');
 
                if ( !current_user_can('upload_files') ) {
-                       logIO('O', '(MW) User does not have upload_files capability');
-                       $this->error = new IXR_Error(401, __('You are not allowed to upload files to this site.'));
+                       $this->error = new IXR_Error( 401, __( 'You do not have permission to upload files.' ) );
                        return $this->error;
                }
 
                        return $this->error;
                }
 
@@ -3079,10 +4556,9 @@ class wp_xmlrpc_server extends IXR_Server {
                        $name = "wpid{$old_file->ID}-{$filename}";
                }
 
                        $name = "wpid{$old_file->ID}-{$filename}";
                }
 
-               $upload = wp_upload_bits($name, NULL, $bits);
+               $upload = wp_upload_bits($name, null, $bits);
                if ( ! empty($upload['error']) ) {
                        $errorString = sprintf(__('Could not write file %1$s (%2$s)'), $name, $upload['error']);
                if ( ! empty($upload['error']) ) {
                        $errorString = sprintf(__('Could not write file %1$s (%2$s)'), $name, $upload['error']);
-                       logIO('O', '(MW) ' . $errorString);
                        return new IXR_Error(500, $errorString);
                }
                // Construct the attachment array
                        return new IXR_Error(500, $errorString);
                }
                // Construct the attachment array
@@ -3101,7 +4577,15 @@ class wp_xmlrpc_server extends IXR_Server {
                $id = wp_insert_attachment( $attachment, $upload[ 'file' ], $post_id );
                wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $upload['file'] ) );
 
                $id = wp_insert_attachment( $attachment, $upload[ 'file' ], $post_id );
                wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $upload['file'] ) );
 
-               return apply_filters( 'wp_handle_upload', array( 'file' => $name, 'url' => $upload[ 'url' ], 'type' => $type ), 'upload' );
+               do_action( 'xmlrpc_call_success_mw_newMediaObject', $id, $args );
+
+               $struct = array(
+                       'id'   => strval( $id ),
+                       'file' => $name,
+                       'url'  => $upload[ 'url' ],
+                       'type' => $type
+               );
+               return apply_filters( 'wp_handle_upload', $struct, 'upload' );
        }
 
        /* MovableType API functions
        }
 
        /* MovableType API functions
@@ -3140,24 +4624,22 @@ class wp_xmlrpc_server extends IXR_Server {
                        return $this->error;
                }
 
                        return $this->error;
                }
 
+               $struct = array();
+
                foreach ($posts_list as $entry) {
                        if ( !current_user_can( 'edit_post', $entry['ID'] ) )
                                continue;
 
                foreach ($posts_list as $entry) {
                        if ( !current_user_can( 'edit_post', $entry['ID'] ) )
                                continue;
 
-                       $post_date = mysql2date('Ymd\TH:i:s', $entry['post_date'], false);
-                       $post_date_gmt = mysql2date('Ymd\TH:i:s', $entry['post_date_gmt'], false);
-
-                       // For drafts use the GMT version of the date
-                       if ( $entry['post_status'] == 'draft' )
-                               $post_date_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $entry['post_date'] ), 'Ymd\TH:i:s' );
+                       $post_date = $this->_convert_date( $entry['post_date'] );
+                       $post_date_gmt = $this->_convert_date_gmt( $entry['post_date_gmt'], $entry['post_date'] );
 
                        $struct[] = array(
 
                        $struct[] = array(
-                               'dateCreated' => new IXR_Date($post_date),
+                               'dateCreated' => $post_date,
                                'userid' => $entry['post_author'],
                                'postid' => (string) $entry['ID'],
                                'title' => $entry['post_title'],
                                'post_status' => $entry['post_status'],
                                'userid' => $entry['post_author'],
                                'postid' => (string) $entry['ID'],
                                'title' => $entry['post_title'],
                                'post_status' => $entry['post_status'],
-                               'date_created_gmt' => new IXR_Date($post_date_gmt)
+                               'date_created_gmt' => $post_date_gmt
                        );
 
                }
                        );
 
                }
@@ -3227,6 +4709,9 @@ class wp_xmlrpc_server extends IXR_Server {
                if ( !$user = $this->login($username, $password) )
                        return $this->error;
 
                if ( !$user = $this->login($username, $password) )
                        return $this->error;
 
+               if ( ! get_post( $post_ID ) )
+                       return new IXR_Error( 404, __( 'Invalid post ID.' ) );
+
                if ( !current_user_can( 'edit_post', $post_ID ) )
                        return new IXR_Error( 401, __( 'Sorry, you can not edit this post.' ) );
 
                if ( !current_user_can( 'edit_post', $post_ID ) )
                        return new IXR_Error( 401, __( 'Sorry, you can not edit this post.' ) );
 
@@ -3270,6 +4755,9 @@ class wp_xmlrpc_server extends IXR_Server {
 
                do_action('xmlrpc_call', 'mt.setPostCategories');
 
 
                do_action('xmlrpc_call', 'mt.setPostCategories');
 
+               if ( ! get_post( $post_ID ) )
+                       return new IXR_Error( 404, __( 'Invalid post ID.' ) );
+
                if ( !current_user_can('edit_post', $post_ID) )
                        return new IXR_Error(401, __('Sorry, you cannot edit this post.'));
 
                if ( !current_user_can('edit_post', $post_ID) )
                        return new IXR_Error(401, __('Sorry, you cannot edit this post.'));
 
@@ -3377,11 +4865,13 @@ class wp_xmlrpc_server extends IXR_Server {
 
                do_action('xmlrpc_call', 'mt.publishPost');
 
 
                do_action('xmlrpc_call', 'mt.publishPost');
 
+               $postdata = wp_get_single_post($post_ID, ARRAY_A);
+               if ( ! $postdata )
+                       return new IXR_Error( 404, __( 'Invalid post ID.' ) );
+
                if ( !current_user_can('publish_posts') || !current_user_can('edit_post', $post_ID) )
                        return new IXR_Error(401, __('Sorry, you cannot publish this post.'));
 
                if ( !current_user_can('publish_posts') || !current_user_can('edit_post', $post_ID) )
                        return new IXR_Error(401, __('Sorry, you cannot publish this post.'));
 
-               $postdata = wp_get_single_post($post_ID,ARRAY_A);
-
                $postdata['post_status'] = 'publish';
 
                // retain old cats
                $postdata['post_status'] = 'publish';
 
                // retain old cats
@@ -3469,9 +4959,6 @@ class wp_xmlrpc_server extends IXR_Server {
                }
                $post_ID = (int) $post_ID;
 
                }
                $post_ID = (int) $post_ID;
 
-
-               logIO("O","(PB) URL='$pagelinkedto' ID='$post_ID' Found='$way'");
-
                $post = get_post($post_ID);
 
                if ( !$post ) // Post_ID not found
                $post = get_post($post_ID);
 
                if ( !$post ) // Post_ID not found
@@ -3613,4 +5100,3 @@ class wp_xmlrpc_server extends IXR_Server {
                return $pingbacks;
        }
 }
                return $pingbacks;
        }
 }
-?>
index 78de5ae53308e9b61939d4d90a3ca35f5e528a52..4f8bc3582593ddb8c5a0b43e6731407f0adb4c38 100644 (file)
@@ -15,7 +15,7 @@ class WP {
         * @access public
         * @var array
         */
         * @access public
         * @var array
         */
-       var $public_query_vars = array('m', 'p', 'posts', 'w', 'cat', 'withcomments', 'withoutcomments', 's', 'search', 'exact', 'sentence', 'debug', 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'tag', 'feed', 'author_name', 'static', 'pagename', 'page_id', 'error', 'comments_popup', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots', 'taxonomy', 'term', 'cpage', 'post_type');
+       var $public_query_vars = array('m', 'p', 'posts', 'w', 'cat', 'withcomments', 'withoutcomments', 's', 'search', 'exact', 'sentence', 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'tag', 'feed', 'author_name', 'static', 'pagename', 'page_id', 'error', 'comments_popup', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots', 'taxonomy', 'term', 'cpage', 'post_type');
 
        /**
         * Private query variables.
 
        /**
         * Private query variables.
@@ -156,8 +156,8 @@ class WP {
                        $home_path = trim($home_path, '/');
 
                        // Trim path info from the end and the leading home path from the
                        $home_path = trim($home_path, '/');
 
                        // Trim path info from the end and the leading home path from the
-                       // front.  For path info requests, this leaves us with the requesting
-                       // filename, if any.  For 404 requests, this leaves us with the
+                       // front. For path info requests, this leaves us with the requesting
+                       // filename, if any. For 404 requests, this leaves us with the
                        // requested permalink.
                        $req_uri = str_replace($pathinfo, '', $req_uri);
                        $req_uri = trim($req_uri, '/');
                        // requested permalink.
                        $req_uri = str_replace($pathinfo, '', $req_uri);
                        $req_uri = trim($req_uri, '/');
@@ -401,7 +401,7 @@ class WP {
                        }
                }
 
                        }
                }
 
-               // query_string filter deprecated.  Use request filter instead.
+               // query_string filter deprecated. Use request filter instead.
                if ( has_filter('query_string') ) {  // Don't bother filtering and parsing if no plugins are hooked in.
                        $this->query_string = apply_filters('query_string', $this->query_string);
                        parse_str($this->query_string, $this->query_vars);
                if ( has_filter('query_string') ) {  // Don't bother filtering and parsing if no plugins are hooked in.
                        $this->query_string = apply_filters('query_string', $this->query_string);
                        parse_str($this->query_string, $this->query_vars);
@@ -474,19 +474,36 @@ class WP {
        function handle_404() {
                global $wp_query;
 
        function handle_404() {
                global $wp_query;
 
-               if ( !is_admin() && ( 0 == count( $wp_query->posts ) ) && !is_404() && !is_robots() && !is_search() && !is_home() ) {
+               // If we've already issued a 404, bail.
+               if ( is_404() )
+                       return;
+
+               // Never 404 for the admin, robots, or if we found posts.
+               if ( is_admin() || is_robots() || $wp_query->posts ) {
+                       status_header( 200 );
+                       return;
+               }
+
+               // We will 404 for paged queries, as no posts were found.
+               if ( ! is_paged() ) {
+
                        // Don't 404 for these queries if they matched an object.
                        // Don't 404 for these queries if they matched an object.
-                       if ( ( is_tag() || is_category() || is_tax() || is_author() || is_post_type_archive() ) && $wp_query->get_queried_object() && !is_paged() ) {
-                               if ( !is_404() )
-                                       status_header( 200 );
+                       if ( ( is_tag() || is_category() || is_tax() || is_author() || is_post_type_archive() ) && $wp_query->get_queried_object() ) {
+                               status_header( 200 );
+                               return;
+                       }
+
+                       // Don't 404 for these queries either.
+                       if ( is_home() || is_search() ) {
+                               status_header( 200 );
                                return;
                        }
                                return;
                        }
-                       $wp_query->set_404();
-                       status_header( 404 );
-                       nocache_headers();
-               } elseif ( !is_404() ) {
-                       status_header( 200 );
                }
                }
+
+               // Guess it's time to 404.
+               $wp_query->set_404();
+               status_header( 404 );
+               nocache_headers();
        }
 
        /**
        }
 
        /**
@@ -601,5 +618,3 @@ class WP_MatchesMapRegex {
        }
 
 }
        }
 
 }
-
-?>
index 3907082ebe240a275113b3f5ba701c30ef5236ab..fb1f1ee0c275753f0ef986a1278b49b88db76fe7 100644 (file)
@@ -28,7 +28,7 @@ class WP_Dependencies {
        /**
         * Do the dependencies
         *
        /**
         * Do the dependencies
         *
-        * Process the items passed to it or the queue.  Processes all dependencies.
+        * Process the items passed to it or the queue. Processes all dependencies.
         *
         * @param mixed $handles (optional) items to be processed. (void) processes queue, (string) process that item, (array of strings) process those items
         * @return array Items that have been processed
         *
         * @param mixed $handles (optional) items to be processed. (void) processes queue, (string) process that item, (array of strings) process those items
         * @return array Items that have been processed
@@ -63,7 +63,7 @@ class WP_Dependencies {
        /**
         * Determines dependencies
         *
        /**
         * Determines dependencies
         *
-        * Recursively builds array of items to process taking dependencies into account.  Does NOT catch infinite loops.
+        * Recursively builds array of items to process taking dependencies into account. Does NOT catch infinite loops.
         *
         *
         * @param mixed $handles Accepts (string) dep name or (array of strings) dep names
         *
         *
         * @param mixed $handles Accepts (string) dep name or (array of strings) dep names
@@ -90,7 +90,7 @@ class WP_Dependencies {
                        if ( !isset($this->registered[$handle]) )
                                $keep_going = false; // Script doesn't exist
                        elseif ( $this->registered[$handle]->deps && array_diff($this->registered[$handle]->deps, array_keys($this->registered)) )
                        if ( !isset($this->registered[$handle]) )
                                $keep_going = false; // Script doesn't exist
                        elseif ( $this->registered[$handle]->deps && array_diff($this->registered[$handle]->deps, array_keys($this->registered)) )
-                               $keep_going = false; // Script requires deps which don't exist (not a necessary check.  efficiency?)
+                               $keep_going = false; // Script requires deps which don't exist (not a necessary check. efficiency?)
                        elseif ( $this->registered[$handle]->deps && !$this->all_deps( $this->registered[$handle]->deps, true, $group ) )
                                $keep_going = false; // Script requires deps which don't exist
 
                        elseif ( $this->registered[$handle]->deps && !$this->all_deps( $this->registered[$handle]->deps, true, $group ) )
                                $keep_going = false; // Script requires deps which don't exist
 
@@ -98,7 +98,7 @@ class WP_Dependencies {
                                if ( $recursion )
                                        return false; // Abort this branch.
                                else
                                if ( $recursion )
                                        return false; // Abort this branch.
                                else
-                                       continue; // We're at the top level.  Move on to the next one.
+                                       continue; // We're at the top level. Move on to the next one.
                        }
 
                        if ( $queued ) // Already grobbed it and its deps
                        }
 
                        if ( $queued ) // Already grobbed it and its deps
index 41f6019ecd8887e0632bbe5a0db0bcd25802c154..ff0ca4d5dc52cc164e89fdfb96bd5cda2bf35c6f 100644 (file)
@@ -31,15 +31,22 @@ class WP_Scripts extends WP_Dependencies {
        var $default_dirs;
 
        function __construct() {
        var $default_dirs;
 
        function __construct() {
+               if ( ! function_exists( 'did_action' ) || did_action( 'init' ) )
+                       $this->init();
+               else
+                       add_action( 'init', array( $this, 'init' ), 0 );
+       }
+
+       function init() {
                do_action_ref_array( 'wp_default_scripts', array(&$this) );
        }
 
        /**
         * Prints scripts
         *
                do_action_ref_array( 'wp_default_scripts', array(&$this) );
        }
 
        /**
         * Prints scripts
         *
-        * Prints the scripts passed to it or the print queue.  Also prints all necessary dependencies.
+        * Prints the scripts passed to it or the print queue. Also prints all necessary dependencies.
         *
         *
-        * @param mixed $handles (optional) Scripts to be printed.  (void) prints queue, (string) prints that script, (array of strings) prints those scripts.
+        * @param mixed $handles (optional) Scripts to be printed. (void) prints queue, (string) prints that script, (array of strings) prints those scripts.
         * @param int $group (optional) If scripts were queued in groups prints this group number.
         * @return array Scripts that have been printed
         */
         * @param int $group (optional) If scripts were queued in groups prints this group number.
         * @return array Scripts that have been printed
         */
@@ -143,12 +150,12 @@ class WP_Scripts extends WP_Dependencies {
                $script = "var $object_name = " . json_encode($l10n) . ';';
 
                if ( !empty($after) )
                $script = "var $object_name = " . json_encode($l10n) . ';';
 
                if ( !empty($after) )
-                       $script .= "\n$after";
+                       $script .= "\n$after;";
 
                $data = $this->get_data( $handle, 'data' );
 
                if ( !empty( $data ) )
 
                $data = $this->get_data( $handle, 'data' );
 
                if ( !empty( $data ) )
-                       $script = "$data;\n$script";
+                       $script = "$data\n$script";
 
                return $this->add_data( $handle, 'data', $script );
        }
 
                return $this->add_data( $handle, 'data', $script );
        }
index 6455fe47375dc3de1a0c63670cb74e72239b829e..48e8f7ef1d8f4f452f32aa51fa48b14b7b98b049 100644 (file)
@@ -168,4 +168,3 @@ class WP_Styles extends WP_Dependencies {
                $this->print_html = '';
        }
 }
                $this->print_html = '';
        }
 }
-
index 25f73c3d9004920ee7627e6dd3be5e70aa6937d6..5bacda18d3857a4d1e02263905067c1addafff06 100644 (file)
@@ -55,7 +55,7 @@ function comment_author( $comment_ID = 0 ) {
  * @uses apply_filters() Calls the 'get_comment_author_email' hook on the comment author email
  * @uses $comment
  *
  * @uses apply_filters() Calls the 'get_comment_author_email' hook on the comment author email
  * @uses $comment
  *
- * @param int $comment_ID The ID of the comment for which to get the author's email.  Optional.
+ * @param int $comment_ID The ID of the comment for which to get the author's email. Optional.
  * @return string The current comment author's email
  */
 function get_comment_author_email( $comment_ID = 0 ) {
  * @return string The current comment author's email
  */
 function get_comment_author_email( $comment_ID = 0 ) {
@@ -141,7 +141,7 @@ function get_comment_author_email_link($linktext='', $before='', $after='') {
  * @since 1.5.0
  * @uses apply_filters() Calls 'get_comment_author_link' hook on the complete link HTML or author
  *
  * @since 1.5.0
  * @uses apply_filters() Calls 'get_comment_author_link' hook on the complete link HTML or author
  *
- * @param int $comment_ID The ID of the comment for which to get the author's link.  Optional.
+ * @param int $comment_ID The ID of the comment for which to get the author's link. Optional.
  * @return string Comment Author name or HTML link for author's URL
  */
 function get_comment_author_link( $comment_ID = 0 ) {
  * @return string Comment Author name or HTML link for author's URL
  */
 function get_comment_author_link( $comment_ID = 0 ) {
@@ -189,7 +189,7 @@ function get_comment_author_IP( $comment_ID = 0 ) {
  * @since 0.71
  * @see get_comment_author_IP() Echoes Result
  *
  * @since 0.71
  * @see get_comment_author_IP() Echoes Result
  *
- * @param int $comment_ID The ID of the comment for which to print the author's IP address.  Optional.
+ * @param int $comment_ID The ID of the comment for which to print the author's IP address. Optional.
  */
 function comment_author_IP( $comment_ID = 0 ) {
        echo get_comment_author_IP( $comment_ID );
  */
 function comment_author_IP( $comment_ID = 0 ) {
        echo get_comment_author_IP( $comment_ID );
@@ -201,7 +201,7 @@ function comment_author_IP( $comment_ID = 0 ) {
  * @since 1.5.0
  * @uses apply_filters() Calls 'get_comment_author_url' hook on the comment author's URL
  *
  * @since 1.5.0
  * @uses apply_filters() Calls 'get_comment_author_url' hook on the comment author's URL
  *
- * @param int $comment_ID The ID of the comment for which to get the author's URL.  Optional.
+ * @param int $comment_ID The ID of the comment for which to get the author's URL. Optional.
  * @return string
  */
 function get_comment_author_url( $comment_ID = 0 ) {
  * @return string
  */
 function get_comment_author_url( $comment_ID = 0 ) {
@@ -384,7 +384,7 @@ function get_comment_date( $d = '', $comment_ID = 0 ) {
  * @since 0.71
  *
  * @param string $d The format of the date (defaults to user's config)
  * @since 0.71
  *
  * @param string $d The format of the date (defaults to user's config)
- * @param int $comment_ID The ID of the comment for which to print the date.  Optional.
+ * @param int $comment_ID The ID of the comment for which to print the date. Optional.
  */
 function comment_date( $d = '', $comment_ID = 0 ) {
        echo get_comment_date( $d, $comment_ID );
  */
 function comment_date( $d = '', $comment_ID = 0 ) {
        echo get_comment_date( $d, $comment_ID );
@@ -769,7 +769,7 @@ function trackback_rdf( $deprecated = '' ) {
  * @param int $post_id An optional post ID to check instead of the current post.
  * @return bool True if the comments are open
  */
  * @param int $post_id An optional post ID to check instead of the current post.
  * @return bool True if the comments are open
  */
-function comments_open( $post_id=NULL ) {
+function comments_open( $post_id = null ) {
 
        $_post = get_post($post_id);
 
 
        $_post = get_post($post_id);
 
@@ -786,7 +786,7 @@ function comments_open( $post_id=NULL ) {
  * @param int $post_id An optional post ID to check instead of the current post.
  * @return bool True if pings are accepted
  */
  * @param int $post_id An optional post ID to check instead of the current post.
  * @return bool True if pings are accepted
  */
-function pings_open( $post_id = NULL ) {
+function pings_open( $post_id = null ) {
 
        $_post = get_post($post_id);
 
 
        $_post = get_post($post_id);
 
@@ -816,8 +816,10 @@ function wp_comment_form_unfiltered_html_nonce() {
        if ( !empty($post) )
                $post_id = $post->ID;
 
        if ( !empty($post) )
                $post_id = $post->ID;
 
-       if ( current_user_can('unfiltered_html') )
-               wp_nonce_field('unfiltered-html-comment_' . $post_id, '_wp_unfiltered_html_comment', false);
+       if ( current_user_can( 'unfiltered_html' ) ) {
+               wp_nonce_field( 'unfiltered-html-comment_' . $post_id, '_wp_unfiltered_html_comment_disabled', false );
+               echo "<script>(function(){if(window===window.parent){document.getElementById('_wp_unfiltered_html_comment_disabled').name='_wp_unfiltered_html_comment';}})();</script>\n";
+       }
 }
 
 /**
 }
 
 /**
@@ -899,10 +901,10 @@ function comments_template( $file = '/comments.php', $separate_comments = false
                $comments_by_type = &$wp_query->comments_by_type;
        }
 
                $comments_by_type = &$wp_query->comments_by_type;
        }
 
-       $overridden_cpage = FALSE;
+       $overridden_cpage = false;
        if ( '' == get_query_var('cpage') && get_option('page_comments') ) {
                set_query_var( 'cpage', 'newest' == get_option('default_comments_page') ? get_comment_pages_count() : 1 );
        if ( '' == get_query_var('cpage') && get_option('page_comments') ) {
                set_query_var( 'cpage', 'newest' == get_option('default_comments_page') ? get_comment_pages_count() : 1 );
-               $overridden_cpage = TRUE;
+               $overridden_cpage = true;
        }
 
        if ( !defined('COMMENTS_TEMPLATE') || !COMMENTS_TEMPLATE)
        }
 
        if ( !defined('COMMENTS_TEMPLATE') || !COMMENTS_TEMPLATE)
@@ -912,7 +914,7 @@ function comments_template( $file = '/comments.php', $separate_comments = false
        if ( file_exists( $include ) )
                require( $include );
        elseif ( file_exists( TEMPLATEPATH . $file ) )
        if ( file_exists( $include ) )
                require( $include );
        elseif ( file_exists( TEMPLATEPATH . $file ) )
-               require( TEMPLATEPATH .  $file );
+               require( TEMPLATEPATH . $file );
        else // Backward compat code will be removed in a future release
                require( ABSPATH . WPINC . '/theme-compat/comments.php');
 }
        else // Backward compat code will be removed in a future release
                require( ABSPATH . WPINC . '/theme-compat/comments.php');
 }
@@ -1091,7 +1093,7 @@ function comment_reply_link($args = array(), $comment = null, $post = null) {
  * @since 2.7.0
  *
  * @param array $args Optional. Override default options.
  * @since 2.7.0
  *
  * @param array $args Optional. Override default options.
- * @param int|object $post Optional. Post that the comment is going to be displayed on.  Defaults to current post.
+ * @param int|object $post Optional. Post that the comment is going to be displayed on. Defaults to current post.
  * @return string|bool|null Link to show comment form, if successful. False, if comments are closed.
  */
 function get_post_reply_link($args = array(), $post = null) {
  * @return string|bool|null Link to show comment form, if successful. False, if comments are closed.
  */
 function get_post_reply_link($args = array(), $post = null) {
@@ -1191,7 +1193,7 @@ function comment_id_fields( $id = 0 ) {
  * @param string $replytext Optional. Text to display when replying to a comment. Accepts "%s" for the author of the comment being replied to.
  * @param string $linktoparent Optional. Boolean to control making the author's name a link to their comment.
  */
  * @param string $replytext Optional. Text to display when replying to a comment. Accepts "%s" for the author of the comment being replied to.
  * @param string $linktoparent Optional. Boolean to control making the author's name a link to their comment.
  */
-function comment_form_title( $noreplytext = false, $replytext = false, $linktoparent = TRUE ) {
+function comment_form_title( $noreplytext = false, $replytext = false, $linktoparent = true ) {
        global $comment;
 
        if ( false === $noreplytext ) $noreplytext = __( 'Leave a Reply' );
        global $comment;
 
        if ( false === $noreplytext ) $noreplytext = __( 'Leave a Reply' );
@@ -1238,7 +1240,7 @@ class Walker_Comment extends Walker {
         * @param int $depth Depth of comment.
         * @param array $args Uses 'style' argument for type of HTML list.
         */
         * @param int $depth Depth of comment.
         * @param array $args Uses 'style' argument for type of HTML list.
         */
-       function start_lvl(&$output, $depth, $args) {
+       function start_lvl( &$output, $depth = 0, $args = array() ) {
                $GLOBALS['comment_depth'] = $depth + 1;
 
                switch ( $args['style'] ) {
                $GLOBALS['comment_depth'] = $depth + 1;
 
                switch ( $args['style'] ) {
@@ -1262,7 +1264,7 @@ class Walker_Comment extends Walker {
         * @param int $depth Depth of comment.
         * @param array $args Will only append content if style argument value is 'ol' or 'ul'.
         */
         * @param int $depth Depth of comment.
         * @param array $args Will only append content if style argument value is 'ol' or 'ul'.
         */
-       function end_lvl(&$output, $depth, $args) {
+       function end_lvl( &$output, $depth = 0, $args = array() ) {
                $GLOBALS['comment_depth'] = $depth + 1;
 
                switch ( $args['style'] ) {
                $GLOBALS['comment_depth'] = $depth + 1;
 
                switch ( $args['style'] ) {
@@ -1326,7 +1328,7 @@ class Walker_Comment extends Walker {
         * @param int $depth Depth of comment in reference to parents.
         * @param array $args
         */
         * @param int $depth Depth of comment in reference to parents.
         * @param array $args
         */
-       function start_el(&$output, $comment, $depth, $args) {
+       function start_el( &$output, $comment, $depth, $args, $id = 0 ) {
                $depth++;
                $GLOBALS['comment_depth'] = $depth;
 
                $depth++;
                $GLOBALS['comment_depth'] = $depth;
 
@@ -1386,7 +1388,7 @@ class Walker_Comment extends Walker {
         * @param int $depth Depth of comment.
         * @param array $args
         */
         * @param int $depth Depth of comment.
         * @param array $args
         */
-       function end_el(&$output, $comment, $depth, $args) {
+       function end_el(&$output, $comment, $depth = 0, $args = array() ) {
                if ( !empty($args['end-callback']) ) {
                        call_user_func($args['end-callback'], $comment, $args, $depth);
                        return;
                if ( !empty($args['end-callback']) ) {
                        call_user_func($args['end-callback'], $comment, $args, $depth);
                        return;
@@ -1408,7 +1410,7 @@ class Walker_Comment extends Walker {
  * @uses Walker_Comment
  *
  * @param string|array $args Formatting options
  * @uses Walker_Comment
  *
  * @param string|array $args Formatting options
- * @param array $comments Optional array of comment objects.  Defaults to $wp_query->comments
+ * @param array $comments Optional array of comment objects. Defaults to $wp_query->comments
  */
 function wp_list_comments($args = array(), $comments = null ) {
        global $wp_query, $comment_alt, $comment_depth, $comment_thread_alt, $overridden_cpage, $in_comment_loop;
  */
 function wp_list_comments($args = array(), $comments = null ) {
        global $wp_query, $comment_alt, $comment_depth, $comment_thread_alt, $overridden_cpage, $in_comment_loop;
@@ -1517,7 +1519,7 @@ function comment_form( $args = array(), $post_id = null ) {
 
        $commenter = wp_get_current_commenter();
        $user = wp_get_current_user();
 
        $commenter = wp_get_current_commenter();
        $user = wp_get_current_user();
-       $user_identity = ! empty( $user->ID ) ? $user->display_name : '';
+       $user_identity = $user->exists() ? $user->display_name : '';
 
        $req = get_option( 'require_name_email' );
        $aria_req = ( $req ? " aria-required='true'" : '' );
 
        $req = get_option( 'require_name_email' );
        $aria_req = ( $req ? " aria-required='true'" : '' );
@@ -1534,7 +1536,7 @@ function comment_form( $args = array(), $post_id = null ) {
        $defaults = array(
                'fields'               => apply_filters( 'comment_form_default_fields', $fields ),
                'comment_field'        => '<p class="comment-form-comment"><label for="comment">' . _x( 'Comment', 'noun' ) . '</label><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p>',
        $defaults = array(
                'fields'               => apply_filters( 'comment_form_default_fields', $fields ),
                'comment_field'        => '<p class="comment-form-comment"><label for="comment">' . _x( 'Comment', 'noun' ) . '</label><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p>',
-               'must_log_in'          => '<p class="must-log-in">' .  sprintf( __( 'You must be <a href="%s">logged in</a> to post a comment.' ), wp_login_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>',
+               'must_log_in'          => '<p class="must-log-in">' . sprintf( __( 'You must be <a href="%s">logged in</a> to post a comment.' ), wp_login_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>',
                'logged_in_as'         => '<p class="logged-in-as">' . sprintf( __( 'Logged in as <a href="%1$s">%2$s</a>. <a href="%3$s" title="Log out of this account">Log out?</a>' ), admin_url( 'profile.php' ), $user_identity, wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>',
                'comment_notes_before' => '<p class="comment-notes">' . __( 'Your email address will not be published.' ) . ( $req ? $required_text : '' ) . '</p>',
                'comment_notes_after'  => '<p class="form-allowed-tags">' . sprintf( __( 'You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: %s' ), ' <code>' . allowed_tags() . '</code>' ) . '</p>',
                'logged_in_as'         => '<p class="logged-in-as">' . sprintf( __( 'Logged in as <a href="%1$s">%2$s</a>. <a href="%3$s" title="Log out of this account">Log out?</a>' ), admin_url( 'profile.php' ), $user_identity, wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>',
                'comment_notes_before' => '<p class="comment-notes">' . __( 'Your email address will not be published.' ) . ( $req ? $required_text : '' ) . '</p>',
                'comment_notes_after'  => '<p class="form-allowed-tags">' . sprintf( __( 'You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: %s' ), ' <code>' . allowed_tags() . '</code>' ) . '</p>',
@@ -1549,7 +1551,7 @@ function comment_form( $args = array(), $post_id = null ) {
        $args = wp_parse_args( $args, apply_filters( 'comment_form_defaults', $defaults ) );
 
        ?>
        $args = wp_parse_args( $args, apply_filters( 'comment_form_defaults', $defaults ) );
 
        ?>
-               <?php if ( comments_open() ) : ?>
+               <?php if ( comments_open( $post_id ) ) : ?>
                        <?php do_action( 'comment_form_before' ); ?>
                        <div id="respond">
                                <h3 id="reply-title"><?php comment_form_title( $args['title_reply'], $args['title_reply_to'] ); ?> <small><?php cancel_comment_reply_link( $args['cancel_reply_link'] ); ?></small></h3>
                        <?php do_action( 'comment_form_before' ); ?>
                        <div id="respond">
                                <h3 id="reply-title"><?php comment_form_title( $args['title_reply'], $args['title_reply_to'] ); ?> <small><?php cancel_comment_reply_link( $args['cancel_reply_link'] ); ?></small></h3>
@@ -1588,5 +1590,3 @@ function comment_form( $args = array(), $post_id = null ) {
                <?php endif; ?>
        <?php
 }
                <?php endif; ?>
        <?php
 }
-
-?>
index 84076d715ad11f13aaac4e462d0d74f8e2cb2f3e..49406f61c7d03597b94ccf80e86cc6451dfbb316 100644 (file)
@@ -394,7 +394,6 @@ function get_comment_statuses( ) {
        return $status;
 }
 
        return $status;
 }
 
-
 /**
  * The date the last comment was modified.
  *
 /**
  * The date the last comment was modified.
  *
@@ -539,12 +538,12 @@ function delete_comment_meta($comment_id, $meta_key, $meta_value = '') {
  * @link http://codex.wordpress.org/Function_Reference/get_comment_meta
  *
  * @param int $comment_id Comment ID.
  * @link http://codex.wordpress.org/Function_Reference/get_comment_meta
  *
  * @param int $comment_id Comment ID.
- * @param string $key The meta key to retrieve.
+ * @param string $key Optional. The meta key to retrieve. By default, returns data for all keys.
  * @param bool $single Whether to return a single value.
  * @return mixed Will be an array if $single is false. Will be value of meta data field if $single
  *  is true.
  */
  * @param bool $single Whether to return a single value.
  * @return mixed Will be an array if $single is false. Will be value of meta data field if $single
  *  is true.
  */
-function get_comment_meta($comment_id, $key, $single = false) {
+function get_comment_meta($comment_id, $key = '', $single = false) {
        return get_metadata('comment', $comment_id, $key, $single);
 }
 
        return get_metadata('comment', $comment_id, $key, $single);
 }
 
@@ -570,6 +569,25 @@ function update_comment_meta($comment_id, $meta_key, $meta_value, $prev_value =
        return update_metadata('comment', $comment_id, $meta_key, $meta_value, $prev_value);
 }
 
        return update_metadata('comment', $comment_id, $meta_key, $meta_value, $prev_value);
 }
 
+/**
+ * Sets the cookies used to store an unauthenticated commentator's identity. Typically used
+ * to recall previous comments by this commentator that are still held in moderation.
+ *
+ * @param object $comment Comment object.
+ * @param object $user Comment author's object.
+ *
+ * @since 3.4.0
+ */
+function wp_set_comment_cookies($comment, $user) {
+       if ( $user->exists() )
+               return;
+
+       $comment_cookie_lifetime = apply_filters('comment_cookie_lifetime', 30000000);
+       setcookie('comment_author_' . COOKIEHASH, $comment->comment_author, time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN);
+       setcookie('comment_author_email_' . COOKIEHASH, $comment->comment_author_email, time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN);
+       setcookie('comment_author_url_' . COOKIEHASH, esc_url($comment->comment_author_url), time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN);
+}
+
 /**
  * Sanitizes the cookies sent to the user already.
  *
 /**
  * Sanitizes the cookies sent to the user already.
  *
@@ -685,9 +703,9 @@ function check_comment_flood_db( $ip, $email, $date ) {
                        do_action('comment_flood_trigger', $time_lastcomment, $time_newcomment);
 
                        if ( defined('DOING_AJAX') )
                        do_action('comment_flood_trigger', $time_lastcomment, $time_newcomment);
 
                        if ( defined('DOING_AJAX') )
-                               die( __('You are posting comments too quickly.  Slow down.') );
+                               die( __('You are posting comments too quickly. Slow down.') );
 
 
-                       wp_die( __('You are posting comments too quickly.  Slow down.'), '', array('response' => 403) );
+                       wp_die( __('You are posting comments too quickly. Slow down.'), '', array('response' => 403) );
                }
        }
 }
                }
        }
 }
@@ -723,7 +741,7 @@ function &separate_comments(&$comments) {
  * @uses get_option() Used to fill in defaults for parameters.
  * @uses Walker_Comment
  *
  * @uses get_option() Used to fill in defaults for parameters.
  * @uses Walker_Comment
  *
- * @param array $comments Optional array of comment objects.  Defaults to $wp_query->comments
+ * @param array $comments Optional array of comment objects. Defaults to $wp_query->comments
  * @param int $per_page Optional comments per page.
  * @param boolean $threaded Optional control over flat or threaded comments.
  * @return int Number of comment pages.
  * @param int $per_page Optional comments per page.
  * @param boolean $threaded Optional control over flat or threaded comments.
  * @return int Number of comment pages.
@@ -962,15 +980,11 @@ function wp_delete_comment($comment_id, $force_delete = false) {
        }
 
        // Delete metadata
        }
 
        // Delete metadata
-       $meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->commentmeta WHERE comment_id = %d ", $comment_id ) );
-       if ( !empty($meta_ids) ) {
-               do_action( 'delete_commentmeta', $meta_ids );
-               $in_meta_ids = "'" . implode("', '", $meta_ids) . "'";
-               $wpdb->query( "DELETE FROM $wpdb->commentmeta WHERE meta_id IN ($in_meta_ids)" );
-               do_action( 'deleted_commentmeta', $meta_ids );
-       }
+       $meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->commentmeta WHERE comment_id = %d", $comment_id ) );
+       foreach ( $meta_ids as $mid )
+               delete_metadata_by_mid( 'comment', $mid );
 
 
-       if ( ! $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->comments WHERE comment_ID = %d LIMIT 1", $comment_id) ) )
+       if ( ! $wpdb->delete( $wpdb->comments, array( 'comment_ID' => $comment_id ) ) )
                return false;
        do_action('deleted_comment', $comment_id);
 
                return false;
        do_action('deleted_comment', $comment_id);
 
@@ -1116,7 +1130,7 @@ function wp_get_comment_status($comment_id) {
 
        $approved = $comment->comment_approved;
 
 
        $approved = $comment->comment_approved;
 
-       if ( $approved == NULL )
+       if ( $approved == null )
                return false;
        elseif ( $approved == '1' )
                return 'approved';
                return false;
        elseif ( $approved == '1' )
                return 'approved';
@@ -1364,17 +1378,14 @@ function wp_new_comment( $commentdata ) {
 /**
  * Sets the status of a comment.
  *
 /**
  * Sets the status of a comment.
  *
- * The 'wp_set_comment_status' action is called after the comment is handled and
- * will only be called, if the comment status is either 'hold', 'approve', or
- * 'spam'. If the comment status is not in the list, then false is returned and
- * if the status is 'delete', then the comment is deleted without calling the
- * action.
+ * The 'wp_set_comment_status' action is called after the comment is handled.
+ * If the comment status is not in the list, then false is returned.
  *
  * @since 1.0.0
  * @uses wp_transition_comment_status() Passes new and old comment status along with $comment object
  *
  * @param int $comment_id Comment ID.
  *
  * @since 1.0.0
  * @uses wp_transition_comment_status() Passes new and old comment status along with $comment object
  *
  * @param int $comment_id Comment ID.
- * @param string $comment_status New comment status, either 'hold', 'approve', 'spam', or 'delete'.
+ * @param string $comment_status New comment status, either 'hold', 'approve', 'spam', or 'trash'.
  * @param bool $wp_error Whether to return a WP_Error object if there is a failure. Default is false.
  * @return bool False on failure or deletion and true on success.
  */
  * @param bool $wp_error Whether to return a WP_Error object if there is a failure. Default is false.
  * @return bool False on failure or deletion and true on success.
  */
@@ -1568,10 +1579,7 @@ function wp_update_comment_count_now($post_id) {
        $new = (int) $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_approved = '1'", $post_id) );
        $wpdb->update( $wpdb->posts, array('comment_count' => $new), array('ID' => $post_id) );
 
        $new = (int) $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_approved = '1'", $post_id) );
        $wpdb->update( $wpdb->posts, array('comment_count' => $new), array('ID' => $post_id) );
 
-       if ( 'page' == $post->post_type )
-               clean_page_cache( $post_id );
-       else
-               clean_post_cache( $post_id );
+       clean_post_cache( $post );
 
        do_action('wp_update_comment_count', $post_id, $new, $old);
        do_action('edit_post', $post_id, $post);
 
        do_action('wp_update_comment_count', $post_id, $new, $old);
        do_action('edit_post', $post_id, $post);
@@ -1801,7 +1809,7 @@ function pingback($content, $post_ID) {
                endif;
        endforeach;
 
                endif;
        endforeach;
 
-       do_action_ref_array('pre_ping', array(&$post_links, &$pung));
+       do_action_ref_array( 'pre_ping', array( &$post_links, &$pung, $post_ID ) );
 
        foreach ( (array) $post_links as $pagelinkedto ) {
                $pingback_server_url = discover_pingback_server_uri( $pagelinkedto );
 
        foreach ( (array) $post_links as $pagelinkedto ) {
                $pingback_server_url = discover_pingback_server_uri( $pagelinkedto );
@@ -1947,7 +1955,7 @@ function update_comment_cache($comments) {
 //
 
 /**
 //
 
 /**
- * Close comments on old posts on the fly, without any extra DB queries.  Hooked to the_posts.
+ * Close comments on old posts on the fly, without any extra DB queries. Hooked to the_posts.
  *
  * @access private
  * @since 2.7.0
  *
  * @access private
  * @since 2.7.0
@@ -1977,7 +1985,7 @@ function _close_comments_for_old_posts( $posts, $query ) {
 }
 
 /**
 }
 
 /**
- * Close comments on an old post.  Hooked to comments_open and pings_open.
+ * Close comments on an old post. Hooked to comments_open and pings_open.
  *
  * @access private
  * @since 2.7.0
  *
  * @access private
  * @since 2.7.0
@@ -2008,5 +2016,3 @@ function _close_comments_for_old_post( $open, $post_id ) {
 
        return $open;
 }
 
        return $open;
 }
-
-?>
index 27f29711a5bc803bb49d4e4902e614a357936caf..9117ae5d348d911151eacdc8aee9f8dd4fa0645b 100644 (file)
@@ -47,7 +47,7 @@ function wp_schedule_single_event( $timestamp, $hook, $args = array()) {
  * specific interval, specified by you. The action will trigger when someone
  * visits your WordPress site, if the scheduled time has passed.
  *
  * specific interval, specified by you. The action will trigger when someone
  * visits your WordPress site, if the scheduled time has passed.
  *
- * Valid values for the recurrence are hourly, daily and twicedaily.  These can
+ * Valid values for the recurrence are hourly, daily and twicedaily. These can
  * be extended using the cron_schedules filter in wp_get_schedules().
  *
  * Use wp_next_scheduled() to prevent duplicates
  * be extended using the cron_schedules filter in wp_get_schedules().
  *
  * Use wp_next_scheduled() to prevent duplicates
@@ -194,8 +194,8 @@ function wp_next_scheduled( $hook, $args = array() ) {
  */
 function spawn_cron( $local_time = 0 ) {
 
  */
 function spawn_cron( $local_time = 0 ) {
 
-       if ( !$local_time )
-               $local_time = time();
+       if ( ! $local_time )
+               $local_time = microtime( true );
 
        if ( defined('DOING_CRON') || isset($_GET['doing_wp_cron']) )
                return;
 
        if ( defined('DOING_CRON') || isset($_GET['doing_wp_cron']) )
                return;
@@ -226,7 +226,7 @@ function spawn_cron( $local_time = 0 ) {
                if ( !empty($_POST) || defined('DOING_AJAX') )
                        return;
 
                if ( !empty($_POST) || defined('DOING_AJAX') )
                        return;
 
-               $doing_wp_cron = $local_time;
+               $doing_wp_cron = sprintf( '%.22F', $local_time );
                set_transient( 'doing_cron', $doing_wp_cron );
 
                ob_start();
                set_transient( 'doing_cron', $doing_wp_cron );
 
                ob_start();
@@ -241,11 +241,11 @@ function spawn_cron( $local_time = 0 ) {
                return;
        }
 
                return;
        }
 
-       $doing_wp_cron = $local_time;
+       $doing_wp_cron = sprintf( '%.22F', $local_time );
        set_transient( 'doing_cron', $doing_wp_cron );
 
        set_transient( 'doing_cron', $doing_wp_cron );
 
-       $cron_url = get_option( 'siteurl' ) . '/wp-cron.php?doing_wp_cron=' . $doing_wp_cron;
-       wp_remote_post( $cron_url, array('timeout' => 0.01, 'blocking' => false, 'sslverify' => apply_filters('https_local_ssl_verify', true)) );
+       $cron_url = site_url( 'wp-cron.php?doing_wp_cron=' . $doing_wp_cron );
+       wp_remote_post( $cron_url, array( 'timeout' => 0.01, 'blocking' => false, 'sslverify' => apply_filters( 'https_local_ssl_verify', true ) ) );
 }
 
 /**
 }
 
 /**
@@ -264,7 +264,7 @@ function wp_cron() {
        if ( false === $crons = _get_cron_array() )
                return;
 
        if ( false === $crons = _get_cron_array() )
                return;
 
-       $local_time = time();
+       $local_time = microtime( true );
        $keys = array_keys( $crons );
        if ( isset($keys[0]) && $keys[0] > $local_time )
                return;
        $keys = array_keys( $crons );
        if ( isset($keys[0]) && $keys[0] > $local_time )
                return;
index f11c586d5ff28e440dfd59da9485c122b1ac8b19..e2e2fb46878d373e135de0e0034ec4a653eeb4d5 100644 (file)
@@ -1 +1 @@
-#wpadminbar *{font-family:Tahoma,Arial,Helvetica,sans-serif;}#wpadminbar{direction:rtl;font-family:Tahoma,Arial,Helvetica,sans-serif;left:auto;right:0;}#wpadminbar .quicklinks{border-left:0;border-right:1px solid transparent;}#wpadminbar .quicklinks ul{text-align:right;}#wpadminbar li{float:right;}#wpadminbar .quicklinks>ul>li{border-right:0;border-left:1px solid #555;}#wpadminbar .quicklinks>ul>li>a,#wpadminbar .quicklinks>ul>li>.ab-empty-item{border-right:0;border-left:1px solid #333;}#wpadminbar .quicklinks .ab-top-secondary>li{border-left:0;border-right:1px solid #333;float:left;}#wpadminbar .quicklinks .ab-top-secondary>li>a,#wpadminbar .quicklinks .ab-top-secondary>li>.ab-empty-item{border-right:1px solid #555;border-left:0;}#wpadminbar .menupop .ab-sub-wrapper,#wpadminbar .shortlink-input{margin:0 -1px 0 0;}#wpadminbar.ie7 .menupop .ab-sub-wrapper,#wpadminbar.ie7 .shortlink-input{left:auto;right:0;}#wpadminbar .ab-top-secondary .menupop .ab-sub-wrapper{right:auto;left:0;margin:0 0 0 -1px;}#wpadminbar .menupop li:hover>.ab-sub-wrapper,#wpadminbar .menupop li.hover>.ab-sub-wrapper{margin-left:0;margin-right:100%;}#wpadminbar .ab-top-secondary .menupop li:hover>.ab-sub-wrapper,#wpadminbar .ab-top-secondary .menupop li.hover>.ab-sub-wrapper{margin-left:inherit;margin-right:0;left:100%;right:inherit;}#wpadminbar .menupop .menupop>.ab-item{background-position:5% -46px;padding-left:2em;padding-right:1em;}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item{background-position:95% -20px;padding-left:1em;padding-right:2em;}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary{right:0;left:auto;}#wpadminbar .ab-top-secondary{float:left;right:auto;left:0;}#wpadminbar ul li:last-child,#wpadminbar ul li:last-child .ab-item{border-left:0;}#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin-right:88px;margin-left:16px;}#wp-admin-bar-user-actions>li>.ab-item{padding-left:0;padding-right:8px;}#wp-admin-bar-user-info .avatar{left:auto;right:-72px;}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{margin-left:-1px;margin-right:4px;}#wpadminbar .quicklinks li img.blavatar{margin-right:0;margin-left:4px;}#wpadminbar #adminbarsearch .adminbar-input{font-family:Tahoma,Arial,Helvetica,sans-serif;padding:0 24px 0 3px;margin:0;background-position:50% 2px;}#wpadminbar #adminbarsearch .adminbar-input:focus,#wpadminbar.ie7 #adminbarsearch .adminbar-input{background-position:99% 2px;}#wpadminbar .ab-icon{float:right;}.ie7 #wp-admin-bar-wp-logo>.ab-item .ab-icon{position:static;}#wpadminbar.ie7 .ab-icon{float:left;left:12px;}#wpadminbar .ab-label{margin-left:0;margin-right:4px;float:left;}#wpadminbar.ie7 .ab-label{margin-right:0;}#wpadminbar.ie7 #wp-admin-bar-comments>a{min-width:25px;}#wpadminbar a:hover .ab-comments-icon-arrow{border-right-color:#bbb;}#wpadminbar .menupop .ab-sub-wrapper,#wpadminbar .shortlink-input{right:0;}#wpadminbar .quicklinks .menupop ul li a{position:relative;}* html #wpadminbar .quicklinks ul li a{float:right;}
\ No newline at end of file
+#wpadminbar *{font-family:Tahoma,Arial,Helvetica,sans-serif}#wpadminbar{direction:rtl;font-family:Tahoma,Arial,Helvetica,sans-serif;left:auto;right:0}#wpadminbar .quicklinks{border-left:0;border-right:1px solid transparent}#wpadminbar .quicklinks ul{text-align:right}#wpadminbar li{float:right}#wpadminbar .quicklinks>ul>li{border-right:0;border-left:1px solid #555}#wpadminbar .quicklinks>ul>li>a,#wpadminbar .quicklinks>ul>li>.ab-empty-item{border-right:0;border-left:1px solid #333}#wpadminbar .quicklinks .ab-top-secondary>li{border-left:0;border-right:1px solid #333;float:left}#wpadminbar .quicklinks .ab-top-secondary>li>a,#wpadminbar .quicklinks .ab-top-secondary>li>.ab-empty-item{border-right:1px solid #555;border-left:0}#wpadminbar .menupop .ab-sub-wrapper,#wpadminbar .shortlink-input{margin:0 -1px 0 0}#wpadminbar.ie7 .menupop .ab-sub-wrapper,#wpadminbar.ie7 .shortlink-input{left:auto;right:0}#wpadminbar .ab-top-secondary .menupop .ab-sub-wrapper{right:auto;left:0;margin:0 0 0 -1px}#wpadminbar .menupop li:hover>.ab-sub-wrapper,#wpadminbar .menupop li.hover>.ab-sub-wrapper{margin-left:0;margin-right:100%}#wpadminbar .ab-top-secondary .menupop li:hover>.ab-sub-wrapper,#wpadminbar .ab-top-secondary .menupop li.hover>.ab-sub-wrapper{margin-left:inherit;margin-right:0;left:100%;right:inherit}#wpadminbar .menupop .menupop>.ab-item{background-position:5% -46px;padding-left:2em;padding-right:1em}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item{background-position:95% -20px;padding-left:1em;padding-right:2em}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary{right:0;left:auto}#wpadminbar .ab-top-secondary{float:left;right:auto;left:0}#wpadminbar ul li:last-child,#wpadminbar ul li:last-child .ab-item{border-left:0}#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin-right:88px;margin-left:16px}#wp-admin-bar-user-actions>li>.ab-item{padding-left:0;padding-right:8px}#wp-admin-bar-user-info .avatar{left:auto;right:-72px}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{margin-left:-1px;margin-right:4px}#wpadminbar .quicklinks li img.blavatar{margin-right:0;margin-left:4px}#wpadminbar #adminbarsearch .adminbar-input{font-family:Tahoma,Arial,Helvetica,sans-serif;padding:0 24px 0 3px;margin:0;background-position:50% 2px}#wpadminbar #adminbarsearch .adminbar-input:focus,#wpadminbar.ie7 #adminbarsearch .adminbar-input{background-position:99% 2px}#wpadminbar .ab-icon{float:right}.ie7 #wp-admin-bar-wp-logo>.ab-item .ab-icon{position:static}#wpadminbar.ie7 .ab-icon{float:left;left:12px}#wpadminbar .ab-label{margin-left:0;margin-right:4px;float:left}#wpadminbar.ie7 .ab-label{margin-right:0}#wpadminbar.ie7 #wp-admin-bar-comments>a{min-width:25px}#wpadminbar a:hover .ab-comments-icon-arrow{border-right-color:#bbb}#wpadminbar .menupop .ab-sub-wrapper,#wpadminbar .shortlink-input{right:0}#wpadminbar .quicklinks .menupop ul li a{position:relative}* html #wpadminbar .quicklinks ul li a{float:right}
\ No newline at end of file
index 5e35f59fe54d8c68d3f7ac681e68d67dfeb089a8..1838d2f02eba35c093670062d6dac77e3684cabe 100644 (file)
@@ -1 +1 @@
-#wpadminbar *{height:auto;width:auto;margin:0;padding:0;position:static;text-transform:none;letter-spacing:normal;line-height:1;font:normal 13px/28px sans-serif;color:#ccc;text-shadow:#444 0 -1px 0;}#wpadminbar ul li:before,#wpadminbar ul li:after{content:normal;}#wpadminbar a,#wpadminbar a:hover,#wpadminbar a img,#wpadminbar a img:hover{outline:none;border:none;text-decoration:none;background:none;}#wpadminbar{direction:ltr;color:#ccc;font:normal 13px/28px sans-serif;height:28px;position:fixed;top:0;left:0;width:100%;min-width:600px;z-index:99999;background-color:#464646;background-image:-ms-linear-gradient(bottom,#373737,#464646 5px);background-image:-moz-linear-gradient(bottom,#373737,#464646 5px);background-image:-o-linear-gradient(bottom,#373737,#464646 5px);background-image:-webkit-gradient(linear,left bottom,left top,from(#373737),to(#464646));background-image:-webkit-linear-gradient(bottom,#373737,#464646 5px);background-image:linear-gradient(bottom,#373737,#464646 5px);}#wpadminbar .ab-sub-wrapper,#wpadminbar ul,#wpadminbar ul li{background:none;clear:none;list-style:none;margin:0;padding:0;position:relative;z-index:99999;}#wpadminbar .quicklinks{border-left:1px solid transparent;}#wpadminbar .quicklinks ul{text-align:left;}#wpadminbar li{float:left;}#wpadminbar .ab-empty-item{outline:none;}#wpadminbar .quicklinks>ul>li{border-right:1px solid #555;}#wpadminbar .quicklinks>ul>li>a,#wpadminbar .quicklinks>ul>li>.ab-empty-item{border-right:1px solid #333;}#wpadminbar .quicklinks .ab-top-secondary>li{border-left:1px solid #333;border-right:0;float:right;}#wpadminbar .quicklinks .ab-top-secondary>li>a,#wpadminbar .quicklinks .ab-top-secondary>li>.ab-empty-item{border-left:1px solid #555;border-right:0;}#wpadminbar .quicklinks a,#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .shortlink-input{height:28px;display:block;padding:0 12px;margin:0;}#wpadminbar .menupop .ab-sub-wrapper,#wpadminbar .shortlink-input{margin:0 0 0 -1px;padding:0;-moz-box-shadow:0 4px 4px rgba(0,0,0,0.2);-webkit-box-shadow:0 4px 4px rgba(0,0,0,0.2);box-shadow:0 4px 4px rgba(0,0,0,0.2);background:#fff;display:none;position:absolute;float:none;border-width:0 1px 1px 1px;border-style:solid;border-color:#dfdfdf;}#wpadminbar.ie7 .menupop .ab-sub-wrapper,#wpadminbar.ie7 .shortlink-input{top:28px;left:0;}#wpadminbar .ab-top-secondary .menupop .ab-sub-wrapper{right:0;left:auto;margin:0 -1px 0 0;}#wpadminbar .ab-sub-wrapper>.ab-submenu:first-child{border-top:none;}#wpadminbar .ab-submenu{padding:6px 0;border-top:1px solid #dfdfdf;}#wpadminbar .selected .shortlink-input{display:block;}#wpadminbar .quicklinks .menupop ul li{float:none;}#wpadminbar .quicklinks .menupop ul li a strong{font-weight:bold;}#wpadminbar .quicklinks .menupop ul li .ab-item,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li .ab-item,#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item,#wpadminbar .shortlink-input{line-height:26px;height:26px;text-shadow:none;white-space:nowrap;min-width:140px;}#wpadminbar .shortlink-input{width:200px;}#wpadminbar.nojs li:hover>.ab-sub-wrapper,#wpadminbar li.hover>.ab-sub-wrapper{display:block;}#wpadminbar .menupop li:hover>.ab-sub-wrapper,#wpadminbar .menupop li.hover>.ab-sub-wrapper{margin-left:100%;margin-top:-33px;border-width:1px;}#wpadminbar .ab-top-secondary .menupop li:hover>.ab-sub-wrapper,#wpadminbar .ab-top-secondary .menupop li.hover>.ab-sub-wrapper{margin-left:0;left:inherit;right:100%;}#wpadminbar .ab-top-menu>li:hover>.ab-item,#wpadminbar .ab-top-menu>li.hover>.ab-item,#wpadminbar .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus{color:#fafafa;background-color:#3a3a3a;background-image:-ms-linear-gradient(bottom,#3a3a3a,#222);background-image:-moz-linear-gradient(bottom,#3a3a3a,#222);background-image:-o-linear-gradient(bottom,#3a3a3a,#222);background-image:-webkit-gradient(linear,left bottom,left top,from(#3a3a3a),to(#222));background-image:-webkit-linear-gradient(bottom,#3a3a3a,#222);background-image:linear-gradient(bottom,#3a3a3a,#222);}#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item{background:#fff;color:#333;text-shadow:none;}#wpadminbar .hover .ab-label,#wpadminbar.nojq .ab-item:focus .ab-label{color:#fafafa;}#wpadminbar .menupop.hover .ab-label{color:#333;text-shadow:none;}#wpadminbar .menupop li:hover,#wpadminbar .menupop li.hover,#wpadminbar .quicklinks .menupop .ab-item:focus,#wpadminbar .quicklinks .ab-top-menu .menupop .ab-item:focus{background-color:#eaf2fa;}#wpadminbar .ab-submenu .ab-item{color:#333;text-shadow:none;}#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#21759B;}#wpadminbar .menupop .menupop>.ab-item{display:block;background-image:url(../images/admin-bar-sprite.png?d=20111130);background-position:95% -20px;background-repeat:no-repeat;padding-right:2em;}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item{background-image:url(../images/admin-bar-sprite.png?d=20111130);background-position:5% -46px;background-repeat:no-repeat;padding-left:2em;padding-right:1em;}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary{display:block;position:relative;right:auto;margin:0;background:#eee;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;}#wpadminbar .quicklinks .menupop .ab-sub-secondary>li:hover,#wpadminbar .quicklinks .menupop .ab-sub-secondary>li.hover,#wpadminbar .quicklinks .menupop .ab-sub-secondary>li .ab-item:focus{background-color:#dfdfdf;}#wpadminbar .quicklinks a span#ab-updates{background:#eee;color:#333;text-shadow:none;display:inline;padding:2px 5px;font-size:10px;font-weight:bold;-webkit-border-radius:10px;border-radius:10px;}#wpadminbar .quicklinks a:hover span#ab-updates{background:#fff;color:#000;}#wpadminbar .ab-top-secondary{float:right;background-color:#464646;background-image:-ms-linear-gradient(bottom,#373737,#464646 5px);background-image:-moz-linear-gradient(bottom,#373737,#464646 5px);background-image:-o-linear-gradient(bottom,#373737,#464646 5px);background-image:-webkit-gradient(linear,left bottom,left top,from(#373737),to(#464646));background-image:-webkit-linear-gradient(bottom,#373737,#464646 5px);background-image:linear-gradient(bottom,#373737,#464646 5px);}#wpadminbar ul li:last-child,#wpadminbar ul li:last-child .ab-item{border-right:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}#wp-admin-bar-my-account>ul{min-width:198px;}#wp-admin-bar-my-account.with-avatar>ul{min-width:270px;}#wpadminbar #wp-admin-bar-user-actions>li{margin-left:16px;margin-right:16px;}#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin-left:88px;}#wp-admin-bar-user-actions>li>.ab-item{padding-left:8px;}#wpadminbar #wp-admin-bar-user-info{margin-top:6px;margin-bottom:15px;height:auto;background:none;}#wp-admin-bar-user-info .avatar{position:absolute;left:-72px;top:4px;}#wpadminbar #wp-admin-bar-user-info a{background:none;height:auto;}#wpadminbar #wp-admin-bar-user-info span{background:none;padding:0;height:18px;}#wpadminbar #wp-admin-bar-user-info .display-name,#wpadminbar #wp-admin-bar-user-info .username{text-shadow:none;display:block;}#wpadminbar #wp-admin-bar-user-info .display-name{color:#333;}#wpadminbar #wp-admin-bar-user-info .username{color:#999;font-size:11px;}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{width:16px;height:16px;border:1px solid #999;padding:0;background:#eee;line-height:24px;vertical-align:middle;margin:-3px 0 0 6px;float:none;display:inline;}#wpadminbar .quicklinks li img.blavatar{vertical-align:middle;margin:-3px 4px 0 0;padding:0;}#wpadminbar #wp-admin-bar-search .ab-item{padding:0;}#wpadminbar #wp-admin-bar-search .ab-item{background:transparent;}#wpadminbar #adminbarsearch{height:28px;padding:0 2px;}#wpadminbar #adminbarsearch .adminbar-input{font:13px/24px sans-serif;height:24px;width:24px;border:none;padding:0 3px 0 23px;margin:0;color:#ccc;text-shadow:#444 0 -1px 0;background-color:rgba(255,255,255,0);background-image:url(../images/admin-bar-sprite.png?d=20111130);background-position:3px 2px;background-repeat:no-repeat;outline:none;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition-duration:400ms;-webkit-transition-property:width,background;-webkit-transition-timing-function:ease;-moz-transition-duration:400ms;-moz-transition-property:width,background;-moz-transition-timing-function:ease;-o-transition-duration:400ms;-o-transition-property:width,background;-o-transition-timing-function:ease;}#wpadminbar.ie7 #adminbarsearch .adminbar-input{margin-top:1px;width:120px;}#wpadminbar #adminbarsearch .adminbar-input:focus{color:#555;text-shadow:0 1px 0 #fff;width:200px;background-color:rgba(255,255,255,0.9);}#wpadminbar.ie8 #adminbarsearch .adminbar-input{background-color:#464646;}#wpadminbar.ie8 #adminbarsearch .adminbar-input:focus{background-color:#fff;}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#ddd;}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#ddd;}#wpadminbar #adminbarsearch .adminbar-button{display:none;}#wpadminbar #wp-admin-bar-appearance{border-top:none;margin-top:-12px;}#wpadminbar #wp-admin-bar-appearance{border-top:none;margin-top:-12px;}#wpadminbar .ab-icon{position:relative;float:left;width:16px;height:16px;margin-top:6px;}#wpadminbar .ab-label{margin-left:4px;}#wp-admin-bar-wp-logo>.ab-item .ab-icon{width:20px;height:20px;margin-top:4px;background-image:url(../images/admin-bar-sprite.png?d=20111130);background-position:0 -76px;background-repeat:no-repeat;}#wpadminbar.nojs #wp-admin-bar-wp-logo:hover>.ab-item .ab-icon,#wpadminbar #wp-admin-bar-wp-logo.hover>.ab-item .ab-icon{background-position:0 -104px;}#wp-admin-bar-updates>.ab-item .ab-icon{background-image:url(../images/admin-bar-sprite.png?d=20111130);background-position:-2px -159px;background-repeat:no-repeat;}#wp-admin-bar-comments>.ab-item .ab-icon{background-image:url(../images/admin-bar-sprite.png?d=20111130);background-position:-1px -134px;background-repeat:no-repeat;}#wpadminbar span.count-0{display:none;}#wpadminbar #wp-admin-bar-new-content>.ab-item .ab-icon{background-image:url(../images/admin-bar-sprite.png?d=20111130);background-position:-2px -182px;background-repeat:no-repeat;}#wpadminbar.nojs #wp-admin-bar-new-content:hover>.ab-item .ab-icon,#wpadminbar #wp-admin-bar-new-content.hover>.ab-item .ab-icon{background-position:-2px -203px;}* html #wpadminbar{overflow:hidden;position:absolute;}* html #wpadminbar .quicklinks ul li a{float:left;}* html #wpadminbar .menupop a span{background-image:none;}
\ No newline at end of file
+#wpadminbar *{height:auto;width:auto;margin:0;padding:0;position:static;text-transform:none;letter-spacing:normal;line-height:1;font:normal 13px/28px sans-serif;color:#ccc;text-shadow:#444 0 -1px 0}#wpadminbar ul li:before,#wpadminbar ul li:after{content:normal}#wpadminbar a,#wpadminbar a:hover,#wpadminbar a img,#wpadminbar a img:hover{outline:0;border:0;text-decoration:none;background:0}#wpadminbar{direction:ltr;color:#ccc;font:normal 13px/28px sans-serif;height:28px;position:fixed;top:0;left:0;width:100%;min-width:600px;z-index:99999;background-color:#464646;background-image:-ms-linear-gradient(bottom,#373737,#464646 5px);background-image:-moz-linear-gradient(bottom,#373737,#464646 5px);background-image:-o-linear-gradient(bottom,#373737,#464646 5px);background-image:-webkit-gradient(linear,left bottom,left top,from(#373737),to(#464646));background-image:-webkit-linear-gradient(bottom,#373737,#464646 5px);background-image:linear-gradient(bottom,#373737,#464646 5px)}#wpadminbar .ab-sub-wrapper,#wpadminbar ul,#wpadminbar ul li{background:0;clear:none;list-style:none;margin:0;padding:0;position:relative;z-index:99999}#wpadminbar .quicklinks{border-left:1px solid transparent}#wpadminbar .quicklinks ul{text-align:left}#wpadminbar li{float:left}#wpadminbar .ab-empty-item{outline:0}#wpadminbar .quicklinks>ul>li{border-right:1px solid #555}#wpadminbar .quicklinks>ul>li>a,#wpadminbar .quicklinks>ul>li>.ab-empty-item{border-right:1px solid #333}#wpadminbar .quicklinks .ab-top-secondary>li{border-left:1px solid #333;border-right:0;float:right}#wpadminbar .quicklinks .ab-top-secondary>li>a,#wpadminbar .quicklinks .ab-top-secondary>li>.ab-empty-item{border-left:1px solid #555;border-right:0}#wpadminbar .quicklinks a,#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .shortlink-input{height:28px;display:block;padding:0 12px;margin:0}#wpadminbar .menupop .ab-sub-wrapper,#wpadminbar .shortlink-input{margin:0 0 0 -1px;padding:0;-moz-box-shadow:0 4px 4px rgba(0,0,0,0.2);-webkit-box-shadow:0 4px 4px rgba(0,0,0,0.2);box-shadow:0 4px 4px rgba(0,0,0,0.2);background:#fff;display:none;position:absolute;float:none;border-width:0 1px 1px 1px;border-style:solid;border-color:#dfdfdf}#wpadminbar.ie7 .menupop .ab-sub-wrapper,#wpadminbar.ie7 .shortlink-input{top:28px;left:0}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{min-width:100%}#wpadminbar .ab-top-secondary .menupop .ab-sub-wrapper{right:0;left:auto;margin:0 -1px 0 0}#wpadminbar .ab-sub-wrapper>.ab-submenu:first-child{border-top:0}#wpadminbar .ab-submenu{padding:6px 0;border-top:1px solid #dfdfdf}#wpadminbar .selected .shortlink-input{display:block}#wpadminbar .quicklinks .menupop ul li{float:none}#wpadminbar .quicklinks .menupop ul li a strong{font-weight:bold}#wpadminbar .quicklinks .menupop ul li .ab-item,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li .ab-item,#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item,#wpadminbar .shortlink-input{line-height:26px;height:26px;text-shadow:none;white-space:nowrap;min-width:140px}#wpadminbar .shortlink-input{width:200px}#wpadminbar.nojs li:hover>.ab-sub-wrapper,#wpadminbar li.hover>.ab-sub-wrapper{display:block}#wpadminbar .menupop li:hover>.ab-sub-wrapper,#wpadminbar .menupop li.hover>.ab-sub-wrapper{margin-left:100%;margin-top:-33px;border-width:1px}#wpadminbar .ab-top-secondary .menupop li:hover>.ab-sub-wrapper,#wpadminbar .ab-top-secondary .menupop li.hover>.ab-sub-wrapper{margin-left:0;left:inherit;right:100%}#wpadminbar .ab-top-menu>li:hover>.ab-item,#wpadminbar .ab-top-menu>li.hover>.ab-item,#wpadminbar .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus{color:#fafafa;background-color:#3a3a3a;background-image:-ms-linear-gradient(bottom,#3a3a3a,#222);background-image:-moz-linear-gradient(bottom,#3a3a3a,#222);background-image:-o-linear-gradient(bottom,#3a3a3a,#222);background-image:-webkit-gradient(linear,left bottom,left top,from(#3a3a3a),to(#222));background-image:-webkit-linear-gradient(bottom,#3a3a3a,#222);background-image:linear-gradient(bottom,#3a3a3a,#222)}#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item{background:#fff;color:#333;text-shadow:none;border-right-color:transparent;border-left-color:transparent}#wpadminbar .hover .ab-label,#wpadminbar.nojq .ab-item:focus .ab-label{color:#fafafa}#wpadminbar .menupop.hover .ab-label{color:#333;text-shadow:none}#wpadminbar .menupop li:hover,#wpadminbar .menupop li.hover,#wpadminbar .quicklinks .menupop .ab-item:focus,#wpadminbar .quicklinks .ab-top-menu .menupop .ab-item:focus{background-color:#eaf2fa}#wpadminbar .ab-submenu .ab-item{color:#333;text-shadow:none}#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#21759b}#wpadminbar .menupop .menupop>.ab-item{display:block;background-image:url(../images/admin-bar-sprite.png?d=20111130);background-position:95% -20px;background-repeat:no-repeat;padding-right:2em}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item{background-image:url(../images/admin-bar-sprite.png?d=20111130);background-position:5% -46px;background-repeat:no-repeat;padding-left:2em;padding-right:1em}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary{display:block;position:relative;right:auto;margin:0;background:#eee;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}#wpadminbar .quicklinks .menupop .ab-sub-secondary>li:hover,#wpadminbar .quicklinks .menupop .ab-sub-secondary>li.hover,#wpadminbar .quicklinks .menupop .ab-sub-secondary>li .ab-item:focus{background-color:#dfdfdf}#wpadminbar .quicklinks a span#ab-updates{background:#eee;color:#333;text-shadow:none;display:inline;padding:2px 5px;font-size:10px;font-weight:bold;-webkit-border-radius:10px;border-radius:10px}#wpadminbar .quicklinks a:hover span#ab-updates{background:#fff;color:#000}#wpadminbar .ab-top-secondary{float:right;background-color:#464646;background-image:-ms-linear-gradient(bottom,#373737,#464646 5px);background-image:-moz-linear-gradient(bottom,#373737,#464646 5px);background-image:-o-linear-gradient(bottom,#373737,#464646 5px);background-image:-webkit-gradient(linear,left bottom,left top,from(#373737),to(#464646));background-image:-webkit-linear-gradient(bottom,#373737,#464646 5px);background-image:linear-gradient(bottom,#373737,#464646 5px)}#wpadminbar ul li:last-child,#wpadminbar ul li:last-child .ab-item{border-right:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}#wp-admin-bar-my-account>ul{min-width:198px}#wp-admin-bar-my-account.with-avatar>ul{min-width:270px}#wpadminbar #wp-admin-bar-user-actions>li{margin-left:16px;margin-right:16px}#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin-left:88px}#wp-admin-bar-user-actions>li>.ab-item{padding-left:8px}#wpadminbar #wp-admin-bar-user-info{margin-top:6px;margin-bottom:15px;height:auto;background:0}#wp-admin-bar-user-info .avatar{position:absolute;left:-72px;top:4px;width:64px;height:64px}#wpadminbar #wp-admin-bar-user-info a{background:0;height:auto}#wpadminbar #wp-admin-bar-user-info span{background:0;padding:0;height:18px}#wpadminbar #wp-admin-bar-user-info .display-name,#wpadminbar #wp-admin-bar-user-info .username{text-shadow:none;display:block}#wpadminbar #wp-admin-bar-user-info .display-name{color:#333}#wpadminbar #wp-admin-bar-user-info .username{color:#999;font-size:11px}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{width:16px;height:16px;border:1px solid #999;padding:0;background:#eee;line-height:24px;vertical-align:middle;margin:-3px 0 0 6px;float:none;display:inline}#wpadminbar .quicklinks li img.blavatar{vertical-align:middle;margin:-3px 4px 0 0;padding:0}#wpadminbar #wp-admin-bar-search .ab-item{padding:0}#wpadminbar #wp-admin-bar-search .ab-item{background:transparent}#wpadminbar #adminbarsearch{height:28px;padding:0 2px}#wpadminbar #adminbarsearch .adminbar-input{font:13px/24px sans-serif;height:24px;width:24px;border:0;padding:0 3px 0 23px;margin:0;color:#ccc;text-shadow:#444 0 -1px 0;background-color:rgba(255,255,255,0);background-image:url(../images/admin-bar-sprite.png?d=20111130);background-position:3px 2px;background-repeat:no-repeat;outline:0;cursor:pointer;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition-duration:400ms;-webkit-transition-property:width,background;-webkit-transition-timing-function:ease;-moz-transition-duration:400ms;-moz-transition-property:width,background;-moz-transition-timing-function:ease;-o-transition-duration:400ms;-o-transition-property:width,background;-o-transition-timing-function:ease}#wpadminbar.ie7 #adminbarsearch .adminbar-input{margin-top:1px;width:120px}#wpadminbar #adminbarsearch .adminbar-input:focus{color:#555;text-shadow:0 1px 0 #fff;width:200px;background-color:rgba(255,255,255,0.9);cursor:text}#wpadminbar.ie8 #adminbarsearch .adminbar-input{background-color:#464646}#wpadminbar.ie8 #adminbarsearch .adminbar-input:focus{background-color:#fff}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#ddd}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#ddd}#wpadminbar #adminbarsearch .adminbar-button{display:none}#wpadminbar #wp-admin-bar-appearance{border-top:0;margin-top:-12px}#wpadminbar #wp-admin-bar-appearance{border-top:0;margin-top:-12px}#wpadminbar .ab-icon{position:relative;float:left;width:16px;height:16px;margin-top:6px}#wpadminbar .ab-label{margin-left:4px}#wp-admin-bar-wp-logo>.ab-item .ab-icon{width:20px;height:20px;margin-top:4px;background-image:url(../images/admin-bar-sprite.png?d=20111130);background-position:0 -76px;background-repeat:no-repeat}#wpadminbar.nojs #wp-admin-bar-wp-logo:hover>.ab-item .ab-icon,#wpadminbar #wp-admin-bar-wp-logo.hover>.ab-item .ab-icon{background-position:0 -104px}#wp-admin-bar-updates>.ab-item .ab-icon{background-image:url(../images/admin-bar-sprite.png?d=20111130);background-position:-2px -159px;background-repeat:no-repeat}#wp-admin-bar-comments>.ab-item .ab-icon{background-image:url(../images/admin-bar-sprite.png?d=20111130);background-position:-1px -134px;background-repeat:no-repeat}#wpadminbar span.count-0{display:none}#wpadminbar #wp-admin-bar-new-content>.ab-item .ab-icon{background-image:url(../images/admin-bar-sprite.png?d=20111130);background-position:-2px -182px;background-repeat:no-repeat}#wpadminbar.nojs #wp-admin-bar-new-content:hover>.ab-item .ab-icon,#wpadminbar #wp-admin-bar-new-content.hover>.ab-item .ab-icon{background-position:-2px -203px}.no-customize-support .hide-if-no-customize,.customize-support .hide-if-customize{display:none}@media only screen and (-webkit-min-device-pixel-ratio:1.5){#wpadminbar .menupop .menupop>.ab-item,#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item,#wpadminbar #adminbarsearch .adminbar-input,#wp-admin-bar-wp-logo>.ab-item .ab-icon,#wp-admin-bar-updates>.ab-item .ab-icon,#wp-admin-bar-comments>.ab-item .ab-icon,#wpadminbar #wp-admin-bar-new-content>.ab-item .ab-icon{background-image:url(../images/admin-bar-sprite-2x.png?d=20120516);background-size:20px 220px}}* html #wpadminbar{overflow:hidden;position:absolute}* html #wpadminbar .quicklinks ul li a{float:left}* html #wpadminbar .menupop a span{background-image:none}
\ No newline at end of file
index b257056e02e4816d1ee4d0aa352c922e1afb8c3b..d4e2309a882107c421e78a9864fd3f9cd24f2270 100644 (file)
@@ -48,7 +48,6 @@
        background-image: linear-gradient(bottom, #373737, #464646 5px); /* proposed W3C Markup */
 }
 
        background-image: linear-gradient(bottom, #373737, #464646 5px); /* proposed W3C Markup */
 }
 
-
 #wpadminbar .ab-sub-wrapper,
 #wpadminbar ul,
 #wpadminbar ul li {
 #wpadminbar .ab-sub-wrapper,
 #wpadminbar ul,
 #wpadminbar ul li {
        left: 0;
 }
 
        left: 0;
 }
 
+#wpadminbar .ab-top-menu > .menupop > .ab-sub-wrapper {
+       min-width: 100%;
+}
+
 #wpadminbar .ab-top-secondary .menupop .ab-sub-wrapper {
        right: 0;
        left: auto;
 #wpadminbar .ab-top-secondary .menupop .ab-sub-wrapper {
        right: 0;
        left: auto;
        background: #fff;
        color: #333;
        text-shadow: none;
        background: #fff;
        color: #333;
        text-shadow: none;
+       border-right-color: transparent;
+       border-left-color: transparent;
 }
 
 #wpadminbar .hover .ab-label,
 }
 
 #wpadminbar .hover .ab-label,
        position: absolute;
        left: -72px;
        top: 4px;
        position: absolute;
        left: -72px;
        top: 4px;
+       width: 64px;
+       height: 64px;
 }
 
 #wpadminbar #wp-admin-bar-user-info a {
 }
 
 #wpadminbar #wp-admin-bar-user-info a {
        text-shadow: none;
        display: block;
 }
        text-shadow: none;
        display: block;
 }
+
 #wpadminbar #wp-admin-bar-user-info .display-name {
        color: #333;
 }
 #wpadminbar #wp-admin-bar-user-info .display-name {
        color: #333;
 }
        background-position: 3px 2px;
        background-repeat: no-repeat;
        outline: none;
        background-position: 3px 2px;
        background-repeat: no-repeat;
        outline: none;
+       cursor: pointer;
 
        -webkit-border-radius: 3px;
        border-radius: 3px;
 
        -webkit-border-radius: 3px;
        border-radius: 3px;
        text-shadow: 0 1px 0 #fff;
        width: 200px;
        background-color: rgba( 255, 255, 255, 0.9 );
        text-shadow: 0 1px 0 #fff;
        width: 200px;
        background-color: rgba( 255, 255, 255, 0.9 );
+       cursor: text;
 }
 
 #wpadminbar.ie8 #adminbarsearch .adminbar-input {
 }
 
 #wpadminbar.ie8 #adminbarsearch .adminbar-input {
        background-position: -2px -203px;
 }
 
        background-position: -2px -203px;
 }
 
+/**
+ * Customize support classes
+ */
+.no-customize-support .hide-if-no-customize,
+.customize-support .hide-if-customize {
+       display: none;
+}
+
+/**
+ * Retina display 2x icons
+ */
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5) {
+       #wpadminbar .menupop .menupop > .ab-item,
+       #wpadminbar .ab-top-secondary .menupop .menupop > .ab-item,
+       #wpadminbar #adminbarsearch .adminbar-input,
+       #wp-admin-bar-wp-logo > .ab-item .ab-icon,
+       #wp-admin-bar-updates > .ab-item .ab-icon,
+       #wp-admin-bar-comments > .ab-item .ab-icon,
+       #wpadminbar #wp-admin-bar-new-content > .ab-item .ab-icon {
+               background-image: url(../images/admin-bar-sprite-2x.png?d=20120516);
+               background-size: 20px 220px;
+       }
+}
+
 /**
  * IE 6-targeted rules
  */
 /**
  * IE 6-targeted rules
  */
diff --git a/wp-includes/css/editor-buttons.css b/wp-includes/css/editor-buttons.css
deleted file mode 100644 (file)
index 7d5444d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-.wp_themeSkin table,.wp_themeSkin tbody,.wp_themeSkin a,.wp_themeSkin img,.wp_themeSkin tr,.wp_themeSkin div,.wp_themeSkin td,.wp_themeSkin iframe,.wp_themeSkin span,.wp_themeSkin *,.wp_themeSkin .mceText{border:0;margin:0;padding:0;white-space:nowrap;text-decoration:none;font-weight:normal;cursor:default;vertical-align:baseline;width:auto;border-collapse:separate;}.wp_themeSkin a:hover,.wp_themeSkin a:link,.wp_themeSkin a:visited,.wp_themeSkin a:active{text-decoration:none;font-weight:normal;cursor:default;}.wp_themeSkin table td{vertical-align:middle;}.wp_themeSkin *,.wp_themeSkin a:hover,.wp_themeSkin a:link,.wp_themeSkin a:visited,.wp_themeSkin a:active{color:#000;}.wp_themeSkin iframe{display:block;}.wp_themeSkin #mce_fullscreen_ifr{background-color:#fff;}.wp_themeSkin .mceToolbar{padding:1px;}.wp_themeSkin .mceExternalToolbar{position:absolute;border-bottom:0;display:none;}.wp_themeSkin .mceExternalToolbar td.mceToolbar{padding-right:13px;}.wp_themeSkin .mceExternalClose{position:absolute;top:3px;right:3px;width:7px;height:7px;background:url("../js/tinymce/themes/advanced/img/icons.gif") -820px 0;}.wp_themeSkin table.mceToolbar,.wp_themeSkin tr.mceFirst .mceToolbar tr td,.wp_themeSkin tr.mceLast .mceToolbar tr td{border:0;margin:0;padding:0;}.wp_themeSkin table.mceLayout{border:0;}.wp_themeSkin .mceStatusbar{display:block;font-family:Arial,"Bitstream Vera Sans",Helvetica,Verdana,sans-serif;font-size:12px;line-height:16px;padding:0 0 0 8px;overflow:visible;height:20px;border-top:1px solid #dfdfdf;color:#000;background-color:#f5f5f5;}.rtl .wp_themeSkin .mceStatusbar{padding:0 8px 0 0;}.wp_themeSkin .mceStatusbar *{color:#555;}.wp_themeSkin .mceStatusbar div{float:left;padding:2px;}.rtl .wp_themeSkin .mceStatusbar div{float:right;}.wp_themeSkin .mceStatusbar a.mceResize{display:block;float:right;background:url("../js/tinymce/themes/advanced/img/icons.gif") -800px 0;width:20px;height:20px;cursor:se-resize;}.rtl .wp_themeSkin .mceStatusbar a.mceResize{float:left;}.wp_themeSkin .mceStatusbar a:hover{text-decoration:underline;}.wp_themeSkin table.mceToolbar{margin:0 6px 2px;}.wp_themeSkin #content_toolbar1{margin-top:2px;}.wp_themeSkin .mceToolbar .mceToolbarEndListBox span{display:none;}.wp_themeSkin span.mceIcon,.wp_themeSkin img.mceIcon{display:block;width:20px;height:20px;}.wp_themeSkin .mceIcon{background:url("../js/tinymce/themes/advanced/img/icons.gif") no-repeat 20px 20px;}.wp_themeSkin .mceButton{display:block;width:20px;height:20px;cursor:default;padding:1px 2px;margin:1px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;-moz-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;}.wp_themeSkin a.mceButtonEnabled:hover{background-image:inherit 0 -10px;}.wp_themeSkin .mceOldBoxModel a.mceButton span,.wp_themeSkin .mceOldBoxModel a.mceButton img{margin:0 0 0 1px;}.wp_themeSkin a.mceButton:active,.wp_themeSkin a.mceButtonActive,.wp_themeSkin a.mceButtonActive:hover,.wp_themeSkin a.mceButtonSelected{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;-moz-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;}.wp_themeSkin .mceButtonDisabled .mceIcon{opacity:.5;filter:alpha(opacity=50);}.wp_themeSkin .mceSeparator{height:24px;width:1px;display:block;background:transparent;overflow:hidden;margin:0 2px;}.wp_themeSkin .mceListBox,.wp_themeSkin .mceListBox a{display:block;}.wp_themeSkin .mceListBox .mceText{padding:1px 2px 1px 5px;text-align:left;text-decoration:none;width:70px;-webkit-border-bottom-left-radius:2px;-webkit-border-top-left-radius:2px;border-bottom-left-radius:2px;border-top-left-radius:2px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;-moz-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;font-family:Arial,"Bitstream Vera Sans",Helvetica,Verdana,sans-serif;font-size:12px;height:20px;line-height:20px;overflow:hidden;}.wp_themeSkin .mceListBox{margin:1px;direction:ltr;}.wp_themeSkin .mceListBox .mceOpen{width:14px;height:20px;border-collapse:separate;padding:1px;-webkit-border-bottom-left-radius:0;-webkit-border-top-left-radius:0;border-bottom-left-radius:0;border-top-left-radius:0;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;-moz-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;}.wp_themeSkin .mceListBox .mceOpen span{display:block;width:14px;height:20px;background-image:url("../images/down_arrow.gif");background-position:2px 1px;background-repeat:no-repeat;}.wp_themeSkin table.mceListBoxEnabled:hover .mceText,.wp_themeSkin .mceListBoxHover .mceText,.wp_themeSkin .mceListBoxSelected .mceText,.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen,.wp_themeSkin .mceListBoxSelected .mceOpen{background-image:none;}.wp_themeSkin .mceListBoxDisabled .mceText{color:gray;}.wp_themeSkin .mceListBoxMenu{overflow:auto;overflow-x:hidden;}.wp_themeSkin .mceOldBoxModel .mceListBox .mceText{height:22px;}.wp_themeSkin select.mceListBox{font-family:Arial,"Bitstream Vera Sans",Helvetica,Verdana,sans-serif;font-size:12px;border-color:#B2B2B2;background-color:#fff;}.wp_themeSkin .mceSplitButton a,.wp_themeSkin .mceSplitButton span{display:block;height:20px;}.wp_themeSkin .mceSplitButton{display:block;margin:1px;direction:ltr;}.wp_themeSkin table.mceSplitButton td{padding:2px;-webkit-border-radius:2px;border-radius:2px;}.wp_themeSkin table.mceSplitButton td a{-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;-moz-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;}.wp_themeSkin table.mceSplitButton:hover td{background-image:inherit 0 -10px;}.wp_themeSkin .mceSplitButton a.mceAction{height:20px;width:20px;padding:1px 2px;}.wp_themeSkin .mceSplitButton span.mceAction{background-image:url("../js/tinymce/themes/advanced/img/icons.gif");background-repeat:no-repeat;background-color:transparent;width:20px;}.wp_themeSkin .mceSplitButton a.mceOpen{width:10px;height:20px;background-image:url("../images/down_arrow.gif");background-position:1px 2px;background-repeat:no-repeat;padding:1px;border-left:0 none!important;}.wp_themeSkin .mceSplitButton span.mceOpen{display:none;}.wp_themeSkin .mceSplitButtonDisabled .mceAction{opacity:.3;filter:alpha(opacity=30);}.wp_themeSkin .mceListBox a.mceText,.wp_themeSkin .mceSplitButton a.mceAction{-webkit-border-bottom-left-radius:2px;-webkit-border-top-left-radius:2px;border-bottom-left-radius:2px;border-top-left-radius:2px;}.wp_themeSkin .mceSplitButton a.mceOpen,.wp_themeSkin .mceListBox a.mceOpen{-webkit-border-bottom-right-radius:2px;-webkit-border-top-right-radius:2px;border-bottom-right-radius:2px;border-top-right-radius:2px;}.wp_themeSkin span.mce_undo,.wp_themeSkin span.mce_redo,.wp_themeSkin span.mce_bullist,.wp_themeSkin span.mce_numlist,.wp_themeSkin span.mce_blockquote,.wp_themeSkin span.mce_charmap,.wp_themeSkin span.mce_bold,.wp_themeSkin span.mce_italic,.wp_themeSkin span.mce_underline,.wp_themeSkin span.mce_justifyleft,.wp_themeSkin span.mce_justifyright,.wp_themeSkin span.mce_justifycenter,.wp_themeSkin span.mce_justifyfull,.wp_themeSkin span.mce_indent,.wp_themeSkin span.mce_outdent,.wp_themeSkin span.mce_link,.wp_themeSkin span.mce_unlink,.wp_themeSkin span.mce_help,.wp_themeSkin span.mce_removeformat,.wp_themeSkin span.mce_fullscreen,.wp_themeSkin span.mce_wp_fullscreen,.wp_themeSkin span.mce_media,.wp_themeSkin span.mce_pastetext,.wp_themeSkin span.mce_pasteword,.wp_themeSkin span.mce_wp_help,.wp_themeSkin span.mce_wp_adv,.wp_themeSkin span.mce_wp_more,.wp_themeSkin span.mce_strikethrough,.wp_themeSkin span.mce_spellchecker,.wp_themeSkin span.mce_forecolor,.wp_themeSkin .mce_forecolorpicker,.wp_themeSkin .mceSplitButton .mce_spellchecker span.mce_spellchecker,.wp_themeSkin .mceSplitButton .mce_forecolor span.mce_forecolor,.wp_themeSkin .mceSplitButton span.mce_numlist,.wp_themeSkin .mceSplitButton span.mce_bullist{background-image:url(../images/wpicons.png);}.wp_themeSkin div.mceColorSplitMenu table{background-color:#ebebeb;border-color:#B2B2B2;}.wp_themeSkin .mceColorSplitMenu td{padding:2px;}.wp_themeSkin .mceColorSplitMenu a{display:block;width:9px;height:9px;overflow:hidden;border-color:#B2B2B2;}.wp_themeSkin .mceColorSplitMenu td.mceMoreColors{padding:1px 3px 1px 1px;}.wp_themeSkin .mceColorSplitMenu a.mceMoreColors{width:100%;height:auto;text-align:center;font-family:Tahoma,Verdana,Arial,Helvetica;font-size:11px;line-height:20px;border-color:#fff;}.wp_themeSkin .mceColorPreview{margin:-5px 0 0 2px;width:16px;height:4px;overflow:hidden;}.wp_themeSkin .mceMenu{position:absolute;left:0;top:0;z-index:1000;border-color:#ddd;}.wp_themeSkin .mceNoIcons span.mceIcon{width:0;}.wp_themeSkin .mceNoIcons a .mceText{padding-left:10px;}.wp_themeSkin .mceMenu table{background-color:#ebeaeb;}.wp_themeSkin .mceMenu a,.wp_themeSkin .mceMenu span,.wp_themeSkin .mceMenu{display:block;}.wp_themeSkin .mceMenu td{height:20px;overflow:hidden;}.wp_themeSkin .mceMenu a{position:relative;padding:3px 0 4px 0;text-decoration:none!important;}.wp_themeSkin .mceMenu .mceText{position:relative;display:block;font-family:Tahoma,Verdana,Arial,Helvetica;cursor:default;margin:0;padding:0 25px;color:#000;}.wp_themeSkin .mceMenu span.mceText,.wp_themeSkin .mceMenu .mcePreview{font-size:12px;}.wp_themeSkin .mceMenu pre.mceText{font-family:Monospace;}.wp_themeSkin .mceMenu .mceIcon{position:absolute;top:0;left:0;width:22px;}.wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover,.wp_themeSkin .mceMenu .mceMenuItemActive{background-color:#f5f5f5;}.wp_themeSkin td.mceMenuItemSeparator{height:1px;background-color:#aaa;}.wp_themeSkin .mceMenuItemTitle a{border-top:0;border-right:0;border-left:0;border-bottom:1px solid #aaa;text-decoration:none!important;background-color:#ccc;}.wp_themeSkin .mceMenuItemTitle span.mceText{font-weight:bold;padding-left:4px;color:#000;}.wp_themeSkin .mceMenuItemSelected .mceIcon{background:url("../js/tinymce/themes/advanced/skins/default/img/menu_check.gif");color:#888;}.wp_themeSkin .mceNoIcons .mceMenuItemSelected a{background:url("../js/tinymce/themes/advanced/skins/default/img/menu_arrow.gif") no-repeat -6px center;}.wp_themeSkin .mceMenu span.mceMenuLine{display:none;}.wp_themeSkin .mceMenuItemSub a{background:url("../js/tinymce/themes/advanced/skins/default/img/menu_arrow.gif") no-repeat top right;}.wp_themeSkin .mceBlocker{position:absolute;left:0;top:0;z-index:1000;opacity:.5;filter:alpha(opacity=50);background:#FFF;}.wp_themeSkin .mceProgress{position:absolute;left:0;top:0;z-index:1001;background:url("../js/tinymce/themes/advanced/skins/default/img/progress.gif") no-repeat;width:32px;height:32px;margin:-16px 0 0 -16px;}.wp_themeSkin .mcePlaceHolder{border:1px dotted gray;}.wp_themeSkin .mce_address span.mceText{font-style:italic;}.wp_themeSkin .mce_pre span.mceText{font-family:monospace;}.wp_themeSkin .mce_h1 span.mceText{font-weight:bolder;font-size:17px;}.wp_themeSkin .mce_h2 span.mceText{font-weight:bolder;font-size:16px;}.wp_themeSkin .mce_h3 span.mceText{font-weight:bolder;font-size:15px;}.wp_themeSkin .mce_h4 span.mceText{font-weight:bolder;font-size:14px;}.wp_themeSkin .mce_h5 span.mceText{font-weight:bolder;font-size:13px;}.wp_themeSkin .mce_h6 span.mceText{font-weight:bolder;font-size:12px;}.wp_themeSkin span.mce_undo{background-position:-500px -20px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_undo,.wp_themeSkin .mceButtonActive span.mce_undo{background-position:-500px 0;}.wp_themeSkin span.mce_redo{background-position:-480px -20px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_redo,.wp_themeSkin .mceButtonActive span.mce_redo{background-position:-480px 0;}.wp_themeSkin span.mce_bullist{background-position:-40px -20px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_bullist,.wp_themeSkin .mceButtonActive span.mce_bullist,.wp_themeSkin .mceSplitButton:hover span.mce_bullist{background-position:-40px 0;}.wp_themeSkin span.mce_numlist{background-position:-61px -20px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_numlist,.wp_themeSkin .mceButtonActive span.mce_numlist,.wp_themeSkin .mceSplitButton:hover span.mce_numlist{background-position:-61px 0;}.wp_themeSkin span.mce_blockquote{background-position:-80px -20px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_blockquote,.wp_themeSkin .mceButtonActive span.mce_blockquote{background-position:-80px 0;}.wp_themeSkin span.mce_charmap{background-position:-420px -20px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_charmap,.wp_themeSkin .mceButtonActive span.mce_charmap{background-position:-420px 0;}.wp_themeSkin span.mce_bold{background-position:-1px -20px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_bold,.wp_themeSkin .mceButtonActive span.mce_bold{background-position:-1px 0;}.wp_themeSkin span.mce_italic{background-position:-21px -20px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_italic,.wp_themeSkin .mceButtonActive span.mce_italic{background-position:-21px 0;}.wp_themeSkin span.mce_underline{background-position:-280px -19px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_underline,.wp_themeSkin .mceButtonActive span.mce_underline{background-position:-280px 1px;}.wp_themeSkin span.mce_justifyleft{background-position:-100px -19px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyleft,.wp_themeSkin .mceButtonActive span.mce_justifyleft{background-position:-100px 1px;}.wp_themeSkin span.mce_justifyright{background-position:-141px -19px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyright,.wp_themeSkin .mceButtonActive span.mce_justifyright{background-position:-141px 1px;}.wp_themeSkin span.mce_justifycenter{background-position:-120px -19px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifycenter,.wp_themeSkin .mceButtonActive span.mce_justifycenter{background-position:-120px 1px;}.wp_themeSkin span.mce_justifyfull{background-position:-300px -19px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyfull,.wp_themeSkin .mceButtonActive span.mce_justifyfull{background-position:-300px 1px;}.wp_themeSkin span.mce_indent{background-position:-461px -19px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_indent,.wp_themeSkin .mceButtonActive span.mce_indent{background-position:-461px 1px;}.wp_themeSkin span.mce_outdent{background-position:-440px -19px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_outdent,.wp_themeSkin .mceButtonActive span.mce_outdent{background-position:-440px 1px;}.wp_themeSkin span.mce_link{background-position:-161px -20px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_link,.wp_themeSkin .mceButtonActive span.mce_link{background-position:-161px 0;}.wp_themeSkin span.mce_unlink{background-position:-180px -20px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_unlink,.wp_themeSkin .mceButtonActive span.mce_unlink{background-position:-180px 0;}.wp_themeSkin span.mce_help{background-position:-521px -20px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_help,.wp_themeSkin .mceButtonActive span.mce_help{background-position:-521px 0;}.wp_themeSkin span.mce_removeformat{background-position:-381px -20px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_removeformat,.wp_themeSkin .mceButtonActive span.mce_removeformat{background-position:-381px 0;}.wp_themeSkin span.mce_strikethrough{background-position:-540px -18px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_strikethrough,.wp_themeSkin .mceButtonActive span.mce_strikethrough{background-position:-540px 0;}.wp_themeSkin .mceSplitButton .mce_forecolor span.mce_forecolor{background-position:-321px -22px;}.wp_themeSkin .mceSplitButtonEnabled:hover span.mce_forecolor,.wp_themeSkin .mceSplitButtonActive span.mce_forecolor{background-position:-321px -2px;}.wp_themeSkin .mce_forecolorpicker{background-position:-320px -20px;}.wp_themeSkin span.mce_fullscreen{background-position:-240px -20px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_fullscreen,.wp_themeSkin .mceButtonActive span.mce_fullscreen{background-position:-240px 0;}.wp_themeSkin span.mce_wp_fullscreen{background-position:-240px -20px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_fullscreen,.wp_themeSkin .mceButtonActive span.mce_wp_fullscreen{background-position:-240px 0;}.wp_themeSkin span.mce_media{background-position:-401px -20px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_media,.wp_themeSkin .mceButtonActive span.mce_media{background-position:-401px 0;}.wp_themeSkin span.mce_pastetext{background-position:-340px -20px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_pastetext,.wp_themeSkin .mceButtonActive span.mce_pastetext{background-position:-340px 0;}.wp_themeSkin span.mce_pasteword{background-position:-360px -20px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_pasteword,.wp_themeSkin .mceButtonActive span.mce_pasteword{background-position:-360px 0;}.wp_themeSkin span.mce_spellchecker{background-position:-220px -19px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_spellchecker,.wp_themeSkin .mceSplitButtonEnabled:hover span.mce_spellchecker,.wp_themeSkin .mceButtonActive span.mce_spellchecker,.wp_themeSkin .mceSplitButtonActive span.mce_spellchecker{background-position:-220px 1px;}.wp_themeSkin span.mce_wp_help{background-position:-521px -20px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_help,.wp_themeSkin .mceButtonActive span.mce_wp_help{background-position:-521px 0;}.wp_themeSkin span.mce_wp_adv{background-position:-260px -20px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_adv,.wp_themeSkin .mceButtonActive span.mce_wp_adv{background-position:-260px 0;}.wp_themeSkin span.mce_wp_more{background-position:-201px -20px;}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_more,.wp_themeSkin .mceButtonActive span.mce_wp_more{background-position:-201px 0;}.wp_themeSkin span.mce_cleanup{background-position:-380px -20px;}.wp_themeSkin span.mce_anchor{background-position:-200px 0;}.wp_themeSkin span.mce_sub{background-position:-600px 0;}.wp_themeSkin span.mce_sup{background-position:-620px 0;}.wp_themeSkin span.mce_newdocument{background-position:-520px 0;}.wp_themeSkin span.mce_image{background-position:-380px 0;}.wp_themeSkin span.mce_code{background-position:-260px 0;}.wp_themeSkin span.mce_hr{background-position:-360px 0;}.wp_themeSkin span.mce_visualaid{background-position:-660px 0;}.wp_themeSkin span.mce_paste{background-position:-560px 0;}.wp_themeSkin span.mce_copy{background-position:-700px 0;}.wp_themeSkin span.mce_cut{background-position:-680px 0;}.wp_themeSkin .mce_backcolor span.mceAction{background-position:-760px 0;}.wp_themeSkin .mce_backcolorpicker{background-position:-760px 0;}.wp_themeSkin span.mce_advhr{background-position:-0px -20px;}.wp_themeSkin span.mce_ltr{background-position:-20px -20px;}.wp_themeSkin span.mce_rtl{background-position:-40px -20px;}.wp_themeSkin span.mce_emotions{background-position:-60px -20px;}.wp_themeSkin span.mce_fullpage{background-position:-80px -20px;}.wp_themeSkin span.mce_iespell{background-position:-120px -20px;}.wp_themeSkin span.mce_insertdate{background-position:-140px -20px;}.wp_themeSkin span.mce_inserttime{background-position:-160px -20px;}.wp_themeSkin span.mce_absolute{background-position:-180px -20px;}.wp_themeSkin span.mce_backward{background-position:-200px -20px;}.wp_themeSkin span.mce_forward{background-position:-220px -20px;}.wp_themeSkin span.mce_insert_layer{background-position:-240px -20px;}.wp_themeSkin span.mce_insertlayer{background-position:-260px -20px;}.wp_themeSkin span.mce_movebackward{background-position:-280px -20px;}.wp_themeSkin span.mce_moveforward{background-position:-300px -20px;}.wp_themeSkin span.mce_nonbreaking{background-position:-340px -20px;}.wp_themeSkin span.mce_selectall{background-position:-400px -20px;}.wp_themeSkin span.mce_preview{background-position:-420px -20px;}.wp_themeSkin span.mce_print{background-position:-440px -20px;}.wp_themeSkin span.mce_cancel{background-position:-460px -20px;}.wp_themeSkin span.mce_save{background-position:-480px -20px;}.wp_themeSkin span.mce_replace{background-position:-500px -20px;}.wp_themeSkin span.mce_search{background-position:-520px -20px;}.wp_themeSkin span.mce_styleprops{background-position:-560px -20px;}.wp_themeSkin span.mce_table{background-position:-580px -20px;}.wp_themeSkin span.mce_cell_props{background-position:-600px -20px;}.wp_themeSkin span.mce_delete_table{background-position:-620px -20px;}.wp_themeSkin span.mce_delete_col{background-position:-640px -20px;}.wp_themeSkin span.mce_delete_row{background-position:-660px -20px;}.wp_themeSkin span.mce_col_after{background-position:-680px -20px;}.wp_themeSkin span.mce_col_before{background-position:-700px -20px;}.wp_themeSkin span.mce_row_after{background-position:-720px -20px;}.wp_themeSkin span.mce_row_before{background-position:-740px -20px;}.wp_themeSkin span.mce_merge_cells{background-position:-760px -20px;}.wp_themeSkin span.mce_table_props{background-position:-980px -20px;}.wp_themeSkin span.mce_row_props{background-position:-780px -20px;}.wp_themeSkin span.mce_split_cells{background-position:-800px -20px;}.wp_themeSkin span.mce_template{background-position:-820px -20px;}.wp_themeSkin span.mce_visualchars{background-position:-840px -20px;}.wp_themeSkin span.mce_abbr{background-position:-860px -20px;}.wp_themeSkin span.mce_acronym{background-position:-880px -20px;}.wp_themeSkin span.mce_attribs{background-position:-900px -20px;}.wp_themeSkin span.mce_cite{background-position:-920px -20px;}.wp_themeSkin span.mce_del{background-position:-940px -20px;}.wp_themeSkin span.mce_ins{background-position:-960px -20px;}.wp_themeSkin span.mce_pagebreak{background-position:0 -40px;}.wp_themeSkin .mceExternalToolbar,.wp_themeSkin .mceButton,.wp_themeSkin a.mceButtonEnabled:hover,.wp_themeSkin a.mceButtonActive,.wp_themeSkin a.mceButtonSelected,.wp_themeSkin .mceListBox .mceText,.wp_themeSkin .mceListBox .mceOpen,.wp_themeSkin table.mceListBoxEnabled:hover .mceText,.wp_themeSkin .mceListBoxHover .mceText,.wp_themeSkin .mceListBoxSelected .mceText,.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen,.wp_themeSkin .mceListBoxSelected .mceOpen,.wp_themeSkin select.mceListBox,.wp_themeSkin .mceSplitButton a.mceAction,.wp_themeSkin .mceSplitButton a.mceOpen,.wp_themeSkin .mceSplitButton a.mceOpen:hover,.wp_themeSkin .mceSplitButtonSelected a.mceOpen,.wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,.wp_themeSkin .mceSplitButton a.mceAction:hover,.wp_themeSkin div.mceColorSplitMenu table,.wp_themeSkin .mceColorSplitMenu a,.wp_themeSkin .mceColorSplitMenu a.mceMoreColors,.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover,.wp_themeSkin a.mceMoreColors:hover,.wp_themeSkin .mceMenu{border-style:solid;border-width:1px;}.wp_themeSkin iframe{background:transparent;}.wp_themeSkin .mceButton,.wp_themeSkin .mceListBox .mceText,.wp_themeSkin .mceListBox .mceOpen{border-color:#ccc;background-color:#eee;background-image:-ms-linear-gradient(bottom,#ddd,#fff);background-image:-moz-linear-gradient(bottom,#ddd,#fff);background-image:-o-linear-gradient(bottom,#ddd,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#ddd),to(#fff));background-image:-webkit-linear-gradient(bottom,#ddd,#fff);background-image:linear-gradient(bottom,#ddd,#fff);}.wp_themeSkin a.mceButtonEnabled:hover{border-color:#a0a0a0;background:#ddd;background-image:-ms-linear-gradient(bottom,#ccc,#fff);background-image:-moz-linear-gradient(bottom,#ccc,#fff);background-image:-o-linear-gradient(bottom,#ccc,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#ccc),to(#fff));background-image:-webkit-linear-gradient(bottom,#ccc,#fff);background-image:linear-gradient(bottom,#ccc,#fff);}.wp_themeSkin a.mceButton:active,.wp_themeSkin a.mceButtonEnabled:active,.wp_themeSkin a.mceButtonSelected:active,.wp_themeSkin a.mceButtonActive,.wp_themeSkin a.mceButtonActive:active,.wp_themeSkin a.mceButtonActive:hover{background-color:#ddd;background-image:-ms-linear-gradient(bottom,#eee,#bbb);background-image:-moz-linear-gradient(bottom,#eee,#bbb);background-image:-o-linear-gradient(bottom,#eee,#bbb);background-image:-webkit-gradient(linear,left bottom,left top,from(#eee),to(#bbb));background-image:-webkit-linear-gradient(bottom,#eee,#bbb);background-image:linear-gradient(bottom,#eee,#bbb);border-color:#909090;}.wp_themeSkin .mceButtonDisabled{border-color:#ccc!important;}.wp_themeSkin .mceListBox .mceOpen{border-left:0!important;}.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen,.wp_themeSkin .mceListBoxHover:active .mceOpen,.wp_themeSkin .mceListBoxSelected .mceOpen,.wp_themeSkin .mceListBoxSelected .mceText,.wp_themeSkin table.mceListBoxEnabled:active .mceText{background:#ccc;border-color:#999;}.wp_themeSkin table.mceListBoxEnabled:hover .mceText,.wp_themeSkin .mceListBoxHover .mceText,.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen{border-color:#909090;background-color:#eee;background-image:-ms-linear-gradient(bottom,#ccc,#fff);background-image:-moz-linear-gradient(bottom,#ccc,#fff);background-image:-o-linear-gradient(bottom,#ccc,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#ccc),to(#fff));background-image:-webkit-linear-gradient(bottom,#ccc,#fff);background-image:linear-gradient(bottom,#ccc,#fff);}.wp_themeSkin .mceSplitButton a.mceAction,.wp_themeSkin .mceSplitButton a.mceOpen{border-color:#ccc;}.wp_themeSkin .mceSplitButton a.mceOpen:hover,.wp_themeSkin .mceSplitButtonSelected a.mceOpen,.wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,.wp_themeSkin .mceSplitButton a.mceAction:hover{border-color:#909090;}.wp_themeSkin table.mceSplitButton td{background-color:#eee;background-image:-ms-linear-gradient(bottom,#ddd,#fff);background-image:-moz-linear-gradient(bottom,#ddd,#fff);background-image:-o-linear-gradient(bottom,#ddd,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#ddd),to(#fff));background-image:-webkit-linear-gradient(bottom,#ddd,#fff);background-image:linear-gradient(bottom,#ddd,#fff);}.wp_themeSkin table.mceSplitButton:hover td{background-image:-ms-linear-gradient(bottom,#ccc,#fff);background-image:-moz-linear-gradient(bottom,#ccc,#fff);background-image:-o-linear-gradient(bottom,#ccc,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#ccc),to(#fff));background-image:-webkit-linear-gradient(bottom,#ccc,#fff);background-image:linear-gradient(bottom,#ccc,#fff);}.wp_themeSkin .mceSplitButtonActive{background-color:#B2B2B2;}.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover{border-color:#0A246A;background-color:#B6BDD2;}.wp_themeSkin a.mceMoreColors:hover{border-color:#0A246A;}.wp_themeSkin .mceMenuItemDisabled .mceText{color:#888;}#mceModalBlocker{background:#000;}.wp-editor-area{font-family:Consolas,Monaco,monospace;padding:10px;line-height:150%;border:0 none;outline:none;resize:vertical;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;}.wp-editor-tools{height:30px;padding:0 10px;}.wp-editor-container{border-width:1px;border-style:solid;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;border-color:#ccc #ccc #dfdfdf;}.wp-editor-container textarea.wp-editor-area{width:99.9%;}.quicktags-toolbar,.wp_themeSkin tr.mceFirst td.mceToolbar{border-bottom:1px solid #ccc;background-color:#e9e9e9;background-image:-ms-linear-gradient(bottom,#ddd,#e9e9e9);background-image:-moz-linear-gradient(bottom,#ddd,#e9e9e9);background-image:-o-linear-gradient(bottom,#ddd,#e9e9e9);background-image:-webkit-linear-gradient(bottom,#ddd,#e9e9e9);background-image:linear-gradient(bottom,#ddd,#e9e9e9);}.wp-switch-editor{height:18px;font:13px/18px Arial,Helvetica,sans-serif normal;margin:5px 5px 0 0;padding:4px 5px 2px;float:right;cursor:pointer;border-width:1px;border-style:solid;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;background-color:#f1f1f1;border-color:#dfdfdf #dfdfdf #ccc;color:#999;}html[dir="rtl"] .wp-switch-editor{float:left;}.wp-switch-editor:hover{text-decoration:none!important;}.js .tmce-active .wp-editor-area{color:white;}.tmce-active .quicktags-toolbar{display:none;}.tmce-active .switch-tmce,.html-active .switch-html{border-color:#ccc #ccc #e9e9e9;background-color:#e9e9e9;color:#333;}.wp-media-buttons{line-height:1;padding:9px 0 0;}.wp-media-buttons a{text-decoration:none;color:#333;font-size:12px;vertical-align:bottom;}.wp-media-buttons img{padding:0 4px;vertical-align:middle;}.quicktags-toolbar{border-bottom-style:solid;border-bottom-width:1px;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;padding:2px 8px 0;min-height:30px;}.quicktags-toolbar>div{padding:2px 4px 0;}.quicktags-toolbar input{margin:2px 1px 4px;line-height:18px;display:inline-block;min-width:26px;padding:2px 4px;font:12px/18px Arial,Helvetica,sans-serif normal;color:#464646;border:1px solid #C3C3C3;-webkit-border-radius:3px;border-radius:3px;background-color:#eee;background-image:-ms-linear-gradient(bottom,#e3e3e3,#fff);background-image:-moz-linear-gradient(bottom,#e3e3e3,#fff);background-image:-o-linear-gradient(bottom,#e3e3e3,#fff);background-image:-webkit-linear-gradient(bottom,#e3e3e3,#fff);background-image:linear-gradient(bottom,#e3e3e3,#fff);}.quicktags-toolbar input:hover{border-color:#aaa;background:#ddd;}.quicktags-toolbar input[value="link"]{text-decoration:underline;}.quicktags-toolbar input[value="del"]{text-decoration:line-through;}.quicktags-toolbar input[value="i"]{font-style:italic;}.quicktags-toolbar input[value="b"]{font-weight:bold;}#wp_editbtns,#wp_gallerybtns{padding:2px;position:absolute;display:none;z-index:999998;}#wp_editimgbtn,#wp_delimgbtn,#wp_editgallery,#wp_delgallery{border-color:#999;background-color:#eee;margin:2px;padding:2px;border-width:1px;border-style:solid;-webkit-border-radius:3px;border-radius:3px;}#wp_editimgbtn:hover,#wp_delimgbtn:hover,#wp_editgallery:hover,#wp_delgallery:hover{border-color:#555;background-color:#ccc;}#wp-link{background-color:#F5F5F5;line-height:1.4em;font-size:12px;}#wp-link ol,#wp-link ul{list-style:none;margin:0;padding:0;}#wp-link input[type="text"]{-webkit-box-sizing:border-box;}#wp-link input[type="text"],#wp-link textarea{border-width:1px;border-style:solid;-webkit-border-radius:4px;border-radius:4px;font-size:12px;margin:1px;padding:3px;}#wp-link #link-options{padding:10px 0 14px;border-bottom:1px solid #dfdfdf;margin:0 6px 14px;}#wp-link p.howto{margin:3px;}#wp-link #internal-toggle{display:inline-block;cursor:pointer;padding-left:18px;}#wp-link .toggle-arrow{background:transparent url('../images/toggle-arrow.png') top left no-repeat;height:23px;line-height:23px;}#wp-link .toggle-arrow-active{background-position:center left;}#wp-link label input[type="text"]{width:360px;margin-top:5px;}#wp-link label span{display:inline-block;width:80px;text-align:right;padding-right:5px;}#wp-link .link-search-wrapper{margin:5px 6px 9px;display:block;overflow:hidden;}#wp-link .link-search-wrapper span{float:left;margin-top:6px;}#wp-link .link-search-wrapper input[type="text"]{float:left;width:220px;}#wp-link .link-search-wrapper img.waiting{margin:8px 1px 0 4px;float:left;display:none;}#wp-link .link-target{width:auto;padding:3px 0 0;margin:0 0 0 87px;font-size:11px;}#wp-link .query-results{border:1px #dfdfdf solid;margin:0 5px 5px;background:#fff;height:185px;overflow:auto;position:relative;}#wp-link li,#wp-link .query-notice{clear:both;margin-bottom:0;border-bottom:1px solid #f1f1f1;color:#333;padding:4px 6px;cursor:pointer;position:relative;}#wp-link li:hover{background:#eaf2fa;color:#151515;}#wp-link li.unselectable{border-bottom:1px solid #dfdfdf;}#wp-link li.unselectable:hover{background:#fff;cursor:auto;color:#333;}#wp-link li.selected{background:#ddd;color:#333;}#wp-link li.selected .item-title{font-weight:bold;}#wp-link .item-title{display:inline-block;width:80%;}#wp-link .item-info{text-transform:uppercase;color:#666;font-size:11px;position:absolute;right:5px;top:4px;bottom:0;}#wp-link #search-results{display:none;}#wp-link #search-panel{float:left;width:100%;}#wp-link .river-waiting{display:none;padding:10px 0;}#wp-link .river-waiting img.waiting{margin:0 auto;display:block;}#wp-link .submitbox{padding:5px 10px;font-size:11px;overflow:auto;height:29px;}#wp-link-cancel{line-height:25px;float:left;}#wp-link-update{line-height:23px;float:right;}.ui-helper-hidden{display:none;}.ui-helper-hidden-accessible{position:absolute;left:-99999999px;}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none;}.ui-helper-clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden;}.ui-helper-clearfix{display:inline-block;}/* required comment for clearfix to work in Opera \*/ * html .ui-helper-clearfix{height:1%;}.ui-helper-clearfix{display:block;}/* end clearfix */ .ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0);}.ui-state-disabled{cursor:default!important;}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%;}.ui-resizable{position:relative;}.ui-resizable-handle{position:absolute;font-size:.1px;z-index:99999;display:block;}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none;}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0;}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0;}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%;}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%;}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px;}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px;}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px;}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px;}.wp-dialog{position:absolute;width:300px;overflow:hidden;}.wp-dialog .ui-dialog-titlebar{position:relative;}.wp-dialog .ui-dialog-titlebar-close span{display:block;margin:1px;}.wp-dialog .ui-dialog-content{position:relative;border:0;padding:0;background:none;overflow:auto;zoom:1;}.wp-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em;}.wp-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right;}.wp-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer;}.wp-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px;}.ui-draggable .ui-dialog-titlebar{cursor:move;}.wp-dialog{border:1px solid #999;-moz-box-shadow:0 0 16px rgba(0,0,0,0.3);-webkit-box-shadow:0 0 16px rgba(0,0,0,0.3);box-shadow:0 0 16px rgba(0,0,0,0.3);}.wp-dialog .ui-dialog-title{display:block;text-align:center;padding:1px 0 2px;}.wp-dialog .ui-dialog-titlebar{padding:0 1em;background-color:#444;font-weight:bold;font-size:11px;line-height:18px;color:#e5e5e5;}.wp-dialog{background-color:fff;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-left-radius:4px;border-top-right-radius:4px;}.wp-dialog .ui-dialog-titlebar{-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;}.wp-dialog .ui-dialog-titlebar-close{position:absolute;width:29px;height:16px;top:2px;right:6px;background:url('../js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif') no-repeat -87px -16px;padding:0;}.wp-dialog .ui-dialog-titlebar-close:hover,.wp-dialog .ui-dialog-titlebar-close:focus{background-position:-87px -32px;}.ui-widget-overlay{background-color:#000;opacity:.6;filter:alpha(opacity=60);}.rtl #wp-link #internal-toggle{padding-right:18px;padding-left:0;}.rtl #wp-link label span{text-align:left;padding-left:5px;padding-right:0;}.rtl #wp-link .link-search-wrapper span{float:right;}.rtl #wp-link .link-search-wrapper input[type="text"]{float:right;}.rtl #wp-link .link-search-wrapper img.waiting{margin:8px 4px 0 1px;float:right;}.rtl #wp-link .link-target{margin:0 87px 0 0;}.rtl #wp-link .item-info{left:5px;right:auto;top:4px;bottom:0;}.rtl #wp-link #search-panel{float:right;}.rtl #wp-link-cancel{float:right;}.rtl #wp-link-update{float:left;}.rtl #wp-link .toggle-arrow{background-position:top right;}.rtl #wp-link .toggle-arrow-active{background-position:center right;}.rtl .wp_themeSkin .mceListBox .mceText{text-align:right;}.rtl .wp_themeSkin .mceNoIcons a .mceText{padding-right:10px;padding-left:25px;}.rtl .mceListBoxMenu.mceNoIcons{margin-left:-14px;}.clearlooks2 .mceFocus .mceTop .mceLeft{background:#444;border-left:1px solid #999;border-top:1px solid #999;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;}.clearlooks2 .mceFocus .mceTop .mceRight{background:#444;border-right:1px solid #999;border-top:1px solid #999;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;}.clearlooks2 .mceMiddle .mceLeft{background:#f1f1f1;border-left:1px solid #999;}.clearlooks2 .mceMiddle .mceRight{background:#f1f1f1;border-right:1px solid #999;}.clearlooks2 .mceBottom{background:#f1f1f1;border-bottom:1px solid #999;}.clearlooks2 .mceBottom .mceLeft{background:#f1f1f1;border-bottom:1px solid #999;border-left:1px solid #999;}.clearlooks2 .mceBottom .mceCenter{background:#f1f1f1;border-bottom:1px solid #999;}.clearlooks2 .mceBottom .mceRight{background:#f1f1f1;border-bottom:1px solid #999;border-right:1px solid #999;}.clearlooks2 .mceFocus .mceTop span{color:#e5e5e5;}
\ No newline at end of file
diff --git a/wp-includes/css/editor.css b/wp-includes/css/editor.css
new file mode 100644 (file)
index 0000000..922bfb4
--- /dev/null
@@ -0,0 +1 @@
+.wp_themeSkin table,.wp_themeSkin tbody,.wp_themeSkin a,.wp_themeSkin img,.wp_themeSkin tr,.wp_themeSkin div,.wp_themeSkin td,.wp_themeSkin iframe,.wp_themeSkin span,.wp_themeSkin *,.wp_themeSkin .mceText{border:0;margin:0;padding:0;white-space:nowrap;text-decoration:none;font-weight:normal;cursor:default;vertical-align:baseline;width:auto;border-collapse:separate}.wp_themeSkin a:hover,.wp_themeSkin a:link,.wp_themeSkin a:visited,.wp_themeSkin a:active{text-decoration:none;font-weight:normal;cursor:default}.wp_themeSkin table td{vertical-align:middle}.wp_themeSkin *,.wp_themeSkin a:hover,.wp_themeSkin a:link,.wp_themeSkin a:visited,.wp_themeSkin a:active{color:#000}.wp_themeSkin iframe{display:block}.wp_themeSkin #mce_fullscreen_ifr{background-color:#fff}.wp_themeSkin .mceToolbar{padding:1px}.wp_themeSkin .mceExternalToolbar{position:absolute;border-bottom:0;display:none}.wp_themeSkin .mceExternalToolbar td.mceToolbar{padding-right:13px}.wp_themeSkin .mceExternalClose{position:absolute;top:3px;right:3px;width:7px;height:7px;background:url("../js/tinymce/themes/advanced/img/icons.gif") -820px 0}.wp_themeSkin table.mceToolbar,.wp_themeSkin tr.mceFirst .mceToolbar tr td,.wp_themeSkin tr.mceLast .mceToolbar tr td{border:0;margin:0;padding:0}.wp_themeSkin table.mceLayout{border:0}.wp_themeSkin .mceStatusbar{display:block;font-family:Arial,"Bitstream Vera Sans",Helvetica,Verdana,sans-serif;font-size:12px;line-height:16px;padding:0 0 0 8px;overflow:visible;height:20px;border-top:1px solid #dfdfdf;color:#000;background-color:#f5f5f5}.rtl .wp_themeSkin .mceStatusbar{padding:0 8px 0 0}.wp_themeSkin .mceStatusbar *{color:#555}.wp_themeSkin .mceStatusbar div{float:left;padding:2px}.rtl .wp_themeSkin .mceStatusbar div{float:right}.wp_themeSkin .mceStatusbar a.mceResize{display:block;float:right;background:url("../js/tinymce/themes/advanced/img/icons.gif") -800px 0;width:20px;height:20px;cursor:se-resize}.rtl .wp_themeSkin .mceStatusbar a.mceResize{float:left}.wp_themeSkin .mceStatusbar a:hover{text-decoration:underline}.wp_themeSkin table.mceToolbar{margin:0 6px 2px}.wp_themeSkin #content_toolbar1{margin-top:2px}.wp_themeSkin .mceToolbar .mceToolbarEndListBox span{display:none}.wp_themeSkin span.mceIcon,.wp_themeSkin img.mceIcon{display:block;width:20px;height:20px}.wp_themeSkin .mceIcon{background:url("../js/tinymce/themes/advanced/img/icons.gif") no-repeat 20px 20px}.wp_themeSkin .mceButton{display:block;width:20px;height:20px;cursor:default;padding:1px 2px;margin:1px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;-moz-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff}.wp_themeSkin a.mceButtonEnabled:hover{background-image:inherit 0 -10px}.wp_themeSkin .mceOldBoxModel a.mceButton span,.wp_themeSkin .mceOldBoxModel a.mceButton img{margin:0 0 0 1px}.wp_themeSkin a.mceButton:active,.wp_themeSkin a.mceButtonActive,.wp_themeSkin a.mceButtonActive:hover,.wp_themeSkin a.mceButtonSelected{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;-moz-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff}.wp_themeSkin .mceButtonDisabled .mceIcon{opacity:.5;filter:alpha(opacity=50)}.wp_themeSkin .mceSeparator{height:24px;width:1px;display:block;background:transparent;overflow:hidden;margin:0 2px}.wp_themeSkin .mceListBox,.wp_themeSkin .mceListBox a{display:block}.wp_themeSkin .mceListBox .mceText{padding:1px 2px 1px 5px;text-align:left;text-decoration:none;width:70px;-webkit-border-bottom-left-radius:2px;-webkit-border-top-left-radius:2px;border-bottom-left-radius:2px;border-top-left-radius:2px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;-moz-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;font-family:Arial,"Bitstream Vera Sans",Helvetica,Verdana,sans-serif;font-size:12px;height:20px;line-height:20px;overflow:hidden}.wp_themeSkin .mceListBox{margin:1px;direction:ltr}.wp_themeSkin .mceListBox .mceOpen{width:14px;height:20px;border-collapse:separate;padding:1px;-webkit-border-bottom-left-radius:0;-webkit-border-top-left-radius:0;border-bottom-left-radius:0;border-top-left-radius:0;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;-moz-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff}.wp_themeSkin .mceListBox .mceOpen span{display:block;width:14px;height:20px;background-image:url("../images/down_arrow.gif");background-position:2px 1px;background-repeat:no-repeat}.wp_themeSkin table.mceListBoxEnabled:hover .mceText,.wp_themeSkin .mceListBoxHover .mceText,.wp_themeSkin .mceListBoxSelected .mceText,.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen,.wp_themeSkin .mceListBoxSelected .mceOpen{background-image:none}.wp_themeSkin .mceListBoxDisabled .mceText{color:gray}.wp_themeSkin .mceListBoxMenu{overflow:auto;overflow-x:hidden}.wp_themeSkin .mceOldBoxModel .mceListBox .mceText{height:22px}.wp_themeSkin select.mceListBox{font-family:Arial,"Bitstream Vera Sans",Helvetica,Verdana,sans-serif;font-size:12px;border-color:#b2b2b2;background-color:#fff}.wp_themeSkin .mceSplitButton a,.wp_themeSkin .mceSplitButton span{display:block;height:20px}.wp_themeSkin .mceSplitButton{display:block;margin:1px;direction:ltr}.wp_themeSkin table.mceSplitButton td{padding:2px;-webkit-border-radius:2px;border-radius:2px}.wp_themeSkin table.mceSplitButton td a{-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;-moz-box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff;box-shadow:0 1px 0 rgba(0,0,0,0.15),inset 0 0 2px 1px #fff}.wp_themeSkin table.mceSplitButton:hover td{background-image:inherit 0 -10px}.wp_themeSkin .mceSplitButton a.mceAction{height:20px;width:20px;padding:1px 2px}.wp_themeSkin .mceSplitButton span.mceAction{background-image:url("../js/tinymce/themes/advanced/img/icons.gif");background-repeat:no-repeat;background-color:transparent;width:20px}.wp_themeSkin .mceSplitButton a.mceOpen{width:10px;height:20px;background-image:url("../images/down_arrow.gif");background-position:1px 2px;background-repeat:no-repeat;padding:1px;border-left:0 none!important}.wp_themeSkin .mceSplitButton span.mceOpen{display:none}.wp_themeSkin .mceSplitButtonDisabled .mceAction{opacity:.3;filter:alpha(opacity=30)}.wp_themeSkin .mceListBox a.mceText,.wp_themeSkin .mceSplitButton a.mceAction{-webkit-border-bottom-left-radius:2px;-webkit-border-top-left-radius:2px;border-bottom-left-radius:2px;border-top-left-radius:2px}.wp_themeSkin .mceSplitButton a.mceOpen,.wp_themeSkin .mceListBox a.mceOpen{-webkit-border-bottom-right-radius:2px;-webkit-border-top-right-radius:2px;border-bottom-right-radius:2px;border-top-right-radius:2px}.wp_themeSkin span.mce_undo,.wp_themeSkin span.mce_redo,.wp_themeSkin span.mce_bullist,.wp_themeSkin span.mce_numlist,.wp_themeSkin span.mce_blockquote,.wp_themeSkin span.mce_charmap,.wp_themeSkin span.mce_bold,.wp_themeSkin span.mce_italic,.wp_themeSkin span.mce_underline,.wp_themeSkin span.mce_justifyleft,.wp_themeSkin span.mce_justifyright,.wp_themeSkin span.mce_justifycenter,.wp_themeSkin span.mce_justifyfull,.wp_themeSkin span.mce_indent,.wp_themeSkin span.mce_outdent,.wp_themeSkin span.mce_link,.wp_themeSkin span.mce_unlink,.wp_themeSkin span.mce_help,.wp_themeSkin span.mce_removeformat,.wp_themeSkin span.mce_fullscreen,.wp_themeSkin span.mce_wp_fullscreen,.wp_themeSkin span.mce_media,.wp_themeSkin span.mce_pastetext,.wp_themeSkin span.mce_pasteword,.wp_themeSkin span.mce_wp_help,.wp_themeSkin span.mce_wp_adv,.wp_themeSkin span.mce_wp_more,.wp_themeSkin span.mce_strikethrough,.wp_themeSkin span.mce_spellchecker,.wp_themeSkin span.mce_forecolor,.wp_themeSkin .mce_forecolorpicker,.wp_themeSkin .mceSplitButton .mce_spellchecker span.mce_spellchecker,.wp_themeSkin .mceSplitButton .mce_forecolor span.mce_forecolor,.wp_themeSkin .mceSplitButton span.mce_numlist,.wp_themeSkin .mceSplitButton span.mce_bullist{background-image:url(../images/wpicons.png)}.wp_themeSkin div.mceColorSplitMenu table{background-color:#ebebeb;border-color:#b2b2b2}.wp_themeSkin .mceColorSplitMenu td{padding:2px}.wp_themeSkin .mceColorSplitMenu a{display:block;width:9px;height:9px;overflow:hidden;border-color:#b2b2b2}.wp_themeSkin .mceColorSplitMenu td.mceMoreColors{padding:1px 3px 1px 1px}.wp_themeSkin .mceColorSplitMenu a.mceMoreColors{width:100%;height:auto;text-align:center;font-family:Tahoma,Verdana,Arial,Helvetica;font-size:11px;line-height:20px;border-color:#fff}.wp_themeSkin .mceColorPreview{margin:-5px 0 0 2px;width:16px;height:4px;overflow:hidden}.wp_themeSkin .mceMenu{position:absolute;left:0;top:0;z-index:1000;border-color:#ddd}.wp_themeSkin .mceNoIcons span.mceIcon{width:0}.wp_themeSkin .mceNoIcons a .mceText{padding-left:10px}.wp_themeSkin .mceMenu table{background-color:#ebeaeb}.wp_themeSkin .mceMenu a,.wp_themeSkin .mceMenu span,.wp_themeSkin .mceMenu{display:block}.wp_themeSkin .mceMenu td{height:20px;overflow:hidden}.wp_themeSkin .mceMenu a{position:relative;padding:3px 0 4px 0;text-decoration:none!important}.wp_themeSkin .mceMenu .mceText{position:relative;display:block;font-family:Tahoma,Verdana,Arial,Helvetica;cursor:default;margin:0;padding:0 25px;color:#000}.wp_themeSkin .mceMenu span.mceText,.wp_themeSkin .mceMenu .mcePreview{font-size:12px}.wp_themeSkin .mceMenu pre.mceText{font-family:Monospace}.wp_themeSkin .mceMenu .mceIcon{position:absolute;top:0;left:0;width:22px}.wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover,.wp_themeSkin .mceMenu .mceMenuItemActive{background-color:#f5f5f5}.wp_themeSkin td.mceMenuItemSeparator{height:1px;background-color:#aaa}.wp_themeSkin .mceMenuItemTitle a{border-top:0;border-right:0;border-left:0;border-bottom:1px solid #aaa;text-decoration:none!important;background-color:#ccc}.wp_themeSkin .mceMenuItemTitle span.mceText{font-weight:bold;padding-left:4px;color:#000}.wp_themeSkin .mceMenuItemSelected .mceIcon{background:url("../js/tinymce/themes/advanced/skins/default/img/menu_check.gif");color:#888}.wp_themeSkin .mceNoIcons .mceMenuItemSelected a{background:url("../js/tinymce/themes/advanced/skins/default/img/menu_arrow.gif") no-repeat -6px center}.wp_themeSkin .mceMenu span.mceMenuLine{display:none}.wp_themeSkin .mceMenuItemSub a{background:url("../js/tinymce/themes/advanced/skins/default/img/menu_arrow.gif") no-repeat top right}.wp_themeSkin .mceBlocker{position:absolute;left:0;top:0;z-index:1000;opacity:.5;filter:alpha(opacity=50);background:#FFF}.wp_themeSkin .mceProgress{position:absolute;left:0;top:0;z-index:1001;background:url("../js/tinymce/themes/advanced/skins/default/img/progress.gif") no-repeat;width:32px;height:32px;margin:-16px 0 0 -16px}.wp_themeSkin .mcePlaceHolder{border:1px dotted gray}.wp_themeSkin .mce_address span.mceText{font-style:italic}.wp_themeSkin .mce_pre span.mceText{font-family:monospace}.wp_themeSkin .mce_h1 span.mceText{font-weight:bolder;font-size:17px}.wp_themeSkin .mce_h2 span.mceText{font-weight:bolder;font-size:16px}.wp_themeSkin .mce_h3 span.mceText{font-weight:bolder;font-size:15px}.wp_themeSkin .mce_h4 span.mceText{font-weight:bolder;font-size:14px}.wp_themeSkin .mce_h5 span.mceText{font-weight:bolder;font-size:13px}.wp_themeSkin .mce_h6 span.mceText{font-weight:bolder;font-size:12px}.wp_themeSkin span.mce_undo{background-position:-500px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_undo,.wp_themeSkin .mceButtonActive span.mce_undo{background-position:-500px 0}.wp_themeSkin span.mce_redo{background-position:-480px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_redo,.wp_themeSkin .mceButtonActive span.mce_redo{background-position:-480px 0}.wp_themeSkin span.mce_bullist{background-position:-40px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_bullist,.wp_themeSkin .mceButtonActive span.mce_bullist,.wp_themeSkin .mceSplitButton:hover span.mce_bullist{background-position:-40px 0}.wp_themeSkin span.mce_numlist{background-position:-61px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_numlist,.wp_themeSkin .mceButtonActive span.mce_numlist,.wp_themeSkin .mceSplitButton:hover span.mce_numlist{background-position:-61px 0}.wp_themeSkin span.mce_blockquote{background-position:-80px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_blockquote,.wp_themeSkin .mceButtonActive span.mce_blockquote{background-position:-80px 0}.wp_themeSkin span.mce_charmap{background-position:-420px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_charmap,.wp_themeSkin .mceButtonActive span.mce_charmap{background-position:-420px 0}.wp_themeSkin span.mce_bold{background-position:-1px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_bold,.wp_themeSkin .mceButtonActive span.mce_bold{background-position:-1px 0}.wp_themeSkin span.mce_italic{background-position:-21px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_italic,.wp_themeSkin .mceButtonActive span.mce_italic{background-position:-21px 0}.wp_themeSkin span.mce_underline{background-position:-280px -19px}.wp_themeSkin .mceButtonEnabled:hover span.mce_underline,.wp_themeSkin .mceButtonActive span.mce_underline{background-position:-280px 1px}.wp_themeSkin span.mce_justifyleft{background-position:-100px -19px}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyleft,.wp_themeSkin .mceButtonActive span.mce_justifyleft{background-position:-100px 1px}.wp_themeSkin span.mce_justifyright{background-position:-141px -19px}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyright,.wp_themeSkin .mceButtonActive span.mce_justifyright{background-position:-141px 1px}.wp_themeSkin span.mce_justifycenter{background-position:-120px -19px}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifycenter,.wp_themeSkin .mceButtonActive span.mce_justifycenter{background-position:-120px 1px}.wp_themeSkin span.mce_justifyfull{background-position:-300px -19px}.wp_themeSkin .mceButtonEnabled:hover span.mce_justifyfull,.wp_themeSkin .mceButtonActive span.mce_justifyfull{background-position:-300px 1px}.wp_themeSkin span.mce_indent{background-position:-461px -19px}.wp_themeSkin .mceButtonEnabled:hover span.mce_indent,.wp_themeSkin .mceButtonActive span.mce_indent{background-position:-461px 1px}.wp_themeSkin span.mce_outdent{background-position:-440px -19px}.wp_themeSkin .mceButtonEnabled:hover span.mce_outdent,.wp_themeSkin .mceButtonActive span.mce_outdent{background-position:-440px 1px}.wp_themeSkin span.mce_link{background-position:-161px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_link,.wp_themeSkin .mceButtonActive span.mce_link{background-position:-161px 0}.wp_themeSkin span.mce_unlink{background-position:-180px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_unlink,.wp_themeSkin .mceButtonActive span.mce_unlink{background-position:-180px 0}.wp_themeSkin span.mce_help{background-position:-521px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_help,.wp_themeSkin .mceButtonActive span.mce_help{background-position:-521px 0}.wp_themeSkin span.mce_removeformat{background-position:-381px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_removeformat,.wp_themeSkin .mceButtonActive span.mce_removeformat{background-position:-381px 0}.wp_themeSkin span.mce_strikethrough{background-position:-540px -18px}.wp_themeSkin .mceButtonEnabled:hover span.mce_strikethrough,.wp_themeSkin .mceButtonActive span.mce_strikethrough{background-position:-540px 0}.wp_themeSkin .mceSplitButton .mce_forecolor span.mce_forecolor{background-position:-321px -22px}.wp_themeSkin .mceSplitButtonEnabled:hover span.mce_forecolor,.wp_themeSkin .mceSplitButtonActive span.mce_forecolor{background-position:-321px -2px}.wp_themeSkin .mce_forecolorpicker{background-position:-320px -20px}.wp_themeSkin span.mce_fullscreen{background-position:-240px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_fullscreen,.wp_themeSkin .mceButtonActive span.mce_fullscreen{background-position:-240px 0}.wp_themeSkin span.mce_wp_fullscreen{background-position:-240px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_fullscreen,.wp_themeSkin .mceButtonActive span.mce_wp_fullscreen{background-position:-240px 0}.wp_themeSkin span.mce_media{background-position:-401px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_media,.wp_themeSkin .mceButtonActive span.mce_media{background-position:-401px 0}.wp_themeSkin span.mce_pastetext{background-position:-340px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_pastetext,.wp_themeSkin .mceButtonActive span.mce_pastetext{background-position:-340px 0}.wp_themeSkin span.mce_pasteword{background-position:-360px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_pasteword,.wp_themeSkin .mceButtonActive span.mce_pasteword{background-position:-360px 0}.wp_themeSkin span.mce_spellchecker{background-position:-220px -19px}.wp_themeSkin .mceButtonEnabled:hover span.mce_spellchecker,.wp_themeSkin .mceSplitButtonEnabled:hover span.mce_spellchecker,.wp_themeSkin .mceButtonActive span.mce_spellchecker,.wp_themeSkin .mceSplitButtonActive span.mce_spellchecker{background-position:-220px 1px}.wp_themeSkin span.mce_wp_help{background-position:-521px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_help,.wp_themeSkin .mceButtonActive span.mce_wp_help{background-position:-521px 0}.wp_themeSkin span.mce_wp_adv{background-position:-260px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_adv,.wp_themeSkin .mceButtonActive span.mce_wp_adv{background-position:-260px 0}.wp_themeSkin span.mce_wp_more{background-position:-201px -20px}.wp_themeSkin .mceButtonEnabled:hover span.mce_wp_more,.wp_themeSkin .mceButtonActive span.mce_wp_more{background-position:-201px 0}.wp_themeSkin span.mce_cleanup{background-position:-380px -20px}.wp_themeSkin span.mce_anchor{background-position:-200px 0}.wp_themeSkin span.mce_sub{background-position:-600px 0}.wp_themeSkin span.mce_sup{background-position:-620px 0}.wp_themeSkin span.mce_newdocument{background-position:-520px 0}.wp_themeSkin span.mce_image{background-position:-380px 0}.wp_themeSkin span.mce_code{background-position:-260px 0}.wp_themeSkin span.mce_hr{background-position:-360px 0}.wp_themeSkin span.mce_visualaid{background-position:-660px 0}.wp_themeSkin span.mce_paste{background-position:-560px 0}.wp_themeSkin span.mce_copy{background-position:-700px 0}.wp_themeSkin span.mce_cut{background-position:-680px 0}.wp_themeSkin .mce_backcolor span.mceAction{background-position:-760px 0}.wp_themeSkin .mce_backcolorpicker{background-position:-760px 0}.wp_themeSkin span.mce_advhr{background-position:-0px -20px}.wp_themeSkin span.mce_ltr{background-position:-20px -20px}.wp_themeSkin span.mce_rtl{background-position:-40px -20px}.wp_themeSkin span.mce_emotions{background-position:-60px -20px}.wp_themeSkin span.mce_fullpage{background-position:-80px -20px}.wp_themeSkin span.mce_iespell{background-position:-120px -20px}.wp_themeSkin span.mce_insertdate{background-position:-140px -20px}.wp_themeSkin span.mce_inserttime{background-position:-160px -20px}.wp_themeSkin span.mce_absolute{background-position:-180px -20px}.wp_themeSkin span.mce_backward{background-position:-200px -20px}.wp_themeSkin span.mce_forward{background-position:-220px -20px}.wp_themeSkin span.mce_insert_layer{background-position:-240px -20px}.wp_themeSkin span.mce_insertlayer{background-position:-260px -20px}.wp_themeSkin span.mce_movebackward{background-position:-280px -20px}.wp_themeSkin span.mce_moveforward{background-position:-300px -20px}.wp_themeSkin span.mce_nonbreaking{background-position:-340px -20px}.wp_themeSkin span.mce_selectall{background-position:-400px -20px}.wp_themeSkin span.mce_preview{background-position:-420px -20px}.wp_themeSkin span.mce_print{background-position:-440px -20px}.wp_themeSkin span.mce_cancel{background-position:-460px -20px}.wp_themeSkin span.mce_save{background-position:-480px -20px}.wp_themeSkin span.mce_replace{background-position:-500px -20px}.wp_themeSkin span.mce_search{background-position:-520px -20px}.wp_themeSkin span.mce_styleprops{background-position:-560px -20px}.wp_themeSkin span.mce_table{background-position:-580px -20px}.wp_themeSkin span.mce_cell_props{background-position:-600px -20px}.wp_themeSkin span.mce_delete_table{background-position:-620px -20px}.wp_themeSkin span.mce_delete_col{background-position:-640px -20px}.wp_themeSkin span.mce_delete_row{background-position:-660px -20px}.wp_themeSkin span.mce_col_after{background-position:-680px -20px}.wp_themeSkin span.mce_col_before{background-position:-700px -20px}.wp_themeSkin span.mce_row_after{background-position:-720px -20px}.wp_themeSkin span.mce_row_before{background-position:-740px -20px}.wp_themeSkin span.mce_merge_cells{background-position:-760px -20px}.wp_themeSkin span.mce_table_props{background-position:-980px -20px}.wp_themeSkin span.mce_row_props{background-position:-780px -20px}.wp_themeSkin span.mce_split_cells{background-position:-800px -20px}.wp_themeSkin span.mce_template{background-position:-820px -20px}.wp_themeSkin span.mce_visualchars{background-position:-840px -20px}.wp_themeSkin span.mce_abbr{background-position:-860px -20px}.wp_themeSkin span.mce_acronym{background-position:-880px -20px}.wp_themeSkin span.mce_attribs{background-position:-900px -20px}.wp_themeSkin span.mce_cite{background-position:-920px -20px}.wp_themeSkin span.mce_del{background-position:-940px -20px}.wp_themeSkin span.mce_ins{background-position:-960px -20px}.wp_themeSkin span.mce_pagebreak{background-position:0 -40px}.wp_themeSkin .mceExternalToolbar,.wp_themeSkin .mceButton,.wp_themeSkin a.mceButtonEnabled:hover,.wp_themeSkin a.mceButtonActive,.wp_themeSkin a.mceButtonSelected,.wp_themeSkin .mceListBox .mceText,.wp_themeSkin .mceListBox .mceOpen,.wp_themeSkin table.mceListBoxEnabled:hover .mceText,.wp_themeSkin .mceListBoxHover .mceText,.wp_themeSkin .mceListBoxSelected .mceText,.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen,.wp_themeSkin .mceListBoxSelected .mceOpen,.wp_themeSkin select.mceListBox,.wp_themeSkin .mceSplitButton a.mceAction,.wp_themeSkin .mceSplitButton a.mceOpen,.wp_themeSkin .mceSplitButton a.mceOpen:hover,.wp_themeSkin .mceSplitButtonSelected a.mceOpen,.wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,.wp_themeSkin .mceSplitButton a.mceAction:hover,.wp_themeSkin div.mceColorSplitMenu table,.wp_themeSkin .mceColorSplitMenu a,.wp_themeSkin .mceColorSplitMenu a.mceMoreColors,.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover,.wp_themeSkin a.mceMoreColors:hover,.wp_themeSkin .mceMenu{border-style:solid;border-width:1px}.wp_themeSkin iframe{background:transparent}.wp_themeSkin .mceButton,.wp_themeSkin .mceListBox .mceText,.wp_themeSkin .mceListBox .mceOpen{border-color:#ccc;background-color:#eee;background-image:-ms-linear-gradient(bottom,#ddd,#fff);background-image:-moz-linear-gradient(bottom,#ddd,#fff);background-image:-o-linear-gradient(bottom,#ddd,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#ddd),to(#fff));background-image:-webkit-linear-gradient(bottom,#ddd,#fff);background-image:linear-gradient(bottom,#ddd,#fff)}.wp_themeSkin a.mceButtonEnabled:hover{border-color:#a0a0a0;background:#ddd;background-image:-ms-linear-gradient(bottom,#ccc,#fff);background-image:-moz-linear-gradient(bottom,#ccc,#fff);background-image:-o-linear-gradient(bottom,#ccc,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#ccc),to(#fff));background-image:-webkit-linear-gradient(bottom,#ccc,#fff);background-image:linear-gradient(bottom,#ccc,#fff)}.wp_themeSkin a.mceButton:active,.wp_themeSkin a.mceButtonEnabled:active,.wp_themeSkin a.mceButtonSelected:active,.wp_themeSkin a.mceButtonActive,.wp_themeSkin a.mceButtonActive:active,.wp_themeSkin a.mceButtonActive:hover{background-color:#ddd;background-image:-ms-linear-gradient(bottom,#eee,#bbb);background-image:-moz-linear-gradient(bottom,#eee,#bbb);background-image:-o-linear-gradient(bottom,#eee,#bbb);background-image:-webkit-gradient(linear,left bottom,left top,from(#eee),to(#bbb));background-image:-webkit-linear-gradient(bottom,#eee,#bbb);background-image:linear-gradient(bottom,#eee,#bbb);border-color:#909090}.wp_themeSkin .mceButtonDisabled{border-color:#ccc!important}.wp_themeSkin .mceListBox .mceOpen{border-left:0!important}.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen,.wp_themeSkin .mceListBoxHover:active .mceOpen,.wp_themeSkin .mceListBoxSelected .mceOpen,.wp_themeSkin .mceListBoxSelected .mceText,.wp_themeSkin table.mceListBoxEnabled:active .mceText{background:#ccc;border-color:#999}.wp_themeSkin table.mceListBoxEnabled:hover .mceText,.wp_themeSkin .mceListBoxHover .mceText,.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen{border-color:#909090;background-color:#eee;background-image:-ms-linear-gradient(bottom,#ccc,#fff);background-image:-moz-linear-gradient(bottom,#ccc,#fff);background-image:-o-linear-gradient(bottom,#ccc,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#ccc),to(#fff));background-image:-webkit-linear-gradient(bottom,#ccc,#fff);background-image:linear-gradient(bottom,#ccc,#fff)}.wp_themeSkin .mceSplitButton a.mceAction,.wp_themeSkin .mceSplitButton a.mceOpen{border-color:#ccc}.wp_themeSkin .mceSplitButton a.mceOpen:hover,.wp_themeSkin .mceSplitButtonSelected a.mceOpen,.wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,.wp_themeSkin .mceSplitButton a.mceAction:hover{border-color:#909090}.wp_themeSkin table.mceSplitButton td{background-color:#eee;background-image:-ms-linear-gradient(bottom,#ddd,#fff);background-image:-moz-linear-gradient(bottom,#ddd,#fff);background-image:-o-linear-gradient(bottom,#ddd,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#ddd),to(#fff));background-image:-webkit-linear-gradient(bottom,#ddd,#fff);background-image:linear-gradient(bottom,#ddd,#fff)}.wp_themeSkin table.mceSplitButton:hover td{background-image:-ms-linear-gradient(bottom,#ccc,#fff);background-image:-moz-linear-gradient(bottom,#ccc,#fff);background-image:-o-linear-gradient(bottom,#ccc,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#ccc),to(#fff));background-image:-webkit-linear-gradient(bottom,#ccc,#fff);background-image:linear-gradient(bottom,#ccc,#fff)}.wp_themeSkin .mceSplitButtonActive{background-color:#b2b2b2}.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover{border-color:#0a246a;background-color:#b6bdd2}.wp_themeSkin a.mceMoreColors:hover{border-color:#0a246a}.wp_themeSkin .mceMenuItemDisabled .mceText{color:#888}#mceModalBlocker{background:#000}.wp-editor-area{font-family:Consolas,Monaco,monospace;padding:10px;line-height:150%;border:0 none;outline:0;resize:vertical;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.wp-editor-tools{height:30px;padding:0 10px}.wp-editor-container{border-width:1px;border-style:solid;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;border-color:#ccc #ccc #dfdfdf}.wp-editor-container textarea.wp-editor-area{width:99.9%}.quicktags-toolbar,.wp_themeSkin tr.mceFirst td.mceToolbar{border-bottom:1px solid #ccc;background-color:#e9e9e9;background-image:-ms-linear-gradient(bottom,#ddd,#e9e9e9);background-image:-moz-linear-gradient(bottom,#ddd,#e9e9e9);background-image:-o-linear-gradient(bottom,#ddd,#e9e9e9);background-image:-webkit-linear-gradient(bottom,#ddd,#e9e9e9);background-image:linear-gradient(bottom,#ddd,#e9e9e9)}.wp-switch-editor{height:18px;font:13px/18px Arial,Helvetica,sans-serif normal;margin:5px 5px 0 0;padding:4px 5px 2px;float:right;cursor:pointer;border-width:1px;border-style:solid;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;background-color:#f1f1f1;border-color:#dfdfdf #dfdfdf #ccc;color:#999}html[dir="rtl"] .wp-switch-editor{float:left}.wp-switch-editor:hover{text-decoration:none!important}.js .tmce-active .wp-editor-area{color:white}.tmce-active .quicktags-toolbar{display:none}.tmce-active .switch-tmce,.html-active .switch-html{border-color:#ccc #ccc #e9e9e9;background-color:#e9e9e9;color:#333}.wp-media-buttons{line-height:1;padding:9px 0 0}.wp-media-buttons a{text-decoration:none;color:#333;font-size:12px;vertical-align:bottom}.wp-media-buttons img{padding:0 4px;vertical-align:middle}.quicktags-toolbar{border-bottom-style:solid;border-bottom-width:1px;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;padding:2px 8px 0;min-height:29px}.quicktags-toolbar>div{padding:2px 4px 0}.quicktags-toolbar input{margin:2px 1px 4px;line-height:18px;display:inline-block;min-width:26px;padding:2px 4px;font:12px/18px Arial,Helvetica,sans-serif normal;color:#464646;border:1px solid #c3c3c3;-webkit-border-radius:3px;border-radius:3px;background-color:#eee;background-image:-ms-linear-gradient(bottom,#e3e3e3,#fff);background-image:-moz-linear-gradient(bottom,#e3e3e3,#fff);background-image:-o-linear-gradient(bottom,#e3e3e3,#fff);background-image:-webkit-linear-gradient(bottom,#e3e3e3,#fff);background-image:linear-gradient(bottom,#e3e3e3,#fff)}.quicktags-toolbar input:hover{border-color:#aaa;background:#ddd}.quicktags-toolbar input[value="link"]{text-decoration:underline}.quicktags-toolbar input[value="del"]{text-decoration:line-through}.quicktags-toolbar input[value="i"]{font-style:italic}.quicktags-toolbar input[value="b"]{font-weight:bold}#wp_editbtns,#wp_gallerybtns{padding:2px;position:absolute;display:none;z-index:999998}#wp_editimgbtn,#wp_delimgbtn,#wp_editgallery,#wp_delgallery{border-color:#999;background-color:#eee;margin:2px;padding:2px;border-width:1px;border-style:solid;-webkit-border-radius:3px;border-radius:3px}#wp_editimgbtn:hover,#wp_delimgbtn:hover,#wp_editgallery:hover,#wp_delgallery:hover{border-color:#555;background-color:#ccc}#wp-link{background-color:#f5f5f5;line-height:1.4em;font-size:12px}#wp-link ol,#wp-link ul{list-style:none;margin:0;padding:0}#wp-link input[type="text"]{-webkit-box-sizing:border-box}#wp-link input[type="text"],#wp-link textarea{border-width:1px;border-style:solid;-webkit-border-radius:4px;border-radius:4px;font-size:12px;margin:1px;padding:3px}#wp-link #link-options{padding:10px 0 14px;border-bottom:1px solid #dfdfdf;margin:0 6px 14px}#wp-link p.howto{margin:3px}#wp-link #internal-toggle{display:inline-block;cursor:pointer;padding-left:18px}#wp-link .toggle-arrow{background:transparent url('../images/toggle-arrow.png') top left no-repeat;height:23px;line-height:23px}#wp-link .toggle-arrow-active{background-position:center left}#wp-link label input[type="text"]{width:360px;margin-top:5px}#wp-link label span{display:inline-block;width:80px;text-align:right;padding-right:5px}#wp-link .link-search-wrapper{margin:5px 6px 9px;display:block;overflow:hidden}#wp-link .link-search-wrapper span{float:left;margin-top:6px}#wp-link .link-search-wrapper input[type="text"]{float:left;width:220px}#wp-link .link-search-wrapper img.waiting{margin:8px 1px 0 4px;float:left;display:none}#wp-link .link-target{width:auto;padding:3px 0 0;margin:0 0 0 87px;font-size:11px}#wp-link .query-results{border:1px #dfdfdf solid;margin:0 5px 5px;background:#fff;height:185px;overflow:auto;position:relative}#wp-link li,#wp-link .query-notice{clear:both;margin-bottom:0;border-bottom:1px solid #f1f1f1;color:#333;padding:4px 6px;cursor:pointer;position:relative}#wp-link li:hover{background:#eaf2fa;color:#151515}#wp-link li.unselectable{border-bottom:1px solid #dfdfdf}#wp-link li.unselectable:hover{background:#fff;cursor:auto;color:#333}#wp-link li.selected{background:#ddd;color:#333}#wp-link li.selected .item-title{font-weight:bold}#wp-link .item-title{display:inline-block;width:80%}#wp-link .item-info{text-transform:uppercase;color:#666;font-size:11px;position:absolute;right:5px;top:4px;bottom:0}#wp-link #search-results{display:none}#wp-link #search-panel{float:left;width:100%}#wp-link .river-waiting{display:none;padding:10px 0}#wp-link .river-waiting img.waiting{margin:0 auto;display:block}#wp-link .submitbox{padding:5px 10px;font-size:11px;overflow:auto;height:29px}#wp-link-cancel{line-height:25px;float:left}#wp-link-update{line-height:23px;float:right}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{position:absolute;left:-99999999px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui-helper-clearfix{display:inline-block}/*\*/* html .ui-helper-clearfix{height:1%}.ui-helper-clearfix{display:block}/**/.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;z-index:99999;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.wp-dialog{position:absolute;width:300px;overflow:hidden}.wp-dialog .ui-dialog-titlebar{position:relative}.wp-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.wp-dialog .ui-dialog-content{position:relative;border:0;padding:0;background:0;overflow:auto;zoom:1}.wp-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em}.wp-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.wp-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.wp-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}.wp-dialog{border:1px solid #999;-moz-box-shadow:0 0 16px rgba(0,0,0,0.3);-webkit-box-shadow:0 0 16px rgba(0,0,0,0.3);box-shadow:0 0 16px rgba(0,0,0,0.3)}.wp-dialog .ui-dialog-title{display:block;text-align:center;padding:1px 0 2px}.wp-dialog .ui-dialog-titlebar{padding:0 1em;background-color:#444;font-weight:bold;font-size:11px;line-height:18px;color:#e5e5e5}.wp-dialog{background-color:#fff;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-left-radius:4px;border-top-right-radius:4px}.wp-dialog .ui-dialog-titlebar{-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.wp-dialog .ui-dialog-titlebar-close{position:absolute;width:29px;height:16px;top:2px;right:6px;background:url('../js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif') no-repeat -87px -16px;padding:0}.wp-dialog .ui-dialog-titlebar-close:hover,.wp-dialog .ui-dialog-titlebar-close:focus{background-position:-87px -32px}.ui-widget-overlay{background-color:#000;opacity:.6;filter:alpha(opacity=60)}.rtl #wp-link #internal-toggle{padding-right:18px;padding-left:0}.rtl #wp-link label span{text-align:left;padding-left:5px;padding-right:0}.rtl #wp-link .link-search-wrapper span{float:right}.rtl #wp-link .link-search-wrapper input[type="text"]{float:right}.rtl #wp-link .link-search-wrapper img.waiting{margin:8px 4px 0 1px;float:right}.rtl #wp-link .link-target{margin:0 87px 0 0}.rtl #wp-link .item-info{left:5px;right:auto;top:4px;bottom:0}.rtl #wp-link #search-panel{float:right}.rtl #wp-link-cancel{float:right}.rtl #wp-link-update{float:left}.rtl #wp-link .toggle-arrow{background-position:top right}.rtl #wp-link .toggle-arrow-active{background-position:center right}.rtl .wp_themeSkin .mceListBox .mceText{text-align:right}.rtl .wp_themeSkin .mceNoIcons a .mceText{padding-right:10px;padding-left:25px}.rtl .mceListBoxMenu.mceNoIcons{margin-left:-14px}.clearlooks2 .mceFocus .mceTop .mceLeft{background:#444;border-left:1px solid #999;border-top:1px solid #999;-webkit-border-top-left-radius:3px;border-top-left-radius:3px}.clearlooks2 .mceFocus .mceTop .mceRight{background:#444;border-right:1px solid #999;border-top:1px solid #999;-webkit-border-top-right-radius:3px;border-top-right-radius:3px}.clearlooks2 .mceMiddle .mceLeft{background:#f1f1f1;border-left:1px solid #999}.clearlooks2 .mceMiddle .mceRight{background:#f1f1f1;border-right:1px solid #999}.clearlooks2 .mceBottom{background:#f1f1f1;border-bottom:1px solid #999}.clearlooks2 .mceBottom .mceLeft{background:#f1f1f1;border-bottom:1px solid #999;border-left:1px solid #999}.clearlooks2 .mceBottom .mceCenter{background:#f1f1f1;border-bottom:1px solid #999}.clearlooks2 .mceBottom .mceRight{background:#f1f1f1;border-bottom:1px solid #999;border-right:1px solid #999}.clearlooks2 .mceFocus .mceTop span{color:#e5e5e5}.fullscreen-overlay{z-index:149999;display:none;position:fixed;top:0;bottom:0;left:0;right:0;filter:inherit}.fullscreen-active .fullscreen-overlay,.fullscreen-active #wp-fullscreen-body{display:block}.fullscreen-fader{z-index:200000}.fullscreen-active .fullscreen-fader{display:none}#wp-fullscreen-body{width:100%;z-index:150005;display:none;position:absolute;top:0;left:0;font-size:12px}#wp-fullscreen-wrap{margin:0 auto 50px;position:relative;padding-top:60px}#wp-fullscreen-title{font-size:1.7em;line-height:100%;outline:medium none;padding:6px 7px;width:100%;margin-bottom:30px}#wp-fullscreen-container{padding:4px 10px 50px}#wp-fullscreen-title,#wp-fullscreen-container{-webkit-border-radius:0;border-radius:0;border:1px dashed transparent;background:transparent;-moz-transition-property:border-color;-moz-transition-duration:.6s;-webkit-transition-property:border-color;-webkit-transition-duration:.6s;-o-transition-property:border-color;-o-transition-duration:.6s;transition-property:border-color;transition-duration:.6s}#wp_mce_fullscreen{width:100%;min-height:300px;border:0;background:transparent;font-family:Consolas,Monaco,monospace;line-height:1.6em;padding:0;overflow-y:hidden;outline:0;resize:none}#wp-fullscreen-tagline{color:#bbb;font-size:18px;float:right;padding-top:5px}#fullscreen-topbar{position:fixed;top:0;left:0;z-index:150050;border-bottom-style:solid;border-bottom-width:1px;min-width:800px;width:100%;height:40px}#wp-fullscreen-toolbar{padding:6px 10px 0;clear:both;max-width:1100px;min-width:820px;margin:0 auto}#wp-fullscreen-mode-bar,#wp-fullscreen-button-bar,#wp-fullscreen-close,#wp-fullscreen-count{float:left}#wp-fullscreen-save{float:right;padding:2px 2px 0 5px}#wp-fullscreen-count,#wp-fullscreen-close{padding-top:5px}#wp-fullscreen-central-toolbar{margin:auto;padding:0}#wp-fullscreen-buttons>div{float:left}#wp-fullscreen-mode-bar{padding:1px 14px 0 0}#wp-fullscreen-modes a{display:block;font-size:11px;text-decoration:none;float:left;margin:1px 0 0 0;padding:2px 6px 2px;border-width:1px 1px 1px 0;border-style:solid;border-color:#bbb;color:#777;text-shadow:0 1px 0 #fff;background-color:#f4f4f4;background-image:-moz-linear-gradient(bottom,#e4e4e4,#f9f9f9);background-image:-webkit-gradient(linear,left bottom,left top,from(#e4e4e4),to(#f9f9f9))}#wp-fullscreen-modes a:hover,.wp-html-mode #wp-fullscreen-modes a:last-child,.wp-tmce-mode #wp-fullscreen-modes a:first-child{color:#333;border-color:#999;background-color:#eee;background-image:-moz-linear-gradient(bottom,#f9f9f9,#e0e0e0);background-image:-webkit-gradient(linear,left bottom,left top,from(#f9f9f9),to(#e0e0e0))}#wp-fullscreen-modes a:first-child{border-width:1px;-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px}#wp-fullscreen-modes a:last-child{-webkit-border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px}#wp-fullscreen-buttons .active a{background:inherit}#wp-fullscreen-buttons .hidden{display:none}#wp-fullscreen-buttons .disabled{opacity:.5}.wp-html-mode #wp-fullscreen-buttons div{display:none}.wp-html-mode #wp-fullscreen-buttons div.wp-fullscreen-both{display:block}#fullscreen-topbar.fullscreen-make-sticky{display:block!important}#wp-fullscreen-save img{vertical-align:middle}#wp-fullscreen-save img,#wp-fullscreen-save span{padding-right:4px;display:none}#wp-fullscreen-buttons .mce_image .mce_image{background-image:url('../../wp-admin/images/media-button.png?ver=20120201');background-position:3px 3px}.fullscreen-active #TB_overlay{z-index:150100}.fullscreen-active #TB_window{z-index:150102}#wp_mce_fullscreen_ifr{background:transparent}#wp_mce_fullscreen_parent #wp_mce_fullscreen_tbl tr.mceFirst{display:none}#wp-fullscreen-container .wp_themeSkin table td{vertical-align:top}.fullscreen-overlay{background:#fff}.wp-fullscreen-focus #wp-fullscreen-title,.wp-fullscreen-focus #wp-fullscreen-container{border-color:#ccc}#fullscreen-topbar{border-bottom-color:#dfdfdf;background-color:#f1f1f1;background-image:-ms-linear-gradient(top,#f9f9f9,#ececec);background-image:-moz-linear-gradient(top,#f9f9f9,#ececec);background-image:-o-linear-gradient(top,#f9f9f9,#ececec);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#ececec));background-image:-webkit-linear-gradient(top,#f9f9f9,#ececec);background-image:linear-gradient(top,#f9f9f9,#ececec)}.fade-1000,.fade-600,.fade-400,.fade-300{opacity:0;-moz-transition-property:opacity;-webkit-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity}.fade-1000{-moz-transition-duration:1s;-webkit-transition-duration:1s;-o-transition-duration:1s;transition-duration:1s}.fade-600{-moz-transition-duration:.6s;-webkit-transition-duration:.6s;-o-transition-duration:.6s;transition-duration:.6s}.fade-400{-moz-transition-duration:.4s;-webkit-transition-duration:.4s;-o-transition-duration:.4s;transition-duration:.4s}.fade-300{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s}.fade-trigger{opacity:1}.rtl #wp-fullscreen-tagline{float:left}.rtl #fullscreen-topbar{left:auto;right:0}.rtl #wp-fullscreen-mode-bar,.rtl #wp-fullscreen-button-bar,.rtl #wp-fullscreen-close,.rtl #wp-fullscreen-count{float:right}.rtl #wp-fullscreen-save{float:left}.rtl #wp-fullscreen-save{padding:2px 5px 0 2px}.rtl #wp-fullscreen-buttons>div{float:right}.rtl #wp-fullscreen-mode-bar{padding:1px 0 0 14px}.rtl #wp-fullscreen-modes a{float:right;border-width:1px 0 1px 1px}.rtl #wp-fullscreen-modes a:first-child{-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;border-width:1px;border-top-left-radius:0;border-top-right-radius:3px;border-bottom-right-left:0;border-bottom-right-radius:3px}.rtl #wp-fullscreen-modes a:last-child{-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px}.rtl #wp-fullscreen-save img,.rtl #wp-fullscreen-save span{padding-right:0;padding-left:4px}
\ No newline at end of file
similarity index 83%
rename from wp-includes/css/editor-buttons.dev.css
rename to wp-includes/css/editor.dev.css
index 0d94f07a6cb423d346eca57de017a9f2b51001c2..a7e14a80f7bb0376ce53beda7e367a4efaeafcf8 100644 (file)
        margin: 0 0 0 1px;
 }
 
        margin: 0 0 0 1px;
 }
 
-
 .wp_themeSkin a.mceButton:active,
 .wp_themeSkin a.mceButtonActive,
 .wp_themeSkin a.mceButtonActive:hover,
 .wp_themeSkin a.mceButton:active,
 .wp_themeSkin a.mceButtonActive,
 .wp_themeSkin a.mceButtonActive:hover,
        background: url("../js/tinymce/themes/advanced/skins/default/img/menu_arrow.gif") no-repeat top right;
 }
 
        background: url("../js/tinymce/themes/advanced/skins/default/img/menu_arrow.gif") no-repeat top right;
 }
 
-
 /* Progress,Resize */
 .wp_themeSkin .mceBlocker {
        position: absolute;
 /* Progress,Resize */
 .wp_themeSkin .mceBlocker {
        position: absolute;
        border: 1px dotted gray;
 }
 
        border: 1px dotted gray;
 }
 
-
 /* Formats */
 .wp_themeSkin .mce_p span.mceText {}
 .wp_themeSkin .mce_address span.mceText {
 /* Formats */
 .wp_themeSkin .mce_p span.mceText {}
 .wp_themeSkin .mce_address span.mceText {
        font-size: 12px;
 }
 
        font-size: 12px;
 }
 
-
 /* Theme */
 .wp_themeSkin span.mce_undo {background-position:-500px -20px}
 .wp_themeSkin .mceButtonEnabled:hover span.mce_undo,
 /* Theme */
 .wp_themeSkin span.mce_undo {background-position:-500px -20px}
 .wp_themeSkin .mceButtonEnabled:hover span.mce_undo,
 .wp_themeSkin .mce_backcolor span.mceAction {background-position:-760px 0}
 .wp_themeSkin .mce_backcolorpicker {background-position:-760px 0}
 
 .wp_themeSkin .mce_backcolor span.mceAction {background-position:-760px 0}
 .wp_themeSkin .mce_backcolorpicker {background-position:-760px 0}
 
-
 /* Plugins */
 .wp_themeSkin span.mce_advhr {background-position:-0px -20px}
 .wp_themeSkin span.mce_ltr {background-position:-20px -20px}
 /* Plugins */
 .wp_themeSkin span.mce_advhr {background-position:-0px -20px}
 .wp_themeSkin span.mce_ltr {background-position:-20px -20px}
 .wp_themeSkin span.mce_ins {background-position:-960px -20px}
 .wp_themeSkin span.mce_pagebreak {background-position:0 -40px}
 
 .wp_themeSkin span.mce_ins {background-position:-960px -20px}
 .wp_themeSkin span.mce_pagebreak {background-position:0 -40px}
 
-
 /* border */
 .wp_themeSkin .mceExternalToolbar,
 .wp_themeSkin .mceButton,
 /* border */
 .wp_themeSkin .mceExternalToolbar,
 .wp_themeSkin .mceButton,
        border-color: #909090;
 }
 
        border-color: #909090;
 }
 
-
 .wp_themeSkin table.mceSplitButton td {
        background-color: #eee; /* Fallback */
        background-image: -ms-linear-gradient(bottom, #ddd, #fff); /* IE10 */
 .wp_themeSkin table.mceSplitButton td {
        background-color: #eee; /* Fallback */
        background-image: -ms-linear-gradient(bottom, #ddd, #fff); /* IE10 */
@@ -1089,7 +1082,7 @@ html[dir="rtl"] .wp-switch-editor {
        border-top-right-radius: 3px;
        border-top-left-radius: 3px;
        padding: 2px 8px 0;
        border-top-right-radius: 3px;
        border-top-left-radius: 3px;
        padding: 2px 8px 0;
-       min-height: 30px;
+       min-height: 29px;
 }
 
 .quicktags-toolbar > div {
 }
 
 .quicktags-toolbar > div {
@@ -1166,7 +1159,6 @@ html[dir="rtl"] .wp-switch-editor {
        background-color: #ccc;
 }
 
        background-color: #ccc;
 }
 
-
 /*------------------------------------------------------------------------------
  wp-link
 ------------------------------------------------------------------------------*/
 /*------------------------------------------------------------------------------
  wp-link
 ------------------------------------------------------------------------------*/
@@ -1361,7 +1353,6 @@ html[dir="rtl"] .wp-switch-editor {
        float: right;
 }
 
        float: right;
 }
 
-
 /*
  * Based on:
  * jQuery UI CSS Framework @VERSION
 /*
  * Based on:
  * jQuery UI CSS Framework @VERSION
@@ -1386,19 +1377,16 @@ html[dir="rtl"] .wp-switch-editor {
 /* end clearfix */
 .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
 
 /* end clearfix */
 .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
 
-
 /* Interaction Cues
 ----------------------------------*/
 .ui-state-disabled { cursor: default !important; }
 
 /* Interaction Cues
 ----------------------------------*/
 .ui-state-disabled { cursor: default !important; }
 
-
 /* Icons
 ----------------------------------*/
 
 /* states and images */
 .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
 
 /* Icons
 ----------------------------------*/
 
 /* states and images */
 .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
 
-
 /* Misc visuals
 ----------------------------------*/
 
 /* Misc visuals
 ----------------------------------*/
 
@@ -1445,8 +1433,6 @@ html[dir="rtl"] .wp-switch-editor {
 .wp-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
 .ui-draggable .ui-dialog-titlebar { cursor: move; }
 
 .wp-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
 .ui-draggable .ui-dialog-titlebar { cursor: move; }
 
-
-
 /* WP jQuery Dialog Theme */
 .wp-dialog {
        border: 1px solid #999;
 /* WP jQuery Dialog Theme */
 .wp-dialog {
        border: 1px solid #999;
@@ -1471,7 +1457,7 @@ html[dir="rtl"] .wp-switch-editor {
 }
 
 .wp-dialog {
 }
 
 .wp-dialog {
-       background-color: fff;
+       background-color: #fff;
        -webkit-border-top-left-radius: 4px;
        -webkit-border-top-right-radius: 4px;
        border-top-left-radius: 4px;
        -webkit-border-top-left-radius: 4px;
        -webkit-border-top-right-radius: 4px;
        border-top-left-radius: 4px;
@@ -1629,3 +1615,407 @@ RTL
        color: #e5e5e5;
 }
 
        color: #e5e5e5;
 }
 
+
+/* Distraction Free Writing mode
+ * =Overlay Styles
+-------------------------------------------------------------- */
+.fullscreen-overlay {
+       z-index: 149999;
+       display: none;
+       position: fixed;
+       top: 0;
+       bottom: 0;
+       left: 0;
+       right: 0;
+       filter: inherit;
+}
+
+.fullscreen-active .fullscreen-overlay,
+.fullscreen-active #wp-fullscreen-body {
+       display: block;
+}
+
+.fullscreen-fader {
+       z-index: 200000;
+}
+
+.fullscreen-active .fullscreen-fader {
+       display: none;
+}
+
+/* =Overlay Body
+-------------------------------------------------------------- */
+#wp-fullscreen-body {
+       width: 100%;
+       z-index: 150005;
+       display: none;
+       position: absolute;
+       top: 0;
+       left: 0;
+       font-size: 12px;
+}
+
+#wp-fullscreen-wrap {
+       margin: 0 auto 50px;
+       position: relative;
+       padding-top: 60px;
+}
+
+#wp-fullscreen-title {
+    font-size: 1.7em;
+    line-height: 100%;
+    outline: medium none;
+    padding: 6px 7px;
+    width: 100%;
+    margin-bottom: 30px;
+}
+
+#wp-fullscreen-container {
+       padding: 4px 10px 50px;
+}
+
+#wp-fullscreen-title,
+#wp-fullscreen-container {
+       -webkit-border-radius: 0;
+       border-radius: 0;
+       border: 1px dashed transparent;
+       background: transparent;
+       -moz-transition-property: border-color;
+       -moz-transition-duration: 0.6s;
+       -webkit-transition-property: border-color;
+       -webkit-transition-duration: 0.6s;
+       -o-transition-property: border-color;
+       -o-transition-duration: 0.6s;
+       transition-property: border-color;
+       transition-duration: 0.6s;
+}
+
+#wp_mce_fullscreen {
+       width: 100%;
+       min-height: 300px;
+       border: 0;
+       background: transparent;
+       font-family: Consolas, Monaco, monospace;
+       line-height: 1.6em;
+       padding: 0;
+       overflow-y: hidden;
+       outline: none;
+       resize: none;
+}
+
+#wp-fullscreen-tagline {
+       color: #BBBBBB;
+       font-size: 18px;
+       float: right;
+       padding-top: 5px;
+}
+
+/* =Top bar
+-------------------------------------------------------------- */
+#fullscreen-topbar {
+       position: fixed;
+       top: 0;
+       left: 0;
+       z-index: 150050;
+       border-bottom-style: solid;
+       border-bottom-width: 1px;
+       min-width: 800px;
+       width: 100%;
+       height: 40px;
+}
+
+#wp-fullscreen-toolbar {
+       padding: 6px 10px 0;
+       clear: both;
+       max-width: 1100px;
+       min-width: 820px;
+       margin: 0 auto;
+}
+
+#wp-fullscreen-mode-bar,
+#wp-fullscreen-button-bar,
+#wp-fullscreen-close,
+#wp-fullscreen-count {
+       float: left;
+}
+
+#wp-fullscreen-save {
+       float: right;
+       padding: 2px 2px 0 5px;
+}
+
+#wp-fullscreen-count,
+#wp-fullscreen-close {
+       padding-top: 5px;
+}
+
+#wp-fullscreen-central-toolbar {
+       margin: auto;
+       padding: 0;
+}
+
+#wp-fullscreen-buttons > div {
+       float: left;
+}
+
+#wp-fullscreen-mode-bar {
+       padding: 1px 14px 0 0;
+}
+
+#wp-fullscreen-modes a {
+       display: block;
+       font-size: 11px;
+       text-decoration: none;
+       float: left;
+       margin: 1px 0 0 0;
+       padding: 2px 6px 2px;
+       border-width: 1px 1px 1px 0;
+       border-style: solid;
+       border-color: #bbb;
+       color: #777;
+       text-shadow: 0 1px 0 #fff;
+       background-color: #f4f4f4;
+       background-image: -moz-linear-gradient(bottom,  #e4e4e4,  #f9f9f9);
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#e4e4e4), to(#f9f9f9));
+}
+
+#wp-fullscreen-modes a:hover,
+.wp-html-mode #wp-fullscreen-modes a:last-child,
+.wp-tmce-mode #wp-fullscreen-modes a:first-child {
+       color: #333;
+       border-color: #999;
+       background-color: #eee;
+       background-image: -moz-linear-gradient(bottom,  #f9f9f9,  #e0e0e0);
+       background-image: -webkit-gradient(linear, left bottom, left top, from(#f9f9f9), to(#e0e0e0));
+}
+
+#wp-fullscreen-modes a:first-child {
+       border-width: 1px;
+       -webkit-border-top-left-radius: 3px;
+       -webkit-border-bottom-left-radius: 3px;
+       border-top-left-radius: 3px;
+       border-bottom-left-radius: 3px;
+}
+
+#wp-fullscreen-modes a:last-child {
+       -webkit-border-top-right-radius: 3px;
+       -webkit-border-bottom-right-radius: 3px;
+       border-top-right-radius: 3px;
+       border-bottom-right-radius: 3px;
+}
+
+#wp-fullscreen-buttons .active a {
+       background: inherit;
+}
+
+#wp-fullscreen-buttons .hidden {
+       display: none;
+}
+
+#wp-fullscreen-buttons .disabled {
+       opacity: 0.5;
+}
+
+.wp-html-mode #wp-fullscreen-buttons div {
+       display: none;
+}
+
+.wp-html-mode #wp-fullscreen-buttons div.wp-fullscreen-both {
+       display: block;
+}
+
+#fullscreen-topbar.fullscreen-make-sticky {
+       display: block !important;
+}
+
+#wp-fullscreen-save img {
+       vertical-align: middle;
+}
+
+#wp-fullscreen-save img,
+#wp-fullscreen-save span {
+       padding-right: 4px;
+       display: none;
+}
+
+#wp-fullscreen-buttons .mce_image .mce_image {
+       background-image: url('../../wp-admin/images/media-button.png?ver=20120201');
+       background-position: 3px 3px;
+}
+
+/* =Thickbox Adjustments
+-------------------------------------------------------------- */
+.fullscreen-active #TB_overlay {
+       z-index: 150100;
+}
+
+.fullscreen-active #TB_window {
+       z-index: 150102;
+}
+
+/* =TinyMCE Adjustments
+-------------------------------------------------------------- */
+#wp_mce_fullscreen_ifr {
+       background: transparent;
+}
+
+#wp_mce_fullscreen_parent #wp_mce_fullscreen_tbl tr.mceFirst {
+       display : none;
+}
+
+#wp-fullscreen-container .wp_themeSkin table td {
+       vertical-align: top;
+}
+
+/* Colors */
+.fullscreen-overlay {
+       background: #fff;
+}
+
+.wp-fullscreen-focus #wp-fullscreen-title,
+.wp-fullscreen-focus #wp-fullscreen-container {
+       border-color: #ccc;
+}
+
+#fullscreen-topbar {
+       border-bottom-color: #DFDFDF;
+       background-color: #f1f1f1; /* Fallback */
+       background-image: -ms-linear-gradient(top, #f9f9f9, #ececec); /* IE10 */
+       background-image: -moz-linear-gradient(top, #f9f9f9, #ececec); /* Firefox */
+       background-image: -o-linear-gradient(top, #f9f9f9, #ececec); /* Opera */
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec)); /* old Webkit */
+       background-image: -webkit-linear-gradient(top, #f9f9f9, #ececec); /* new Webkit */
+       background-image: linear-gradient(top, #f9f9f9, #ececec); /* proposed W3C Markup */
+}
+
+/* =CSS 3 transitions
+-------------------------------------------------------------- */
+
+.fade-1000,
+.fade-600,
+.fade-400,
+.fade-300 {
+       opacity: 0;
+       -moz-transition-property: opacity;
+       -webkit-transition-property: opacity;
+       -o-transition-property: opacity;
+       transition-property: opacity;
+}
+
+.fade-1000 {
+       -moz-transition-duration: 1s;
+       -webkit-transition-duration: 1s;
+       -o-transition-duration: 1s;
+       transition-duration: 1s;
+}
+
+.fade-600 {
+       -moz-transition-duration: 0.6s;
+       -webkit-transition-duration: 0.6s;
+       -o-transition-duration: 0.6s;
+       transition-duration: 0.6s;
+}
+
+.fade-400 {
+       -moz-transition-duration: 0.4s;
+       -webkit-transition-duration: 0.4s;
+       -o-transition-duration: 0.4s;
+       transition-duration: 0.4s;
+}
+
+.fade-300 {
+       -moz-transition-duration: 0.3s;
+       -webkit-transition-duration: 0.3s;
+       -o-transition-duration: 0.3s;
+       transition-duration: 0.3s;
+}
+
+.fade-trigger {
+       opacity: 1;
+}
+
+/* Distraction Free Writing - RTL
+ * =Overlay Styles
+-------------------------------------------------------------- */
+
+/* No RTL for now, this space intentionally left blank */
+
+/* =Overlay Body
+-------------------------------------------------------------- */
+.rtl #wp-fullscreen-tagline {
+       float: left;
+}
+
+/* =Top bar
+-------------------------------------------------------------- */
+.rtl #fullscreen-topbar {
+       left:auto;
+       right: 0;
+}
+
+.rtl #wp-fullscreen-mode-bar,
+.rtl #wp-fullscreen-button-bar,
+.rtl #wp-fullscreen-close,
+.rtl #wp-fullscreen-count {
+       float: right;
+}
+
+.rtl #wp-fullscreen-save {
+       float: left;
+}
+
+.rtl #wp-fullscreen-save {
+       padding: 2px 5px 0 2px;
+}
+
+.rtl #wp-fullscreen-buttons > div {
+       float: right;
+}
+
+.rtl #wp-fullscreen-mode-bar {
+       padding: 1px 0 0 14px;
+}
+
+.rtl #wp-fullscreen-modes a {
+       float: right;
+       border-width: 1px 0 1px 1px;
+}
+
+.rtl #wp-fullscreen-modes a:first-child {
+       -webkit-border-top-left-radius: 0;
+       -webkit-border-top-right-radius: 3px;
+       -webkit-border-bottom-left-radius: 0;
+       -webkit-border-bottom-right-radius: 3px;
+       border-width: 1px;
+       border-top-left-radius: 0;
+       border-top-right-radius: 3px;
+       border-bottom-right-left: 0;
+       border-bottom-right-radius: 3px;
+}
+
+.rtl #wp-fullscreen-modes a:last-child {
+       -webkit-border-top-right-radius: 0;
+       -webkit-border-top-left-radius: 3px;
+       -webkit-border-bottom-right-radius: 0;
+       -webkit-border-bottom-left-radius: 3px;
+       border-top-right-radius: 0;
+       border-top-left-radius: 3px;
+       border-bottom-right-radius: 0;
+       border-bottom-left-radius: 3px;
+}
+
+.rtl #wp-fullscreen-save img,
+.rtl #wp-fullscreen-save span {
+       padding-right: 0;
+       padding-left: 4px;
+}
+
+/* =Thickbox Adjustments
+-------------------------------------------------------------- */
+/* No RTL for now, this space intentionally left blank */
+
+
+/* =TinyMCE Adjustments
+-------------------------------------------------------------- */
+/* No RTL for now, this space intentionally left blank */
+
index e9639244ed8f412988fa61b9a4cb3dc5fef2a65b..2998f9f3a433c0548ce12116d08c86771765bc6f 100644 (file)
@@ -1 +1 @@
-.ui-helper-hidden{display:none;}.ui-helper-hidden-accessible{position:absolute;left:-99999999px;}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none;}.ui-helper-clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden;}.ui-helper-clearfix{display:inline-block;}/* required comment for clearfix to work in Opera \*/ * html .ui-helper-clearfix{height:1%;}.ui-helper-clearfix{display:block;}/* end clearfix */ .ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0);}.ui-state-disabled{cursor:default!important;}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%;}.ui-resizable{position:relative;}.ui-resizable-handle{position:absolute;font-size:.1px;z-index:99999;display:block;}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none;}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0;}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0;}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%;}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%;}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px;}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px;}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px;}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px;}.wp-dialog{position:absolute;width:300px;overflow:hidden;}.wp-dialog .ui-dialog-titlebar{position:relative;}.wp-dialog .ui-dialog-titlebar-close span{display:block;margin:1px;}.wp-dialog .ui-dialog-content{position:relative;border:0;padding:0;background:none;overflow:auto;zoom:1;}.wp-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em;}.wp-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right;}.wp-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer;}.wp-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px;}.ui-draggable .ui-dialog-titlebar{cursor:move;}.wp-dialog{border:1px solid #999;-moz-box-shadow:0 0 16px rgba(0,0,0,0.3);-webkit-box-shadow:0 0 16px rgba(0,0,0,0.3);box-shadow:0 0 16px rgba(0,0,0,0.3);}.wp-dialog .ui-dialog-title{display:block;text-align:center;padding:1px 0 2px;}.wp-dialog .ui-dialog-titlebar{padding:0 1em;background-color:#444;font-weight:bold;font-size:11px;line-height:18px;color:#e5e5e5;}.wp-dialog{background-color:#f5f5f5;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;}.wp-dialog .ui-dialog-titlebar{-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;}.wp-dialog .ui-dialog-titlebar-close{position:absolute;width:29px;height:16px;top:2px;right:6px;background:url('../js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif') no-repeat -87px -16px;padding:0;}.wp-dialog .ui-dialog-titlebar-close:hover,.wp-dialog .ui-dialog-titlebar-close:focus{background-position:-87px -32px;}.ui-widget-overlay{background-color:#000;opacity:.6;filter:alpha(opacity=60);}
\ No newline at end of file
+.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{position:absolute;left:-99999999px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui-helper-clearfix{display:inline-block}/*\*/* html .ui-helper-clearfix{height:1%}.ui-helper-clearfix{display:block}/**/.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;z-index:99999;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.wp-dialog{position:absolute;width:300px;overflow:hidden}.wp-dialog .ui-dialog-titlebar{position:relative}.wp-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.wp-dialog .ui-dialog-content{position:relative;border:0;padding:0;background:0;overflow:auto;zoom:1}.wp-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em}.wp-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.wp-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.wp-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}.wp-dialog{border:1px solid #999;-moz-box-shadow:0 0 16px rgba(0,0,0,0.3);-webkit-box-shadow:0 0 16px rgba(0,0,0,0.3);box-shadow:0 0 16px rgba(0,0,0,0.3)}.wp-dialog .ui-dialog-title{display:block;text-align:center;padding:1px 0 2px}.wp-dialog .ui-dialog-titlebar{padding:0 1em;background-color:#444;font-weight:bold;font-size:11px;line-height:18px;color:#e5e5e5}.wp-dialog{background-color:#f5f5f5;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px}.wp-dialog .ui-dialog-titlebar{-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px}.wp-dialog .ui-dialog-titlebar-close{position:absolute;width:29px;height:16px;top:2px;right:6px;background:url('../js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif') no-repeat -87px -16px;padding:0}.wp-dialog .ui-dialog-titlebar-close:hover,.wp-dialog .ui-dialog-titlebar-close:focus{background-position:-87px -32px}.ui-widget-overlay{background-color:#000;opacity:.6;filter:alpha(opacity=60)}
\ No newline at end of file
index dc582f0bdd6992698fcf0a80d74b4853940ad651..a6125b9ca35a4475d3b1b643eedf88b09f20c06a 100644 (file)
@@ -80,8 +80,6 @@
 .wp-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
 .ui-draggable .ui-dialog-titlebar { cursor: move; }
 
 .wp-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
 .ui-draggable .ui-dialog-titlebar { cursor: move; }
 
-
-
 /* WP jQuery Dialog Theme */
 .wp-dialog {
        border: 1px solid #999;
 /* WP jQuery Dialog Theme */
 .wp-dialog {
        border: 1px solid #999;
index 4650ffe1e42433279277a5f2cfb67904ceb5f02a..46d95b97849ce4cb08f3256f936a9018e3f4d923 100644 (file)
@@ -1 +1 @@
-.wp-pointer-content{padding:0 0 10px;position:relative;font-size:13px;background:#fff;border-style:solid;border-width:1px;border-color:#dfdfdf;border-color:rgba(0,0,0,.125);-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.19);-moz-box-shadow:0 2px 4px rgba(0,0,0,.19);box-shadow:0 2px 4px rgba(0,0,0,.19);}.wp-pointer-content h3{position:relative;margin:0 0 5px;padding:15px 18px 14px 60px;line-height:1.4em;font-size:14px;color:#fff;border-radius:3px 3px 0 0;text-shadow:0 -1px 0 rgba(0,0,0,0.3);background-color:#8cc1e9;background-image:-webkit-linear-gradient(bottom,#72a7cf 0,#8cc1e9 100%);background-image:-moz-linear-gradient(bottom,#72a7cf 0,#8cc1e9 100%);background-image:-ms-linear-gradient(bottom,#72a7cf 0,#8cc1e9 100%);background-image:-o-linear-gradient(bottom,#72a7cf 0,#8cc1e9 100%);background-image:linear-gradient(bottom,#72a7cf 0,#8cc1e9 100%);}.wp-pointer-content h3:before{position:absolute;top:0;left:15px;content:' ';width:36px;height:100%;background:url('../images/icon-pointer-flag.png') 0 50% no-repeat;}.wp-pointer-content p{padding:0 15px;}.wp-pointer-buttons{margin:0;padding:5px 15px;overflow:auto;}.wp-pointer-buttons a{float:right;display:inline-block;text-decoration:none;}.wp-pointer-buttons a.close{padding-left:3px;position:relative;}.wp-pointer-buttons a.close:before{content:' ';width:10px;height:100%;position:absolute;left:-10px;background:url('../images/xit.gif') 0 50% no-repeat;}.wp-pointer-buttons a.close:hover:before{background-position:100% 50%;}.wp-pointer-arrow,.wp-pointer-arrow-inner{position:absolute;width:0;height:0;}.wp-pointer-arrow{z-index:10;background:url('../images/arrow-pointer-blue.png') 0 0 no-repeat;}.wp-pointer-arrow-inner{z-index:20;}.wp-pointer-top,.wp-pointer-undefined{padding-top:13px;}.wp-pointer-bottom{padding-bottom:13px;}.wp-pointer-left{padding-left:13px;}.wp-pointer-right{padding-right:13px;}.wp-pointer-top .wp-pointer-arrow,.wp-pointer-bottom .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{left:50px;width:30px;height:14px;}.wp-pointer-left .wp-pointer-arrow,.wp-pointer-right .wp-pointer-arrow{top:50%;margin-top:-15px;width:14px;height:30px;}.wp-pointer-top .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{top:0;background-position:0 0;}.wp-pointer-bottom .wp-pointer-arrow{bottom:0;background-position:0 -46px;}.wp-pointer-left .wp-pointer-arrow{left:0;background-position:0 -15px;}.wp-pointer-right .wp-pointer-arrow{right:0;background-position:-16px -15px;}.rtl .wp-pointer-content h3{padding-right:60px;padding-left:18px;}.rtl .wp-pointer-content h3:before{right:15px;}.rtl .wp-pointer-buttons a{float:left;}.rtl .wp-pointer-buttons a.close{padding-right:3px;padding-left:0;}.rtl .wp-pointer-buttons a.close:before{right:-10px;}.rtl .wp-pointer-top .wp-pointer-arrow,.rtl .wp-pointer-bottom .wp-pointer-arrow,.rtl .wp-pointer-undefined .wp-pointer-arrow{right:50px;}
\ No newline at end of file
+.wp-pointer-content{padding:0 0 10px;position:relative;font-size:13px;background:#fff;border-style:solid;border-width:1px;border-color:#dfdfdf;border-color:rgba(0,0,0,.125);-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.19);-moz-box-shadow:0 2px 4px rgba(0,0,0,.19);box-shadow:0 2px 4px rgba(0,0,0,.19)}.wp-pointer-content h3{position:relative;margin:0 0 5px;padding:15px 18px 14px 60px;line-height:1.4em;font-size:14px;color:#fff;border-radius:3px 3px 0 0;text-shadow:0 -1px 0 rgba(0,0,0,0.3);background-color:#8cc1e9;background-image:-webkit-linear-gradient(bottom,#72a7cf 0,#8cc1e9 100%);background-image:-moz-linear-gradient(bottom,#72a7cf 0,#8cc1e9 100%);background-image:-ms-linear-gradient(bottom,#72a7cf 0,#8cc1e9 100%);background-image:-o-linear-gradient(bottom,#72a7cf 0,#8cc1e9 100%);background-image:linear-gradient(bottom,#72a7cf 0,#8cc1e9 100%)}.wp-pointer-content h3:before{position:absolute;top:0;left:15px;content:' ';width:36px;height:100%;background:url('../images/icon-pointer-flag.png') 0 50% no-repeat}.wp-pointer-content p{padding:0 15px}.wp-pointer-buttons{margin:0;padding:5px 15px;overflow:auto}.wp-pointer-buttons a{float:right;display:inline-block;text-decoration:none}.wp-pointer-buttons a.close{padding-left:3px;position:relative}.wp-pointer-buttons a.close:before{content:' ';width:10px;height:100%;position:absolute;left:-10px;background:url('../images/xit.gif') 0 50% no-repeat}.wp-pointer-buttons a.close:hover:before{background-position:100% 50%}.wp-pointer-arrow,.wp-pointer-arrow-inner{position:absolute;width:0;height:0}.wp-pointer-arrow{z-index:10;background:url('../images/arrow-pointer-blue.png') 0 0 no-repeat}.wp-pointer-arrow-inner{z-index:20}.wp-pointer-top,.wp-pointer-undefined{padding-top:13px}.wp-pointer-bottom{padding-bottom:13px}.wp-pointer-left{padding-left:13px}.wp-pointer-right{padding-right:13px}.wp-pointer-top .wp-pointer-arrow,.wp-pointer-bottom .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{left:50px;width:30px;height:14px}.wp-pointer-left .wp-pointer-arrow,.wp-pointer-right .wp-pointer-arrow{top:50%;margin-top:-15px;width:14px;height:30px}.wp-pointer-top .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{top:0;background-position:0 0}.wp-pointer-bottom .wp-pointer-arrow{bottom:0;background-position:0 -46px}.wp-pointer-left .wp-pointer-arrow{left:0;background-position:0 -15px}.wp-pointer-right .wp-pointer-arrow{right:0;background-position:-16px -15px}.rtl .wp-pointer-content h3{padding-right:60px;padding-left:18px}.rtl .wp-pointer-content h3:before{right:15px}.rtl .wp-pointer-buttons a{float:left}.rtl .wp-pointer-buttons a.close{padding-right:3px;padding-left:0}.rtl .wp-pointer-buttons a.close:before{right:-10px}.rtl .wp-pointer-top .wp-pointer-arrow,.rtl .wp-pointer-bottom .wp-pointer-arrow,.rtl .wp-pointer-undefined .wp-pointer-arrow{right:50px}
\ No newline at end of file
index 9c6535e21a8025888f17c23c9875f287895a8168..4e5daabd4d2f2f07ed8a98e6d21ba7035b28b4ba 100644 (file)
@@ -105,7 +105,7 @@ function wp_plugin_directory_constants( ) {
         * @deprecated
         */
        if ( !defined('PLUGINDIR') )
         * @deprecated
         */
        if ( !defined('PLUGINDIR') )
-               define( 'PLUGINDIR', 'wp-content/plugins' ); // Relative to ABSPATH.  For back compat.
+               define( 'PLUGINDIR', 'wp-content/plugins' ); // Relative to ABSPATH. For back compat.
 
        /**
         * Allows for the mu-plugins directory to be moved from the default location.
 
        /**
         * Allows for the mu-plugins directory to be moved from the default location.
@@ -130,7 +130,7 @@ function wp_plugin_directory_constants( ) {
         * @deprecated
         */
        if ( !defined( 'MUPLUGINDIR' ) )
         * @deprecated
         */
        if ( !defined( 'MUPLUGINDIR' ) )
-               define( 'MUPLUGINDIR', 'wp-content/mu-plugins' ); // Relative to ABSPATH.  For back compat.
+               define( 'MUPLUGINDIR', 'wp-content/mu-plugins' ); // Relative to ABSPATH. For back compat.
 }
 
 /**
 }
 
 /**
@@ -140,8 +140,6 @@ function wp_plugin_directory_constants( ) {
  * @since 3.0.0
  */
 function wp_cookie_constants( ) {
  * @since 3.0.0
  */
 function wp_cookie_constants( ) {
-       global $wp_default_secret_key;
-
        /**
         * Used to guarantee unique hash cookies
         * @since 1.5
        /**
         * Used to guarantee unique hash cookies
         * @since 1.5
@@ -154,12 +152,6 @@ function wp_cookie_constants( ) {
                        define( 'COOKIEHASH', '' );
        }
 
                        define( 'COOKIEHASH', '' );
        }
 
-       /**
-        * Should be exactly the same as the default value of SECRET_KEY in wp-config-sample.php
-        * @since 2.5.0
-        */
-       $wp_default_secret_key = 'put your unique phrase here';
-
        /**
         * @since 2.0.0
         */
        /**
         * @since 2.0.0
         */
@@ -304,5 +296,3 @@ function wp_templating_constants( ) {
                define( 'WP_DEFAULT_THEME', 'twentyeleven' );
 
 }
                define( 'WP_DEFAULT_THEME', 'twentyeleven' );
 
 }
-
-?>
index 7000c4f7478ab5b282f376959c4d08c081c81fab..c1a1d9f67de5b3c8928874c4b139601a0d8927b8 100644 (file)
@@ -79,10 +79,7 @@ foreach ( array( 'pre_term_slug' ) as $filter ) {
 }
 
 // Keys
 }
 
 // Keys
-foreach ( array( 'pre_post_type' ) as $filter ) {
-       add_filter( $filter, 'sanitize_user' );
-}
-foreach ( array( 'pre_post_status', 'pre_post_comment_status', 'pre_post_ping_status' ) as $filter ) {
+foreach ( array( 'pre_post_type', 'pre_post_status', 'pre_post_comment_status', 'pre_post_ping_status' ) as $filter ) {
        add_filter( $filter, 'sanitize_key' );
 }
 
        add_filter( $filter, 'sanitize_key' );
 }
 
@@ -193,6 +190,7 @@ add_filter( 'the_posts',                '_close_comments_for_old_posts', 10, 2);
 add_filter( 'comments_open',            '_close_comments_for_old_post', 10, 2 );
 add_filter( 'pings_open',               '_close_comments_for_old_post', 10, 2 );
 add_filter( 'editable_slug',            'urldecode'                           );
 add_filter( 'comments_open',            '_close_comments_for_old_post', 10, 2 );
 add_filter( 'pings_open',               '_close_comments_for_old_post', 10, 2 );
 add_filter( 'editable_slug',            'urldecode'                           );
+add_filter( 'editable_slug',            'esc_textarea'                        );
 add_filter( 'nav_menu_meta_box_object', '_wp_nav_menu_meta_box_object'        );
 
 // Actions
 add_filter( 'nav_menu_meta_box_object', '_wp_nav_menu_meta_box_object'        );
 
 // Actions
@@ -231,7 +229,7 @@ foreach ( array( 'rss2_head', 'commentsrss2_head', 'rss_head', 'rdf_header', 'at
 
 // WP Cron
 if ( !defined( 'DOING_CRON' ) )
 
 // WP Cron
 if ( !defined( 'DOING_CRON' ) )
-       add_action( 'sanitize_comment_cookies', 'wp_cron' );
+       add_action( 'init', 'wp_cron' );
 
 // 2 Actions 2 Furious
 add_action( 'do_feed_rdf',                'do_feed_rdf',                             10, 1 );
 
 // 2 Actions 2 Furious
 add_action( 'do_feed_rdf',                'do_feed_rdf',                             10, 1 );
@@ -240,6 +238,7 @@ add_action( 'do_feed_rss2',               'do_feed_rss2',
 add_action( 'do_feed_atom',               'do_feed_atom',                            10, 1 );
 add_action( 'do_pings',                   'do_all_pings',                            10, 1 );
 add_action( 'do_robots',                  'do_robots'                                      );
 add_action( 'do_feed_atom',               'do_feed_atom',                            10, 1 );
 add_action( 'do_pings',                   'do_all_pings',                            10, 1 );
 add_action( 'do_robots',                  'do_robots'                                      );
+add_action( 'set_comment_cookies',        'wp_set_comment_cookies',                  10, 2 );
 add_action( 'sanitize_comment_cookies',   'sanitize_comment_cookies'                       );
 add_action( 'admin_print_scripts',        'print_head_scripts',                      20    );
 add_action( 'admin_print_footer_scripts', '_wp_footer_scripts'                             );
 add_action( 'sanitize_comment_cookies',   'sanitize_comment_cookies'                       );
 add_action( 'admin_print_scripts',        'print_head_scripts',                      20    );
 add_action( 'admin_print_footer_scripts', '_wp_footer_scripts'                             );
@@ -255,6 +254,7 @@ add_action( 'transition_post_status',     '_transition_post_status',
 add_action( 'transition_post_status',     '_update_term_count_on_transition_post_status', 10, 3 );
 add_action( 'comment_form',               'wp_comment_form_unfiltered_html_nonce'          );
 add_action( 'wp_scheduled_delete',        'wp_scheduled_delete'                            );
 add_action( 'transition_post_status',     '_update_term_count_on_transition_post_status', 10, 3 );
 add_action( 'comment_form',               'wp_comment_form_unfiltered_html_nonce'          );
 add_action( 'wp_scheduled_delete',        'wp_scheduled_delete'                            );
+add_action( 'wp_scheduled_auto_draft_delete', 'wp_delete_auto_drafts'                      );
 add_action( 'admin_init',                 'send_frame_options_header',               10, 0 );
 add_action( 'importer_scheduled_cleanup', 'wp_delete_attachment'                           );
 add_action( 'upgrader_scheduled_cleanup', 'wp_delete_attachment'                           );
 add_action( 'admin_init',                 'send_frame_options_header',               10, 0 );
 add_action( 'importer_scheduled_cleanup', 'wp_delete_attachment'                           );
 add_action( 'upgrader_scheduled_cleanup', 'wp_delete_attachment'                           );
@@ -283,5 +283,3 @@ add_action( 'admin_init', 'register_admin_color_schemes', 1);
 add_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
 
 unset($filter, $action);
 add_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
 
 unset($filter, $action);
-
-?>
index df7ef39ac5f84f72b05d3bba8d664d1ffa6f2c34..e4856dac68b790a958e9b4948c1dc2e6861da841 100644 (file)
@@ -102,12 +102,9 @@ class WP_Widget_Links extends WP_Widget {
                $show_rating = isset($instance['rating']) ? $instance['rating'] : false;
                $show_images = isset($instance['images']) ? $instance['images'] : true;
                $category = isset($instance['category']) ? $instance['category'] : false;
                $show_rating = isset($instance['rating']) ? $instance['rating'] : false;
                $show_images = isset($instance['images']) ? $instance['images'] : true;
                $category = isset($instance['category']) ? $instance['category'] : false;
-
-               if ( is_admin() && !$category ) {
-                       // Display All Links widget as such in the widgets screen
-                       echo $before_widget . $before_title . _x('All Links', 'links widget') . $after_title . $after_widget;
-                       return;
-               }
+               $orderby = isset( $instance['orderby'] ) ? $instance['orderby'] : 'name';
+               $order = $orderby == 'rating' ? 'DESC' : 'ASC';
+               $limit = isset( $instance['limit'] ) ? $instance['limit'] : -1;
 
                $before_widget = preg_replace('/id="[^"]*"/','id="%id"', $before_widget);
                wp_list_bookmarks(apply_filters('widget_links_args', array(
 
                $before_widget = preg_replace('/id="[^"]*"/','id="%id"', $before_widget);
                wp_list_bookmarks(apply_filters('widget_links_args', array(
@@ -115,18 +112,26 @@ class WP_Widget_Links extends WP_Widget {
                        'category_before' => $before_widget, 'category_after' => $after_widget,
                        'show_images' => $show_images, 'show_description' => $show_description,
                        'show_name' => $show_name, 'show_rating' => $show_rating,
                        'category_before' => $before_widget, 'category_after' => $after_widget,
                        'show_images' => $show_images, 'show_description' => $show_description,
                        'show_name' => $show_name, 'show_rating' => $show_rating,
-                       'category' => $category, 'class' => 'linkcat widget'
+                       'category' => $category, 'class' => 'linkcat widget',
+                       'orderby' => $orderby, 'order' => $order,
+                       'limit' => $limit,
                )));
        }
 
        function update( $new_instance, $old_instance ) {
                $new_instance = (array) $new_instance;
                )));
        }
 
        function update( $new_instance, $old_instance ) {
                $new_instance = (array) $new_instance;
-               $instance = array( 'images' => 0, 'name' => 0, 'description' => 0, 'rating' => 0);
+               $instance = array( 'images' => 0, 'name' => 0, 'description' => 0, 'rating' => 0 );
                foreach ( $instance as $field => $val ) {
                        if ( isset($new_instance[$field]) )
                                $instance[$field] = 1;
                }
                foreach ( $instance as $field => $val ) {
                        if ( isset($new_instance[$field]) )
                                $instance[$field] = 1;
                }
-               $instance['category'] = intval($new_instance['category']);
+
+               $instance['orderby'] = 'name';
+               if ( in_array( $new_instance['orderby'], array( 'name', 'rating', 'id', 'rand' ) ) )
+                       $instance['orderby'] = $new_instance['orderby'];
+
+               $instance['category'] = intval( $new_instance['category'] );
+               $instance['limit'] = ! empty( $new_instance['limit'] ) ? intval( $new_instance['limit'] ) : -1;
 
                return $instance;
        }
 
                return $instance;
        }
@@ -134,11 +139,13 @@ class WP_Widget_Links extends WP_Widget {
        function form( $instance ) {
 
                //Defaults
        function form( $instance ) {
 
                //Defaults
-               $instance = wp_parse_args( (array) $instance, array( 'images' => true, 'name' => true, 'description' => false, 'rating' => false, 'category' => false ) );
-               $link_cats = get_terms( 'link_category');
+               $instance = wp_parse_args( (array) $instance, array( 'images' => true, 'name' => true, 'description' => false, 'rating' => false, 'category' => false, 'orderby' => 'name', 'limit' => -1 ) );
+               $link_cats = get_terms( 'link_category' );
+               if ( ! $limit = intval( $instance['limit'] ) )
+                       $limit = -1;
 ?>
                <p>
 ?>
                <p>
-               <label for="<?php echo $this->get_field_id('category'); ?>" class="screen-reader-text"><?php _e('Select Link Category'); ?></label>
+               <label for="<?php echo $this->get_field_id('category'); ?>"><?php _e( 'Select Link Category:' ); ?></label>
                <select class="widefat" id="<?php echo $this->get_field_id('category'); ?>" name="<?php echo $this->get_field_name('category'); ?>">
                <option value=""><?php _ex('All Links', 'links widget'); ?></option>
                <?php
                <select class="widefat" id="<?php echo $this->get_field_id('category'); ?>" name="<?php echo $this->get_field_name('category'); ?>">
                <option value=""><?php _ex('All Links', 'links widget'); ?></option>
                <?php
@@ -148,7 +155,15 @@ class WP_Widget_Links extends WP_Widget {
                                . '>' . $link_cat->name . "</option>\n";
                }
                ?>
                                . '>' . $link_cat->name . "</option>\n";
                }
                ?>
-               </select></p>
+               </select>
+               <label for="<?php echo $this->get_field_id('orderby'); ?>"><?php _e( 'Sort by:' ); ?></label>
+               <select name="<?php echo $this->get_field_name('orderby'); ?>" id="<?php echo $this->get_field_id('orderby'); ?>" class="widefat">
+                       <option value="name"<?php selected( $instance['orderby'], 'name' ); ?>><?php _e( 'Link title' ); ?></option>
+                       <option value="rating"<?php selected( $instance['orderby'], 'rating' ); ?>><?php _e( 'Link rating' ); ?></option>
+                       <option value="id"<?php selected( $instance['orderby'], 'id' ); ?>><?php _e( 'Link ID' ); ?></option>
+                       <option value="rand"<?php selected( $instance['orderby'], 'rand' ); ?>><?php _e( 'Random' ); ?></option>
+               </select>
+               </p>
                <p>
                <input class="checkbox" type="checkbox" <?php checked($instance['images'], true) ?> id="<?php echo $this->get_field_id('images'); ?>" name="<?php echo $this->get_field_name('images'); ?>" />
                <label for="<?php echo $this->get_field_id('images'); ?>"><?php _e('Show Link Image'); ?></label><br />
                <p>
                <input class="checkbox" type="checkbox" <?php checked($instance['images'], true) ?> id="<?php echo $this->get_field_id('images'); ?>" name="<?php echo $this->get_field_name('images'); ?>" />
                <label for="<?php echo $this->get_field_id('images'); ?>"><?php _e('Show Link Image'); ?></label><br />
@@ -159,6 +174,10 @@ class WP_Widget_Links extends WP_Widget {
                <input class="checkbox" type="checkbox" <?php checked($instance['rating'], true) ?> id="<?php echo $this->get_field_id('rating'); ?>" name="<?php echo $this->get_field_name('rating'); ?>" />
                <label for="<?php echo $this->get_field_id('rating'); ?>"><?php _e('Show Link Rating'); ?></label>
                </p>
                <input class="checkbox" type="checkbox" <?php checked($instance['rating'], true) ?> id="<?php echo $this->get_field_id('rating'); ?>" name="<?php echo $this->get_field_name('rating'); ?>" />
                <label for="<?php echo $this->get_field_id('rating'); ?>"><?php _e('Show Link Rating'); ?></label>
                </p>
+               <p>
+               <label for="<?php echo $this->get_field_id('limit'); ?>"><?php _e( 'Number of links to show:' ); ?></label>
+               <input id="<?php echo $this->get_field_id('limit'); ?>" name="<?php echo $this->get_field_name('limit'); ?>" type="text" value="<?php echo $limit == -1 ? '' : intval( $limit ); ?>" size="3" />
+               </p>
 <?php
        }
 }
 <?php
        }
 }
@@ -296,7 +315,10 @@ class WP_Widget_Meta extends WP_Widget {
                        <li><?php wp_loginout(); ?></li>
                        <li><a href="<?php bloginfo('rss2_url'); ?>" title="<?php echo esc_attr(__('Syndicate this site using RSS 2.0')); ?>"><?php _e('Entries <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
                        <li><a href="<?php bloginfo('comments_rss2_url'); ?>" title="<?php echo esc_attr(__('The latest comments to all posts in RSS')); ?>"><?php _e('Comments <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
                        <li><?php wp_loginout(); ?></li>
                        <li><a href="<?php bloginfo('rss2_url'); ?>" title="<?php echo esc_attr(__('Syndicate this site using RSS 2.0')); ?>"><?php _e('Entries <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
                        <li><a href="<?php bloginfo('comments_rss2_url'); ?>" title="<?php echo esc_attr(__('The latest comments to all posts in RSS')); ?>"><?php _e('Comments <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
-                       <li><a href="http://wordpress.org/" title="<?php echo esc_attr(__('Powered by WordPress, state-of-the-art semantic personal publishing platform.')); ?>">WordPress.org</a></li>
+                       <li><a href="<?php esc_attr_e( 'http://wordpress.org/' ); ?>" title="<?php echo esc_attr(__('Powered by WordPress, state-of-the-art semantic personal publishing platform.')); ?>"><?php
+                       /* translators: meta widget link text */
+                       _e( 'WordPress.org' );
+                       ?></a></li>
                        <?php wp_meta(); ?>
                        </ul>
 <?php
                        <?php wp_meta(); ?>
                        </ul>
 <?php
@@ -540,7 +562,7 @@ class WP_Widget_Recent_Posts extends WP_Widget {
                if ( empty( $instance['number'] ) || ! $number = absint( $instance['number'] ) )
                        $number = 10;
 
                if ( empty( $instance['number'] ) || ! $number = absint( $instance['number'] ) )
                        $number = 10;
 
-               $r = new WP_Query(array('posts_per_page' => $number, 'no_found_rows' => true, 'post_status' => 'publish', 'ignore_sticky_posts' => true));
+               $r = new WP_Query( apply_filters( 'widget_posts_args', array( 'posts_per_page' => $number, 'no_found_rows' => true, 'post_status' => 'publish', 'ignore_sticky_posts' => true ) ) );
                if ($r->have_posts()) :
 ?>
                <?php echo $before_widget; ?>
                if ($r->have_posts()) :
 ?>
                <?php echo $before_widget; ?>
@@ -646,7 +668,7 @@ class WP_Widget_Recent_Comments extends WP_Widget {
                if ( empty( $instance['number'] ) || ! $number = absint( $instance['number'] ) )
                        $number = 5;
 
                if ( empty( $instance['number'] ) || ! $number = absint( $instance['number'] ) )
                        $number = 5;
 
-               $comments = get_comments( array( 'number' => $number, 'status' => 'approve', 'post_status' => 'publish' ) );
+               $comments = get_comments( apply_filters( 'widget_comments_args', array( 'number' => $number, 'status' => 'approve', 'post_status' => 'publish' ) ) );
                $output .= $before_widget;
                if ( $title )
                        $output .= $before_title . $title . $after_title;
                $output .= $before_widget;
                if ( $title )
                        $output .= $before_title . $title . $after_title;
@@ -869,8 +891,6 @@ function wp_widget_rss_output( $rss, $args = array() ) {
        unset($rss);
 }
 
        unset($rss);
 }
 
-
-
 /**
  * Display RSS widget options form.
  *
 /**
  * Display RSS widget options form.
  *
@@ -1033,7 +1053,7 @@ class WP_Widget_Tag_Cloud extends WP_Widget {
        <input type="text" class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" value="<?php if (isset ( $instance['title'])) {echo esc_attr( $instance['title'] );} ?>" /></p>
        <p><label for="<?php echo $this->get_field_id('taxonomy'); ?>"><?php _e('Taxonomy:') ?></label>
        <select class="widefat" id="<?php echo $this->get_field_id('taxonomy'); ?>" name="<?php echo $this->get_field_name('taxonomy'); ?>">
        <input type="text" class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" value="<?php if (isset ( $instance['title'])) {echo esc_attr( $instance['title'] );} ?>" /></p>
        <p><label for="<?php echo $this->get_field_id('taxonomy'); ?>"><?php _e('Taxonomy:') ?></label>
        <select class="widefat" id="<?php echo $this->get_field_id('taxonomy'); ?>" name="<?php echo $this->get_field_name('taxonomy'); ?>">
-       <?php foreach ( get_object_taxonomies('post') as $taxonomy ) :
+       <?php foreach ( get_taxonomies() as $taxonomy ) :
                                $tax = get_taxonomy($taxonomy);
                                if ( !$tax->show_tagcloud || empty($tax->labels->name) )
                                        continue;
                                $tax = get_taxonomy($taxonomy);
                                if ( !$tax->show_tagcloud || empty($tax->labels->name) )
                                        continue;
index 1ccddba3497b4b4eb8c962fc1080a2e5e94f1140..43523ca6980d58a8d8f517fae6157700b8e710d2 100644 (file)
@@ -2029,7 +2029,6 @@ function get_attachment_innerHTML($id = 0, $fullsize = false, $max_dims = false)
        if ( $innerHTML = get_attachment_icon($post->ID, $fullsize, $max_dims))
                return $innerHTML;
 
        if ( $innerHTML = get_attachment_icon($post->ID, $fullsize, $max_dims))
                return $innerHTML;
 
-
        $innerHTML = esc_attr($post->post_title);
 
        return apply_filters('attachment_innerHTML', $innerHTML, $post->ID);
        $innerHTML = esc_attr($post->post_title);
 
        return apply_filters('attachment_innerHTML', $innerHTML, $post->ID);
@@ -2129,7 +2128,6 @@ function wp_specialchars( $string, $quote_style = ENT_NOQUOTES, $charset = false
        }
 }
 
        }
 }
 
-
 /**
  * Escaping for HTML attributes.
  *
 /**
  * Escaping for HTML attributes.
  *
@@ -2566,7 +2564,7 @@ function is_term( $term, $taxonomy = '', $parent = 0 ) {
  * Is the current admin page generated by a plugin?
  *
  * @since 1.5.0
  * Is the current admin page generated by a plugin?
  *
  * @since 1.5.0
- * @deprecated 3.1
+ * @deprecated 3.1.0
  * @deprecated Use global $plugin_page and/or get_plugin_page_hookname() hooks.
  *
  * @global $plugin_page
  * @deprecated Use global $plugin_page and/or get_plugin_page_hookname() hooks.
  *
  * @global $plugin_page
@@ -2592,7 +2590,7 @@ function is_plugin_page() {
  * for updating the category cache.
  *
  * @since 1.5.0
  * for updating the category cache.
  *
  * @since 1.5.0
- * @deprecated 3.1
+ * @deprecated 3.1.0
  *
  * @return bool Always return True
  */
  *
  * @return bool Always return True
  */
@@ -2606,7 +2604,7 @@ function update_category_cache() {
  * Check for PHP timezone support
  *
  * @since 2.9.0
  * Check for PHP timezone support
  *
  * @since 2.9.0
- * @deprecated 3.2
+ * @deprecated 3.2.0
  *
  * @return bool
  */
  *
  * @return bool
  */
@@ -2620,7 +2618,9 @@ function wp_timezone_supported() {
  * Display editor: TinyMCE, HTML, or both.
  *
  * @since 2.1.0
  * Display editor: TinyMCE, HTML, or both.
  *
  * @since 2.1.0
- * @deprecated 3.3
+ * @deprecated 3.3.0
+ * @deprecated Use wp_editor()
+ * @see wp_editor()
  *
  * @param string $content Textarea content.
  * @param string $id Optional, default is 'content'. HTML ID attribute value.
  *
  * @param string $content Textarea content.
  * @param string $id Optional, default is 'content'. HTML ID attribute value.
@@ -2629,6 +2629,7 @@ function wp_timezone_supported() {
  * @param int $tab_index Optional, not used
  */
 function the_editor($content, $id = 'content', $prev_id = 'title', $media_buttons = true, $tab_index = 2, $extended = true) {
  * @param int $tab_index Optional, not used
  */
 function the_editor($content, $id = 'content', $prev_id = 'title', $media_buttons = true, $tab_index = 2, $extended = true) {
+       _deprecated_function( __FUNCTION__, '3.3', 'wp_editor()' );
 
        wp_editor( $content, $id, array( 'media_buttons' => $media_buttons ) );
        return;
 
        wp_editor( $content, $id, array( 'media_buttons' => $media_buttons ) );
        return;
@@ -2638,6 +2639,8 @@ function the_editor($content, $id = 'content', $prev_id = 'title', $media_button
  * Perform the query to get the $metavalues array(s) needed by _fill_user and _fill_many_users
  *
  * @since 3.0.0
  * Perform the query to get the $metavalues array(s) needed by _fill_user and _fill_many_users
  *
  * @since 3.0.0
+ * @deprecated 3.3.0
+ *
  * @param array $ids User ID numbers list.
  * @return array of arrays. The array is indexed by user_id, containing $metavalues object arrays.
  */
  * @param array $ids User ID numbers list.
  * @return array of arrays. The array is indexed by user_id, containing $metavalues object arrays.
  */
@@ -2670,7 +2673,6 @@ function get_user_metavalues($ids) {
  *
  * @since 2.3.0
  * @deprecated 3.3.0
  *
  * @since 2.3.0
  * @deprecated 3.3.0
- * @uses sanitize_user_field() Used to sanitize the fields.
  *
  * @param object|array $user The User Object or Array
  * @param string $context Optional, default is 'display'. How to sanitize user fields.
  *
  * @param object|array $user The User Object or Array
  * @param string $context Optional, default is 'display'. How to sanitize user fields.
@@ -2707,7 +2709,7 @@ function sanitize_user_object($user, $context = 'display') {
  * Can either be start or end post relational link.
  *
  * @since 2.8.0
  * Can either be start or end post relational link.
  *
  * @since 2.8.0
- * @deprecated 3.3
+ * @deprecated 3.3.0
  *
  * @param string $title Optional. Link title format.
  * @param bool $in_same_cat Optional. Whether link should be in a same category.
  *
  * @param string $title Optional. Link title format.
  * @param bool $in_same_cat Optional. Whether link should be in a same category.
@@ -2747,7 +2749,7 @@ function get_boundary_post_rel_link($title = '%title', $in_same_cat = false, $ex
  * Display relational link for the first post.
  *
  * @since 2.8.0
  * Display relational link for the first post.
  *
  * @since 2.8.0
- * @deprecated 3.3
+ * @deprecated 3.3.0
  *
  * @param string $title Optional. Link title format.
  * @param bool $in_same_cat Optional. Whether link should be in a same category.
  *
  * @param string $title Optional. Link title format.
  * @param bool $in_same_cat Optional. Whether link should be in a same category.
@@ -2763,7 +2765,7 @@ function start_post_rel_link($title = '%title', $in_same_cat = false, $excluded_
  * Get site index relational link.
  *
  * @since 2.8.0
  * Get site index relational link.
  *
  * @since 2.8.0
- * @deprecated 3.3
+ * @deprecated 3.3.0
  *
  * @return string
  */
  *
  * @return string
  */
@@ -2778,7 +2780,7 @@ function get_index_rel_link() {
  * Display relational link for the site index.
  *
  * @since 2.8.0
  * Display relational link for the site index.
  *
  * @since 2.8.0
- * @deprecated 3.3
+ * @deprecated 3.3.0
  */
 function index_rel_link() {
        _deprecated_function( __FUNCTION__, '3.3' );
  */
 function index_rel_link() {
        _deprecated_function( __FUNCTION__, '3.3' );
@@ -2790,7 +2792,7 @@ function index_rel_link() {
  * Get parent post relational link.
  *
  * @since 2.8.0
  * Get parent post relational link.
  *
  * @since 2.8.0
- * @deprecated 3.3
+ * @deprecated 3.3.0
  *
  * @param string $title Optional. Link title format.
  * @return string
  *
  * @param string $title Optional. Link title format.
  * @return string
@@ -2821,7 +2823,7 @@ function get_parent_post_rel_link($title = '%title') {
  * Display relational link for parent item
  *
  * @since 2.8.0
  * Display relational link for parent item
  *
  * @since 2.8.0
- * @deprecated 3.3
+ * @deprecated 3.3.0
  */
 function parent_post_rel_link($title = '%title') {
        _deprecated_function( __FUNCTION__, '3.3' );
  */
 function parent_post_rel_link($title = '%title') {
        _deprecated_function( __FUNCTION__, '3.3' );
@@ -2833,7 +2835,7 @@ function parent_post_rel_link($title = '%title') {
  * Add the "Dashboard"/"Visit Site" menu.
  *
  * @since 3.2.0
  * Add the "Dashboard"/"Visit Site" menu.
  *
  * @since 3.2.0
- * @deprecated 3.3
+ * @deprecated 3.3.0
  */
 function wp_admin_bar_dashboard_view_site_menu( $wp_admin_bar ) {
        _deprecated_function( __FUNCTION__, '3.3' );
  */
 function wp_admin_bar_dashboard_view_site_menu( $wp_admin_bar ) {
        _deprecated_function( __FUNCTION__, '3.3' );
@@ -2854,7 +2856,7 @@ function wp_admin_bar_dashboard_view_site_menu( $wp_admin_bar ) {
  * Checks if the current user belong to a given blog.
  *
  * @since MU
  * Checks if the current user belong to a given blog.
  *
  * @since MU
- * @deprecated 3.3
+ * @deprecated 3.3.0
  * @deprecated Use is_user_member_of_blog()
  * @see is_user_member_of_blog()
  *
  * @deprecated Use is_user_member_of_blog()
  * @see is_user_member_of_blog()
  *
@@ -2866,3 +2868,291 @@ function is_blog_user( $blog_id = 0 ) {
 
        return is_user_member_of_blog( get_current_user_id(), $blog_id );
 }
 
        return is_user_member_of_blog( get_current_user_id(), $blog_id );
 }
+
+/**
+ * Open the file handle for debugging.
+ *
+ * @since 0.71
+ * @deprecated Use error_log()
+ * @link http://www.php.net/manual/en/function.error-log.php
+ * @deprecated 3.4.0
+ */
+function debug_fopen( $filename, $mode ) {
+       _deprecated_function( __FUNCTION__, 'error_log()' );
+       return false;
+}
+
+/**
+ * Write contents to the file used for debugging.
+ *
+ * @since 0.71
+ * @deprecated Use error_log() instead.
+ * @link http://www.php.net/manual/en/function.error-log.php
+ * @deprecated 3.4.0
+ */
+function debug_fwrite( $fp, $string ) {
+       _deprecated_function( __FUNCTION__, 'error_log()' );
+       if ( ! empty( $GLOBALS['debug'] ) )
+               error_log( $string );
+}
+
+/**
+ * Close the debugging file handle.
+ *
+ * @since 0.71
+ * @deprecated Use error_log()
+ * @link http://www.php.net/manual/en/function.error-log.php
+ * @deprecated 3.4.0
+ */
+function debug_fclose( $fp ) {
+       _deprecated_function( __FUNCTION__, 'error_log()' );
+}
+
+/**
+ * Retrieve list of themes with theme data in theme directory.
+ *
+ * The theme is broken, if it doesn't have a parent theme and is missing either
+ * style.css and, or index.php. If the theme has a parent theme then it is
+ * broken, if it is missing style.css; index.php is optional.
+ *
+ * @since 1.5.0
+ * @deprecated 3.4.0
+ * @deprecated Use wp_get_themes()
+ * @see wp_get_themes()
+ *
+ * @return array Theme list with theme data.
+ */
+function get_themes() {
+       _deprecated_function( __FUNCTION__, '3.4', 'wp_get_themes()' );
+
+       global $wp_themes;
+       if ( isset( $wp_themes ) )
+               return $wp_themes;
+
+       $themes = wp_get_themes();
+       $wp_themes = array();
+
+       foreach ( $themes as $theme ) {
+               $name = $theme->get('Name');
+               if ( isset( $wp_themes[ $name ] ) )
+                       $wp_themes[ $name . '/' . $theme->get_stylesheet() ] = $theme;
+               else
+                       $wp_themes[ $name ] = $theme;
+       }
+
+       return $wp_themes;
+}
+
+/**
+ * Retrieve theme data.
+ *
+ * @since 1.5.0
+ * @deprecated 3.4.0
+ * @deprecated Use wp_get_theme()
+ * @see wp_get_theme()
+ *
+ * @param string $theme Theme name.
+ * @return array|null Null, if theme name does not exist. Theme data, if exists.
+ */
+function get_theme( $theme ) {
+       _deprecated_function( __FUNCTION__, '3.4', 'wp_get_theme( $stylesheet )' );
+
+       $themes = get_themes();
+       if ( is_array( $themes ) && array_key_exists( $theme, $themes ) )
+               return $themes[ $theme ];
+       return null;
+}
+
+/**
+ * Retrieve current theme name.
+ *
+ * @since 1.5.0
+ * @deprecated 3.4.0
+ * @deprecated Use (string) wp_get_theme()
+ * @see wp_get_theme()
+ *
+ * @return string
+ */
+function get_current_theme() {
+       _deprecated_function( __FUNCTION__, '3.4', 'wp_get_theme()' );
+
+       if ( $theme = get_option( 'current_theme' ) )
+               return $theme;
+
+       return wp_get_theme()->get('Name');
+}
+
+/**
+ * Accepts matches array from preg_replace_callback in wpautop() or a string.
+ *
+ * Ensures that the contents of a <<pre>>...<</pre>> HTML block are not
+ * converted into paragraphs or line-breaks.
+ *
+ * @since 1.2.0
+ * @deprecated 3.4.0
+ *
+ * @param array|string $matches The array or string
+ * @return string The pre block without paragraph/line-break conversion.
+ */
+function clean_pre($matches) {
+       _deprecated_function( __FUNCTION__, '3.4' );
+
+       if ( is_array($matches) )
+               $text = $matches[1] . $matches[2] . "</pre>";
+       else
+               $text = $matches;
+
+       $text = str_replace(array('<br />', '<br/>', '<br>'), array('', '', ''), $text);
+       $text = str_replace('<p>', "\n", $text);
+       $text = str_replace('</p>', '', $text);
+
+       return $text;
+}
+
+
+/**
+ * Add callbacks for image header display.
+ *
+ * @since 2.1.0
+ * @deprecated 3.4.0
+ * @deprecated Use add_theme_support('custom-header', $args)
+ * @see add_theme_support()
+ *
+ * @param callback $wp_head_callback Call on 'wp_head' action.
+ * @param callback $admin_head_callback Call on custom header administration screen.
+ * @param callback $admin_preview_callback Output a custom header image div on the custom header administration screen. Optional.
+ */
+function add_custom_image_header( $wp_head_callback, $admin_head_callback, $admin_preview_callback = '' ) {
+       _deprecated_function( __FUNCTION__, '3.4', 'add_theme_support( \'custom-header\', $args )' );
+       $args = array(
+               'wp-head-callback'    => $wp_head_callback,
+               'admin-head-callback' => $admin_head_callback,
+       );
+       if ( $admin_preview_callback )
+               $args['admin-preview-callback'] = $admin_preview_callback;
+       return add_theme_support( 'custom-header', $args );
+}
+
+/**
+ * Remove image header support.
+ *
+ * @since 3.1.0
+ * @deprecated 3.4.0
+ * @deprecated Use remove_theme_support('custom-header')
+ * @see remove_theme_support()
+ *
+ * @return bool Whether support was removed.
+ */
+function remove_custom_image_header() {
+       _deprecated_function( __FUNCTION__, '3.4', 'remove_theme_support( \'custom-header\' )' );
+       return remove_theme_support( 'custom-header' );
+}
+
+/**
+ * Add callbacks for background image display.
+ *
+ * @since 3.0.0
+ * @deprecated 3.4.0
+ * @deprecated Use add_theme_support('custom-background, $args)
+ * @see add_theme_support()
+ *
+ * @param callback $wp_head_callback Call on 'wp_head' action.
+ * @param callback $admin_head_callback Call on custom background administration screen.
+ * @param callback $admin_preview_callback Output a custom background image div on the custom background administration screen. Optional.
+ */
+function add_custom_background( $wp_head_callback = '', $admin_head_callback = '', $admin_preview_callback = '' ) {
+       _deprecated_function( __FUNCTION__, '3.4', 'add_theme_support( \'custom-background\', $args )' );
+       $args = array();
+       if ( $wp_head_callback )
+               $args['wp-head-callback'] = $wp_head_callback;
+       if ( $admin_head_callback )
+               $args['admin-head-callback'] = $admin_head_callback;
+       if ( $admin_preview_callback )
+               $args['admin-preview-callback'] = $admin_preview_callback;
+       return add_theme_support( 'custom-background', $args );
+}
+
+/**
+ * Remove custom background support.
+ *
+ * @since 3.1.0
+ * @see add_custom_background()
+ *
+ * @return bool Whether support was removed.
+ */
+function remove_custom_background() {
+       _deprecated_function( __FUNCTION__, '3.4', 'remove_theme_support( \'custom-background\' )' );
+       return remove_theme_support( 'custom-background' );
+}
+
+/**
+ * Retrieve theme data from parsed theme file.
+ *
+ * @since 1.5.0
+ * @deprecated 3.4.0
+ * @deprecated Use wp_get_theme()
+ * @see wp_get_theme()
+ *
+ * @param string $theme_file Theme file path.
+ * @return array Theme data.
+ */
+function get_theme_data( $theme_file ) {
+       _deprecated_function( __FUNCTION__, 3.4, 'wp_get_theme()' );
+       $theme = new WP_Theme( basename( dirname( $theme_file ) ), dirname( dirname( $theme_file ) ) );
+
+       $theme_data = array(
+               'Name' => $theme->get('Name'),
+               'URI' => $theme->display('ThemeURI', true, false),
+               'Description' => $theme->display('Description', true, false),
+               'Author' => $theme->display('Author', true, false),
+               'AuthorURI' => $theme->display('AuthorURI', true, false),
+               'Version' => $theme->get('Version'),
+               'Template' => $theme->get('Template'),
+               'Status' => $theme->get('Status'),
+               'Tags' => $theme->get('Tags'),
+               'Title' => $theme->get('Name'),
+               'AuthorName' => $theme->get('Author'),
+       );
+
+       foreach ( apply_filters( 'extra_theme_headers', array() ) as $extra_header ) {
+               if ( ! isset( $theme_data[ $extra_header ] ) )
+                       $theme_data[ $extra_header ] = $theme->get( $extra_header );
+       }
+
+       return $theme_data;
+}
+
+/**
+ * Alias of update_post_cache().
+ *
+ * @see update_post_cache() Posts and pages are the same, alias is intentional
+ *
+ * @since 1.5.1
+ * @deprecated 3.4.0
+ *
+ * @param array $pages list of page objects
+ */
+function update_page_cache( &$pages ) {
+       _deprecated_function( __FUNCTION__, 3.4, 'update_post_cache()' );
+
+       update_post_cache( $pages );
+}
+
+/**
+ * Will clean the page in the cache.
+ *
+ * Clean (read: delete) page from cache that matches $id. Will also clean cache
+ * associated with 'all_page_ids' and 'get_pages'.
+ *
+ * @since 2.0.0
+ * @deprecated 3.4.0
+ *
+ * @uses do_action() Will call the 'clean_page_cache' hook action.
+ *
+ * @param int $id Page ID to clean
+ */
+function clean_page_cache( $id ) {
+       _deprecated_function( __FUNCTION__, 3.4, 'clean_post_cache()' );
+
+       clean_post_cache( $id );
+}
index aca98bdb3718a6dbd0cd69f186b3eff84801920c..94e89f52c4781fb5de77b5c4c56ea71c44f94642 100644 (file)
@@ -10,7 +10,7 @@ echo '<?xml version="1.0" encoding="' . get_option('blog_charset') . '" ?' . '>'
 ?>
 <feed
        xmlns="http://www.w3.org/2005/Atom"
 ?>
 <feed
        xmlns="http://www.w3.org/2005/Atom"
-       xml:lang="<?php echo get_option('rss_language'); ?>"
+       xml:lang="<?php bloginfo_rss( 'language' ); ?>"
        xmlns:thr="http://purl.org/syndication/thread/1.0"
        <?php do_action('atom_ns'); do_action('atom_comments_ns'); ?>
 >
        xmlns:thr="http://purl.org/syndication/thread/1.0"
        <?php do_action('atom_ns'); do_action('atom_comments_ns'); ?>
 >
index db8d66b80051b706d50dd605462f86714ed99716..f8f08c87e7c31e38d6c1b87f775c40a814f68b60 100644 (file)
@@ -12,7 +12,7 @@ echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
 <feed
   xmlns="http://www.w3.org/2005/Atom"
   xmlns:thr="http://purl.org/syndication/thread/1.0"
 <feed
   xmlns="http://www.w3.org/2005/Atom"
   xmlns:thr="http://purl.org/syndication/thread/1.0"
-  xml:lang="<?php echo get_option('rss_language'); ?>"
+  xml:lang="<?php bloginfo_rss( 'language' ); ?>"
   xml:base="<?php bloginfo_rss('url') ?>/wp-atom.php"
   <?php do_action('atom_ns'); ?>
  >
   xml:base="<?php bloginfo_rss('url') ?>/wp-atom.php"
   <?php do_action('atom_ns'); ?>
  >
index b26897d3e62973b15aa0a74ea6936938e8ce9d7c..2e6c93384596bacb78cfa74b1672275b22fae544 100644 (file)
@@ -16,7 +16,7 @@ echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
        <description><?php bloginfo_rss('description') ?></description>
        <lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></lastBuildDate>
        <docs>http://backend.userland.com/rss092</docs>
        <description><?php bloginfo_rss('description') ?></description>
        <lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></lastBuildDate>
        <docs>http://backend.userland.com/rss092</docs>
-       <language><?php echo get_option('rss_language'); ?></language>
+       <language><?php bloginfo_rss( 'language' ); ?></language>
        <?php do_action('rss_head'); ?>
 
 <?php while (have_posts()) : the_post(); ?>
        <?php do_action('rss_head'); ?>
 
 <?php while (have_posts()) : the_post(); ?>
index 5bf67f2f7c450f3f4ebe4c957ab8c0cf4cb2af80..8fc51d55ac110ada3b534dda6a0bb6bef3d9506b 100644 (file)
@@ -26,7 +26,7 @@ echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
        <link><?php bloginfo_rss('url') ?></link>
        <description><?php bloginfo_rss("description") ?></description>
        <lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></lastBuildDate>
        <link><?php bloginfo_rss('url') ?></link>
        <description><?php bloginfo_rss("description") ?></description>
        <lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></lastBuildDate>
-       <language><?php echo get_option('rss_language'); ?></language>
+       <language><?php bloginfo_rss( 'language' ); ?></language>
        <sy:updatePeriod><?php echo apply_filters( 'rss_update_period', 'hourly' ); ?></sy:updatePeriod>
        <sy:updateFrequency><?php echo apply_filters( 'rss_update_frequency', '1' ); ?></sy:updateFrequency>
        <?php do_action('rss2_head'); ?>
        <sy:updatePeriod><?php echo apply_filters( 'rss_update_period', 'hourly' ); ?></sy:updatePeriod>
        <sy:updateFrequency><?php echo apply_filters( 'rss_update_frequency', '1' ); ?></sy:updateFrequency>
        <?php do_action('rss2_head'); ?>
index 34d8652b20d4a80f464d4c9dfd109054cfccfb8d..988f6b22c6505aa02761653112e7bbb1e69cb010 100644 (file)
@@ -424,7 +424,7 @@ function atom_enclosure() {
        foreach ( (array) get_post_custom() as $key => $val ) {
                if ($key == 'enclosure') {
                        foreach ( (array) $val as $enc ) {
        foreach ( (array) get_post_custom() as $key => $val ) {
                if ($key == 'enclosure') {
                        foreach ( (array) $val as $enc ) {
-                               $enclosure = split("\n", $enc);
+                               $enclosure = explode("\n", $enc);
                                echo apply_filters('atom_enclosure', '<link href="' . trim(htmlspecialchars($enclosure[0])) . '" rel="enclosure" length="' . trim($enclosure[1]) . '" type="' . trim($enclosure[2]) . '" />' . "\n");
                        }
                }
                                echo apply_filters('atom_enclosure', '<link href="' . trim(htmlspecialchars($enclosure[0])) . '" rel="enclosure" length="' . trim($enclosure[1]) . '" type="' . trim($enclosure[2]) . '" />' . "\n");
                        }
                }
@@ -489,8 +489,7 @@ function self_link() {
        $host = @parse_url(home_url());
        $host = $host['host'];
        echo esc_url(
        $host = @parse_url(home_url());
        $host = $host['host'];
        echo esc_url(
-               'http'
-               . ( (isset($_SERVER['https']) && $_SERVER['https'] == 'on') ? 's' : '' ) . '://'
+               ( is_ssl() ? 'https' : 'http' ) . '://'
                . $host
                . stripslashes($_SERVER['REQUEST_URI'])
                );
                . $host
                . stripslashes($_SERVER['REQUEST_URI'])
                );
index d43e848fe4d89a3b29eacf85f5c4138d4966b591..f69c9382b568d94328875e7405e8e64bfb67a3f9 100644 (file)
  */
 function wptexturize($text) {
        global $wp_cockneyreplace;
  */
 function wptexturize($text) {
        global $wp_cockneyreplace;
-       static $opening_quote, $closing_quote, $en_dash, $em_dash, $default_no_texturize_tags, $default_no_texturize_shortcodes, $static_characters, $static_replacements, $dynamic_characters, $dynamic_replacements;
+       static $static_characters, $static_replacements, $dynamic_characters, $dynamic_replacements,
+               $default_no_texturize_tags, $default_no_texturize_shortcodes;
 
        // No need to set up these static variables more than once
 
        // No need to set up these static variables more than once
-       if ( empty( $opening_quote ) ) {
-               /* translators: opening curly quote */
-               $opening_quote = _x('&#8220;', 'opening curly quote');
-               /* translators: closing curly quote */
-               $closing_quote = _x('&#8221;', 'closing curly quote');
+       if ( ! isset( $static_characters ) ) {
+               /* translators: opening curly double quote */
+               $opening_quote = _x( '&#8220;', 'opening curly double quote' );
+               /* translators: closing curly double quote */
+               $closing_quote = _x( '&#8221;', 'closing curly double quote' );
+
+               /* translators: apostrophe, for example in 'cause or can't */
+               $apos = _x( '&#8217;', 'apostrophe' );
+
+               /* translators: prime, for example in 9' (nine feet) */
+               $prime = _x( '&#8242;', 'prime' );
+               /* translators: double prime, for example in 9" (nine inches) */
+               $double_prime = _x( '&#8243;', 'double prime' );
+
+               /* translators: opening curly single quote */
+               $opening_single_quote = _x( '&#8216;', 'opening curly single quote' );
+               /* translators: closing curly single quote */
+               $closing_single_quote = _x( '&#8217;', 'closing curly single quote' );
+
                /* translators: en dash */
                /* translators: en dash */
-               $en_dash = _x('&#8211;', 'en dash');
+               $en_dash = _x( '&#8211;', 'en dash' );
                /* translators: em dash */
                /* translators: em dash */
-               $em_dash = _x('&#8212;', 'em dash');
+               $em_dash = _x( '&#8212;', 'em dash' );
 
                $default_no_texturize_tags = array('pre', 'code', 'kbd', 'style', 'script', 'tt');
                $default_no_texturize_shortcodes = array('code');
 
                $default_no_texturize_tags = array('pre', 'code', 'kbd', 'style', 'script', 'tt');
                $default_no_texturize_shortcodes = array('code');
@@ -48,16 +63,40 @@ function wptexturize($text) {
                if ( isset($wp_cockneyreplace) ) {
                        $cockney = array_keys($wp_cockneyreplace);
                        $cockneyreplace = array_values($wp_cockneyreplace);
                if ( isset($wp_cockneyreplace) ) {
                        $cockney = array_keys($wp_cockneyreplace);
                        $cockneyreplace = array_values($wp_cockneyreplace);
+               } elseif ( "'" != $apos ) { // Only bother if we're doing a replacement.
+                       $cockney = array( "'tain't", "'twere", "'twas", "'tis", "'twill", "'til", "'bout", "'nuff", "'round", "'cause" );
+                       $cockneyreplace = array( $apos . "tain" . $apos . "t", $apos . "twere", $apos . "twas", $apos . "tis", $apos . "twill", $apos . "til", $apos . "bout", $apos . "nuff", $apos . "round", $apos . "cause" );
                } else {
                } else {
-                       $cockney = array("'tain't","'twere","'twas","'tis","'twill","'til","'bout","'nuff","'round","'cause");
-                       $cockneyreplace = array("&#8217;tain&#8217;t","&#8217;twere","&#8217;twas","&#8217;tis","&#8217;twill","&#8217;til","&#8217;bout","&#8217;nuff","&#8217;round","&#8217;cause");
+                       $cockney = $cockneyreplace = array();
                }
 
                }
 
-               $static_characters = array_merge( array('---', ' -- ', '--', ' - ', 'xn&#8211;', '...', '``', '\'\'', ' (tm)'), $cockney );
-               $static_replacements = array_merge( array($em_dash, ' ' . $em_dash . ' ', $en_dash, ' ' . $en_dash . ' ', 'xn--', '&#8230;', $opening_quote, $closing_quote, ' &#8482;'), $cockneyreplace );
+               $static_characters = array_merge( array( '---', ' -- ', '--', ' - ', 'xn&#8211;', '...', '``', '\'\'', ' (tm)' ), $cockney );
+               $static_replacements = array_merge( array( $em_dash, ' ' . $em_dash . ' ', $en_dash, ' ' . $en_dash . ' ', 'xn--', '&#8230;', $opening_quote, $closing_quote, ' &#8482;' ), $cockneyreplace );
 
 
-               $dynamic_characters = array('/\'(\d\d(?:&#8217;|\')?s)/', '/\'(\d)/', '/(\s|\A|[([{<]|")\'/', '/(\d)"/', '/(\d)\'/', '/(\S)\'([^\'\s])/', '/(\s|\A|[([{<])"(?!\s)/', '/"(\s|\S|\Z)/', '/\'([\s.]|\Z)/', '/\b(\d+)x(\d+)\b/');
-               $dynamic_replacements = array('&#8217;$1','&#8217;$1', '$1&#8216;', '$1&#8243;', '$1&#8242;', '$1&#8217;$2', '$1' . $opening_quote . '$2', $closing_quote . '$1', '&#8217;$1', '$1&#215;$2');
+               $dynamic = array();
+               if ( "'" != $apos ) {
+                       $dynamic[ '/\'(\d\d(?:&#8217;|\')?s)/' ] = $apos . '$1'; // '99's
+                       $dynamic[ '/\'(\d)/'                   ] = $apos . '$1'; // '99
+               }
+               if ( "'" != $opening_single_quote )
+                       $dynamic[ '/(\s|\A|[([{<]|")\'/'       ] = '$1' . $opening_single_quote; // opening single quote, even after (, {, <, [
+               if ( '"' != $double_prime )
+                       $dynamic[ '/(\d)"/'                    ] = '$1' . $double_prime; // 9" (double prime)
+               if ( "'" != $prime )
+                       $dynamic[ '/(\d)\'/'                   ] = '$1' . $prime; // 9' (prime)
+               if ( "'" != $apos )
+                       $dynamic[ '/(\S)\'([^\'\s])/'          ] = '$1' . $apos . '$2'; // apostrophe in a word
+               if ( '"' != $opening_quote )
+                       $dynamic[ '/(\s|\A|[([{<])"(?!\s)/'    ] = '$1' . $opening_quote . '$2'; // opening double quote, even after (, {, <, [
+               if ( '"' != $closing_quote )
+                       $dynamic[ '/"(\s|\S|\Z)/'              ] = $closing_quote . '$1'; // closing double quote
+               if ( "'" != $closing_single_quote )
+                       $dynamic[ '/\'([\s.]|\Z)/'             ] = $closing_single_quote . '$1'; // closing single quote
+
+               $dynamic[ '/\b(\d+)x(\d+)\b/'              ] = '$1&#215;$2'; // 9x9 (times)
+
+               $dynamic_characters = array_keys( $dynamic );
+               $dynamic_replacements = array_values( $dynamic );
        }
 
        // Transform into regexp sub-expression used in _wptexturize_pushpop_element
        }
 
        // Transform into regexp sub-expression used in _wptexturize_pushpop_element
@@ -133,30 +172,6 @@ function _wptexturize_pushpop_element($text, &$stack, $disabled_elements, $openi
        }
 }
 
        }
 }
 
-/**
- * Accepts matches array from preg_replace_callback in wpautop() or a string.
- *
- * Ensures that the contents of a <<pre>>...<</pre>> HTML block are not
- * converted into paragraphs or line-breaks.
- *
- * @since 1.2.0
- *
- * @param array|string $matches The array or string
- * @return string The pre block without paragraph/line-break conversion.
- */
-function clean_pre($matches) {
-       if ( is_array($matches) )
-               $text = $matches[1] . $matches[2] . "</pre>";
-       else
-               $text = $matches;
-
-       $text = str_replace('<br />', '', $text);
-       $text = str_replace('<p>', "\n", $text);
-       $text = str_replace('</p>', '', $text);
-
-       return $text;
-}
-
 /**
  * Replaces double line-breaks with paragraph elements.
  *
 /**
  * Replaces double line-breaks with paragraph elements.
  *
@@ -168,17 +183,45 @@ function clean_pre($matches) {
  * @since 0.71
  *
  * @param string $pee The text which has to be formatted.
  * @since 0.71
  *
  * @param string $pee The text which has to be formatted.
- * @param int|bool $br Optional. If set, this will convert all remaining line-breaks after paragraphing. Default true.
+ * @param bool $br Optional. If set, this will convert all remaining line-breaks after paragraphing. Default true.
  * @return string Text which has been converted into correct paragraph tags.
  */
  * @return string Text which has been converted into correct paragraph tags.
  */
-function wpautop($pee, $br = 1) {
+function wpautop($pee, $br = true) {
+       $pre_tags = array();
 
        if ( trim($pee) === '' )
                return '';
 
        if ( trim($pee) === '' )
                return '';
+
        $pee = $pee . "\n"; // just to make things a little easier, pad the end
        $pee = $pee . "\n"; // just to make things a little easier, pad the end
+
+       if ( strpos($pee, '<pre') !== false ) {
+               $pee_parts = explode( '</pre>', $pee );
+               $last_pee = array_pop($pee_parts);
+               $pee = '';
+               $i = 0;
+
+               foreach ( $pee_parts as $pee_part ) {
+                       $start = strpos($pee_part, '<pre');
+
+                       // Malformed html?
+                       if ( $start === false ) {
+                               $pee .= $pee_part;
+                               continue;
+                       }
+
+                       $name = "<pre wp-pre-tag-$i></pre>";
+                       $pre_tags[$name] = substr( $pee_part, $start ) . '</pre>';
+
+                       $pee .= substr( $pee_part, 0, $start ) . $name;
+                       $i++;
+               }
+
+               $pee .= $last_pee;
+       }
+
        $pee = preg_replace('|<br />\s*<br />|', "\n\n", $pee);
        // Space things out a little
        $pee = preg_replace('|<br />\s*<br />|', "\n\n", $pee);
        // Space things out a little
-       $allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|option|form|map|area|blockquote|address|math|style|input|p|h[1-6]|hr|fieldset|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary)';
+       $allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|option|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary)';
        $pee = preg_replace('!(<' . $allblocks . '[^>]*>)!', "\n$1", $pee);
        $pee = preg_replace('!(</' . $allblocks . '>)!', "$1\n\n", $pee);
        $pee = str_replace(array("\r\n", "\r"), "\n", $pee); // cross-platform newlines
        $pee = preg_replace('!(<' . $allblocks . '[^>]*>)!', "\n$1", $pee);
        $pee = preg_replace('!(</' . $allblocks . '>)!', "$1\n\n", $pee);
        $pee = str_replace(array("\r\n", "\r"), "\n", $pee); // cross-platform newlines
@@ -200,17 +243,18 @@ function wpautop($pee, $br = 1) {
        $pee = str_replace('</blockquote></p>', '</p></blockquote>', $pee);
        $pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)!', "$1", $pee);
        $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee);
        $pee = str_replace('</blockquote></p>', '</p></blockquote>', $pee);
        $pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)!', "$1", $pee);
        $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee);
-       if ($br) {
+       if ( $br ) {
                $pee = preg_replace_callback('/<(script|style).*?<\/\\1>/s', '_autop_newline_preservation_helper', $pee);
                $pee = preg_replace('|(?<!<br />)\s*\n|', "<br />\n", $pee); // optionally make line breaks
                $pee = str_replace('<WPPreserveNewline />', "\n", $pee);
        }
        $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*<br />!', "$1", $pee);
        $pee = preg_replace('!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)!', '$1', $pee);
                $pee = preg_replace_callback('/<(script|style).*?<\/\\1>/s', '_autop_newline_preservation_helper', $pee);
                $pee = preg_replace('|(?<!<br />)\s*\n|', "<br />\n", $pee); // optionally make line breaks
                $pee = str_replace('<WPPreserveNewline />', "\n", $pee);
        }
        $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*<br />!', "$1", $pee);
        $pee = preg_replace('!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)!', '$1', $pee);
-       if (strpos($pee, '<pre') !== false)
-               $pee = preg_replace_callback('!(<pre[^>]*>)(.*?)</pre>!is', 'clean_pre', $pee );
        $pee = preg_replace( "|\n</p>$|", '</p>', $pee );
 
        $pee = preg_replace( "|\n</p>$|", '</p>', $pee );
 
+       if ( !empty($pre_tags) )
+               $pee = str_replace(array_keys($pre_tags), array_values($pre_tags), $pee);
+
        return $pee;
 }
 
        return $pee;
 }
 
@@ -671,7 +715,62 @@ function remove_accents($string) {
                // Euro Sign
                chr(226).chr(130).chr(172) => 'E',
                // GBP (Pound) Sign
                // Euro Sign
                chr(226).chr(130).chr(172) => 'E',
                // GBP (Pound) Sign
-               chr(194).chr(163) => '');
+               chr(194).chr(163) => '',
+               // Vowels with diacritic (Vietnamese)
+               // unmarked
+               chr(198).chr(160) => 'O', chr(198).chr(161) => 'o',
+               chr(198).chr(175) => 'U', chr(198).chr(176) => 'u',
+               // grave accent
+               chr(225).chr(186).chr(166) => 'A', chr(225).chr(186).chr(167) => 'a',
+               chr(225).chr(186).chr(176) => 'A', chr(225).chr(186).chr(177) => 'a',
+               chr(225).chr(187).chr(128) => 'E', chr(225).chr(187).chr(129) => 'e',
+               chr(225).chr(187).chr(146) => 'O', chr(225).chr(187).chr(147) => 'o',
+               chr(225).chr(187).chr(156) => 'O', chr(225).chr(187).chr(157) => 'o',
+               chr(225).chr(187).chr(170) => 'U', chr(225).chr(187).chr(171) => 'u',
+               chr(225).chr(187).chr(178) => 'Y', chr(225).chr(187).chr(179) => 'y',
+               // hook
+               chr(225).chr(186).chr(162) => 'A', chr(225).chr(186).chr(163) => 'a',
+               chr(225).chr(186).chr(168) => 'A', chr(225).chr(186).chr(169) => 'a',
+               chr(225).chr(186).chr(178) => 'A', chr(225).chr(186).chr(179) => 'a',
+               chr(225).chr(186).chr(186) => 'E', chr(225).chr(186).chr(187) => 'e',
+               chr(225).chr(187).chr(130) => 'E', chr(225).chr(187).chr(131) => 'e',
+               chr(225).chr(187).chr(136) => 'I', chr(225).chr(187).chr(137) => 'i',
+               chr(225).chr(187).chr(142) => 'O', chr(225).chr(187).chr(143) => 'o',
+               chr(225).chr(187).chr(148) => 'O', chr(225).chr(187).chr(149) => 'o',
+               chr(225).chr(187).chr(158) => 'O', chr(225).chr(187).chr(159) => 'o',
+               chr(225).chr(187).chr(166) => 'U', chr(225).chr(187).chr(167) => 'u',
+               chr(225).chr(187).chr(172) => 'U', chr(225).chr(187).chr(173) => 'u',
+               chr(225).chr(187).chr(182) => 'Y', chr(225).chr(187).chr(183) => 'y',
+               // tilde
+               chr(225).chr(186).chr(170) => 'A', chr(225).chr(186).chr(171) => 'a',
+               chr(225).chr(186).chr(180) => 'A', chr(225).chr(186).chr(181) => 'a',
+               chr(225).chr(186).chr(188) => 'E', chr(225).chr(186).chr(189) => 'e',
+               chr(225).chr(187).chr(132) => 'E', chr(225).chr(187).chr(133) => 'e',
+               chr(225).chr(187).chr(150) => 'O', chr(225).chr(187).chr(151) => 'o',
+               chr(225).chr(187).chr(160) => 'O', chr(225).chr(187).chr(161) => 'o',
+               chr(225).chr(187).chr(174) => 'U', chr(225).chr(187).chr(175) => 'u',
+               chr(225).chr(187).chr(184) => 'Y', chr(225).chr(187).chr(185) => 'y',
+               // acute accent
+               chr(225).chr(186).chr(164) => 'A', chr(225).chr(186).chr(165) => 'a',
+               chr(225).chr(186).chr(174) => 'A', chr(225).chr(186).chr(175) => 'a',
+               chr(225).chr(186).chr(190) => 'E', chr(225).chr(186).chr(191) => 'e',
+               chr(225).chr(187).chr(144) => 'O', chr(225).chr(187).chr(145) => 'o',
+               chr(225).chr(187).chr(154) => 'O', chr(225).chr(187).chr(155) => 'o',
+               chr(225).chr(187).chr(168) => 'U', chr(225).chr(187).chr(169) => 'u',
+               // dot below
+               chr(225).chr(186).chr(160) => 'A', chr(225).chr(186).chr(161) => 'a',
+               chr(225).chr(186).chr(172) => 'A', chr(225).chr(186).chr(173) => 'a',
+               chr(225).chr(186).chr(182) => 'A', chr(225).chr(186).chr(183) => 'a',
+               chr(225).chr(186).chr(184) => 'E', chr(225).chr(186).chr(185) => 'e',
+               chr(225).chr(187).chr(134) => 'E', chr(225).chr(187).chr(135) => 'e',
+               chr(225).chr(187).chr(138) => 'I', chr(225).chr(187).chr(139) => 'i',
+               chr(225).chr(187).chr(140) => 'O', chr(225).chr(187).chr(141) => 'o',
+               chr(225).chr(187).chr(152) => 'O', chr(225).chr(187).chr(153) => 'o',
+               chr(225).chr(187).chr(162) => 'O', chr(225).chr(187).chr(163) => 'o',
+               chr(225).chr(187).chr(164) => 'U', chr(225).chr(187).chr(165) => 'u',
+               chr(225).chr(187).chr(176) => 'U', chr(225).chr(187).chr(177) => 'u',
+               chr(225).chr(187).chr(180) => 'Y', chr(225).chr(187).chr(181) => 'y',
+               );
 
                $string = strtr($string, $chars);
        } else {
 
                $string = strtr($string, $chars);
        } else {
@@ -732,7 +831,7 @@ function sanitize_file_name( $filename ) {
        $extension = array_pop($parts);
        $mimes = get_allowed_mime_types();
 
        $extension = array_pop($parts);
        $mimes = get_allowed_mime_types();
 
-       // Loop over any intermediate extensions.  Munge them with a trailing underscore if they are a 2 - 5 character
+       // Loop over any intermediate extensions. Munge them with a trailing underscore if they are a 2 - 5 character
        // long alpha string not in the extension whitelist.
        foreach ( (array) $parts as $part) {
                $filename .= '.' . $part;
        // long alpha string not in the extension whitelist.
        foreach ( (array) $parts as $part) {
                $filename .= '.' . $part;
@@ -873,16 +972,24 @@ function sanitize_title_with_dashes($title, $raw_title = '', $context = 'display
        $title = str_replace('.', '-', $title);
 
        if ( 'save' == $context ) {
        $title = str_replace('.', '-', $title);
 
        if ( 'save' == $context ) {
-               // nbsp, ndash and mdash
+               // Convert nbsp, ndash and mdash to hyphens
                $title = str_replace( array( '%c2%a0', '%e2%80%93', '%e2%80%94' ), '-', $title );
                $title = str_replace( array( '%c2%a0', '%e2%80%93', '%e2%80%94' ), '-', $title );
-               // iexcl and iquest
-               $title = str_replace( array( '%c2%a1', '%c2%bf' ), '', $title );
-               // angle quotes
-               $title = str_replace( array( '%c2%ab', '%c2%bb', '%e2%80%b9', '%e2%80%ba' ), '', $title );
-               // curly quotes
-               $title = str_replace( array( '%e2%80%98', '%e2%80%99', '%e2%80%9c', '%e2%80%9d' ), '', $title );
-               // copy, reg, deg, hellip and trade
-               $title = str_replace( array( '%c2%a9', '%c2%ae', '%c2%b0', '%e2%80%a6', '%e2%84%a2' ), '', $title );
+
+               // Strip these characters entirely
+               $title = str_replace( array(
+                       // iexcl and iquest
+                       '%c2%a1', '%c2%bf',
+                       // angle quotes
+                       '%c2%ab', '%c2%bb', '%e2%80%b9', '%e2%80%ba',
+                       // curly quotes
+                       '%e2%80%98', '%e2%80%99', '%e2%80%9c', '%e2%80%9d',
+                       '%e2%80%9a', '%e2%80%9b', '%e2%80%9e', '%e2%80%9f',
+                       // copy, reg, deg, hellip and trade
+                       '%c2%a9', '%c2%ae', '%c2%b0', '%e2%80%a6', '%e2%84%a2',
+               ), '', $title );
+
+               // Convert times to x
+               $title = str_replace( '%c3%97', 'x', $title );
        }
 
        $title = preg_replace('/[^%a-z0-9 _-]/', '', $title);
        }
 
        $title = preg_replace('/[^%a-z0-9 _-]/', '', $title);
@@ -972,7 +1079,7 @@ function convert_chars($content, $deprecated = '') {
        '&#139;' => '&#8249;',
        '&#140;' => '&#338;',
        '&#141;' => '',
        '&#139;' => '&#8249;',
        '&#140;' => '&#338;',
        '&#141;' => '',
-       '&#142;' => '&#382;',
+       '&#142;' => '&#381;',
        '&#143;' => '',
        '&#144;' => '',
        '&#145;' => '&#8216;',
        '&#143;' => '',
        '&#144;' => '',
        '&#145;' => '&#8216;',
@@ -988,7 +1095,7 @@ function convert_chars($content, $deprecated = '') {
        '&#155;' => '&#8250;',
        '&#156;' => '&#339;',
        '&#157;' => '',
        '&#155;' => '&#8250;',
        '&#156;' => '&#339;',
        '&#157;' => '',
-       '&#158;' => '',
+       '&#158;' => '&#382;',
        '&#159;' => '&#376;'
        );
 
        '&#159;' => '&#376;'
        );
 
@@ -1012,14 +1119,12 @@ function convert_chars($content, $deprecated = '') {
 /**
  * Will only balance the tags if forced to and the option is set to balance tags.
  *
 /**
  * Will only balance the tags if forced to and the option is set to balance tags.
  *
- * The option 'use_balanceTags' is used for whether the tags will be balanced.
- * Both the $force parameter and 'use_balanceTags' option will have to be true
- * before the tags will be balanced.
+ * The option 'use_balanceTags' is used to determine whether the tags will be balanced.
  *
  * @since 0.71
  *
  * @param string $text Text to be balanced
  *
  * @since 0.71
  *
  * @param string $text Text to be balanced
- * @param bool $force Forces balancing, ignoring the value of the option. Default false.
+ * @param bool $force If true, forces balancing, ignoring the value of the option. Default false.
  * @return string Balanced text
  */
 function balanceTags( $text, $force = false ) {
  * @return string Balanced text
  */
 function balanceTags( $text, $force = false ) {
@@ -1151,14 +1256,14 @@ function force_balance_tags( $text ) {
 /**
  * Acts on text which is about to be edited.
  *
 /**
  * Acts on text which is about to be edited.
  *
- * Unless $richedit is set, it is simply a holder for the 'format_to_edit'
- * filter. If $richedit is set true htmlspecialchars(), through esc_textarea(),
- * will be run on the content, converting special characters to HTML entities.
+ * The $content is run through esc_textarea(), which uses htmlspecialchars()
+ * to convert special characters to HTML entities. If $richedit is set to true,
+ * it is simply a holder for the 'format_to_edit' filter.
  *
  * @since 0.71
  *
  * @param string $content The text about to be edited.
  *
  * @since 0.71
  *
  * @param string $content The text about to be edited.
- * @param bool $richedit Whether the $content should pass through htmlspecialchars(). Default false.
+ * @param bool $richedit Whether the $content should not pass through htmlspecialchars(). Default false (meaning it will be passed).
  * @return string The text after the filter (and possibly htmlspecialchars()) has been run.
  */
 function format_to_edit( $content, $richedit = false ) {
  * @return string The text after the filter (and possibly htmlspecialchars()) has been run.
  */
 function format_to_edit( $content, $richedit = false ) {
@@ -1297,8 +1402,6 @@ function stripslashes_deep($value) {
 /**
  * Navigates through an array and encodes the values to be used in a URL.
  *
 /**
  * Navigates through an array and encodes the values to be used in a URL.
  *
- * Uses a callback to pass the value of the array back to the function as a
- * string.
  *
  * @since 2.2.0
  *
  *
  * @since 2.2.0
  *
@@ -1310,6 +1413,18 @@ function urlencode_deep($value) {
        return $value;
 }
 
        return $value;
 }
 
+/**
+ * Navigates through an array and raw encodes the values to be used in a URL.
+ *
+ * @since 3.4.0
+ *
+ * @param array|string $value The array or string to be encoded.
+ * @return array|string $value The encoded array (or string from the callback).
+ */
+function rawurlencode_deep( $value ) {
+       return is_array( $value ) ? array_map( 'rawurlencode_deep', $value ) : rawurlencode( $value );
+}
+
 /**
  * Converts email addresses characters to HTML entities to block spam bots.
  *
 /**
  * Converts email addresses characters to HTML entities to block spam bots.
  *
@@ -2012,6 +2127,10 @@ function wp_trim_excerpt($text = '') {
 /**
  * Trims text to a certain number of words.
  *
 /**
  * Trims text to a certain number of words.
  *
+ * This function is localized. For languages that count 'words' by the individual
+ * character (such as East Asian languages), the $num_words argument will apply
+ * to the number of individual characters.
+ *
  * @since 3.3.0
  *
  * @param string $text Text to trim.
  * @since 3.3.0
  *
  * @param string $text Text to trim.
@@ -2024,13 +2143,23 @@ function wp_trim_words( $text, $num_words = 55, $more = null ) {
                $more = __( '&hellip;' );
        $original_text = $text;
        $text = wp_strip_all_tags( $text );
                $more = __( '&hellip;' );
        $original_text = $text;
        $text = wp_strip_all_tags( $text );
-       $words_array = preg_split( "/[\n\r\t ]+/", $text, $num_words + 1, PREG_SPLIT_NO_EMPTY );
+       /* translators: If your word count is based on single characters (East Asian characters),
+          enter 'characters'. Otherwise, enter 'words'. Do not translate into your own language. */
+       if ( 'characters' == _x( 'words', 'word count: words or characters?' ) && preg_match( '/^utf\-?8$/i', get_option( 'blog_charset' ) ) ) {
+               $text = trim( preg_replace( "/[\n\r\t ]+/", ' ', $text ), ' ' );
+               preg_match_all( '/./u', $text, $words_array );
+               $words_array = array_slice( $words_array[0], 0, $num_words + 1 );
+               $sep = '';
+       } else {
+               $words_array = preg_split( "/[\n\r\t ]+/", $text, $num_words + 1, PREG_SPLIT_NO_EMPTY );
+               $sep = ' ';
+       }
        if ( count( $words_array ) > $num_words ) {
                array_pop( $words_array );
        if ( count( $words_array ) > $num_words ) {
                array_pop( $words_array );
-               $text = implode( ' ', $words_array );
+               $text = implode( $sep, $words_array );
                $text = $text . $more;
        } else {
                $text = $text . $more;
        } else {
-               $text = implode( ' ', $words_array );
+               $text = implode( $sep, $words_array );
        }
        return apply_filters( 'wp_trim_words', $text, $num_words, $more, $original_text );
 }
        }
        return apply_filters( 'wp_trim_words', $text, $num_words, $more, $original_text );
 }
@@ -2593,21 +2722,13 @@ function wp_make_link_relative( $link ) {
 function sanitize_option($option, $value) {
 
        switch ( $option ) {
 function sanitize_option($option, $value) {
 
        switch ( $option ) {
-               case 'admin_email':
-                       $value = sanitize_email($value);
-                       if ( !is_email($value) ) {
+               case 'admin_email' :
+               case 'new_admin_email' :
+                       $value = sanitize_email( $value );
+                       if ( ! is_email( $value ) ) {
                                $value = get_option( $option ); // Resets option to stored value in the case of failed sanitization
                                $value = get_option( $option ); // Resets option to stored value in the case of failed sanitization
-                               if ( function_exists('add_settings_error') )
-                                       add_settings_error('admin_email', 'invalid_admin_email', __('The email address entered did not appear to be a valid email address. Please enter a valid email address.'));
-                       }
-                       break;
-
-               case 'new_admin_email':
-                       $value = sanitize_email($value);
-                       if ( !is_email($value) ) {
-                               $value = get_option( $option ); // Resets option to stored value in the case of failed sanitization
-                               if ( function_exists('add_settings_error') )
-                                       add_settings_error('new_admin_email', 'invalid_admin_email', __('The email address entered did not appear to be a valid email address. Please enter a valid email address.'));
+                               if ( function_exists( 'add_settings_error' ) )
+                                       add_settings_error( $option, 'invalid_admin_email', __( 'The email address entered did not appear to be a valid email address. Please enter a valid email address.' ) );
                        }
                        break;
 
                        }
                        break;
 
@@ -2947,9 +3068,9 @@ function _links_add_base($m) {
        global $_links_add_base;
        //1 = attribute name  2 = quotation mark  3 = URL
        return $m[1] . '=' . $m[2] .
        global $_links_add_base;
        //1 = attribute name  2 = quotation mark  3 = URL
        return $m[1] . '=' . $m[2] .
-               (strpos($m[3], 'http://') === false ?
-                       path_join($_links_add_base, $m[3]) :
-                       $m[3])
+               ( preg_match( '#^(\w{1,20}):#', $m[3], $protocol ) && in_array( $protocol[1], wp_allowed_protocols() ) ?
+                       $m[3] :
+                       path_join( $_links_add_base, $m[3] ) )
                . $m[2];
 }
 
                . $m[2];
 }
 
@@ -3015,7 +3136,7 @@ function wp_strip_all_tags($string, $remove_breaks = false) {
        if ( $remove_breaks )
                $string = preg_replace('/[\r\n\t ]+/', ' ', $string);
 
        if ( $remove_breaks )
                $string = preg_replace('/[\r\n\t ]+/', ' ', $string);
 
-       return trim($string);
+       return trim( $string );
 }
 
 /**
 }
 
 /**
@@ -3106,4 +3227,21 @@ function sanitize_mime_type( $mime_type ) {
        return apply_filters( 'sanitize_mime_type', $sani_mime_type, $mime_type );
 }
 
        return apply_filters( 'sanitize_mime_type', $sani_mime_type, $mime_type );
 }
 
-?>
+/**
+ * Sanitize space or carriage return separated URLs that are used to send trackbacks.
+ *
+ * @since 3.4.0
+ *
+ * @param string $to_ping Space or carriage return separated URLs
+ * @return string URLs starting with the http or https protocol, separated by a carriage return.
+ */
+function sanitize_trackback_urls( $to_ping ) {
+       $urls_to_ping = preg_split( '/\r\n\t /', trim( $to_ping ), -1, PREG_SPLIT_NO_EMPTY );
+       foreach ( $urls_to_ping as $k => $url ) {
+               if ( !preg_match( '#^https?://.#i', $url ) )
+                       unset( $urls_to_ping[$k] );
+       }
+       $urls_to_ping = array_map( 'esc_url_raw', $urls_to_ping );
+       $urls_to_ping = implode( "\n", $urls_to_ping );
+       return apply_filters( 'sanitize_trackback_urls', $urls_to_ping, $to_ping );
+}
index 521b0dd01c0137dcd36128914c2591a56fe41155..24e1a29c8314ecf750a2efbe8cbc1d11a34b4d2a 100644 (file)
@@ -5,40 +5,40 @@
  * @package WordPress
  */
 
  * @package WordPress
  */
 
+require( ABSPATH . WPINC . '/option.php' );
+
 /**
 /**
- * Converts MySQL DATETIME field to user specified date format.
+ * Converts given date string into a different format.
  *
  *
- * If $dateformatstring has 'G' value, then gmmktime() function will be used to
- * make the time. If $dateformatstring is set to 'U', then mktime() function
- * will be used to make the time.
+ * $format should be either a PHP date format string, e.g. 'U' for a Unix
+ * timestamp, or 'G' for a Unix timestamp assuming that $date is GMT.
  *
  *
- * The $translate will only be used, if it is set to true and it is by default
- * and if the $wp_locale object has the month and weekday set.
+ * If $translate is true then the given date and format string will
+ * be passed to date_i18n() for translation.
  *
  * @since 0.71
  *
  *
  * @since 0.71
  *
- * @param string $dateformatstring Either 'G', 'U', or php date format.
- * @param string $mysqlstring Time from mysql DATETIME field.
- * @param bool $translate Optional. Default is true. Will switch format to locale.
- * @return string Date formatted by $dateformatstring or locale (if available).
+ * @param string $format Format of the date to return.
+ * @param string $date Date string to convert.
+ * @param bool $translate Whether the return date should be translated. Default is true.
+ * @return string|int Formatted date string, or Unix timestamp.
  */
  */
-function mysql2date( $dateformatstring, $mysqlstring, $translate = true ) {
-       $m = $mysqlstring;
-       if ( empty( $m ) )
+function mysql2date( $format, $date, $translate = true ) {
+       if ( empty( $date ) )
                return false;
 
                return false;
 
-       if ( 'G' == $dateformatstring )
-               return strtotime( $m . ' +0000' );
+       if ( 'G' == $format )
+               return strtotime( $date . ' +0000' );
 
 
-       $i = strtotime( $m );
+       $i = strtotime( $date );
 
 
-       if ( 'U' == $dateformatstring )
+       if ( 'U' == $format )
                return $i;
 
        if ( $translate )
                return $i;
 
        if ( $translate )
-               return date_i18n( $dateformatstring, $i );
+               return date_i18n( $format, $i );
        else
        else
-               return date( $dateformatstring, $i );
+               return date( $format, $i );
 }
 
 /**
 }
 
 /**
@@ -279,750 +279,28 @@ function is_serialized( $data ) {
  * Check whether serialized data is of string type.
  *
  * @since 2.0.5
  * Check whether serialized data is of string type.
  *
  * @since 2.0.5
- *
- * @param mixed $data Serialized data
- * @return bool False if not a serialized string, true if it is.
- */
-function is_serialized_string( $data ) {
-       // if it isn't a string, it isn't a serialized string
-       if ( !is_string( $data ) )
-               return false;
-       $data = trim( $data );
-       $length = strlen( $data );
-       if ( $length < 4 )
-               return false;
-       elseif ( ':' !== $data[1] )
-               return false;
-       elseif ( ';' !== $data[$length-1] )
-               return false;
-       elseif ( $data[0] !== 's' )
-               return false;
-       elseif ( '"' !== $data[$length-2] )
-               return false;
-       else
-               return true;
-}
-
-/**
- * Retrieve option value based on name of option.
- *
- * If the option does not exist or does not have a value, then the return value
- * will be false. This is useful to check whether you need to install an option
- * and is commonly used during installation of plugin options and to test
- * whether upgrading is required.
- *
- * If the option was serialized then it will be unserialized when it is returned.
- *
- * @since 1.5.0
- * @package WordPress
- * @subpackage Option
- * @uses apply_filters() Calls 'pre_option_$option' before checking the option.
- *     Any value other than false will "short-circuit" the retrieval of the option
- *     and return the returned value. You should not try to override special options,
- *     but you will not be prevented from doing so.
- * @uses apply_filters() Calls 'option_$option', after checking the option, with
- *     the option value.
- *
- * @param string $option Name of option to retrieve. Expected to not be SQL-escaped.
- * @param mixed $default Optional. Default value to return if the option does not exist.
- * @return mixed Value set for the option.
- */
-function get_option( $option, $default = false ) {
-       global $wpdb;
-
-       // Allow plugins to short-circuit options.
-       $pre = apply_filters( 'pre_option_' . $option, false );
-       if ( false !== $pre )
-               return $pre;
-
-       $option = trim($option);
-       if ( empty($option) )
-               return false;
-
-       if ( defined( 'WP_SETUP_CONFIG' ) )
-               return false;
-
-       if ( ! defined( 'WP_INSTALLING' ) ) {
-               // prevent non-existent options from triggering multiple queries
-               $notoptions = wp_cache_get( 'notoptions', 'options' );
-               if ( isset( $notoptions[$option] ) )
-                       return $default;
-
-               $alloptions = wp_load_alloptions();
-
-               if ( isset( $alloptions[$option] ) ) {
-                       $value = $alloptions[$option];
-               } else {
-                       $value = wp_cache_get( $option, 'options' );
-
-                       if ( false === $value ) {
-                               $row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", $option ) );
-
-                               // Has to be get_row instead of get_var because of funkiness with 0, false, null values
-                               if ( is_object( $row ) ) {
-                                       $value = $row->option_value;
-                                       wp_cache_add( $option, $value, 'options' );
-                               } else { // option does not exist, so we must cache its non-existence
-                                       $notoptions[$option] = true;
-                                       wp_cache_set( 'notoptions', $notoptions, 'options' );
-                                       return $default;
-                               }
-                       }
-               }
-       } else {
-               $suppress = $wpdb->suppress_errors();
-               $row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", $option ) );
-               $wpdb->suppress_errors( $suppress );
-               if ( is_object( $row ) )
-                       $value = $row->option_value;
-               else
-                       return $default;
-       }
-
-       // If home is not set use siteurl.
-       if ( 'home' == $option && '' == $value )
-               return get_option( 'siteurl' );
-
-       if ( in_array( $option, array('siteurl', 'home', 'category_base', 'tag_base') ) )
-               $value = untrailingslashit( $value );
-
-       return apply_filters( 'option_' . $option, maybe_unserialize( $value ) );
-}
-
-/**
- * Protect WordPress special option from being modified.
- *
- * Will die if $option is in protected list. Protected options are 'alloptions'
- * and 'notoptions' options.
- *
- * @since 2.2.0
- * @package WordPress
- * @subpackage Option
- *
- * @param string $option Option name.
- */
-function wp_protect_special_option( $option ) {
-       $protected = array( 'alloptions', 'notoptions' );
-       if ( in_array( $option, $protected ) )
-               wp_die( sprintf( __( '%s is a protected WP option and may not be modified' ), esc_html( $option ) ) );
-}
-
-/**
- * Print option value after sanitizing for forms.
- *
- * @uses attr Sanitizes value.
- * @since 1.5.0
- * @package WordPress
- * @subpackage Option
- *
- * @param string $option Option name.
- */
-function form_option( $option ) {
-       echo esc_attr( get_option( $option ) );
-}
-
-/**
- * Loads and caches all autoloaded options, if available or all options.
- *
- * @since 2.2.0
- * @package WordPress
- * @subpackage Option
- *
- * @return array List of all options.
- */
-function wp_load_alloptions() {
-       global $wpdb;
-
-       if ( !defined( 'WP_INSTALLING' ) || !is_multisite() )
-               $alloptions = wp_cache_get( 'alloptions', 'options' );
-       else
-               $alloptions = false;
-
-       if ( !$alloptions ) {
-               $suppress = $wpdb->suppress_errors();
-               if ( !$alloptions_db = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options WHERE autoload = 'yes'" ) )
-                       $alloptions_db = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options" );
-               $wpdb->suppress_errors($suppress);
-               $alloptions = array();
-               foreach ( (array) $alloptions_db as $o ) {
-                       $alloptions[$o->option_name] = $o->option_value;
-               }
-               if ( !defined( 'WP_INSTALLING' ) || !is_multisite() )
-                       wp_cache_add( 'alloptions', $alloptions, 'options' );
-       }
-
-       return $alloptions;
-}
-
-/**
- * Loads and caches certain often requested site options if is_multisite() and a persistent cache is not being used.
- *
- * @since 3.0.0
- * @package WordPress
- * @subpackage Option
- *
- * @param int $site_id Optional site ID for which to query the options. Defaults to the current site.
- */
-function wp_load_core_site_options( $site_id = null ) {
-       global $wpdb, $_wp_using_ext_object_cache;
-
-       if ( !is_multisite() || $_wp_using_ext_object_cache || defined( 'WP_INSTALLING' ) )
-               return;
-
-       if ( empty($site_id) )
-               $site_id = $wpdb->siteid;
-
-       $core_options = array('site_name', 'siteurl', 'active_sitewide_plugins', '_site_transient_timeout_theme_roots', '_site_transient_theme_roots', 'site_admins', 'can_compress_scripts', 'global_terms_enabled' );
-
-       $core_options_in = "'" . implode("', '", $core_options) . "'";
-       $options = $wpdb->get_results( $wpdb->prepare("SELECT meta_key, meta_value FROM $wpdb->sitemeta WHERE meta_key IN ($core_options_in) AND site_id = %d", $site_id) );
-
-       foreach ( $options as $option ) {
-               $key = $option->meta_key;
-               $cache_key = "{$site_id}:$key";
-               $option->meta_value = maybe_unserialize( $option->meta_value );
-
-               wp_cache_set( $cache_key, $option->meta_value, 'site-options' );
-       }
-}
-
-/**
- * Update the value of an option that was already added.
- *
- * You do not need to serialize values. If the value needs to be serialized, then
- * it will be serialized before it is inserted into the database. Remember,
- * resources can not be serialized or added as an option.
- *
- * If the option does not exist, then the option will be added with the option
- * value, but you will not be able to set whether it is autoloaded. If you want
- * to set whether an option is autoloaded, then you need to use the add_option().
- *
- * @since 1.0.0
- * @package WordPress
- * @subpackage Option
- *
- * @uses apply_filters() Calls 'pre_update_option_$option' hook to allow overwriting the
- *     option value to be stored.
- * @uses do_action() Calls 'update_option' hook before updating the option.
- * @uses do_action() Calls 'update_option_$option' and 'updated_option' hooks on success.
- *
- * @param string $option Option name. Expected to not be SQL-escaped.
- * @param mixed $newvalue Option value. Expected to not be SQL-escaped.
- * @return bool False if value was not updated and true if value was updated.
- */
-function update_option( $option, $newvalue ) {
-       global $wpdb;
-
-       $option = trim($option);
-       if ( empty($option) )
-               return false;
-
-       wp_protect_special_option( $option );
-
-       if ( is_object($newvalue) )
-               $newvalue = clone $newvalue;
-
-       $newvalue = sanitize_option( $option, $newvalue );
-       $oldvalue = get_option( $option );
-       $newvalue = apply_filters( 'pre_update_option_' . $option, $newvalue, $oldvalue );
-
-       // If the new and old values are the same, no need to update.
-       if ( $newvalue === $oldvalue )
-               return false;
-
-       if ( false === $oldvalue )
-               return add_option( $option, $newvalue );
-
-       $notoptions = wp_cache_get( 'notoptions', 'options' );
-       if ( is_array( $notoptions ) && isset( $notoptions[$option] ) ) {
-               unset( $notoptions[$option] );
-               wp_cache_set( 'notoptions', $notoptions, 'options' );
-       }
-
-       $_newvalue = $newvalue;
-       $newvalue = maybe_serialize( $newvalue );
-
-       do_action( 'update_option', $option, $oldvalue, $_newvalue );
-       if ( ! defined( 'WP_INSTALLING' ) ) {
-               $alloptions = wp_load_alloptions();
-               if ( isset( $alloptions[$option] ) ) {
-                       $alloptions[$option] = $_newvalue;
-                       wp_cache_set( 'alloptions', $alloptions, 'options' );
-               } else {
-                       wp_cache_set( $option, $_newvalue, 'options' );
-               }
-       }
-
-       $result = $wpdb->update( $wpdb->options, array( 'option_value' => $newvalue ), array( 'option_name' => $option ) );
-
-       if ( $result ) {
-               do_action( "update_option_{$option}", $oldvalue, $_newvalue );
-               do_action( 'updated_option', $option, $oldvalue, $_newvalue );
-               return true;
-       }
-       return false;
-}
-
-/**
- * Add a new option.
- *
- * You do not need to serialize values. If the value needs to be serialized, then
- * it will be serialized before it is inserted into the database. Remember,
- * resources can not be serialized or added as an option.
- *
- * You can create options without values and then update the values later.
- * Existing options will not be updated and checks are performed to ensure that you
- * aren't adding a protected WordPress option. Care should be taken to not name
- * options the same as the ones which are protected.
- *
- * @package WordPress
- * @subpackage Option
- * @since 1.0.0
- *
- * @uses do_action() Calls 'add_option' hook before adding the option.
- * @uses do_action() Calls 'add_option_$option' and 'added_option' hooks on success.
- *
- * @param string $option Name of option to add. Expected to not be SQL-escaped.
- * @param mixed $value Optional. Option value, can be anything. Expected to not be SQL-escaped.
- * @param mixed $deprecated Optional. Description. Not used anymore.
- * @param bool $autoload Optional. Default is enabled. Whether to load the option when WordPress starts up.
- * @return bool False if option was not added and true if option was added.
- */
-function add_option( $option, $value = '', $deprecated = '', $autoload = 'yes' ) {
-       global $wpdb;
-
-       if ( !empty( $deprecated ) )
-               _deprecated_argument( __FUNCTION__, '2.3' );
-
-       $option = trim($option);
-       if ( empty($option) )
-               return false;
-
-       wp_protect_special_option( $option );
-
-       if ( is_object($value) )
-               $value = clone $value;
-
-       $value = sanitize_option( $option, $value );
-
-       // Make sure the option doesn't already exist. We can check the 'notoptions' cache before we ask for a db query
-       $notoptions = wp_cache_get( 'notoptions', 'options' );
-       if ( !is_array( $notoptions ) || !isset( $notoptions[$option] ) )
-               if ( false !== get_option( $option ) )
-                       return false;
-
-       $_value = $value;
-       $value = maybe_serialize( $value );
-       $autoload = ( 'no' === $autoload ) ? 'no' : 'yes';
-       do_action( 'add_option', $option, $_value );
-       if ( ! defined( 'WP_INSTALLING' ) ) {
-               if ( 'yes' == $autoload ) {
-                       $alloptions = wp_load_alloptions();
-                       $alloptions[$option] = $value;
-                       wp_cache_set( 'alloptions', $alloptions, 'options' );
-               } else {
-                       wp_cache_set( $option, $value, 'options' );
-               }
-       }
-
-       // This option exists now
-       $notoptions = wp_cache_get( 'notoptions', 'options' ); // yes, again... we need it to be fresh
-       if ( is_array( $notoptions ) && isset( $notoptions[$option] ) ) {
-               unset( $notoptions[$option] );
-               wp_cache_set( 'notoptions', $notoptions, 'options' );
-       }
-
-       $result = $wpdb->query( $wpdb->prepare( "INSERT INTO `$wpdb->options` (`option_name`, `option_value`, `autoload`) VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)", $option, $value, $autoload ) );
-
-       if ( $result ) {
-               do_action( "add_option_{$option}", $option, $_value );
-               do_action( 'added_option', $option, $_value );
-               return true;
-       }
-       return false;
-}
-
-/**
- * Removes option by name. Prevents removal of protected WordPress options.
- *
- * @package WordPress
- * @subpackage Option
- * @since 1.2.0
- *
- * @uses do_action() Calls 'delete_option' hook before option is deleted.
- * @uses do_action() Calls 'deleted_option' and 'delete_option_$option' hooks on success.
- *
- * @param string $option Name of option to remove. Expected to not be SQL-escaped.
- * @return bool True, if option is successfully deleted. False on failure.
- */
-function delete_option( $option ) {
-       global $wpdb;
-
-       wp_protect_special_option( $option );
-
-       // Get the ID, if no ID then return
-       $row = $wpdb->get_row( $wpdb->prepare( "SELECT autoload FROM $wpdb->options WHERE option_name = %s", $option ) );
-       if ( is_null( $row ) )
-               return false;
-       do_action( 'delete_option', $option );
-       $result = $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->options WHERE option_name = %s", $option) );
-       if ( ! defined( 'WP_INSTALLING' ) ) {
-               if ( 'yes' == $row->autoload ) {
-                       $alloptions = wp_load_alloptions();
-                       if ( is_array( $alloptions ) && isset( $alloptions[$option] ) ) {
-                               unset( $alloptions[$option] );
-                               wp_cache_set( 'alloptions', $alloptions, 'options' );
-                       }
-               } else {
-                       wp_cache_delete( $option, 'options' );
-               }
-       }
-       if ( $result ) {
-               do_action( "delete_option_$option", $option );
-               do_action( 'deleted_option', $option );
-               return true;
-       }
-       return false;
-}
-
-/**
- * Delete a transient.
- *
- * @since 2.8.0
- * @package WordPress
- * @subpackage Transient
- *
- * @uses do_action() Calls 'delete_transient_$transient' hook before transient is deleted.
- * @uses do_action() Calls 'deleted_transient' hook on success.
- *
- * @param string $transient Transient name. Expected to not be SQL-escaped.
- * @return bool true if successful, false otherwise
- */
-function delete_transient( $transient ) {
-       global $_wp_using_ext_object_cache;
-
-       do_action( 'delete_transient_' . $transient, $transient );
-
-       if ( $_wp_using_ext_object_cache ) {
-               $result = wp_cache_delete( $transient, 'transient' );
-       } else {
-               $option_timeout = '_transient_timeout_' . $transient;
-               $option = '_transient_' . $transient;
-               $result = delete_option( $option );
-               if ( $result )
-                       delete_option( $option_timeout );
-       }
-
-       if ( $result )
-               do_action( 'deleted_transient', $transient );
-       return $result;
-}
-
-/**
- * Get the value of a transient.
- *
- * If the transient does not exist or does not have a value, then the return value
- * will be false.
- *
- * @uses apply_filters() Calls 'pre_transient_$transient' hook before checking the transient.
- *     Any value other than false will "short-circuit" the retrieval of the transient
- *     and return the returned value.
- * @uses apply_filters() Calls 'transient_$option' hook, after checking the transient, with
- *     the transient value.
- *
- * @since 2.8.0
- * @package WordPress
- * @subpackage Transient
- *
- * @param string $transient Transient name. Expected to not be SQL-escaped
- * @return mixed Value of transient
- */
-function get_transient( $transient ) {
-       global $_wp_using_ext_object_cache;
-
-       $pre = apply_filters( 'pre_transient_' . $transient, false );
-       if ( false !== $pre )
-               return $pre;
-
-       if ( $_wp_using_ext_object_cache ) {
-               $value = wp_cache_get( $transient, 'transient' );
-       } else {
-               $transient_option = '_transient_' . $transient;
-               if ( ! defined( 'WP_INSTALLING' ) ) {
-                       // If option is not in alloptions, it is not autoloaded and thus has a timeout
-                       $alloptions = wp_load_alloptions();
-                       if ( !isset( $alloptions[$transient_option] ) ) {
-                               $transient_timeout = '_transient_timeout_' . $transient;
-                               if ( get_option( $transient_timeout ) < time() ) {
-                                       delete_option( $transient_option  );
-                                       delete_option( $transient_timeout );
-                                       return false;
-                               }
-                       }
-               }
-
-               $value = get_option( $transient_option );
-       }
-
-       return apply_filters( 'transient_' . $transient, $value );
-}
-
-/**
- * Set/update the value of a transient.
- *
- * You do not need to serialize values. If the value needs to be serialized, then
- * it will be serialized before it is set.
- *
- * @since 2.8.0
- * @package WordPress
- * @subpackage Transient
- *
- * @uses apply_filters() Calls 'pre_set_transient_$transient' hook to allow overwriting the
- *     transient value to be stored.
- * @uses do_action() Calls 'set_transient_$transient' and 'setted_transient' hooks on success.
- *
- * @param string $transient Transient name. Expected to not be SQL-escaped.
- * @param mixed $value Transient value. Expected to not be SQL-escaped.
- * @param int $expiration Time until expiration in seconds, default 0
- * @return bool False if value was not set and true if value was set.
- */
-function set_transient( $transient, $value, $expiration = 0 ) {
-       global $_wp_using_ext_object_cache;
-
-       $value = apply_filters( 'pre_set_transient_' . $transient, $value );
-
-       if ( $_wp_using_ext_object_cache ) {
-               $result = wp_cache_set( $transient, $value, 'transient', $expiration );
-       } else {
-               $transient_timeout = '_transient_timeout_' . $transient;
-               $transient = '_transient_' . $transient;
-               if ( false === get_option( $transient ) ) {
-                       $autoload = 'yes';
-                       if ( $expiration ) {
-                               $autoload = 'no';
-                               add_option( $transient_timeout, time() + $expiration, '', 'no' );
-                       }
-                       $result = add_option( $transient, $value, '', $autoload );
-               } else {
-                       if ( $expiration )
-                               update_option( $transient_timeout, time() + $expiration );
-                       $result = update_option( $transient, $value );
-               }
-       }
-       if ( $result ) {
-               do_action( 'set_transient_' . $transient );
-               do_action( 'setted_transient', $transient );
-       }
-       return $result;
-}
-
-/**
- * Saves and restores user interface settings stored in a cookie.
- *
- * Checks if the current user-settings cookie is updated and stores it. When no
- * cookie exists (different browser used), adds the last saved cookie restoring
- * the settings.
- *
- * @package WordPress
- * @subpackage Option
- * @since 2.7.0
- */
-function wp_user_settings() {
-
-       if ( ! is_admin() )
-               return;
-
-       if ( defined('DOING_AJAX') )
-               return;
-
-       if ( ! $user = wp_get_current_user() )
-               return;
-
-       $settings = get_user_option( 'user-settings', $user->ID );
-
-       if ( isset( $_COOKIE['wp-settings-' . $user->ID] ) ) {
-               $cookie = preg_replace( '/[^A-Za-z0-9=&_]/', '', $_COOKIE['wp-settings-' . $user->ID] );
-
-               if ( ! empty( $cookie ) && strpos( $cookie, '=' ) ) {
-                       if ( $cookie == $settings )
-                               return;
-
-                       $last_time = (int) get_user_option( 'user-settings-time', $user->ID );
-                       $saved = isset( $_COOKIE['wp-settings-time-' . $user->ID]) ? preg_replace( '/[^0-9]/', '', $_COOKIE['wp-settings-time-' . $user->ID] ) : 0;
-
-                       if ( $saved > $last_time ) {
-                               update_user_option( $user->ID, 'user-settings', $cookie, false );
-                               update_user_option( $user->ID, 'user-settings-time', time() - 5, false );
-                               return;
-                       }
-               }
-       }
-
-       setcookie( 'wp-settings-' . $user->ID, $settings, time() + 31536000, SITECOOKIEPATH );
-       setcookie( 'wp-settings-time-' . $user->ID, time(), time() + 31536000, SITECOOKIEPATH );
-       $_COOKIE['wp-settings-' . $user->ID] = $settings;
-}
-
-/**
- * Retrieve user interface setting value based on setting name.
- *
- * @package WordPress
- * @subpackage Option
- * @since 2.7.0
- *
- * @param string $name The name of the setting.
- * @param string $default Optional default value to return when $name is not set.
- * @return mixed the last saved user setting or the default value/false if it doesn't exist.
- */
-function get_user_setting( $name, $default = false ) {
-
-       $all = get_all_user_settings();
-
-       return isset($all[$name]) ? $all[$name] : $default;
-}
-
-/**
- * Add or update user interface setting.
- *
- * Both $name and $value can contain only ASCII letters, numbers and underscores.
- * This function has to be used before any output has started as it calls setcookie().
- *
- * @package WordPress
- * @subpackage Option
- * @since 2.8.0
- *
- * @param string $name The name of the setting.
- * @param string $value The value for the setting.
- * @return bool true if set successfully/false if not.
- */
-function set_user_setting( $name, $value ) {
-
-       if ( headers_sent() )
-               return false;
-
-       $all = get_all_user_settings();
-       $name = preg_replace( '/[^A-Za-z0-9_]+/', '', $name );
-
-       if ( empty($name) )
-               return false;
-
-       $all[$name] = $value;
-
-       return wp_set_all_user_settings($all);
-}
-
-/**
- * Delete user interface settings.
- *
- * Deleting settings would reset them to the defaults.
- * This function has to be used before any output has started as it calls setcookie().
- *
- * @package WordPress
- * @subpackage Option
- * @since 2.7.0
- *
- * @param mixed $names The name or array of names of the setting to be deleted.
- * @return bool true if deleted successfully/false if not.
- */
-function delete_user_setting( $names ) {
-
-       if ( headers_sent() )
-               return false;
-
-       $all = get_all_user_settings();
-       $names = (array) $names;
-
-       foreach ( $names as $name ) {
-               if ( isset($all[$name]) ) {
-                       unset($all[$name]);
-                       $deleted = true;
-               }
-       }
-
-       if ( isset($deleted) )
-               return wp_set_all_user_settings($all);
-
-       return false;
-}
-
-/**
- * Retrieve all user interface settings.
- *
- * @package WordPress
- * @subpackage Option
- * @since 2.7.0
- *
- * @return array the last saved user settings or empty array.
- */
-function get_all_user_settings() {
-       global $_updated_user_settings;
-
-       if ( ! $user = wp_get_current_user() )
-               return array();
-
-       if ( isset($_updated_user_settings) && is_array($_updated_user_settings) )
-               return $_updated_user_settings;
-
-       $all = array();
-       if ( isset($_COOKIE['wp-settings-' . $user->ID]) ) {
-               $cookie = preg_replace( '/[^A-Za-z0-9=&_]/', '', $_COOKIE['wp-settings-' . $user->ID] );
-
-               if ( $cookie && strpos($cookie, '=') ) // the '=' cannot be 1st char
-                       parse_str($cookie, $all);
-
-       } else {
-               $option = get_user_option('user-settings', $user->ID);
-               if ( $option && is_string($option) )
-                       parse_str( $option, $all );
-       }
-
-       return $all;
-}
-
-/**
- * Private. Set all user interface settings.
- *
- * @package WordPress
- * @subpackage Option
- * @since 2.8.0
- *
- * @param unknown $all
- * @return bool
- */
-function wp_set_all_user_settings($all) {
-       global $_updated_user_settings;
-
-       if ( ! $user = wp_get_current_user() )
-               return false;
-
-       $_updated_user_settings = $all;
-       $settings = '';
-       foreach ( $all as $k => $v ) {
-               $v = preg_replace( '/[^A-Za-z0-9_]+/', '', $v );
-               $settings .= $k . '=' . $v . '&';
-       }
-
-       $settings = rtrim($settings, '&');
-
-       update_user_option( $user->ID, 'user-settings', $settings, false );
-       update_user_option( $user->ID, 'user-settings-time', time(), false );
-
-       return true;
-}
-
-/**
- * Delete the user settings of the current user.
- *
- * @package WordPress
- * @subpackage Option
- * @since 2.7.0
+ *
+ * @param mixed $data Serialized data
+ * @return bool False if not a serialized string, true if it is.
  */
  */
-function delete_all_user_settings() {
-       if ( ! $user = wp_get_current_user() )
-               return;
-
-       update_user_option( $user->ID, 'user-settings', '', false );
-       setcookie('wp-settings-' . $user->ID, ' ', time() - 31536000, SITECOOKIEPATH);
+function is_serialized_string( $data ) {
+       // if it isn't a string, it isn't a serialized string
+       if ( !is_string( $data ) )
+               return false;
+       $data = trim( $data );
+       $length = strlen( $data );
+       if ( $length < 4 )
+               return false;
+       elseif ( ':' !== $data[1] )
+               return false;
+       elseif ( ';' !== $data[$length-1] )
+               return false;
+       elseif ( $data[0] !== 's' )
+               return false;
+       elseif ( '"' !== $data[$length-2] )
+               return false;
+       else
+               return true;
 }
 
 /**
 }
 
 /**
@@ -1114,71 +392,6 @@ function xmlrpc_removepostdata( $content ) {
        return $content;
 }
 
        return $content;
 }
 
-/**
- * Open the file handle for debugging.
- *
- * This function is used for XMLRPC feature, but it is general purpose enough
- * to be used in anywhere.
- *
- * @see fopen() for mode options.
- * @package WordPress
- * @subpackage Debug
- * @since 0.71
- * @uses $debug Used for whether debugging is enabled.
- *
- * @param string $filename File path to debug file.
- * @param string $mode Same as fopen() mode parameter.
- * @return bool|resource File handle. False on failure.
- */
-function debug_fopen( $filename, $mode ) {
-       global $debug;
-       if ( 1 == $debug ) {
-               $fp = fopen( $filename, $mode );
-               return $fp;
-       } else {
-               return false;
-       }
-}
-
-/**
- * Write contents to the file used for debugging.
- *
- * Technically, this can be used to write to any file handle when the global
- * $debug is set to 1 or true.
- *
- * @package WordPress
- * @subpackage Debug
- * @since 0.71
- * @uses $debug Used for whether debugging is enabled.
- *
- * @param resource $fp File handle for debugging file.
- * @param string $string Content to write to debug file.
- */
-function debug_fwrite( $fp, $string ) {
-       global $debug;
-       if ( 1 == $debug )
-               fwrite( $fp, $string );
-}
-
-/**
- * Close the debugging file handle.
- *
- * Technically, this can be used to close any file handle when the global $debug
- * is set to 1 or true.
- *
- * @package WordPress
- * @subpackage Debug
- * @since 0.71
- * @uses $debug Used for whether debugging is enabled.
- *
- * @param resource $fp Debug File handle.
- */
-function debug_fclose( $fp ) {
-       global $debug;
-       if ( 1 == $debug )
-               fclose( $fp );
-}
-
 /**
  * Check content for video and audio links to add as enclosures.
  *
 /**
  * Check content for video and audio links to add as enclosures.
  *
@@ -1200,9 +413,7 @@ function do_enclose( $content, $post_ID ) {
        //TODO: Tidy this ghetto code up and make the debug code optional
        include_once( ABSPATH . WPINC . '/class-IXR.php' );
 
        //TODO: Tidy this ghetto code up and make the debug code optional
        include_once( ABSPATH . WPINC . '/class-IXR.php' );
 
-       $log = debug_fopen( ABSPATH . 'enclosures.log', 'a' );
        $post_links = array();
        $post_links = array();
-       debug_fwrite( $log, 'BEGIN ' . date( 'YmdHis', time() ) . "\n" );
 
        $pung = get_enclosed( $post_ID );
 
 
        $pung = get_enclosed( $post_ID );
 
@@ -1213,15 +424,11 @@ function do_enclose( $content, $post_ID ) {
 
        preg_match_all( "{\b http : [$any] +? (?= [$punc] * [^$any] | $)}x", $content, $post_links_temp );
 
 
        preg_match_all( "{\b http : [$any] +? (?= [$punc] * [^$any] | $)}x", $content, $post_links_temp );
 
-       debug_fwrite( $log, 'Post contents:' );
-       debug_fwrite( $log, $content . "\n" );
-
        foreach ( $pung as $link_test ) {
                if ( !in_array( $link_test, $post_links_temp[0] ) ) { // link no longer in post
        foreach ( $pung as $link_test ) {
                if ( !in_array( $link_test, $post_links_temp[0] ) ) { // link no longer in post
-                       $mid = $wpdb->get_col( $wpdb->prepare("SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = 'enclosure' AND meta_value LIKE (%s)", $post_ID, like_escape( $link_test ) . '%') );
-                       do_action( 'delete_postmeta', $mid );
-                       $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->postmeta WHERE meta_id IN(%s)", implode( ',', $mid ) ) );
-                       do_action( 'deleted_postmeta', $mid );
+                       $mids = $wpdb->get_col( $wpdb->prepare("SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = 'enclosure' AND meta_value LIKE (%s)", $post_ID, like_escape( $link_test ) . '%') );
+                       foreach ( $mids as $mid )
+                               delete_metadata_by_mid( 'post', $mid );
                }
        }
 
                }
        }
 
@@ -1241,8 +448,8 @@ function do_enclose( $content, $post_ID ) {
                if ( $url != '' && !$wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = 'enclosure' AND meta_value LIKE (%s)", $post_ID, like_escape( $url ) . '%' ) ) ) {
 
                        if ( $headers = wp_get_http_headers( $url) ) {
                if ( $url != '' && !$wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = 'enclosure' AND meta_value LIKE (%s)", $post_ID, like_escape( $url ) . '%' ) ) ) {
 
                        if ( $headers = wp_get_http_headers( $url) ) {
-                               $len = (int) $headers['content-length'];
-                               $type = $headers['content-type'];
+                               $len = isset( $headers['content-length'] ) ? (int) $headers['content-length'] : 0;
+                               $type = isset( $headers['content-type'] ) ? $headers['content-type'] : '';
                                $allowed_types = array( 'video', 'audio' );
 
                                // Check to see if we can figure out the mime type from
                                $allowed_types = array( 'video', 'audio' );
 
                                // Check to see if we can figure out the mime type from
@@ -1261,9 +468,7 @@ function do_enclose( $content, $post_ID ) {
                                }
 
                                if ( in_array( substr( $type, 0, strpos( $type, "/" ) ), $allowed_types ) ) {
                                }
 
                                if ( in_array( substr( $type, 0, strpos( $type, "/" ) ), $allowed_types ) ) {
-                                       $meta_value = "$url\n$len\n$type\n";
-                                       $wpdb->insert($wpdb->postmeta, array('post_id' => $post_ID, 'meta_key' => 'enclosure', 'meta_value' => $meta_value) );
-                                       do_action( 'added_postmeta', $wpdb->insert_id, $post_ID, 'enclosure', $meta_value );
+                                       add_post_meta( $post_ID, 'enclosure', "$url\n$len\n$mime\n" );
                                }
                        }
                }
                                }
                        }
                }
@@ -1393,7 +598,7 @@ function _http_build_query($data, $prefix=null, $sep=null, $key='', $urlencode=t
                        $k = $prefix.$k;
                if ( !empty($key) )
                        $k = $key . '%5B' . $k . '%5D';
                        $k = $prefix.$k;
                if ( !empty($key) )
                        $k = $key . '%5B' . $k . '%5D';
-               if ( $v === NULL )
+               if ( $v === null )
                        continue;
                elseif ( $v === FALSE )
                        $v = '0';
                        continue;
                elseif ( $v === FALSE )
                        $v = '0';
@@ -1406,7 +611,7 @@ function _http_build_query($data, $prefix=null, $sep=null, $key='', $urlencode=t
                        array_push($ret, $k.'='.$v);
        }
 
                        array_push($ret, $k.'='.$v);
        }
 
-       if ( NULL === $sep )
+       if ( null === $sep )
                $sep = ini_get('arg_separator.output');
 
        return implode($sep, $ret);
                $sep = ini_get('arg_separator.output');
 
        return implode($sep, $ret);
@@ -1905,7 +1110,7 @@ function is_blog_installed() {
 
        $suppress = $wpdb->suppress_errors();
 
 
        $suppress = $wpdb->suppress_errors();
 
-       // Loop over the WP tables.  If none exist, then scratch install is allowed.
+       // Loop over the WP tables. If none exist, then scratch install is allowed.
        // If one or more exist, suggest table repair since we got here because the options
        // table could not be accessed.
        $wp_tables = $wpdb->tables();
        // If one or more exist, suggest table repair since we got here because the options
        // table could not be accessed.
        $wp_tables = $wpdb->tables();
@@ -1921,8 +1126,10 @@ function is_blog_installed() {
 
                // One or more tables exist. We are insane.
 
 
                // One or more tables exist. We are insane.
 
+               wp_load_translations_early();
+
                // Die with a DB error.
                // Die with a DB error.
-               $wpdb->error = sprintf( /*WP_I18N_NO_TABLES*/'One or more database tables are unavailable.  The database may need to be <a href="%s">repaired</a>.'/*/WP_I18N_NO_TABLES*/, 'maint/repair.php?referrer=is_blog_installed' );
+               $wpdb->error = sprintf( __( 'One or more database tables are unavailable. The database may need to be <a href="%s">repaired</a>.' ), 'maint/repair.php?referrer=is_blog_installed' );
                dead_db();
        }
 
                dead_db();
        }
 
@@ -2746,7 +1953,6 @@ function wp_nonce_ays( $action ) {
        wp_die( $html, $title, array('response' => 403) );
 }
 
        wp_die( $html, $title, array('response' => 403) );
 }
 
-
 /**
  * Kill WordPress execution and display HTML message with error message.
  *
 /**
  * Kill WordPress execution and display HTML message with error message.
  *
@@ -2762,15 +1968,15 @@ function wp_nonce_ays( $action ) {
  * @param string $title Error title.
  * @param string|array $args Optional arguments to control behavior.
  */
  * @param string $title Error title.
  * @param string|array $args Optional arguments to control behavior.
  */
-function wp_die( $message, $title = '', $args = array() ) {
+function wp_die( $message = '', $title = '', $args = array() ) {
        if ( defined( 'DOING_AJAX' ) && DOING_AJAX )
        if ( defined( 'DOING_AJAX' ) && DOING_AJAX )
-               die('-1');
-
-       if ( function_exists( 'apply_filters' ) ) {
-               $function = apply_filters( 'wp_die_handler', '_default_wp_die_handler');
-       } else {
-               $function = '_default_wp_die_handler';
-       }
+               $function = apply_filters( 'wp_die_ajax_handler', '_ajax_wp_die_handler' );
+       elseif ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST )
+               $function = apply_filters( 'wp_die_xmlrpc_handler', '_xmlrpc_wp_die_handler' );
+       elseif ( defined( 'APP_REQUEST' ) && APP_REQUEST )
+               $function = apply_filters( 'wp_die_app_handler', '_scalar_wp_die_handler' );
+       else
+               $function = apply_filters( 'wp_die_handler', '_default_wp_die_handler' );
 
        call_user_func( $function, $message, $title, $args );
 }
 
        call_user_func( $function, $message, $title, $args );
 }
@@ -2821,7 +2027,7 @@ function _default_wp_die_handler( $message, $title = '', $args = array() ) {
                $message .= "\n<p><a href='javascript:history.back()'>$back_text</a></p>";
        }
 
                $message .= "\n<p><a href='javascript:history.back()'>$back_text</a></p>";
        }
 
-       if ( !function_exists( 'did_action' ) || !did_action( 'admin_head' ) ) :
+       if ( ! did_action( 'admin_head' ) ) :
                if ( !headers_sent() ) {
                        status_header( $r['response'] );
                        nocache_headers();
                if ( !headers_sent() ) {
                        status_header( $r['response'] );
                        nocache_headers();
@@ -2859,6 +2065,15 @@ function _default_wp_die_handler( $message, $title = '', $args = array() ) {
                        border: 1px solid #dfdfdf;
                        max-width: 700px;
                }
                        border: 1px solid #dfdfdf;
                        max-width: 700px;
                }
+               h1 {
+                       border-bottom: 1px solid #dadada;
+                       clear: both;
+                       color: #666;
+                       font: 24px Georgia, "Times New Roman", Times, serif;
+                       margin: 30px 0 0 0;
+                       padding: 0;
+                       padding-bottom: 7px;
+               }
                #error-page {
                        margin-top: 50px;
                }
                #error-page {
                        margin-top: 50px;
                }
@@ -2925,7 +2140,7 @@ function _default_wp_die_handler( $message, $title = '', $args = array() ) {
        </style>
 </head>
 <body id="error-page">
        </style>
 </head>
 <body id="error-page">
-<?php endif; // !function_exists( 'did_action' ) || !did_action( 'admin_head' ) ?>
+<?php endif; // ! did_action( 'admin_head' ) ?>
        <?php echo $message; ?>
 </body>
 </html>
        <?php echo $message; ?>
 </body>
 </html>
@@ -2959,15 +2174,36 @@ function _xmlrpc_wp_die_handler( $message, $title = '', $args = array() ) {
 }
 
 /**
 }
 
 /**
- * Filter to enable special wp_die handler for xmlrpc requests.
+ * Kill WordPress ajax execution.
  *
  *
- * @since 3.2.0
+ * This is the handler for wp_die when processing Ajax requests.
+ *
+ * @since 3.4.0
  * @access private
  * @access private
+ *
+ * @param string $message Optional. Response to print.
  */
  */
-function _xmlrpc_wp_die_filter() {
-       return '_xmlrpc_wp_die_handler';
+function _ajax_wp_die_handler( $message = '' ) {
+       if ( is_scalar( $message ) )
+               die( (string) $message );
+       die( '0' );
 }
 
 }
 
+/**
+ * Kill WordPress execution.
+ *
+ * This is the handler for wp_die when processing APP requests.
+ *
+ * @since 3.4.0
+ * @access private
+ *
+ * @param string $message Optional. Response to print.
+ */
+function _scalar_wp_die_handler( $message = '' ) {
+       if ( is_scalar( $message ) )
+               die( (string) $message );
+       die();
+}
 
 /**
  * Retrieve the WordPress home page URL.
 
 /**
  * Retrieve the WordPress home page URL.
@@ -3036,7 +2272,6 @@ function _mce_set_direction( $input ) {
        return $input;
 }
 
        return $input;
 }
 
-
 /**
  * Convert smiley code to the icon graphic file equivalent.
  *
 /**
  * Convert smiley code to the icon graphic file equivalent.
  *
@@ -3098,7 +2333,8 @@ function smilies_init() {
                      ':-x' => 'icon_mad.gif',
                      ':-|' => 'icon_neutral.gif',
                      ';-)' => 'icon_wink.gif',
                      ':-x' => 'icon_mad.gif',
                      ':-|' => 'icon_neutral.gif',
                      ';-)' => 'icon_wink.gif',
-                      '8)' => 'icon_cool.gif',
+               // This one transformation breaks regular text with frequency.
+               //     '8)' => 'icon_cool.gif',
                       '8O' => 'icon_eek.gif',
                       ':(' => 'icon_sad.gif',
                       ':)' => 'icon_smile.gif',
                       '8O' => 'icon_eek.gif',
                       ':(' => 'icon_sad.gif',
                       ':)' => 'icon_smile.gif',
@@ -3369,16 +2605,18 @@ function dead_db() {
        status_header( 500 );
        nocache_headers();
        header( 'Content-Type: text/html; charset=utf-8' );
        status_header( 500 );
        nocache_headers();
        header( 'Content-Type: text/html; charset=utf-8' );
+
+       wp_load_translations_early();
 ?>
 <!DOCTYPE html>
 ?>
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml" <?php if ( function_exists( 'language_attributes' ) ) language_attributes(); ?>>
+<html xmlns="http://www.w3.org/1999/xhtml"<?php if ( is_rtl() ) echo ' dir="rtl"'; ?>>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-       <title><?php echo /*WP_I18N_DB_ERROR*/'Database Error'/*/WP_I18N_DB_ERROR*/; ?></title>
+       <title><?php _e( 'Database Error' ); ?></title>
 
 </head>
 <body>
 
 </head>
 <body>
-       <h1><?php echo /*WP_I18N_DB_CONNECTION_ERROR*/'Error establishing a database connection'/*/WP_I18N_DB_CONNECTION_ERROR*/; ?></h1>
+       <h1><?php _e( 'Error establishing a database connection' ); ?></h1>
 </body>
 </html>
 <?php
 </body>
 </html>
 <?php
@@ -3762,7 +3000,7 @@ function wp_guess_url() {
                $url = WP_SITEURL;
        } else {
                $schema = is_ssl() ? 'https://' : 'http://';
                $url = WP_SITEURL;
        } else {
                $schema = is_ssl() ? 'https://' : 'http://';
-               $url = preg_replace('|/wp-admin/.*|i', '', $schema . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
+               $url = preg_replace('#/(wp-admin/.*|wp-login.php)#i', '', $schema . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
        }
        return rtrim($url, '/');
 }
        }
        return rtrim($url, '/');
 }
@@ -3794,8 +3032,8 @@ function wp_suspend_cache_addition( $suspend = null ) {
 /**
  * Suspend cache invalidation.
  *
 /**
  * Suspend cache invalidation.
  *
- * Turns cache invalidation on and off.  Useful during imports where you don't wont to do invalidations
- * every time a post is inserted.  Callers must be sure that what they are doing won't lead to an inconsistent
+ * Turns cache invalidation on and off. Useful during imports where you don't wont to do invalidations
+ * every time a post is inserted. Callers must be sure that what they are doing won't lead to an inconsistent
  * cache when invalidation is suspended.
  *
  * @since 2.7.0
  * cache when invalidation is suspended.
  *
  * @since 2.7.0
@@ -3811,323 +3049,6 @@ function wp_suspend_cache_invalidation($suspend = true) {
        return $current_suspend;
 }
 
        return $current_suspend;
 }
 
-/**
- * Retrieve site option value based on name of option.
- *
- * @see get_option()
- * @package WordPress
- * @subpackage Option
- * @since 2.8.0
- *
- * @uses apply_filters() Calls 'pre_site_option_$option' before checking the option.
- *     Any value other than false will "short-circuit" the retrieval of the option
- *     and return the returned value.
- * @uses apply_filters() Calls 'site_option_$option', after checking the  option, with
- *     the option value.
- *
- * @param string $option Name of option to retrieve. Expected to not be SQL-escaped.
- * @param mixed $default Optional value to return if option doesn't exist. Default false.
- * @param bool $use_cache Whether to use cache. Multisite only. Default true.
- * @return mixed Value set for the option.
- */
-function get_site_option( $option, $default = false, $use_cache = true ) {
-       global $wpdb;
-
-       // Allow plugins to short-circuit site options.
-       $pre = apply_filters( 'pre_site_option_' . $option, false );
-       if ( false !== $pre )
-               return $pre;
-
-       if ( !is_multisite() ) {
-               $value = get_option($option, $default);
-       } else {
-               $cache_key = "{$wpdb->siteid}:$option";
-               if ( $use_cache )
-                       $value = wp_cache_get($cache_key, 'site-options');
-
-               if ( !isset($value) || (false === $value) ) {
-                       $row = $wpdb->get_row( $wpdb->prepare("SELECT meta_value FROM $wpdb->sitemeta WHERE meta_key = %s AND site_id = %d", $option, $wpdb->siteid ) );
-
-                       // Has to be get_row instead of get_var because of funkiness with 0, false, null values
-                       if ( is_object( $row ) ) {
-                               $value = $row->meta_value;
-                               $value = maybe_unserialize( $value );
-                               wp_cache_set( $cache_key, $value, 'site-options' );
-                       } else {
-                               $value = $default;
-                       }
-               }
-       }
-
-       return apply_filters( 'site_option_' . $option, $value );
-}
-
-/**
- * Add a new site option.
- *
- * Existing options will not be updated. Note that prior to 3.3 this wasn't the case.
- *
- * @see add_option()
- * @package WordPress
- * @subpackage Option
- * @since 2.8.0
- *
- * @uses apply_filters() Calls 'pre_add_site_option_$option' hook to allow overwriting the
- *     option value to be stored.
- * @uses do_action() Calls 'add_site_option_$option' and 'add_site_option' hooks on success.
- *
- * @param string $option Name of option to add. Expected to not be SQL-escaped.
- * @param mixed $value Optional. Option value, can be anything. Expected to not be SQL-escaped.
- * @return bool False if option was not added and true if option was added.
- */
-function add_site_option( $option, $value ) {
-       global $wpdb;
-
-       $value = apply_filters( 'pre_add_site_option_' . $option, $value );
-
-       if ( !is_multisite() ) {
-               $result = add_option( $option, $value );
-       } else {
-               $cache_key = "{$wpdb->siteid}:$option";
-
-               if ( false !== get_site_option( $option ) )
-                       return false;
-
-               $value = sanitize_option( $option, $value );
-               wp_cache_set( $cache_key, $value, 'site-options' );
-
-               $_value = $value;
-               $value = maybe_serialize( $value );
-               $result = $wpdb->insert( $wpdb->sitemeta, array('site_id' => $wpdb->siteid, 'meta_key' => $option, 'meta_value' => $value ) );
-               $value = $_value;
-       }
-
-       if ( $result ) {
-               do_action( "add_site_option_{$option}", $option, $value );
-               do_action( "add_site_option", $option, $value );
-               return true;
-       }
-       return false;
-}
-
-/**
- * Removes site option by name.
- *
- * @see delete_option()
- * @package WordPress
- * @subpackage Option
- * @since 2.8.0
- *
- * @uses do_action() Calls 'pre_delete_site_option_$option' hook before option is deleted.
- * @uses do_action() Calls 'delete_site_option' and 'delete_site_option_$option'
- *     hooks on success.
- *
- * @param string $option Name of option to remove. Expected to not be SQL-escaped.
- * @return bool True, if succeed. False, if failure.
- */
-function delete_site_option( $option ) {
-       global $wpdb;
-
-       // ms_protect_special_option( $option ); @todo
-
-       do_action( 'pre_delete_site_option_' . $option );
-
-       if ( !is_multisite() ) {
-               $result = delete_option( $option );
-       } else {
-               $row = $wpdb->get_row( $wpdb->prepare( "SELECT meta_id FROM {$wpdb->sitemeta} WHERE meta_key = %s AND site_id = %d", $option, $wpdb->siteid ) );
-               if ( is_null( $row ) || !$row->meta_id )
-                       return false;
-               $cache_key = "{$wpdb->siteid}:$option";
-               wp_cache_delete( $cache_key, 'site-options' );
-
-               $result = $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->sitemeta} WHERE meta_key = %s AND site_id = %d", $option, $wpdb->siteid ) );
-       }
-
-       if ( $result ) {
-               do_action( "delete_site_option_{$option}", $option );
-               do_action( "delete_site_option", $option );
-               return true;
-       }
-       return false;
-}
-
-/**
- * Update the value of a site option that was already added.
- *
- * @see update_option()
- * @since 2.8.0
- * @package WordPress
- * @subpackage Option
- *
- * @uses apply_filters() Calls 'pre_update_site_option_$option' hook to allow overwriting the
- *     option value to be stored.
- * @uses do_action() Calls 'update_site_option_$option' and 'update_site_option' hooks on success.
- *
- * @param string $option Name of option. Expected to not be SQL-escaped.
- * @param mixed $value Option value. Expected to not be SQL-escaped.
- * @return bool False if value was not updated and true if value was updated.
- */
-function update_site_option( $option, $value ) {
-       global $wpdb;
-
-       $oldvalue = get_site_option( $option );
-       $value = apply_filters( 'pre_update_site_option_' . $option, $value, $oldvalue );
-
-       if ( $value === $oldvalue )
-               return false;
-
-       if ( false === $oldvalue )
-               return add_site_option( $option, $value );
-
-       if ( !is_multisite() ) {
-               $result = update_option( $option, $value );
-       } else {
-               $value = sanitize_option( $option, $value );
-               $cache_key = "{$wpdb->siteid}:$option";
-               wp_cache_set( $cache_key, $value, 'site-options' );
-
-               $_value = $value;
-               $value = maybe_serialize( $value );
-               $result = $wpdb->update( $wpdb->sitemeta, array( 'meta_value' => $value ), array( 'site_id' => $wpdb->siteid, 'meta_key' => $option ) );
-               $value = $_value;
-       }
-
-       if ( $result ) {
-               do_action( "update_site_option_{$option}", $option, $value, $oldvalue );
-               do_action( "update_site_option", $option, $value, $oldvalue );
-               return true;
-       }
-       return false;
-}
-
-/**
- * Delete a site transient.
- *
- * @since 2.9.0
- * @package WordPress
- * @subpackage Transient
- *
- * @uses do_action() Calls 'delete_site_transient_$transient' hook before transient is deleted.
- * @uses do_action() Calls 'deleted_site_transient' hook on success.
- *
- * @param string $transient Transient name. Expected to not be SQL-escaped.
- * @return bool True if successful, false otherwise
- */
-function delete_site_transient( $transient ) {
-       global $_wp_using_ext_object_cache;
-
-       do_action( 'delete_site_transient_' . $transient, $transient );
-       if ( $_wp_using_ext_object_cache ) {
-               $result = wp_cache_delete( $transient, 'site-transient' );
-       } else {
-               $option_timeout = '_site_transient_timeout_' . $transient;
-               $option = '_site_transient_' . $transient;
-               $result = delete_site_option( $option );
-               if ( $result )
-                       delete_site_option( $option_timeout );
-       }
-       if ( $result )
-               do_action( 'deleted_site_transient', $transient );
-       return $result;
-}
-
-/**
- * Get the value of a site transient.
- *
- * If the transient does not exist or does not have a value, then the return value
- * will be false.
- *
- * @see get_transient()
- * @since 2.9.0
- * @package WordPress
- * @subpackage Transient
- *
- * @uses apply_filters() Calls 'pre_site_transient_$transient' hook before checking the transient.
- *     Any value other than false will "short-circuit" the retrieval of the transient
- *     and return the returned value.
- * @uses apply_filters() Calls 'site_transient_$option' hook, after checking the transient, with
- *     the transient value.
- *
- * @param string $transient Transient name. Expected to not be SQL-escaped.
- * @return mixed Value of transient
- */
-function get_site_transient( $transient ) {
-       global $_wp_using_ext_object_cache;
-
-       $pre = apply_filters( 'pre_site_transient_' . $transient, false );
-       if ( false !== $pre )
-               return $pre;
-
-       if ( $_wp_using_ext_object_cache ) {
-               $value = wp_cache_get( $transient, 'site-transient' );
-       } else {
-               // Core transients that do not have a timeout. Listed here so querying timeouts can be avoided.
-               $no_timeout = array('update_core', 'update_plugins', 'update_themes');
-               $transient_option = '_site_transient_' . $transient;
-               if ( ! in_array( $transient, $no_timeout ) ) {
-                       $transient_timeout = '_site_transient_timeout_' . $transient;
-                       $timeout = get_site_option( $transient_timeout );
-                       if ( false !== $timeout && $timeout < time() ) {
-                               delete_site_option( $transient_option  );
-                               delete_site_option( $transient_timeout );
-                               return false;
-                       }
-               }
-
-               $value = get_site_option( $transient_option );
-       }
-
-       return apply_filters( 'site_transient_' . $transient, $value );
-}
-
-/**
- * Set/update the value of a site transient.
- *
- * You do not need to serialize values, if the value needs to be serialize, then
- * it will be serialized before it is set.
- *
- * @see set_transient()
- * @since 2.9.0
- * @package WordPress
- * @subpackage Transient
- *
- * @uses apply_filters() Calls 'pre_set_site_transient_$transient' hook to allow overwriting the
- *     transient value to be stored.
- * @uses do_action() Calls 'set_site_transient_$transient' and 'setted_site_transient' hooks on success.
- *
- * @param string $transient Transient name. Expected to not be SQL-escaped.
- * @param mixed $value Transient value. Expected to not be SQL-escaped.
- * @param int $expiration Time until expiration in seconds, default 0
- * @return bool False if value was not set and true if value was set.
- */
-function set_site_transient( $transient, $value, $expiration = 0 ) {
-       global $_wp_using_ext_object_cache;
-
-       $value = apply_filters( 'pre_set_site_transient_' . $transient, $value );
-
-       if ( $_wp_using_ext_object_cache ) {
-               $result = wp_cache_set( $transient, $value, 'site-transient', $expiration );
-       } else {
-               $transient_timeout = '_site_transient_timeout_' . $transient;
-               $transient = '_site_transient_' . $transient;
-               if ( false === get_site_option( $transient ) ) {
-                       if ( $expiration )
-                               add_site_option( $transient_timeout, time() + $expiration );
-                       $result = add_site_option( $transient, $value );
-               } else {
-                       if ( $expiration )
-                               update_site_option( $transient_timeout, time() + $expiration );
-                       $result = update_site_option( $transient, $value );
-               }
-       }
-       if ( $result ) {
-               do_action( 'set_site_transient_' . $transient );
-               do_action( 'setted_site_transient', $transient );
-       }
-       return $result;
-}
-
 /**
  * Is main site?
  *
 /**
  * Is main site?
  *
@@ -4457,29 +3378,24 @@ function get_file_data( $file, $default_headers, $context = '' ) {
        // PHP will close file handle, but we are good citizens.
        fclose( $fp );
 
        // PHP will close file handle, but we are good citizens.
        fclose( $fp );
 
-       if ( $context != '' ) {
-               $extra_headers = apply_filters( "extra_{$context}_headers", array() );
+       // Make sure we catch CR-only line endings.
+       $file_data = str_replace( "\r", "\n", $file_data );
 
 
-               $extra_headers = array_flip( $extra_headers );
-               foreach( $extra_headers as $key=>$value ) {
-                       $extra_headers[$key] = $key;
-               }
+       if ( $context && $extra_headers = apply_filters( "extra_{$context}_headers", array() ) ) {
+               $extra_headers = array_combine( $extra_headers, $extra_headers ); // keys equal values
                $all_headers = array_merge( $extra_headers, (array) $default_headers );
        } else {
                $all_headers = $default_headers;
        }
 
        foreach ( $all_headers as $field => $regex ) {
                $all_headers = array_merge( $extra_headers, (array) $default_headers );
        } else {
                $all_headers = $default_headers;
        }
 
        foreach ( $all_headers as $field => $regex ) {
-               preg_match( '/^[ \t\/*#@]*' . preg_quote( $regex, '/' ) . ':(.*)$/mi', $file_data, ${$field});
-               if ( !empty( ${$field} ) )
-                       ${$field} = _cleanup_header_comment( ${$field}[1] );
+               if ( preg_match( '/^[ \t\/*#@]*' . preg_quote( $regex, '/' ) . ':(.*)$/mi', $file_data, $match ) && $match[1] )
+                       $all_headers[ $field ] = _cleanup_header_comment( $match[1] );
                else
                else
-                       ${$field} = '';
+                       $all_headers[ $field ] = '';
        }
 
        }
 
-       $file_data = compact( array_keys( $all_headers ) );
-
-       return $file_data;
+       return $all_headers;
 }
 
 /**
 }
 
 /**
@@ -4547,6 +3463,18 @@ function __return_empty_array() {
        return array();
 }
 
        return array();
 }
 
+/**
+ * Returns null.
+ *
+ * Useful for returning null to filters easily.
+ *
+ * @since 3.4.0
+ * @return null
+ */
+function __return_null() {
+       return null;
+}
+
 /**
  * Send a HTTP header to disable content type sniffing in browsers which support it.
  *
 /**
  * Send a HTTP header to disable content type sniffing in browsers which support it.
  *
@@ -4682,4 +3610,89 @@ function wp_allowed_protocols() {
        return $protocols;
 }
 
        return $protocols;
 }
 
-?>
+/**
+ * Return a comma separated string of functions that have been called to get to the current point in code.
+ *
+ * @link http://core.trac.wordpress.org/ticket/19589
+ * @since 3.4
+ *
+ * @param string $ignore_class A class to ignore all function calls within - useful when you want to just give info about the callee
+ * @param int $skip_frames A number of stack frames to skip - useful for unwinding back to the source of the issue
+ * @param bool $pretty Whether or not you want a comma separated string or raw array returned
+ * @return string|array Either a string containing a reversed comma separated trace or an array of individual calls.
+ */
+function wp_debug_backtrace_summary( $ignore_class = null, $skip_frames = 0, $pretty = true ) {
+       $trace  = debug_backtrace( false );
+       $caller = array();
+       $check_class = ! is_null( $ignore_class );
+       $skip_frames++; // skip this function
+
+       foreach ( $trace as $call ) {
+               if ( $skip_frames > 0 ) {
+                       $skip_frames--;
+               } elseif ( isset( $call['class'] ) ) {
+                       if ( $check_class && $ignore_class == $call['class'] )
+                               continue; // Filter out calls
+
+                       $caller[] = "{$call['class']}{$call['type']}{$call['function']}";
+               } else {
+                       if ( in_array( $call['function'], array( 'do_action', 'apply_filters' ) ) ) {
+                               $caller[] = "{$call['function']}('{$call['args'][0]}')";
+                       } elseif ( in_array( $call['function'], array( 'include', 'include_once', 'require', 'require_once' ) ) ) {
+                               $caller[] = $call['function'] . "('" . str_replace( array( WP_CONTENT_DIR, ABSPATH ) , '', $call['args'][0] ) . "')";
+                       } else {
+                               $caller[] = $call['function'];
+                       }
+               }
+       }
+       if ( $pretty )
+               return join( ', ', array_reverse( $caller ) );
+       else
+               return $caller;
+}
+
+/**
+ * Retrieve ids that are not already present in the cache
+ *
+ * @since 3.4.0
+ *
+ * @param array $object_ids ID list
+ * @param string $cache_key The cache bucket to check against
+ *
+ * @return array
+ */
+function _get_non_cached_ids( $object_ids, $cache_key ) {
+       $clean = array();
+       foreach ( $object_ids as $id ) {
+               $id = (int) $id;
+               if ( !wp_cache_get( $id, $cache_key ) ) {
+                       $clean[] = $id;
+               }
+       }
+
+       return $clean;
+}
+
+/**
+ * Test if the current device has the capability to upload files.
+ *
+ * @since 3.4.0
+ * @access private
+ *
+ * @return bool true|false
+ */
+function _device_can_upload() {
+       if ( ! wp_is_mobile() )
+               return true;
+
+       $ua = $_SERVER['HTTP_USER_AGENT'];
+
+       if ( strpos($ua, 'iPhone') !== false
+               || strpos($ua, 'iPad') !== false
+               || strpos($ua, 'iPod') !== false ) {
+                       return false;
+       } else {
+               return true;
+       }
+}
+
index 228a3bfe1b69f8f491000ff39c14fe890ad5e1c4..a8dac35c257b88344ee1ceddbfbe24b597d30f80 100644 (file)
@@ -45,7 +45,7 @@ function wp_print_scripts( $handles = false ) {
  * @param string $handle Script name
  * @param string $src Script url
  * @param array $deps (optional) Array of script names on which this script depends
  * @param string $handle Script name
  * @param string $src Script url
  * @param array $deps (optional) Array of script names on which this script depends
- * @param string|bool $ver (optional) Script version (used for cache busting), set to NULL to disable
+ * @param string|bool $ver (optional) Script version (used for cache busting), set to null to disable
  * @param bool $in_footer (optional) Whether to enqueue the script before </head> or before </body>
  * @return null
  */
  * @param bool $in_footer (optional) Whether to enqueue the script before </head> or before </body>
  * @return null
  */
index db8b583e98f6a6ce6fb490f4e82e06e014d3abaa..8896615438fd1e5e058e5920f2a0091b7b387e71 100644 (file)
@@ -47,7 +47,7 @@ function wp_print_styles( $handles = false ) {
  * added to the same stylesheet $handle, they will be printed in the order
  * they were added, i.e. the latter added styles can redeclare the previous.
  *
  * added to the same stylesheet $handle, they will be printed in the order
  * they were added, i.e. the latter added styles can redeclare the previous.
  *
- * @since 3.3
+ * @since 3.3.0
  * @see WP_Scripts::add_inline_style()
  */
 function wp_add_inline_style( $handle, $data ) {
  * @see WP_Scripts::add_inline_style()
  */
 function wp_add_inline_style( $handle, $data ) {
@@ -74,7 +74,7 @@ function wp_add_inline_style( $handle, $data ) {
  * @param string|bool $src Path to the stylesheet from the root directory of WordPress. Example: '/css/mystyle.css'.
  * @param array $deps Array of handles of any stylesheet that this stylesheet depends on.
  *  (Stylesheets that must be loaded before this stylesheet.) Pass an empty array if there are no dependencies.
  * @param string|bool $src Path to the stylesheet from the root directory of WordPress. Example: '/css/mystyle.css'.
  * @param array $deps Array of handles of any stylesheet that this stylesheet depends on.
  *  (Stylesheets that must be loaded before this stylesheet.) Pass an empty array if there are no dependencies.
- * @param string|bool $ver String specifying the stylesheet version number. Set to NULL to disable.
+ * @param string|bool $ver String specifying the stylesheet version number. Set to null to disable.
  *  Used to ensure that the correct version is sent to the client regardless of caching.
  * @param string $media The media for which this stylesheet has been defined.
  */
  *  Used to ensure that the correct version is sent to the client regardless of caching.
  * @param string $media The media for which this stylesheet has been defined.
  */
index d855ef52b9f55e90864197a0f31eac8127ff9bb8..19726961e7b6f6a7cdfb1e02f20e7fc4a38ebcc1 100644 (file)
@@ -1229,7 +1229,6 @@ function get_calendar($initial = true, $echo = true) {
                }
        }
 
                }
        }
 
-
        // See how much we should pad in the beginning
        $pad = calendar_week_mod(date('w', $unixmonth)-$week_begins);
        if ( 0 != $pad )
        // See how much we should pad in the beginning
        $pad = calendar_week_mod(date('w', $unixmonth)-$week_begins);
        if ( 0 != $pad )
@@ -1747,15 +1746,14 @@ function rich_edit_exists() {
  * @return bool
  */
 function user_can_richedit() {
  * @return bool
  */
 function user_can_richedit() {
-       global $wp_rich_edit, $is_gecko, $is_opera, $is_safari, $is_chrome, $is_iphone, $is_IE;
+       global $wp_rich_edit, $is_gecko, $is_opera, $is_safari, $is_chrome, $is_IE;
 
        if ( !isset($wp_rich_edit) ) {
                $wp_rich_edit = false;
 
 
        if ( !isset($wp_rich_edit) ) {
                $wp_rich_edit = false;
 
-               if ( get_user_option( 'rich_editing' ) == 'true' || !is_user_logged_in() ) { // default to 'true' for logged out users
+               if ( get_user_option( 'rich_editing' ) == 'true' || ! is_user_logged_in() ) { // default to 'true' for logged out users
                        if ( $is_safari ) {
                        if ( $is_safari ) {
-                               if ( !$is_iphone || ( preg_match( '!AppleWebKit/(\d+)!', $_SERVER['HTTP_USER_AGENT'], $match ) && intval($match[1]) >= 534 ) )
-                                       $wp_rich_edit = true;
+                               $wp_rich_edit = ! wp_is_mobile() || ( preg_match( '!AppleWebKit/(\d+)!', $_SERVER['HTTP_USER_AGENT'], $match ) && intval( $match[1] ) >= 534 );
                        } elseif ( $is_gecko || $is_opera || $is_chrome || $is_IE ) {
                                $wp_rich_edit = true;
                        }
                        } elseif ( $is_gecko || $is_opera || $is_chrome || $is_IE ) {
                                $wp_rich_edit = true;
                        }
@@ -1797,7 +1795,7 @@ function wp_default_editor() {
  * See http://core.trac.wordpress.org/ticket/19173 for more information.
  *
  * @see wp-includes/class-wp-editor.php
  * See http://core.trac.wordpress.org/ticket/19173 for more information.
  *
  * @see wp-includes/class-wp-editor.php
- * @since 3.3
+ * @since 3.3.0
  *
  * @param string $content Initial content for the editor.
  * @param string $editor_id HTML ID attribute value for the textarea and TinyMCE. Can only be /[a-z]+/.
  *
  * @param string $content Initial content for the editor.
  * @param string $editor_id HTML ID attribute value for the textarea and TinyMCE. Can only be /[a-z]+/.
@@ -2037,7 +2035,7 @@ function register_admin_color_schemes() {
        wp_admin_css_color( 'classic', _x( 'Blue', 'admin color scheme' ), admin_url( 'css/colors-classic.css' ),
                array( '#5589aa', '#cfdfe9', '#d1e5ee', '#eff8ff' ) );
        wp_admin_css_color( 'fresh', _x( 'Gray', 'admin color scheme' ), admin_url( 'css/colors-fresh.css' ),
        wp_admin_css_color( 'classic', _x( 'Blue', 'admin color scheme' ), admin_url( 'css/colors-classic.css' ),
                array( '#5589aa', '#cfdfe9', '#d1e5ee', '#eff8ff' ) );
        wp_admin_css_color( 'fresh', _x( 'Gray', 'admin color scheme' ), admin_url( 'css/colors-fresh.css' ),
-               array( '#7c7976', '#c6c6c6', '#e0e0e0', '#f1f1f1' ) );
+               array( '#555', '#a0a0a0', '#ccc', '#f1f1f1' ) );
 }
 
 /**
 }
 
 /**
@@ -2066,7 +2064,7 @@ function wp_admin_css_uri( $file = 'wp-admin' ) {
  * "Intelligently" decides to enqueue or to print the CSS file. If the
  * 'wp_print_styles' action has *not* yet been called, the CSS file will be
  * enqueued. If the wp_print_styles action *has* been called, the CSS link will
  * "Intelligently" decides to enqueue or to print the CSS file. If the
  * 'wp_print_styles' action has *not* yet been called, the CSS file will be
  * enqueued. If the wp_print_styles action *has* been called, the CSS link will
- * be printed. Printing may be forced by passing TRUE as the $force_echo
+ * be printed. Printing may be forced by passing true as the $force_echo
  * (second) parameter.
  *
  * For backward compatibility with WordPress 2.3 calling method: If the $file
  * (second) parameter.
  *
  * For backward compatibility with WordPress 2.3 calling method: If the $file
@@ -2080,7 +2078,7 @@ function wp_admin_css_uri( $file = 'wp-admin' ) {
  *
  * @param string $file Optional. Style handle name or file name (without ".css" extension) relative
  *      to wp-admin/. Defaults to 'wp-admin'.
  *
  * @param string $file Optional. Style handle name or file name (without ".css" extension) relative
  *      to wp-admin/. Defaults to 'wp-admin'.
- * @param bool $force_echo Optional.  Force the stylesheet link to be printed rather than enqueued.
+ * @param bool $force_echo Optional. Force the stylesheet link to be printed rather than enqueued.
  */
 function wp_admin_css( $file = 'wp-admin', $force_echo = false ) {
        global $wp_styles;
  */
 function wp_admin_css( $file = 'wp-admin', $force_echo = false ) {
        global $wp_styles;
@@ -2091,7 +2089,7 @@ function wp_admin_css( $file = 'wp-admin', $force_echo = false ) {
        $handle = 0 === strpos( $file, 'css/' ) ? substr( $file, 4 ) : $file;
 
        if ( $wp_styles->query( $handle ) ) {
        $handle = 0 === strpos( $file, 'css/' ) ? substr( $file, 4 ) : $file;
 
        if ( $wp_styles->query( $handle ) ) {
-               if ( $force_echo || did_action( 'wp_print_styles' ) ) // we already printed the style queue.  Print this one immediately
+               if ( $force_echo || did_action( 'wp_print_styles' ) ) // we already printed the style queue. Print this one immediately
                        wp_print_styles( $handle );
                else // Add to style queue
                        wp_enqueue_style( $handle );
                        wp_print_styles( $handle );
                else // Add to style queue
                        wp_enqueue_style( $handle );
@@ -2099,7 +2097,7 @@ function wp_admin_css( $file = 'wp-admin', $force_echo = false ) {
        }
 
        echo apply_filters( 'wp_admin_css', "<link rel='stylesheet' href='" . esc_url( wp_admin_css_uri( $file ) ) . "' type='text/css' />\n", $file );
        }
 
        echo apply_filters( 'wp_admin_css', "<link rel='stylesheet' href='" . esc_url( wp_admin_css_uri( $file ) ) . "' type='text/css' />\n", $file );
-       if ( is_rtl() )
+       if ( function_exists( 'is_rtl' ) && is_rtl() )
                echo apply_filters( 'wp_admin_css', "<link rel='stylesheet' href='" . esc_url( wp_admin_css_uri( "$file-rtl" ) ) . "' type='text/css' />\n", "$file-rtl" );
 }
 
                echo apply_filters( 'wp_admin_css', "<link rel='stylesheet' href='" . esc_url( wp_admin_css_uri( "$file-rtl" ) ) . "' type='text/css' />\n", "$file-rtl" );
 }
 
@@ -2107,7 +2105,7 @@ function wp_admin_css( $file = 'wp-admin', $force_echo = false ) {
  * Enqueues the default ThickBox js and css.
  *
  * If any of the settings need to be changed, this can be done with another js
  * Enqueues the default ThickBox js and css.
  *
  * If any of the settings need to be changed, this can be done with another js
- * file similar to media-upload.js and theme-preview.js. That file should
+ * file similar to media-upload.js. That file should
  * require array('thickbox') to ensure it is loaded after.
  *
  * @since 2.5.0
  * require array('thickbox') to ensure it is loaded after.
  *
  * @since 2.5.0
@@ -2283,5 +2281,3 @@ function __checked_selected_helper( $helper, $current, $echo, $type ) {
 
        return $result;
 }
 
        return $result;
 }
-
-?>
index 02b8750847730782d9e0c35a9c938b7c67f05da8..dd9df6e73f69480b688ac6bd950411412722d637 100644 (file)
@@ -197,7 +197,7 @@ function wp_remote_retrieve_body(&$response) {
  * @since 3.2.0
  *
  * @param array  $capabilities Array of capabilities to test or a wp_remote_request() $args array.
  * @since 3.2.0
  *
  * @param array  $capabilities Array of capabilities to test or a wp_remote_request() $args array.
- * @param string $url Optional.  If given, will check if the URL requires SSL and adds that requirement to the capabilities array.
+ * @param string $url Optional. If given, will check if the URL requires SSL and adds that requirement to the capabilities array.
  *
  * @return bool
  */
  *
  * @return bool
  */
@@ -222,3 +222,80 @@ function wp_http_supports( $capabilities = array(), $url = null ) {
 
        return (bool) $objFetchSite->_get_first_available_transport( $capabilities );
 }
 
        return (bool) $objFetchSite->_get_first_available_transport( $capabilities );
 }
+
+/**
+ * Get the HTTP Origin of the current request.
+ *
+ * @since 3.4.0
+ *
+ * @return string URL of the origin. Empty string if no origin.
+ */
+function get_http_origin() {
+       $origin = '';
+       if ( ! empty ( $_SERVER[ 'HTTP_ORIGIN' ] ) )
+               $origin = $_SERVER[ 'HTTP_ORIGIN' ];
+
+       return apply_filters( 'http_origin', $origin );
+}
+
+/**
+ * Retrieve list of allowed http origins.
+ *
+ * @since 3.4.0
+ *
+ * @return array Array of origin URLs.
+ */
+function get_allowed_http_origins() {
+       $admin_origin = parse_url( admin_url() );
+       $home_origin = parse_url( home_url() );
+
+       // @todo preserve port?
+       $allowed_origins = array_unique( array(
+               'http://' . $admin_origin[ 'host' ],
+               'https://' . $admin_origin[ 'host' ],
+               'http://' . $home_origin[ 'host' ],
+               'https://' . $home_origin[ 'host' ],
+       ) );
+
+       return apply_filters( 'allowed_http_origins' , $allowed_origins );
+}
+
+/**
+ * Determines if the http origin is an authorized one.
+ *
+ * @since 3.4.0
+ *
+ * @param string Origin URL. If not provided, the value of get_http_origin() is used.
+ * @return bool True if the origin is allowed. False otherwise.
+ */
+function is_allowed_http_origin( $origin = null ) {
+       $origin_arg = $origin;
+
+       if ( null === $origin )
+               $origin = get_http_origin();
+
+       if ( $origin && ! in_array( $origin, get_allowed_http_origins() ) )
+               $origin = '';
+
+       return apply_filters( 'allowed_http_origin', $origin, $origin_arg );
+}
+
+/**
+ * Send Access-Control-Allow-Origin and related headers if the current request
+ * is from an allowed origin.
+ *
+ * @since 3.4.0
+ *
+ * @return bool|string Returns the origin URL if headers are sent. Returns false
+ * if headers are not sent.
+ */
+function send_origin_headers() {
+       $origin = get_http_origin();
+       if ( ! is_allowed_http_origin( $origin ) )
+               return false;
+
+       @header( 'Access-Control-Allow-Origin: ' .  $origin );
+       @header( 'Access-Control-Allow-Credentials: true' );
+
+       return $origin;
+}
\ No newline at end of file
diff --git a/wp-includes/images/admin-bar-sprite-2x.png b/wp-includes/images/admin-bar-sprite-2x.png
new file mode 100644 (file)
index 0000000..f329c86
Binary files /dev/null and b/wp-includes/images/admin-bar-sprite-2x.png differ
index 57f4a854b1857cbd34d3083117740478aaa8d0f0..0479c56cd41e5d460a9c5827280bca7e2c2cb443 100644 (file)
@@ -59,6 +59,14 @@ if ( typeof(jQuery) != 'undefined' ) {
                        target.siblings('.ab-sub-wrapper').find('.ab-item').each(refresh);
                });
 
                        target.siblings('.ab-sub-wrapper').find('.ab-item').each(refresh);
                });
 
+               $('#wpadminbar').click( function(e) {
+                       if ( e.target.id != 'wpadminbar' && e.target.id != 'wp-admin-bar-top-secondary' )
+                               return;
+
+                       e.preventDefault();
+                       $('html, body').animate({ scrollTop: 0 }, 'fast');
+               });
+
        });
 } else {
        (function(d, w) {
        });
 } else {
        (function(d, w) {
@@ -178,6 +186,40 @@ if ( typeof(jQuery) != 'undefined' ) {
                                }
                        }
                        return false;
                                }
                        }
                        return false;
+               },
+
+               scrollToTop = function(t) {
+                       var distance, speed, step, steps, timer, speed_step;
+
+                       // Ensure that the #wpadminbar was the target of the click.
+                       if ( t.id != 'wpadminbar' && t.id != 'wp-admin-bar-top-secondary' )
+                               return;
+
+                       distance    = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
+
+                       if ( distance < 1 )
+                               return;
+
+                       speed_step = distance > 800 ? 130 : 100;
+                       speed     = Math.min( 12, Math.round( distance / speed_step ) );
+                       step      = distance > 800 ? Math.round( distance / 30  ) : Math.round( distance / 20  );
+                       steps     = [];
+                       timer     = 0;
+
+                       // Animate scrolling to the top of the page by generating steps to
+                       // the top of the page and shifting to each step at a set interval.
+                       while ( distance ) {
+                               distance -= step;
+                               if ( distance < 0 )
+                                       distance = 0;
+                               steps.push( distance );
+
+                               setTimeout( function() {
+                                       window.scrollTo( 0, steps.shift() );
+                               }, timer * speed );
+
+                               timer++;
+                       }
                };
 
                addEvent(w, 'load', function() {
                };
 
                addEvent(w, 'load', function() {
@@ -198,6 +240,10 @@ if ( typeof(jQuery) != 'undefined' ) {
                                });
 
                                addEvent(aB, 'click', clickShortlink );
                                });
 
                                addEvent(aB, 'click', clickShortlink );
+
+                               addEvent(aB, 'click', function(e) {
+                                       scrollToTop( e.target || e.srcElement );
+                               });
                        }
 
                        if ( w.location.hash )
                        }
 
                        if ( w.location.hash )
@@ -206,4 +252,3 @@ if ( typeof(jQuery) != 'undefined' ) {
        })(document, window);
 
 }
        })(document, window);
 
 }
-
index 8856c1b486af28824f772a916f292c56abeddfc8..b9600f22e7c1b361c76b510a2cb808020c991643 100644 (file)
@@ -1 +1 @@
-if(typeof(jQuery)!="undefined"){if(typeof(jQuery.fn.hoverIntent)=="undefined"){(function(b){b.fn.hoverIntent=function(p,r){var g={sensitivity:7,interval:100,timeout:0};g=b.extend(g,r?{over:p,out:r}:p);var a,f,t,v;var u=function(c){a=c.pageX;f=c.pageY};var w=function(c,d){d.hoverIntent_t=clearTimeout(d.hoverIntent_t);if((Math.abs(t-a)+Math.abs(v-f))<g.sensitivity){b(d).unbind("mousemove",u);d.hoverIntent_s=1;return g.over.apply(d,[c])}else{t=a;v=f;d.hoverIntent_t=setTimeout(function(){w(c,d)},g.interval)}};var s=function(c,d){d.hoverIntent_t=clearTimeout(d.hoverIntent_t);d.hoverIntent_s=0;return g.out.apply(d,[c])};var x=function(e){var d=this;var c=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(c&&c!=this){try{c=c.parentNode}catch(e){c=this}}if(c==this){if(b.browser.mozilla){if(e.type=="mouseout"){d.mtout=setTimeout(function(){q(e,d)},30)}else{if(d.mtout){d.mtout=clearTimeout(d.mtout)}}}return}else{if(d.mtout){d.mtout=clearTimeout(d.mtout)}q(e,d)}};var q=function(e,d){var c=jQuery.extend({},e);if(d.hoverIntent_t){d.hoverIntent_t=clearTimeout(d.hoverIntent_t)}if(e.type=="mouseover"){t=c.pageX;v=c.pageY;b(d).bind("mousemove",u);if(d.hoverIntent_s!=1){d.hoverIntent_t=setTimeout(function(){w(c,d)},g.interval)}}else{b(d).unbind("mousemove",u);if(d.hoverIntent_s==1){d.hoverIntent_t=setTimeout(function(){s(c,d)},g.timeout)}}};return this.mouseover(x).mouseout(x)}})(jQuery)}jQuery(document).ready(function(b){var a=function(c,e){var f=b(e),d=f.attr("tabindex");if(d){f.attr("tabindex","0").attr("tabindex",d)}};b("#wpadminbar").removeClass("nojq").removeClass("nojs").find("li.menupop").hoverIntent({over:function(c){b(this).addClass("hover")},out:function(c){b(this).removeClass("hover")},timeout:180,sensitivity:7,interval:100});b("#wp-admin-bar-get-shortlink").click(function(c){c.preventDefault();b(this).addClass("selected").children(".shortlink-input").blur(function(){b(this).parents("#wp-admin-bar-get-shortlink").removeClass("selected")}).focus().select()});b("#wpadminbar li.menupop > .ab-item").bind("keydown.adminbar",function(f){if(f.which!=13){return}var d=b(f.target),c=d.closest("ab-sub-wrapper");f.stopPropagation();f.preventDefault();if(!c.length){c=b("#wpadminbar .quicklinks")}c.find(".menupop").removeClass("hover");d.parent().toggleClass("hover");d.siblings(".ab-sub-wrapper").find(".ab-item").each(a)}).each(a);b("#wpadminbar .ab-item").bind("keydown.adminbar",function(d){if(d.which!=27){return}var c=b(d.target);d.stopPropagation();d.preventDefault();c.closest(".hover").removeClass("hover").children(".ab-item").focus();c.siblings(".ab-sub-wrapper").find(".ab-item").each(a)})})}else{(function(i,k){var c=function(n,m,d){if(n.addEventListener){n.addEventListener(m,d,false)}else{if(n.attachEvent){n.attachEvent("on"+m,function(){return d.call(n,window.event)})}}},e,f=new RegExp("\\bhover\\b","g"),a=[],j=new RegExp("\\bselected\\b","g"),g=function(m){var d=a.length;while(d--){if(a[d]&&m==a[d][1]){return a[d][0]}}return false},h=function(s){var n,d,q,m,p,r,u=[],o=0;while(s&&s!=e&&s!=i){if("LI"==s.nodeName.toUpperCase()){u[u.length]=s;d=g(s);if(d){clearTimeout(d)}s.className=s.className?(s.className.replace(f,"")+" hover"):"hover";m=s}s=s.parentNode}if(m&&m.parentNode){p=m.parentNode;if(p&&"UL"==p.nodeName.toUpperCase()){n=p.childNodes.length;while(n--){r=p.childNodes[n];if(r!=m){r.className=r.className?r.className.replace(j,""):""}}}}n=a.length;while(n--){q=false;o=u.length;while(o--){if(u[o]==a[n][1]){q=true}}if(!q){a[n][1].className=a[n][1].className?a[n][1].className.replace(f,""):""}}},l=function(d){while(d&&d!=e&&d!=i){if("LI"==d.nodeName.toUpperCase()){(function(m){var n=setTimeout(function(){m.className=m.className?m.className.replace(f,""):""},500);a[a.length]=[n,m]})(d)}d=d.parentNode}},b=function(p){var n,d,o,m=p.target||p.srcElement;while(true){if(!m||m==i||m==e){return}if(m.id&&m.id=="wp-admin-bar-get-shortlink"){break}m=m.parentNode}if(p.preventDefault){p.preventDefault()}p.returnValue=false;if(-1==m.className.indexOf("selected")){m.className+=" selected"}for(n=0,d=m.childNodes.length;n<d;n++){o=m.childNodes[n];if(o.className&&-1!=o.className.indexOf("shortlink-input")){o.focus();o.select();o.onblur=function(){m.className=m.className?m.className.replace(j,""):""};break}}return false};c(k,"load",function(){e=i.getElementById("wpadminbar");if(i.body&&e){i.body.appendChild(e);if(e.className){e.className=e.className.replace(/nojs/,"")}c(e,"mouseover",function(d){h(d.target||d.srcElement)});c(e,"mouseout",function(d){l(d.target||d.srcElement)});c(e,"click",b)}if(k.location.hash){k.scrollBy(0,-32)}})})(document,window)};
\ No newline at end of file
+if(typeof(jQuery)!="undefined"){if(typeof(jQuery.fn.hoverIntent)=="undefined"){(function(b){b.fn.hoverIntent=function(p,r){var g={sensitivity:7,interval:100,timeout:0};g=b.extend(g,r?{over:p,out:r}:p);var a,f,t,v;var u=function(c){a=c.pageX;f=c.pageY};var w=function(c,d){d.hoverIntent_t=clearTimeout(d.hoverIntent_t);if((Math.abs(t-a)+Math.abs(v-f))<g.sensitivity){b(d).unbind("mousemove",u);d.hoverIntent_s=1;return g.over.apply(d,[c])}else{t=a;v=f;d.hoverIntent_t=setTimeout(function(){w(c,d)},g.interval)}};var s=function(c,d){d.hoverIntent_t=clearTimeout(d.hoverIntent_t);d.hoverIntent_s=0;return g.out.apply(d,[c])};var x=function(e){var d=this;var c=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(c&&c!=this){try{c=c.parentNode}catch(e){c=this}}if(c==this){if(b.browser.mozilla){if(e.type=="mouseout"){d.mtout=setTimeout(function(){q(e,d)},30)}else{if(d.mtout){d.mtout=clearTimeout(d.mtout)}}}return}else{if(d.mtout){d.mtout=clearTimeout(d.mtout)}q(e,d)}};var q=function(e,d){var c=jQuery.extend({},e);if(d.hoverIntent_t){d.hoverIntent_t=clearTimeout(d.hoverIntent_t)}if(e.type=="mouseover"){t=c.pageX;v=c.pageY;b(d).bind("mousemove",u);if(d.hoverIntent_s!=1){d.hoverIntent_t=setTimeout(function(){w(c,d)},g.interval)}}else{b(d).unbind("mousemove",u);if(d.hoverIntent_s==1){d.hoverIntent_t=setTimeout(function(){s(c,d)},g.timeout)}}};return this.mouseover(x).mouseout(x)}})(jQuery)}jQuery(document).ready(function(b){var a=function(c,e){var f=b(e),d=f.attr("tabindex");if(d){f.attr("tabindex","0").attr("tabindex",d)}};b("#wpadminbar").removeClass("nojq").removeClass("nojs").find("li.menupop").hoverIntent({over:function(c){b(this).addClass("hover")},out:function(c){b(this).removeClass("hover")},timeout:180,sensitivity:7,interval:100});b("#wp-admin-bar-get-shortlink").click(function(c){c.preventDefault();b(this).addClass("selected").children(".shortlink-input").blur(function(){b(this).parents("#wp-admin-bar-get-shortlink").removeClass("selected")}).focus().select()});b("#wpadminbar li.menupop > .ab-item").bind("keydown.adminbar",function(f){if(f.which!=13){return}var d=b(f.target),c=d.closest("ab-sub-wrapper");f.stopPropagation();f.preventDefault();if(!c.length){c=b("#wpadminbar .quicklinks")}c.find(".menupop").removeClass("hover");d.parent().toggleClass("hover");d.siblings(".ab-sub-wrapper").find(".ab-item").each(a)}).each(a);b("#wpadminbar .ab-item").bind("keydown.adminbar",function(d){if(d.which!=27){return}var c=b(d.target);d.stopPropagation();d.preventDefault();c.closest(".hover").removeClass("hover").children(".ab-item").focus();c.siblings(".ab-sub-wrapper").find(".ab-item").each(a)});b("#wpadminbar").click(function(c){if(c.target.id!="wpadminbar"&&c.target.id!="wp-admin-bar-top-secondary"){return}c.preventDefault();b("html, body").animate({scrollTop:0},"fast")})})}else{(function(j,l){var e=function(o,n,d){if(o.addEventListener){o.addEventListener(n,d,false)}else{if(o.attachEvent){o.attachEvent("on"+n,function(){return d.call(o,window.event)})}}},f,g=new RegExp("\\bhover\\b","g"),b=[],k=new RegExp("\\bselected\\b","g"),h=function(n){var d=b.length;while(d--){if(b[d]&&n==b[d][1]){return b[d][0]}}return false},i=function(u){var o,d,r,n,q,s,v=[],p=0;while(u&&u!=f&&u!=j){if("LI"==u.nodeName.toUpperCase()){v[v.length]=u;d=h(u);if(d){clearTimeout(d)}u.className=u.className?(u.className.replace(g,"")+" hover"):"hover";n=u}u=u.parentNode}if(n&&n.parentNode){q=n.parentNode;if(q&&"UL"==q.nodeName.toUpperCase()){o=q.childNodes.length;while(o--){s=q.childNodes[o];if(s!=n){s.className=s.className?s.className.replace(k,""):""}}}}o=b.length;while(o--){r=false;p=v.length;while(p--){if(v[p]==b[o][1]){r=true}}if(!r){b[o][1].className=b[o][1].className?b[o][1].className.replace(g,""):""}}},m=function(d){while(d&&d!=f&&d!=j){if("LI"==d.nodeName.toUpperCase()){(function(n){var o=setTimeout(function(){n.className=n.className?n.className.replace(g,""):""},500);b[b.length]=[o,n]})(d)}d=d.parentNode}},c=function(q){var o,d,p,n=q.target||q.srcElement;while(true){if(!n||n==j||n==f){return}if(n.id&&n.id=="wp-admin-bar-get-shortlink"){break}n=n.parentNode}if(q.preventDefault){q.preventDefault()}q.returnValue=false;if(-1==n.className.indexOf("selected")){n.className+=" selected"}for(o=0,d=n.childNodes.length;o<d;o++){p=n.childNodes[o];if(p.className&&-1!=p.className.indexOf("shortlink-input")){p.focus();p.select();p.onblur=function(){n.className=n.className?n.className.replace(k,""):""};break}}return false},a=function(n){var s,q,p,d,r,o;if(n.id!="wpadminbar"&&n.id!="wp-admin-bar-top-secondary"){return}s=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;if(s<1){return}o=s>800?130:100;q=Math.min(12,Math.round(s/o));p=s>800?Math.round(s/30):Math.round(s/20);d=[];r=0;while(s){s-=p;if(s<0){s=0}d.push(s);setTimeout(function(){window.scrollTo(0,d.shift())},r*q);r++}};e(l,"load",function(){f=j.getElementById("wpadminbar");if(j.body&&f){j.body.appendChild(f);if(f.className){f.className=f.className.replace(/nojs/,"")}e(f,"mouseover",function(d){i(d.target||d.srcElement)});e(f,"mouseout",function(d){m(d.target||d.srcElement)});e(f,"click",c);e(f,"click",function(d){a(d.target||d.srcElement)})}if(l.location.hash){l.scrollBy(0,-32)}})})(document,window)};
\ No newline at end of file
index f1b3738354e6bfb2bd40fdd15b86e01fae906e2e..66e3bbc681e13db6157de9819ab8c5163ae11815 100644 (file)
@@ -229,7 +229,7 @@ function autosave_enable_buttons() {
 
 function autosave_disable_buttons() {
        jQuery(':button, :submit', '#submitpost').prop('disabled', true);
 
 function autosave_disable_buttons() {
        jQuery(':button, :submit', '#submitpost').prop('disabled', true);
-       // Re-enable 5 sec later.  Just gives autosave a head start to avoid collisions.
+       // Re-enable 5 sec later. Just gives autosave a head start to avoid collisions.
        setTimeout(autosave_enable_buttons, 5000);
 }
 
        setTimeout(autosave_enable_buttons, 5000);
 }
 
diff --git a/wp-includes/js/customize-base.dev.js b/wp-includes/js/customize-base.dev.js
new file mode 100644 (file)
index 0000000..d25ec31
--- /dev/null
@@ -0,0 +1,586 @@
+if ( typeof wp === 'undefined' )
+       var wp = {};
+
+(function( exports, $ ){
+       var api, extend, ctor, inherits,
+               slice = Array.prototype.slice;
+
+       /* =====================================================================
+        * Micro-inheritance - thank you, backbone.js.
+        * ===================================================================== */
+
+       extend = function( protoProps, classProps ) {
+               var child = inherits( this, protoProps, classProps );
+               child.extend = this.extend;
+               return child;
+       };
+
+       // Shared empty constructor function to aid in prototype-chain creation.
+       ctor = function() {};
+
+       // Helper function to correctly set up the prototype chain, for subclasses.
+       // Similar to `goog.inherits`, but uses a hash of prototype properties and
+       // class properties to be extended.
+       inherits = function( parent, protoProps, staticProps ) {
+               var child;
+
+               // The constructor function for the new subclass is either defined by you
+               // (the "constructor" property in your `extend` definition), or defaulted
+               // by us to simply call `super()`.
+               if ( protoProps && protoProps.hasOwnProperty( 'constructor' ) ) {
+                       child = protoProps.constructor;
+               } else {
+                       child = function() {
+                               // Storing the result `super()` before returning the value
+                               // prevents a bug in Opera where, if the constructor returns
+                               // a function, Opera will reject the return value in favor of
+                               // the original object. This causes all sorts of trouble.
+                               var result = parent.apply( this, arguments );
+                               return result;
+                       };
+               }
+
+               // Inherit class (static) properties from parent.
+               $.extend( child, parent );
+
+               // Set the prototype chain to inherit from `parent`, without calling
+               // `parent`'s constructor function.
+               ctor.prototype  = parent.prototype;
+               child.prototype = new ctor();
+
+               // Add prototype properties (instance properties) to the subclass,
+               // if supplied.
+               if ( protoProps )
+                       $.extend( child.prototype, protoProps );
+
+               // Add static properties to the constructor function, if supplied.
+               if ( staticProps )
+                       $.extend( child, staticProps );
+
+               // Correctly set child's `prototype.constructor`.
+               child.prototype.constructor = child;
+
+               // Set a convenience property in case the parent's prototype is needed later.
+               child.__super__ = parent.prototype;
+
+               return child;
+       };
+
+       api = {};
+
+       /* =====================================================================
+        * Base class.
+        * ===================================================================== */
+
+       api.Class = function( applicator, argsArray, options ) {
+               var magic, args = arguments;
+
+               if ( applicator && argsArray && api.Class.applicator === applicator ) {
+                       args = argsArray;
+                       $.extend( this, options || {} );
+               }
+
+               magic = this;
+               if ( this.instance ) {
+                       magic = function() {
+                               return magic.instance.apply( magic, arguments );
+                       };
+
+                       $.extend( magic, this );
+               }
+
+               magic.initialize.apply( magic, args );
+               return magic;
+       };
+
+       api.Class.applicator = {};
+
+       api.Class.prototype.initialize = function() {};
+
+       /*
+        * Checks whether a given instance extended a constructor.
+        *
+        * The magic surrounding the instance parameter causes the instanceof
+        * keyword to return inaccurate results; it defaults to the function's
+        * prototype instead of the constructor chain. Hence this function.
+        */
+       api.Class.prototype.extended = function( constructor ) {
+               var proto = this;
+
+               while ( typeof proto.constructor !== 'undefined' ) {
+                       if ( proto.constructor === constructor )
+                               return true;
+                       if ( typeof proto.constructor.__super__ === 'undefined' )
+                               return false;
+                       proto = proto.constructor.__super__;
+               }
+               return false;
+       };
+
+       api.Class.extend = extend;
+
+       /* =====================================================================
+        * Events mixin.
+        * ===================================================================== */
+
+       api.Events = {
+               trigger: function( id ) {
+                       if ( this.topics && this.topics[ id ] )
+                               this.topics[ id ].fireWith( this, slice.call( arguments, 1 ) );
+                       return this;
+               },
+
+               bind: function( id, callback ) {
+                       this.topics = this.topics || {};
+                       this.topics[ id ] = this.topics[ id ] || $.Callbacks();
+                       this.topics[ id ].add.apply( this.topics[ id ], slice.call( arguments, 1 ) );
+                       return this;
+               },
+
+               unbind: function( id, callback ) {
+                       if ( this.topics && this.topics[ id ] )
+                               this.topics[ id ].remove.apply( this.topics[ id ], slice.call( arguments, 1 ) );
+                       return this;
+               }
+       };
+
+       /* =====================================================================
+        * Observable values that support two-way binding.
+        * ===================================================================== */
+
+       api.Value = api.Class.extend({
+               initialize: function( initial, options ) {
+                       this._value = initial; // @todo: potentially change this to a this.set() call.
+                       this.callbacks = $.Callbacks();
+
+                       $.extend( this, options || {} );
+
+                       this.set = $.proxy( this.set, this );
+               },
+
+               /*
+                * Magic. Returns a function that will become the instance.
+                * Set to null to prevent the instance from extending a function.
+                */
+               instance: function() {
+                       return arguments.length ? this.set.apply( this, arguments ) : this.get();
+               },
+
+               get: function() {
+                       return this._value;
+               },
+
+               set: function( to ) {
+                       var from = this._value;
+
+                       to = this._setter.apply( this, arguments );
+                       to = this.validate( to );
+
+                       // Bail if the sanitized value is null or unchanged.
+                       if ( null === to || this._value === to )
+                               return this;
+
+                       this._value = to;
+
+                       this.callbacks.fireWith( this, [ to, from ] );
+
+                       return this;
+               },
+
+               _setter: function( to ) {
+                       return to;
+               },
+
+               setter: function( callback ) {
+                       var from = this.get();
+                       this._setter = callback;
+                       // Temporarily clear value so setter can decide if it's valid.
+                       this._value = null;
+                       this.set( from );
+                       return this;
+               },
+
+               resetSetter: function() {
+                       this._setter = this.constructor.prototype._setter;
+                       this.set( this.get() );
+                       return this;
+               },
+
+               validate: function( value ) {
+                       return value;
+               },
+
+               bind: function( callback ) {
+                       this.callbacks.add.apply( this.callbacks, arguments );
+                       return this;
+               },
+
+               unbind: function( callback ) {
+                       this.callbacks.remove.apply( this.callbacks, arguments );
+                       return this;
+               },
+
+               link: function() { // values*
+                       var set = this.set;
+                       $.each( arguments, function() {
+                               this.bind( set );
+                       });
+                       return this;
+               },
+
+               unlink: function() { // values*
+                       var set = this.set;
+                       $.each( arguments, function() {
+                               this.unbind( set );
+                       });
+                       return this;
+               },
+
+               sync: function() { // values*
+                       var that = this;
+                       $.each( arguments, function() {
+                               that.link( this );
+                               this.link( that );
+                       });
+                       return this;
+               },
+
+               unsync: function() { // values*
+                       var that = this;
+                       $.each( arguments, function() {
+                               that.unlink( this );
+                               this.unlink( that );
+                       });
+                       return this;
+               }
+       });
+
+       /* =====================================================================
+        * A collection of observable values.
+        * ===================================================================== */
+
+       api.Values = api.Class.extend({
+               defaultConstructor: api.Value,
+
+               initialize: function( options ) {
+                       $.extend( this, options || {} );
+
+                       this._value = {};
+                       this._deferreds = {};
+               },
+
+               instance: function( id ) {
+                       if ( arguments.length === 1 )
+                               return this.value( id );
+
+                       return this.when.apply( this, arguments );
+               },
+
+               value: function( id ) {
+                       return this._value[ id ];
+               },
+
+               has: function( id ) {
+                       return typeof this._value[ id ] !== 'undefined';
+               },
+
+               add: function( id, value ) {
+                       if ( this.has( id ) )
+                               return this.value( id );
+
+                       this._value[ id ] = value;
+                       value.parent = this;
+                       if ( value.extended( api.Value ) )
+                               value.bind( this._change );
+
+                       this.trigger( 'add', value );
+
+                       if ( this._deferreds[ id ] )
+                               this._deferreds[ id ].resolve();
+
+                       return this._value[ id ];
+               },
+
+               create: function( id ) {
+                       return this.add( id, new this.defaultConstructor( api.Class.applicator, slice.call( arguments, 1 ) ) );
+               },
+
+               each: function( callback, context ) {
+                       context = typeof context === 'undefined' ? this : context;
+
+                       $.each( this._value, function( key, obj ) {
+                               callback.call( context, obj, key );
+                       });
+               },
+
+               remove: function( id ) {
+                       var value;
+
+                       if ( this.has( id ) ) {
+                               value = this.value( id );
+                               this.trigger( 'remove', value );
+                               if ( value.extended( api.Value ) )
+                                       value.unbind( this._change );
+                               delete value.parent;
+                       }
+
+                       delete this._value[ id ];
+                       delete this._deferreds[ id ];
+               },
+
+               /**
+                * Runs a callback once all requested values exist.
+                *
+                * when( ids*, [callback] );
+                *
+                * For example:
+                *     when( id1, id2, id3, function( value1, value2, value3 ) {} );
+                *
+                * @returns $.Deferred.promise();
+                */
+               when: function() {
+                       var self = this,
+                               ids  = slice.call( arguments ),
+                               dfd  = $.Deferred();
+
+                       // If the last argument is a callback, bind it to .done()
+                       if ( $.isFunction( ids[ ids.length - 1 ] ) )
+                               dfd.done( ids.pop() );
+
+                       $.when.apply( $, $.map( ids, function( id ) {
+                               if ( self.has( id ) )
+                                       return;
+
+                               return self._deferreds[ id ] = self._deferreds[ id ] || $.Deferred();
+                       })).done( function() {
+                               var values = $.map( ids, function( id ) {
+                                               return self( id );
+                                       });
+
+                               // If a value is missing, we've used at least one expired deferred.
+                               // Call Values.when again to generate a new deferred.
+                               if ( values.length !== ids.length ) {
+                                       // ids.push( callback );
+                                       self.when.apply( self, ids ).done( function() {
+                                               dfd.resolveWith( self, values );
+                                       });
+                                       return;
+                               }
+
+                               dfd.resolveWith( self, values );
+                       });
+
+                       return dfd.promise();
+               },
+
+               _change: function() {
+                       this.parent.trigger( 'change', this );
+               }
+       });
+
+       $.extend( api.Values.prototype, api.Events );
+
+       /* =====================================================================
+        * An observable value that syncs with an element.
+        *
+        * Handles inputs, selects, and textareas by default.
+        * ===================================================================== */
+
+       api.ensure = function( element ) {
+               return typeof element == 'string' ? $( element ) : element;
+       };
+
+       api.Element = api.Value.extend({
+               initialize: function( element, options ) {
+                       var self = this,
+                               synchronizer = api.Element.synchronizer.html,
+                               type, update, refresh;
+
+                       this.element = api.ensure( element );
+                       this.events = '';
+
+                       if ( this.element.is('input, select, textarea') ) {
+                               this.events += 'change';
+                               synchronizer = api.Element.synchronizer.val;
+
+                               if ( this.element.is('input') ) {
+                                       type = this.element.prop('type');
+                                       if ( api.Element.synchronizer[ type ] )
+                                               synchronizer = api.Element.synchronizer[ type ];
+                                       if ( 'text' === type || 'password' === type )
+                                               this.events += ' keyup';
+                               } else if ( this.element.is('textarea') ) {
+                                       this.events += ' keyup';
+                               }
+                       }
+
+                       api.Value.prototype.initialize.call( this, null, $.extend( options || {}, synchronizer ) );
+                       this._value = this.get();
+
+                       update  = this.update;
+                       refresh = this.refresh;
+
+                       this.update = function( to ) {
+                               if ( to !== refresh.call( self ) )
+                                       update.apply( this, arguments );
+                       };
+                       this.refresh = function() {
+                               self.set( refresh.call( self ) );
+                       };
+
+                       this.bind( this.update );
+                       this.element.bind( this.events, this.refresh );
+               },
+
+               find: function( selector ) {
+                       return $( selector, this.element );
+               },
+
+               refresh: function() {},
+
+               update: function() {}
+       });
+
+       api.Element.synchronizer = {};
+
+       $.each( [ 'html', 'val' ], function( i, method ) {
+               api.Element.synchronizer[ method ] = {
+                       update: function( to ) {
+                               this.element[ method ]( to );
+                       },
+                       refresh: function() {
+                               return this.element[ method ]();
+                       }
+               };
+       });
+
+       api.Element.synchronizer.checkbox = {
+               update: function( to ) {
+                       this.element.prop( 'checked', to );
+               },
+               refresh: function() {
+                       return this.element.prop( 'checked' );
+               }
+       };
+
+       api.Element.synchronizer.radio = {
+               update: function( to ) {
+                       this.element.filter( function() {
+                               return this.value === to;
+                       }).prop( 'checked', true );
+               },
+               refresh: function() {
+                       return this.element.filter( ':checked' ).val();
+               }
+       };
+
+       /* =====================================================================
+        * Messenger for postMessage.
+        * ===================================================================== */
+
+       $.support.postMessage = !! window.postMessage;
+
+       api.Messenger = api.Class.extend({
+               add: function( key, initial, options ) {
+                       return this[ key ] = new api.Value( initial, options );
+               },
+
+               /**
+                * Initialize Messenger.
+                *
+                * @param  {object} params        Parameters to configure the messenger.
+                *         {string} .url          The URL to communicate with.
+                *         {window} .targetWindow The window instance to communicate with. Default window.parent.
+                *         {string} .channel      If provided, will send the channel with each message and only accept messages a matching channel.
+                * @param  {object} options       Extend any instance parameter or method with this object.
+                */
+               initialize: function( params, options ) {
+                       // Target the parent frame by default, but only if a parent frame exists.
+                       var defaultTarget = window.parent == window ? null : window.parent;
+
+                       $.extend( this, options || {} );
+
+                       this.add( 'channel', params.channel );
+                       this.add( 'url', params.url || '' );
+                       this.add( 'targetWindow', params.targetWindow || defaultTarget );
+                       this.add( 'origin', this.url() ).link( this.url ).setter( function( to ) {
+                               return to.replace( /([^:]+:\/\/[^\/]+).*/, '$1' );
+                       });
+
+                       // Since we want jQuery to treat the receive function as unique
+                       // to this instance, we give the function a new guid.
+                       //
+                       // This will prevent every Messenger's receive function from being
+                       // unbound when calling $.off( 'message', this.receive );
+                       this.receive = $.proxy( this.receive, this );
+                       this.receive.guid = $.guid++;
+
+                       $( window ).on( 'message', this.receive );
+               },
+
+               destroy: function() {
+                       $( window ).off( 'message', this.receive );
+               },
+
+               receive: function( event ) {
+                       var message;
+
+                       event = event.originalEvent;
+
+                       if ( ! this.targetWindow() )
+                               return;
+
+                       // Check to make sure the origin is valid.
+                       if ( this.origin() && event.origin !== this.origin() )
+                               return;
+
+                       message = JSON.parse( event.data );
+
+                       // Check required message properties.
+                       if ( ! message || ! message.id || typeof message.data === 'undefined' )
+                               return;
+
+                       // Check if channel names match.
+                       if ( ( message.channel || this.channel() ) && this.channel() !== message.channel )
+                               return;
+
+                       this.trigger( message.id, message.data );
+               },
+
+               send: function( id, data ) {
+                       var message;
+
+                       data = typeof data === 'undefined' ? null : data;
+
+                       if ( ! this.url() || ! this.targetWindow() )
+                               return;
+
+                       message = { id: id, data: data };
+                       if ( this.channel() )
+                               message.channel = this.channel();
+
+                       this.targetWindow().postMessage( JSON.stringify( message ), this.origin() );
+               }
+       });
+
+       // Add the Events mixin to api.Messenger.
+       $.extend( api.Messenger.prototype, api.Events );
+
+       /* =====================================================================
+        * Core customize object.
+        * ===================================================================== */
+
+       api = $.extend( new api.Values(), api );
+       api.get = function() {
+               var result = {};
+
+               this.each( function( obj, key ) {
+                       result[ key ] = obj.get();
+               });
+
+               return result;
+       };
+
+       // Expose the API to the world.
+       exports.customize = api;
+})( wp, jQuery );
diff --git a/wp-includes/js/customize-base.js b/wp-includes/js/customize-base.js
new file mode 100644 (file)
index 0000000..9514949
--- /dev/null
@@ -0,0 +1 @@
+if(typeof wp==="undefined"){var wp={}}(function(a,d){var b,g,c,f,e=Array.prototype.slice;g=function(h,i){var j=f(this,h,i);j.extend=this.extend;return j};c=function(){};f=function(i,h,j){var k;if(h&&h.hasOwnProperty("constructor")){k=h.constructor}else{k=function(){var l=i.apply(this,arguments);return l}}d.extend(k,i);c.prototype=i.prototype;k.prototype=new c();if(h){d.extend(k.prototype,h)}if(j){d.extend(k,j)}k.prototype.constructor=k;k.__super__=i.prototype;return k};b={};b.Class=function(l,k,i){var j,h=arguments;if(l&&k&&b.Class.applicator===l){h=k;d.extend(this,i||{})}j=this;if(this.instance){j=function(){return j.instance.apply(j,arguments)};d.extend(j,this)}j.initialize.apply(j,h);return j};b.Class.applicator={};b.Class.prototype.initialize=function(){};b.Class.prototype.extended=function(h){var i=this;while(typeof i.constructor!=="undefined"){if(i.constructor===h){return true}if(typeof i.constructor.__super__==="undefined"){return false}i=i.constructor.__super__}return false};b.Class.extend=g;b.Events={trigger:function(h){if(this.topics&&this.topics[h]){this.topics[h].fireWith(this,e.call(arguments,1))}return this},bind:function(i,h){this.topics=this.topics||{};this.topics[i]=this.topics[i]||d.Callbacks();this.topics[i].add.apply(this.topics[i],e.call(arguments,1));return this},unbind:function(i,h){if(this.topics&&this.topics[i]){this.topics[i].remove.apply(this.topics[i],e.call(arguments,1))}return this}};b.Value=b.Class.extend({initialize:function(i,h){this._value=i;this.callbacks=d.Callbacks();d.extend(this,h||{});this.set=d.proxy(this.set,this)},instance:function(){return arguments.length?this.set.apply(this,arguments):this.get()},get:function(){return this._value},set:function(i){var h=this._value;i=this._setter.apply(this,arguments);i=this.validate(i);if(null===i||this._value===i){return this}this._value=i;this.callbacks.fireWith(this,[i,h]);return this},_setter:function(h){return h},setter:function(i){var h=this.get();this._setter=i;this._value=null;this.set(h);return this},resetSetter:function(){this._setter=this.constructor.prototype._setter;this.set(this.get());return this},validate:function(h){return h},bind:function(h){this.callbacks.add.apply(this.callbacks,arguments);return this},unbind:function(h){this.callbacks.remove.apply(this.callbacks,arguments);return this},link:function(){var h=this.set;d.each(arguments,function(){this.bind(h)});return this},unlink:function(){var h=this.set;d.each(arguments,function(){this.unbind(h)});return this},sync:function(){var h=this;d.each(arguments,function(){h.link(this);this.link(h)});return this},unsync:function(){var h=this;d.each(arguments,function(){h.unlink(this);this.unlink(h)});return this}});b.Values=b.Class.extend({defaultConstructor:b.Value,initialize:function(h){d.extend(this,h||{});this._value={};this._deferreds={}},instance:function(h){if(arguments.length===1){return this.value(h)}return this.when.apply(this,arguments)},value:function(h){return this._value[h]},has:function(h){return typeof this._value[h]!=="undefined"},add:function(i,h){if(this.has(i)){return this.value(i)}this._value[i]=h;h.parent=this;if(h.extended(b.Value)){h.bind(this._change)}this.trigger("add",h);if(this._deferreds[i]){this._deferreds[i].resolve()}return this._value[i]},create:function(h){return this.add(h,new this.defaultConstructor(b.Class.applicator,e.call(arguments,1)))},each:function(i,h){h=typeof h==="undefined"?this:h;d.each(this._value,function(j,k){i.call(h,k,j)})},remove:function(i){var h;if(this.has(i)){h=this.value(i);this.trigger("remove",h);if(h.extended(b.Value)){h.unbind(this._change)}delete h.parent}delete this._value[i];delete this._deferreds[i]},when:function(){var i=this,j=e.call(arguments),h=d.Deferred();if(d.isFunction(j[j.length-1])){h.done(j.pop())}d.when.apply(d,d.map(j,function(k){if(i.has(k)){return}return i._deferreds[k]=i._deferreds[k]||d.Deferred()})).done(function(){var k=d.map(j,function(l){return i(l)});if(k.length!==j.length){i.when.apply(i,j).done(function(){h.resolveWith(i,k)});return}h.resolveWith(i,k)});return h.promise()},_change:function(){this.parent.trigger("change",this)}});d.extend(b.Values.prototype,b.Events);b.ensure=function(h){return typeof h=="string"?d(h):h};b.Element=b.Value.extend({initialize:function(j,i){var h=this,m=b.Element.synchronizer.html,l,n,k;this.element=b.ensure(j);this.events="";if(this.element.is("input, select, textarea")){this.events+="change";m=b.Element.synchronizer.val;if(this.element.is("input")){l=this.element.prop("type");if(b.Element.synchronizer[l]){m=b.Element.synchronizer[l]}if("text"===l||"password"===l){this.events+=" keyup"}}else{if(this.element.is("textarea")){this.events+=" keyup"}}}b.Value.prototype.initialize.call(this,null,d.extend(i||{},m));this._value=this.get();n=this.update;k=this.refresh;this.update=function(o){if(o!==k.call(h)){n.apply(this,arguments)}};this.refresh=function(){h.set(k.call(h))};this.bind(this.update);this.element.bind(this.events,this.refresh)},find:function(h){return d(h,this.element)},refresh:function(){},update:function(){}});b.Element.synchronizer={};d.each(["html","val"],function(h,j){b.Element.synchronizer[j]={update:function(i){this.element[j](i)},refresh:function(){return this.element[j]()}}});b.Element.synchronizer.checkbox={update:function(h){this.element.prop("checked",h)},refresh:function(){return this.element.prop("checked")}};b.Element.synchronizer.radio={update:function(h){this.element.filter(function(){return this.value===h}).prop("checked",true)},refresh:function(){return this.element.filter(":checked").val()}};d.support.postMessage=!!window.postMessage;b.Messenger=b.Class.extend({add:function(j,i,h){return this[j]=new b.Value(i,h)},initialize:function(j,h){var i=window.parent==window?null:window.parent;d.extend(this,h||{});this.add("channel",j.channel);this.add("url",j.url||"");this.add("targetWindow",j.targetWindow||i);this.add("origin",this.url()).link(this.url).setter(function(k){return k.replace(/([^:]+:\/\/[^\/]+).*/,"$1")});this.receive=d.proxy(this.receive,this);this.receive.guid=d.guid++;d(window).on("message",this.receive)},destroy:function(){d(window).off("message",this.receive)},receive:function(i){var h;i=i.originalEvent;if(!this.targetWindow()){return}if(this.origin()&&i.origin!==this.origin()){return}h=JSON.parse(i.data);if(!h||!h.id||typeof h.data==="undefined"){return}if((h.channel||this.channel())&&this.channel()!==h.channel){return}this.trigger(h.id,h.data)},send:function(j,i){var h;i=typeof i==="undefined"?null:i;if(!this.url()||!this.targetWindow()){return}h={id:j,data:i};if(this.channel()){h.channel=this.channel()}this.targetWindow().postMessage(JSON.stringify(h),this.origin())}});d.extend(b.Messenger.prototype,b.Events);b=d.extend(new b.Values(),b);b.get=function(){var h={};this.each(function(j,i){h[i]=j.get()});return h};a.customize=b})(wp,jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/customize-loader.dev.js b/wp-includes/js/customize-loader.dev.js
new file mode 100644 (file)
index 0000000..01cec6a
--- /dev/null
@@ -0,0 +1,159 @@
+if ( typeof wp === 'undefined' )
+       var wp = {};
+
+(function( exports, $ ){
+       var api = wp.customize,
+               Loader;
+
+       $.extend( $.support, {
+               history: !! ( window.history && history.pushState ),
+               hashchange: ('onhashchange' in window) && (document.documentMode === undefined || document.documentMode > 7)
+       });
+
+       Loader = $.extend( {}, api.Events, {
+               initialize: function() {
+                       this.body = $( document.body );
+
+                       // Ensure the loader is supported.
+                       // Check for settings, postMessage support, and whether we require CORS support.
+                       if ( ! Loader.settings || ! $.support.postMessage || ( ! $.support.cors && Loader.settings.isCrossDomain ) ) {
+                               return;
+                       }
+
+                       this.window  = $( window );
+                       this.element = $( '<div id="customize-container" />' ).appendTo( this.body );
+
+                       this.bind( 'open', this.overlay.show );
+                       this.bind( 'close', this.overlay.hide );
+
+                       $('#wpbody').on( 'click', '.load-customize', function( event ) {
+                               event.preventDefault();
+
+                               // Load the theme.
+                               Loader.open( $(this).attr('href') );
+                       });
+
+                       // Add navigation listeners.
+                       if ( $.support.history )
+                               this.window.on( 'popstate', Loader.popstate );
+
+                       if ( $.support.hashchange ) {
+                               this.window.on( 'hashchange', Loader.hashchange );
+                               this.window.triggerHandler( 'hashchange' );
+                       }
+               },
+
+               popstate: function( e ) {
+                       var state = e.originalEvent.state;
+                       if ( state && state.customize )
+                               Loader.open( state.customize );
+                       else if ( Loader.active )
+                               Loader.close();
+               },
+
+               hashchange: function( e ) {
+                       var hash = window.location.toString().split('#')[1];
+
+                       if ( hash && 0 === hash.indexOf( 'wp_customize=on' ) )
+                               Loader.open( Loader.settings.url + '?' + hash );
+
+                       if ( ! hash && ! $.support.history )
+                               Loader.close();
+               },
+
+               open: function( src ) {
+                       var hash;
+
+                       if ( this.active )
+                               return;
+
+                       // Load the full page on mobile devices.
+                       if ( Loader.settings.browser.mobile )
+                               return window.location = src;
+
+                       this.active = true;
+                       this.body.addClass('customize-loading');
+
+                       this.iframe = $( '<iframe />', { src: src }).appendTo( this.element );
+                       this.iframe.one( 'load', this.loaded );
+
+                       // Create a postMessage connection with the iframe.
+                       this.messenger = new api.Messenger({
+                               url: src,
+                               channel: 'loader',
+                               targetWindow: this.iframe[0].contentWindow
+                       });
+
+                       // Wait for the connection from the iframe before sending any postMessage events.
+                       this.messenger.bind( 'ready', function() {
+                               Loader.messenger.send( 'back' );
+                       });
+
+                       this.messenger.bind( 'close', function() {
+                               if ( $.support.history )
+                                       history.back();
+                               else if ( $.support.hashchange )
+                                       window.location.hash = '';
+                               else
+                                       Loader.close();
+                       });
+
+                       this.messenger.bind( 'activated', function( location ) {
+                               if ( location )
+                                       window.location = location;
+                       });
+
+                       hash = src.split('?')[1];
+
+                       // Ensure we don't call pushState if the user hit the forward button.
+                       if ( $.support.history && window.location.href !== src )
+                               history.pushState( { customize: src }, '', src );
+                       else if ( ! $.support.history && $.support.hashchange && hash )
+                               window.location.hash = 'wp_customize=on&' + hash;
+
+                       this.trigger( 'open' );
+               },
+
+               opened: function() {
+                       Loader.body.addClass( 'customize-active full-overlay-active' );
+               },
+
+               close: function() {
+                       if ( ! this.active )
+                               return;
+                       this.active = false;
+
+                       this.trigger( 'close' );
+               },
+
+               closed: function() {
+                       Loader.iframe.remove();
+                       Loader.messenger.destroy();
+                       Loader.iframe    = null;
+                       Loader.messenger = null;
+                       Loader.body.removeClass( 'customize-active full-overlay-active' ).removeClass( 'customize-loading' );
+               },
+
+               loaded: function() {
+                       Loader.body.removeClass('customize-loading');
+               },
+
+               overlay: {
+                       show: function() {
+                               this.element.fadeIn( 200, Loader.opened );
+                       },
+
+                       hide: function() {
+                               this.element.fadeOut( 200, Loader.closed );
+                       }
+               }
+       });
+
+       $( function() {
+               Loader.settings = _wpCustomizeLoaderSettings;
+               Loader.initialize();
+       });
+
+       // Expose the API to the world.
+       api.Loader = Loader;
+})( wp, jQuery );
diff --git a/wp-includes/js/customize-loader.js b/wp-includes/js/customize-loader.js
new file mode 100644 (file)
index 0000000..4c7e085
--- /dev/null
@@ -0,0 +1 @@
+if(typeof wp==="undefined"){var wp={}}(function(a,c){var b=wp.customize,d;c.extend(c.support,{history:!!(window.history&&history.pushState),hashchange:("onhashchange" in window)&&(document.documentMode===undefined||document.documentMode>7)});d=c.extend({},b.Events,{initialize:function(){this.body=c(document.body);if(!d.settings||!c.support.postMessage||(!c.support.cors&&d.settings.isCrossDomain)){return}this.window=c(window);this.element=c('<div id="customize-container" />').appendTo(this.body);this.bind("open",this.overlay.show);this.bind("close",this.overlay.hide);c("#wpbody").on("click",".load-customize",function(e){e.preventDefault();d.open(c(this).attr("href"))});if(c.support.history){this.window.on("popstate",d.popstate)}if(c.support.hashchange){this.window.on("hashchange",d.hashchange);this.window.triggerHandler("hashchange")}},popstate:function(g){var f=g.originalEvent.state;if(f&&f.customize){d.open(f.customize)}else{if(d.active){d.close()}}},hashchange:function(g){var f=window.location.toString().split("#")[1];if(f&&0===f.indexOf("wp_customize=on")){d.open(d.settings.url+"?"+f)}if(!f&&!c.support.history){d.close()}},open:function(f){var e;if(this.active){return}if(d.settings.browser.mobile){return window.location=f}this.active=true;this.body.addClass("customize-loading");this.iframe=c("<iframe />",{src:f}).appendTo(this.element);this.iframe.one("load",this.loaded);this.messenger=new b.Messenger({url:f,channel:"loader",targetWindow:this.iframe[0].contentWindow});this.messenger.bind("ready",function(){d.messenger.send("back")});this.messenger.bind("close",function(){if(c.support.history){history.back()}else{if(c.support.hashchange){window.location.hash=""}else{d.close()}}});this.messenger.bind("activated",function(g){if(g){window.location=g}});e=f.split("?")[1];if(c.support.history&&window.location.href!==f){history.pushState({customize:f},"",f)}else{if(!c.support.history&&c.support.hashchange&&e){window.location.hash="wp_customize=on&"+e}}this.trigger("open")},opened:function(){d.body.addClass("customize-active full-overlay-active")},close:function(){if(!this.active){return}this.active=false;this.trigger("close")},closed:function(){d.iframe.remove();d.messenger.destroy();d.iframe=null;d.messenger=null;d.body.removeClass("customize-active full-overlay-active").removeClass("customize-loading")},loaded:function(){d.body.removeClass("customize-loading")},overlay:{show:function(){this.element.fadeIn(200,d.opened)},hide:function(){this.element.fadeOut(200,d.closed)}}});c(function(){d.settings=_wpCustomizeLoaderSettings;d.initialize()});b.Loader=d})(wp,jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/customize-preview.dev.js b/wp-includes/js/customize-preview.dev.js
new file mode 100644 (file)
index 0000000..28af66b
--- /dev/null
@@ -0,0 +1,141 @@
+(function( exports, $ ){
+       var api = wp.customize,
+               debounce;
+
+       debounce = function( fn, delay, context ) {
+               var timeout;
+               return function() {
+                       var args = arguments;
+
+                       context = context || this;
+
+                       clearTimeout( timeout );
+                       timeout = setTimeout( function() {
+                               timeout = null;
+                               fn.apply( context, args );
+                       }, delay );
+               };
+       };
+
+       api.Preview = api.Messenger.extend({
+               /**
+                * Requires params:
+                *  - url    - the URL of preview frame
+                */
+               initialize: function( params, options ) {
+                       var self = this;
+
+                       api.Messenger.prototype.initialize.call( this, params, options );
+
+                       this.body = $( document.body );
+                       this.body.on( 'click.preview', 'a', function( event ) {
+                               event.preventDefault();
+                               self.send( 'scroll', 0 );
+                               self.send( 'url', $(this).prop('href') );
+                       });
+
+                       // You cannot submit forms.
+                       // @todo: Allow form submissions by mixing $_POST data with the customize setting $_POST data.
+                       this.body.on( 'submit.preview', 'form', function( event ) {
+                               event.preventDefault();
+                       });
+
+                       this.window = $( window );
+                       this.window.on( 'scroll.preview', debounce( function() {
+                               self.send( 'scroll', self.window.scrollTop() );
+                       }, 200 ));
+
+                       this.bind( 'scroll', function( distance ) {
+                               self.window.scrollTop( distance );
+                       });
+               }
+       });
+
+       $( function() {
+               api.settings = window._wpCustomizeSettings;
+               if ( ! api.settings )
+                       return;
+
+               var preview, bg;
+
+               preview = new api.Preview({
+                       url: window.location.href,
+                       channel: api.settings.channel
+               });
+
+               preview.bind( 'settings', function( values ) {
+                       $.each( values, function( id, value ) {
+                               if ( api.has( id ) )
+                                       api( id ).set( value );
+                               else
+                                       api.create( id, value );
+                       });
+               });
+
+               preview.trigger( 'settings', api.settings.values );
+
+               preview.bind( 'setting', function( args ) {
+                       var value;
+
+                       args = args.slice();
+
+                       if ( value = api( args.shift() ) )
+                               value.set.apply( value, args );
+               });
+
+               preview.bind( 'sync', function( events ) {
+                       $.each( events, function( event, args ) {
+                               preview.trigger( event, args );
+                       });
+                       preview.send( 'synced' );
+               })
+
+               preview.send( 'ready' );
+
+               /* Custom Backgrounds */
+               bg = $.map(['color', 'image', 'position_x', 'repeat', 'attachment'], function( prop ) {
+                       return 'background_' + prop;
+               });
+
+               api.when.apply( api, bg ).done( function( color, image, position_x, repeat, attachment ) {
+                       var body = $(document.body),
+                               head = $('head'),
+                               style = $('#custom-background-css'),
+                               update;
+
+                       // If custom backgrounds are active and we can't find the
+                       // default output, bail.
+                       if ( body.hasClass('custom-background') && ! style.length )
+                               return;
+
+                       update = function() {
+                               var css = '';
+
+                               // The body will support custom backgrounds if either
+                               // the color or image are set.
+                               //
+                               // See get_body_class() in /wp-includes/post-template.php
+                               body.toggleClass( 'custom-background', !! ( color() || image() ) );
+
+                               if ( color() )
+                                       css += 'background-color: ' + color() + ';';
+
+                               if ( image() ) {
+                                       css += 'background-image: url("' + image() + '");';
+                                       css += 'background-position: top ' + position_x() + ';';
+                                       css += 'background-repeat: ' + repeat() + ';';
+                                       css += 'background-position: top ' + attachment() + ';';
+                               }
+
+                               // Refresh the stylesheet by removing and recreating it.
+                               style.remove();
+                               style = $('<style type="text/css" id="custom-background-css">body.custom-background { ' + css + ' }</style>').appendTo( head );
+                       };
+
+                       $.each( arguments, function() {
+                               this.bind( update );
+                       });
+               });
+       });
+
+})( wp, jQuery );
diff --git a/wp-includes/js/customize-preview.js b/wp-includes/js/customize-preview.js
new file mode 100644 (file)
index 0000000..e982809
--- /dev/null
@@ -0,0 +1 @@
+(function(b,d){var c=wp.customize,a;a=function(g,e,f){var h;return function(){var i=arguments;f=f||this;clearTimeout(h);h=setTimeout(function(){h=null;g.apply(f,i)},e)}};c.Preview=c.Messenger.extend({initialize:function(g,f){var e=this;c.Messenger.prototype.initialize.call(this,g,f);this.body=d(document.body);this.body.on("click.preview","a",function(h){h.preventDefault();e.send("scroll",0);e.send("url",d(this).prop("href"))});this.body.on("submit.preview","form",function(h){h.preventDefault()});this.window=d(window);this.window.on("scroll.preview",a(function(){e.send("scroll",e.window.scrollTop())},200));this.bind("scroll",function(h){e.window.scrollTop(h)})}});d(function(){c.settings=window._wpCustomizeSettings;if(!c.settings){return}var f,e;f=new c.Preview({url:window.location.href,channel:c.settings.channel});f.bind("settings",function(g){d.each(g,function(i,h){if(c.has(i)){c(i).set(h)}else{c.create(i,h)}})});f.trigger("settings",c.settings.values);f.bind("setting",function(g){var h;g=g.slice();if(h=c(g.shift())){h.set.apply(h,g)}});f.bind("sync",function(g){d.each(g,function(i,h){f.trigger(i,h)});f.send("synced")});f.send("ready");e=d.map(["color","image","position_x","repeat","attachment"],function(g){return"background_"+g});c.when.apply(c,e).done(function(j,i,m,h,l){var n=d(document.body),o=d("head"),g=d("#custom-background-css"),k;if(n.hasClass("custom-background")&&!g.length){return}k=function(){var p="";n.toggleClass("custom-background",!!(j()||i()));if(j()){p+="background-color: "+j()+";"}if(i()){p+='background-image: url("'+i()+'");';p+="background-position: top "+m()+";";p+="background-repeat: "+h()+";";p+="background-position: top "+l()+";"}g.remove();g=d('<style type="text/css" id="custom-background-css">body.custom-background { '+p+" }</style>").appendTo(o)};d.each(arguments,function(){this.bind(k)})})})})(wp,jQuery);
\ No newline at end of file
index 5cbf9782b2002983645e4eed2e432fd589ee6ae9..3dcff261f60ef642177abd6fa806a1a5a1ec9ed1 100644 (file)
@@ -4,7 +4,7 @@
 * to see if the user's mouse has slowed down (beneath the sensitivity
 * threshold) before firing the onMouseOver event.
 * 
 * to see if the user's mouse has slowed down (beneath the sensitivity
 * threshold) before firing the onMouseOver event.
 * 
-* hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+
+* hoverIntent r6 // 2011.02.26 // jQuery 1.5.1+
 * <http://cherne.net/brian/resources/jquery.hoverIntent.html>
 * 
 * hoverIntent is currently available for use in all personal or commercial 
 * <http://cherne.net/brian/resources/jquery.hoverIntent.html>
 * 
 * hoverIntent is currently available for use in all personal or commercial 
@@ -25,7 +25,7 @@
 * 
 * @param  f  onMouseOver function || An object with configuration options
 * @param  g  onMouseOut function  || Nothing (use configuration options object)
 * 
 * @param  f  onMouseOver function || An object with configuration options
 * @param  g  onMouseOut function  || Nothing (use configuration options object)
-* @author    Brian Cherne <brian@cherne.net>
+* @author    Brian Cherne brian(at)cherne(dot)net
 */
 (function($) {
        $.fn.hoverIntent = function(f,g) {
 */
 (function($) {
        $.fn.hoverIntent = function(f,g) {
                        ob.hoverIntent_s = 0;
                        return cfg.out.apply(ob,[ev]);
                };
                        ob.hoverIntent_s = 0;
                        return cfg.out.apply(ob,[ev]);
                };
-               
-               // workaround for Mozilla bug: not firing mouseout/mouseleave on absolute positioned elements over textareas and input type="text"
-               var handleHover = function(e) {
-                       var t = this;
-                       
-                       // next two lines copied from jQuery.hover, ignore children onMouseOver/onMouseOut
-                       var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget;
-                       while ( p && p != this ) { try { p = p.parentNode; } catch(e) { p = this; } }
-                       if ( p == this ) {
-                               if ( $.browser.mozilla ) {
-                                       if ( e.type == "mouseout" ) {
-                                               t.mtout = setTimeout( function(){doHover(e,t);}, 30 );
-                                       } else {
-                                               if (t.mtout) { t.mtout = clearTimeout(t.mtout); }
-                                       }
-                               }
-                               return;
-                       } else {
-                               if (t.mtout) { t.mtout = clearTimeout(t.mtout); }
-                               doHover(e,t);
-                       }
-               };
 
                // A private function for handling mouse 'hovering'
 
                // A private function for handling mouse 'hovering'
-               var doHover = function(e,ob) {
-
+               var handleHover = function(e) {
                        // copy objects to be passed into t (required for event object to be passed in IE)
                        var ev = jQuery.extend({},e);
                        // copy objects to be passed into t (required for event object to be passed in IE)
                        var ev = jQuery.extend({},e);
+                       var ob = this;
 
                        // cancel hoverIntent timer if it exists
                        if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }
 
 
                        // cancel hoverIntent timer if it exists
                        if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }
 
-                       // else e.type == "onmouseover"
-                       if (e.type == "mouseover") {
+                       // if e.type == "mouseenter"
+                       if (e.type == "mouseenter") {
                                // set "previous" X and Y position based on initial entry point
                                pX = ev.pageX; pY = ev.pageY;
                                // update "current" X and Y position based on mousemove
                                // set "previous" X and Y position based on initial entry point
                                pX = ev.pageX; pY = ev.pageY;
                                // update "current" X and Y position based on mousemove
                                // start polling interval (self-calling timeout) to compare mouse coordinates over time
                                if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );}
 
                                // start polling interval (self-calling timeout) to compare mouse coordinates over time
                                if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );}
 
-                       // else e.type == "onmouseout"
+                       // else e.type == "mouseleave"
                        } else {
                                // unbind expensive mousemove event
                                $(ob).unbind("mousemove",track);
                        } else {
                                // unbind expensive mousemove event
                                $(ob).unbind("mousemove",track);
                };
 
                // bind the function to the two event listeners
                };
 
                // bind the function to the two event listeners
-               return this.mouseover(handleHover).mouseout(handleHover);
+               return this.bind('mouseenter',handleHover).bind('mouseleave',handleHover);
        };
 })(jQuery);
\ No newline at end of file
        };
 })(jQuery);
\ No newline at end of file
index bed4129c9be8a711b9023635ca84c81add6cb0a5..1576592de003088fff484b95c30c906c062fa1a5 100644 (file)
@@ -1 +1 @@
-(function(a){a.fn.hoverIntent=function(l,j){var m={sensitivity:7,interval:100,timeout:0};m=a.extend(m,j?{over:l,out:j}:l);var o,n,h,d;var e=function(f){o=f.pageX;n=f.pageY};var c=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);if((Math.abs(h-o)+Math.abs(d-n))<m.sensitivity){a(f).unbind("mousemove",e);f.hoverIntent_s=1;return m.over.apply(f,[g])}else{h=o;d=n;f.hoverIntent_t=setTimeout(function(){c(g,f)},m.interval)}};var i=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);f.hoverIntent_s=0;return m.out.apply(f,[g])};var b=function(q){var f=this;var g=(q.type=="mouseover"?q.fromElement:q.toElement)||q.relatedTarget;while(g&&g!=this){try{g=g.parentNode}catch(q){g=this}}if(g==this){if(a.browser.mozilla){if(q.type=="mouseout"){f.mtout=setTimeout(function(){k(q,f)},30)}else{if(f.mtout){f.mtout=clearTimeout(f.mtout)}}}return}else{if(f.mtout){f.mtout=clearTimeout(f.mtout)}k(q,f)}};var k=function(p,f){var g=jQuery.extend({},p);if(f.hoverIntent_t){f.hoverIntent_t=clearTimeout(f.hoverIntent_t)}if(p.type=="mouseover"){h=g.pageX;d=g.pageY;a(f).bind("mousemove",e);if(f.hoverIntent_s!=1){f.hoverIntent_t=setTimeout(function(){c(g,f)},m.interval)}}else{a(f).unbind("mousemove",e);if(f.hoverIntent_s==1){f.hoverIntent_t=setTimeout(function(){i(g,f)},m.timeout)}}};return this.mouseover(b).mouseout(b)}})(jQuery);
\ No newline at end of file
+(function(a){a.fn.hoverIntent=function(k,j){var l={sensitivity:7,interval:100,timeout:0};l=a.extend(l,j?{over:k,out:j}:k);var n,m,h,d;var e=function(f){n=f.pageX;m=f.pageY};var c=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);if((Math.abs(h-n)+Math.abs(d-m))<l.sensitivity){a(f).unbind("mousemove",e);f.hoverIntent_s=1;return l.over.apply(f,[g])}else{h=n;d=m;f.hoverIntent_t=setTimeout(function(){c(g,f)},l.interval)}};var i=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);f.hoverIntent_s=0;return l.out.apply(f,[g])};var b=function(o){var g=jQuery.extend({},o);var f=this;if(f.hoverIntent_t){f.hoverIntent_t=clearTimeout(f.hoverIntent_t)}if(o.type=="mouseenter"){h=g.pageX;d=g.pageY;a(f).bind("mousemove",e);if(f.hoverIntent_s!=1){f.hoverIntent_t=setTimeout(function(){c(g,f)},l.interval)}}else{a(f).unbind("mousemove",e);if(f.hoverIntent_s==1){f.hoverIntent_t=setTimeout(function(){i(g,f)},l.timeout)}}};return this.bind("mouseenter",b).bind("mouseleave",b)}})(jQuery);
\ No newline at end of file
index 325e2b172fa47ef7eba968c470ecc85ecf2671ac..fd587a69d3cc9fa2e7a3c078e8e0f591318167ad 100644 (file)
 
 .imgareaselect-border1, .imgareaselect-border2,
 .imgareaselect-border3, .imgareaselect-border4 {
 
 .imgareaselect-border1, .imgareaselect-border2,
 .imgareaselect-border3, .imgareaselect-border4 {
-       opacity: 0.5;
     filter: alpha(opacity=50);
     filter: alpha(opacity=50);
+       opacity: 0.5;
 }
 
 .imgareaselect-handle {
     background-color: #fff;
        border: solid 1px #000;
 }
 
 .imgareaselect-handle {
     background-color: #fff;
        border: solid 1px #000;
-       opacity: 0.4;
-       filter: alpha(opacity=40);
+    filter: alpha(opacity=50);
+       opacity: 0.5;
 }
 
 .imgareaselect-outer {
        background-color: #000;
 }
 
 .imgareaselect-outer {
        background-color: #000;
-       opacity: 0.4;
-    filter: alpha(opacity=40);
+    filter: alpha(opacity=50);
+       opacity: 0.5;
 }
 
 .imgareaselect-selection {
 }
 
 .imgareaselect-selection {
index 5fc41c7b57ab66de3ec19dfc251fd5cbcd6bb9aa..d349d0532e68d69526ebc87d678baea7c219e248 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * imgAreaSelect jQuery plugin
 /*
  * imgAreaSelect jQuery plugin
- * version 0.9.6
+ * version 0.9.8
  *
  * Copyright (c) 2008-2011 Michal Wojciechowski (odyniec.net)
  *
  *
  * Copyright (c) 2008-2011 Michal Wojciechowski (odyniec.net)
  *
 
 (function($) {
 
 
 (function($) {
 
+/*
+ * Math functions will be used extensively, so it's convenient to make a few
+ * shortcuts
+ */
 var abs = Math.abs,
     max = Math.max,
     min = Math.min,
     round = Math.round;
 
 var abs = Math.abs,
     max = Math.max,
     min = Math.min,
     round = Math.round;
 
+/**
+ * Create a new HTML div element
+ *
+ * @return A jQuery object representing the new element
+ */
 function div() {
     return $('<div/>');
 }
 
 function div() {
     return $('<div/>');
 }
 
+/**
+ * imgAreaSelect initialization
+ *
+ * @param img
+ *            A HTML image element to attach the plugin to
+ * @param options
+ *            An options object
+ */
 $.imgAreaSelect = function (img, options) {
     var
 $.imgAreaSelect = function (img, options) {
     var
-
+        /* jQuery object representing the image */
         $img = $(img),
 
         $img = $(img),
 
+        /* Has the image finished loading? */
         imgLoaded,
 
         imgLoaded,
 
+        /* Plugin elements */
+
+        /* Container box */
         $box = div(),
         $box = div(),
+        /* Selection area */
         $area = div(),
         $area = div(),
+        /* Border (four divs) */
         $border = div().add(div()).add(div()).add(div()),
         $border = div().add(div()).add(div()).add(div()),
+        /* Outer area (four divs) */
         $outer = div().add(div()).add(div()).add(div()),
         $outer = div().add(div()).add(div()).add(div()),
+        /* Handles (empty by default, initialized in setOptions()) */
         $handles = $([]),
 
         $handles = $([]),
 
+        /*
+         * Additional element to work around a cursor problem in Opera
+         * (explained later)
+         */
         $areaOpera,
 
         $areaOpera,
 
+        /* Image position (relative to viewport) */
         left, top,
 
         left, top,
 
+        /* Image offset (as returned by .offset()) */
         imgOfs = { left: 0, top: 0 },
 
         imgOfs = { left: 0, top: 0 },
 
+        /* Image dimensions (as returned by .width() and .height()) */
         imgWidth, imgHeight,
 
         imgWidth, imgHeight,
 
+        /*
+         * jQuery object representing the parent element that the plugin
+         * elements are appended to
+         */
         $parent,
 
         $parent,
 
+        /* Parent element offset (as returned by .offset()) */
         parOfs = { left: 0, top: 0 },
 
         parOfs = { left: 0, top: 0 },
 
+        /* Base z-index for plugin elements */
         zIndex = 0,
 
         zIndex = 0,
 
+        /* Plugin elements position */
         position = 'absolute',
 
         position = 'absolute',
 
+        /* X/Y coordinates of the starting point for move/resize operations */
         startX, startY,
 
         startX, startY,
 
+        /* Horizontal and vertical scaling factors */
         scaleX, scaleY,
 
         scaleX, scaleY,
 
-        resizeMargin = 10,
-
+        /* Current resize mode ("nw", "se", etc.) */
         resize,
 
         resize,
 
+        /* Selection area constraints */
         minWidth, minHeight, maxWidth, maxHeight,
 
         minWidth, minHeight, maxWidth, maxHeight,
 
+        /* Aspect ratio to maintain (floating point number) */
         aspectRatio,
 
         aspectRatio,
 
+        /* Are the plugin elements currently displayed? */
         shown,
 
         shown,
 
+        /* Current selection (relative to parent element) */
         x1, y1, x2, y2,
 
         x1, y1, x2, y2,
 
+        /* Current selection (relative to scaled image) */
         selection = { x1: 0, y1: 0, x2: 0, y2: 0, width: 0, height: 0 },
 
         selection = { x1: 0, y1: 0, x2: 0, y2: 0, width: 0, height: 0 },
 
+        /* Document element */
         docElem = document.documentElement,
 
         docElem = document.documentElement,
 
+        /* Various helper variables used throughout the code */
         $p, d, i, o, w, h, adjusted;
 
         $p, d, i, o, w, h, adjusted;
 
+    /*
+     * Translate selection coordinates (relative to scaled image) to viewport
+     * coordinates (relative to parent element)
+     */
+
+    /**
+     * Translate selection X to viewport X
+     *
+     * @param x
+     *            Selection X
+     * @return Viewport X
+     */
     function viewX(x) {
         return x + imgOfs.left - parOfs.left;
     }
 
     function viewX(x) {
         return x + imgOfs.left - parOfs.left;
     }
 
+    /**
+     * Translate selection Y to viewport Y
+     *
+     * @param y
+     *            Selection Y
+     * @return Viewport Y
+     */
     function viewY(y) {
         return y + imgOfs.top - parOfs.top;
     }
 
     function viewY(y) {
         return y + imgOfs.top - parOfs.top;
     }
 
+    /*
+     * Translate viewport coordinates to selection coordinates
+     */
+
+    /**
+     * Translate viewport X to selection X
+     *
+     * @param x
+     *            Viewport X
+     * @return Selection X
+     */
     function selX(x) {
         return x - imgOfs.left + parOfs.left;
     }
 
     function selX(x) {
         return x - imgOfs.left + parOfs.left;
     }
 
+    /**
+     * Translate viewport Y to selection Y
+     *
+     * @param y
+     *            Viewport Y
+     * @return Selection Y
+     */
     function selY(y) {
         return y - imgOfs.top + parOfs.top;
     }
 
     function selY(y) {
         return y - imgOfs.top + parOfs.top;
     }
 
+    /*
+     * Translate event coordinates (relative to document) to viewport
+     * coordinates
+     */
+
+    /**
+     * Get event X and translate it to viewport X
+     *
+     * @param event
+     *            The event object
+     * @return Viewport X
+     */
     function evX(event) {
         return event.pageX - parOfs.left;
     }
 
     function evX(event) {
         return event.pageX - parOfs.left;
     }
 
+    /**
+     * Get event Y and translate it to viewport Y
+     *
+     * @param event
+     *            The event object
+     * @return Viewport Y
+     */
     function evY(event) {
         return event.pageY - parOfs.top;
     }
 
     function evY(event) {
         return event.pageY - parOfs.top;
     }
 
+    /**
+     * Get the current selection
+     *
+     * @param noScale
+     *            If set to <code>true</code>, scaling is not applied to the
+     *            returned selection
+     * @return Selection object
+     */
     function getSelection(noScale) {
         var sx = noScale || scaleX, sy = noScale || scaleY;
 
     function getSelection(noScale) {
         var sx = noScale || scaleX, sy = noScale || scaleY;
 
@@ -108,6 +219,21 @@ $.imgAreaSelect = function (img, options) {
             height: round(selection.y2 * sy) - round(selection.y1 * sy) };
     }
 
             height: round(selection.y2 * sy) - round(selection.y1 * sy) };
     }
 
+    /**
+     * Set the current selection
+     *
+     * @param x1
+     *            X coordinate of the upper left corner of the selection area
+     * @param y1
+     *            Y coordinate of the upper left corner of the selection area
+     * @param x2
+     *            X coordinate of the lower right corner of the selection area
+     * @param y2
+     *            Y coordinate of the lower right corner of the selection area
+     * @param noScale
+     *            If set to <code>true</code>, scaling is not applied to the
+     *            new selection
+     */
     function setSelection(x1, y1, x2, y2, noScale) {
         var sx = noScale || scaleX, sy = noScale || scaleY;
 
     function setSelection(x1, y1, x2, y2, noScale) {
         var sx = noScale || scaleX, sy = noScale || scaleY;
 
@@ -122,23 +248,41 @@ $.imgAreaSelect = function (img, options) {
         selection.height = selection.y2 - selection.y1;
     }
 
         selection.height = selection.y2 - selection.y1;
     }
 
+    /**
+     * Recalculate image and parent offsets
+     */
     function adjust() {
     function adjust() {
+        /*
+         * Do not adjust if image width is not a positive number. This might
+         * happen when imgAreaSelect is put on a parent element which is then
+         * hidden.
+         */
         if (!$img.width())
             return;
 
         if (!$img.width())
             return;
 
+        /*
+         * Get image offset. The .offset() method returns float values, so they
+         * need to be rounded.
+         */
         imgOfs = { left: round($img.offset().left), top: round($img.offset().top) };
 
         imgOfs = { left: round($img.offset().left), top: round($img.offset().top) };
 
+        /* Get image dimensions */
         imgWidth = $img.innerWidth();
         imgHeight = $img.innerHeight();
 
         imgOfs.top += ($img.outerHeight() - imgHeight) >> 1;
         imgOfs.left += ($img.outerWidth() - imgWidth) >> 1;
 
         imgWidth = $img.innerWidth();
         imgHeight = $img.innerHeight();
 
         imgOfs.top += ($img.outerHeight() - imgHeight) >> 1;
         imgOfs.left += ($img.outerWidth() - imgWidth) >> 1;
 
-        minWidth = options.minWidth || 0;
-        minHeight = options.minHeight || 0;
-        maxWidth = min(options.maxWidth || 1<<24, imgWidth);
-        maxHeight = min(options.maxHeight || 1<<24, imgHeight);
+        /* Set minimum and maximum selection area dimensions */
+        minWidth = round(options.minWidth / scaleX) || 0;
+        minHeight = round(options.minHeight / scaleY) || 0;
+        maxWidth = round(min(options.maxWidth / scaleX || 1<<24, imgWidth));
+        maxHeight = round(min(options.maxHeight / scaleY || 1<<24, imgHeight));
 
 
+        /*
+         * Workaround for jQuery 1.3.2 incorrect offset calculation, originally
+         * observed in Safari 3. Firefox 2 is also affected.
+         */
         if ($().jquery == '1.3.2' && position == 'fixed' &&
             !docElem['getBoundingClientRect'])
         {
         if ($().jquery == '1.3.2' && position == 'fixed' &&
             !docElem['getBoundingClientRect'])
         {
@@ -146,7 +290,8 @@ $.imgAreaSelect = function (img, options) {
             imgOfs.left += max(document.body.scrollLeft, docElem.scrollLeft);
         }
 
             imgOfs.left += max(document.body.scrollLeft, docElem.scrollLeft);
         }
 
-        parOfs = $.inArray($parent.css('position'), ['absolute', 'relative']) + 1 ?
+        /* Determine parent element offset */
+        parOfs = /absolute|relative/.test($parent.css('position')) ?
             { left: round($parent.offset().left) - $parent.scrollLeft(),
                 top: round($parent.offset().top) - $parent.scrollTop() } :
             position == 'fixed' ?
             { left: round($parent.offset().left) - $parent.scrollLeft(),
                 top: round($parent.offset().top) - $parent.scrollTop() } :
             position == 'fixed' ?
@@ -156,22 +301,44 @@ $.imgAreaSelect = function (img, options) {
         left = viewX(0);
         top = viewY(0);
 
         left = viewX(0);
         top = viewY(0);
 
+        /*
+         * Check if selection area is within image boundaries, adjust if
+         * necessary
+         */
         if (selection.x2 > imgWidth || selection.y2 > imgHeight)
             doResize();
     }
 
         if (selection.x2 > imgWidth || selection.y2 > imgHeight)
             doResize();
     }
 
+    /**
+     * Update plugin elements
+     *
+     * @param resetKeyPress
+     *            If set to <code>false</code>, this instance's keypress
+     *            event handler is not activated
+     */
     function update(resetKeyPress) {
     function update(resetKeyPress) {
+        /* If plugin elements are hidden, do nothing */
         if (!shown) return;
 
         if (!shown) return;
 
+        /*
+         * Set the position and size of the container box and the selection area
+         * inside it
+         */
         $box.css({ left: viewX(selection.x1), top: viewY(selection.y1) })
             .add($area).width(w = selection.width).height(h = selection.height);
 
         $box.css({ left: viewX(selection.x1), top: viewY(selection.y1) })
             .add($area).width(w = selection.width).height(h = selection.height);
 
+        /*
+         * Reset the position of selection area, borders, and handles (IE6/IE7
+         * position them incorrectly if we don't do this)
+         */
         $area.add($border).add($handles).css({ left: 0, top: 0 });
 
         $area.add($border).add($handles).css({ left: 0, top: 0 });
 
+        /* Set border dimensions */
         $border
             .width(max(w - $border.outerWidth() + $border.innerWidth(), 0))
             .height(max(h - $border.outerHeight() + $border.innerHeight(), 0));
 
         $border
             .width(max(w - $border.outerWidth() + $border.innerWidth(), 0))
             .height(max(h - $border.outerHeight() + $border.innerHeight(), 0));
 
+        /* Arrange the outer area elements */
         $($outer[0]).css({ left: left, top: top,
             width: selection.x1, height: imgHeight });
         $($outer[1]).css({ left: left + selection.x1, top: top,
         $($outer[0]).css({ left: left, top: top,
             width: selection.x1, height: imgHeight });
         $($outer[1]).css({ left: left + selection.x1, top: top,
@@ -184,6 +351,7 @@ $.imgAreaSelect = function (img, options) {
         w -= $handles.outerWidth();
         h -= $handles.outerHeight();
 
         w -= $handles.outerWidth();
         h -= $handles.outerHeight();
 
+        /* Arrange handles */
         switch ($handles.length) {
         case 8:
             $($handles[4]).css({ left: w >> 1 });
         switch ($handles.length) {
         case 8:
             $($handles[4]).css({ left: w >> 1 });
@@ -196,21 +364,49 @@ $.imgAreaSelect = function (img, options) {
         }
 
         if (resetKeyPress !== false) {
         }
 
         if (resetKeyPress !== false) {
+            /*
+             * Need to reset the document keypress event handler -- unbind the
+             * current handler
+             */
             if ($.imgAreaSelect.keyPress != docKeyPress)
                 $(document).unbind($.imgAreaSelect.keyPress,
                     $.imgAreaSelect.onKeyPress);
 
             if (options.keys)
             if ($.imgAreaSelect.keyPress != docKeyPress)
                 $(document).unbind($.imgAreaSelect.keyPress,
                     $.imgAreaSelect.onKeyPress);
 
             if (options.keys)
+                /*
+                 * Set the document keypress event handler to this instance's
+                 * docKeyPress() function
+                 */
                 $(document)[$.imgAreaSelect.keyPress](
                     $.imgAreaSelect.onKeyPress = docKeyPress);
         }
 
                 $(document)[$.imgAreaSelect.keyPress](
                     $.imgAreaSelect.onKeyPress = docKeyPress);
         }
 
+        /*
+         * Internet Explorer displays 1px-wide dashed borders incorrectly by
+         * filling the spaces between dashes with white. Toggling the margin
+         * property between 0 and "auto" fixes this in IE6 and IE7 (IE8 is still
+         * broken). This workaround is not perfect, as it requires setTimeout()
+         * and thus causes the border to flicker a bit, but I haven't found a
+         * better solution.
+         *
+         * Note: This only happens with CSS borders, set with the borderWidth,
+         * borderOpacity, borderColor1, and borderColor2 options (which are now
+         * deprecated). Borders created with GIF background images are fine.
+         */
         if ($.browser.msie && $border.outerWidth() - $border.innerWidth() == 2) {
             $border.css('margin', 0);
             setTimeout(function () { $border.css('margin', 'auto'); }, 0);
         }
     }
 
         if ($.browser.msie && $border.outerWidth() - $border.innerWidth() == 2) {
             $border.css('margin', 0);
             setTimeout(function () { $border.css('margin', 'auto'); }, 0);
         }
     }
 
+    /**
+     * Do the complete update sequence: recalculate offsets, update the
+     * elements, and set the correct values of x1, y1, x2, and y2.
+     *
+     * @param resetKeyPress
+     *            If set to <code>false</code>, this instance's keypress
+     *            event handler is not activated
+     */
     function doUpdate(resetKeyPress) {
         adjust();
         update(resetKeyPress);
     function doUpdate(resetKeyPress) {
         adjust();
         update(resetKeyPress);
@@ -218,11 +414,24 @@ $.imgAreaSelect = function (img, options) {
         x2 = viewX(selection.x2); y2 = viewY(selection.y2);
     }
 
         x2 = viewX(selection.x2); y2 = viewY(selection.y2);
     }
 
+    /**
+     * Hide or fade out an element (or multiple elements)
+     *
+     * @param $elem
+     *            A jQuery object containing the element(s) to hide/fade out
+     * @param fn
+     *            Callback function to be called when fadeOut() completes
+     */
     function hide($elem, fn) {
         options.fadeSpeed ? $elem.fadeOut(options.fadeSpeed, fn) : $elem.hide();
     function hide($elem, fn) {
         options.fadeSpeed ? $elem.fadeOut(options.fadeSpeed, fn) : $elem.hide();
-
     }
 
     }
 
+    /**
+     * Selection area mousemove event handler
+     *
+     * @param event
+     *            The event object
+     */
     function areaMouseMove(event) {
         var x = selX(evX(event)) - selection.x1,
             y = selY(evY(event)) - selection.y1;
     function areaMouseMove(event) {
         var x = selX(evX(event)) - selection.x1,
             y = selY(evY(event)) - selection.y1;
@@ -234,9 +443,14 @@ $.imgAreaSelect = function (img, options) {
             $box.one('mouseout', function () { adjusted = false; });
         }
 
             $box.one('mouseout', function () { adjusted = false; });
         }
 
+        /* Clear the resize mode */
         resize = '';
 
         if (options.resizable) {
         resize = '';
 
         if (options.resizable) {
+            /*
+             * Check if the mouse pointer is over the resize margin area and set
+             * the resize mode accordingly
+             */
             if (y <= options.resizeMargin)
                 resize = 'n';
             else if (y >= selection.height - options.resizeMargin)
             if (y <= options.resizeMargin)
                 resize = 'n';
             else if (y >= selection.height - options.resizeMargin)
@@ -253,8 +467,19 @@ $.imgAreaSelect = function (img, options) {
             $areaOpera.toggle();
     }
 
             $areaOpera.toggle();
     }
 
+    /**
+     * Document mouseup event handler
+     *
+     * @param event
+     *            The event object
+     */
     function docMouseUp(event) {
     function docMouseUp(event) {
+        /* Set back the default cursor */
         $('body').css('cursor', '');
         $('body').css('cursor', '');
+        /*
+         * If autoHide is enabled, or if the selection has zero width/height,
+         * hide the selection and the outer area
+         */
         if (options.autoHide || selection.width * selection.height == 0)
             hide($box.add($outer), function () { $(this).hide(); });
 
         if (options.autoHide || selection.width * selection.height == 0)
             hide($box.add($outer), function () { $(this).hide(); });
 
@@ -264,12 +489,20 @@ $.imgAreaSelect = function (img, options) {
         options.onSelectEnd(img, getSelection());
     }
 
         options.onSelectEnd(img, getSelection());
     }
 
+    /**
+     * Selection area mousedown event handler
+     *
+     * @param event
+     *            The event object
+     * @return false
+     */
     function areaMouseDown(event) {
         if (event.which != 1) return false;
 
         adjust();
 
         if (resize) {
     function areaMouseDown(event) {
         if (event.which != 1) return false;
 
         adjust();
 
         if (resize) {
+            /* Resize mode is in effect */
             $('body').css('cursor', resize + '-resize');
 
             x1 = viewX(selection[/w/.test(resize) ? 'x2' : 'x1']);
             $('body').css('cursor', resize + '-resize');
 
             x1 = viewX(selection[/w/.test(resize) ? 'x2' : 'x1']);
@@ -299,12 +532,18 @@ $.imgAreaSelect = function (img, options) {
         return false;
     }
 
         return false;
     }
 
+    /**
+     * Adjust the x2/y2 coordinates to maintain aspect ratio (if defined)
+     *
+     * @param xFirst
+     *            If set to <code>true</code>, calculate x2 first. Otherwise,
+     *            calculate y2 first.
+     */
     function fixAspectRatio(xFirst) {
         if (aspectRatio)
             if (xFirst) {
                 x2 = max(left, min(left + imgWidth,
                     x1 + abs(y2 - y1) * aspectRatio * (x2 > x1 || -1)));
     function fixAspectRatio(xFirst) {
         if (aspectRatio)
             if (xFirst) {
                 x2 = max(left, min(left + imgWidth,
                     x1 + abs(y2 - y1) * aspectRatio * (x2 > x1 || -1)));
-
                 y2 = round(max(top, min(top + imgHeight,
                     y1 + abs(x2 - x1) / aspectRatio * (y2 > y1 || -1))));
                 x2 = round(x2);
                 y2 = round(max(top, min(top + imgHeight,
                     y1 + abs(x2 - x1) / aspectRatio * (y2 > y1 || -1))));
                 x2 = round(x2);
@@ -318,11 +557,21 @@ $.imgAreaSelect = function (img, options) {
             }
     }
 
             }
     }
 
+    /**
+     * Resize the selection area respecting the minimum/maximum dimensions and
+     * aspect ratio
+     */
     function doResize() {
     function doResize() {
+        /*
+         * Make sure the top left corner of the selection area stays within
+         * image boundaries (it might not if the image source was dynamically
+         * changed).
+         */
         x1 = min(x1, left + imgWidth);
         y1 = min(y1, top + imgHeight);
 
         if (abs(x2 - x1) < minWidth) {
         x1 = min(x1, left + imgWidth);
         y1 = min(y1, top + imgHeight);
 
         if (abs(x2 - x1) < minWidth) {
+            /* Selection width is smaller than minWidth */
             x2 = x1 - minWidth * (x2 < x1 || -1);
 
             if (x2 < left)
             x2 = x1 - minWidth * (x2 < x1 || -1);
 
             if (x2 < left)
@@ -332,6 +581,7 @@ $.imgAreaSelect = function (img, options) {
         }
 
         if (abs(y2 - y1) < minHeight) {
         }
 
         if (abs(y2 - y1) < minHeight) {
+            /* Selection height is smaller than minHeight */
             y2 = y1 - minHeight * (y2 < y1 || -1);
 
             if (y2 < top)
             y2 = y1 - minHeight * (y2 < y1 || -1);
 
             if (y2 < top)
@@ -346,11 +596,13 @@ $.imgAreaSelect = function (img, options) {
         fixAspectRatio(abs(x2 - x1) < abs(y2 - y1) * aspectRatio);
 
         if (abs(x2 - x1) > maxWidth) {
         fixAspectRatio(abs(x2 - x1) < abs(y2 - y1) * aspectRatio);
 
         if (abs(x2 - x1) > maxWidth) {
+            /* Selection width is greater than maxWidth */
             x2 = x1 - maxWidth * (x2 < x1 || -1);
             fixAspectRatio();
         }
 
         if (abs(y2 - y1) > maxHeight) {
             x2 = x1 - maxWidth * (x2 < x1 || -1);
             fixAspectRatio();
         }
 
         if (abs(y2 - y1) > maxHeight) {
+            /* Selection height is greater than maxHeight */
             y2 = y1 - maxHeight * (y2 < y1 || -1);
             fixAspectRatio(true);
         }
             y2 = y1 - maxHeight * (y2 < y1 || -1);
             fixAspectRatio(true);
         }
@@ -364,16 +616,30 @@ $.imgAreaSelect = function (img, options) {
         options.onSelectChange(img, getSelection());
     }
 
         options.onSelectChange(img, getSelection());
     }
 
+    /**
+     * Mousemove event handler triggered when the user is selecting an area
+     *
+     * @param event
+     *            The event object
+     * @return false
+     */
     function selectingMouseMove(event) {
     function selectingMouseMove(event) {
-        x2 = resize == '' || /w|e/.test(resize) || aspectRatio ? evX(event) : viewX(selection.x2);
-        y2 = resize == '' || /n|s/.test(resize) || aspectRatio ? evY(event) : viewY(selection.y2);
+        x2 = /w|e|^$/.test(resize) || aspectRatio ? evX(event) : viewX(selection.x2);
+        y2 = /n|s|^$/.test(resize) || aspectRatio ? evY(event) : viewY(selection.y2);
 
         doResize();
 
         return false;
 
         doResize();
 
         return false;
-
     }
 
     }
 
+    /**
+     * Move the selection area
+     *
+     * @param newX1
+     *            New viewport X1
+     * @param newY1
+     *            New viewport Y1
+     */
     function doMove(newX1, newY1) {
         x2 = (x1 = newX1) + selection.width;
         y2 = (y1 = newY1) + selection.height;
     function doMove(newX1, newY1) {
         x2 = (x1 = newX1) + selection.width;
         y2 = (y1 = newY1) + selection.height;
@@ -386,6 +652,13 @@ $.imgAreaSelect = function (img, options) {
         options.onSelectChange(img, getSelection());
     }
 
         options.onSelectChange(img, getSelection());
     }
 
+    /**
+     * Mousemove event handler triggered when the selection area is being moved
+     *
+     * @param event
+     *            The event object
+     * @return false
+     */
     function movingMouseMove(event) {
         x1 = max(left, min(startX + evX(event), left + imgWidth - selection.width));
         y1 = max(top, min(startY + evY(event), top + imgHeight - selection.height));
     function movingMouseMove(event) {
         x1 = max(left, min(startX + evX(event), left + imgWidth - selection.width));
         y1 = max(top, min(startY + evY(event), top + imgHeight - selection.height));
@@ -393,22 +666,24 @@ $.imgAreaSelect = function (img, options) {
         doMove(x1, y1);
 
         event.preventDefault();
         doMove(x1, y1);
 
         event.preventDefault();
-
         return false;
     }
 
         return false;
     }
 
+    /**
+     * Start selection
+     */
     function startSelection() {
         $(document).unbind('mousemove', startSelection);
         adjust();
 
         x2 = x1;
         y2 = y1;
     function startSelection() {
         $(document).unbind('mousemove', startSelection);
         adjust();
 
         x2 = x1;
         y2 = y1;
-
         doResize();
 
         resize = '';
 
         doResize();
 
         resize = '';
 
-        if ($outer.is(':not(:visible)'))
+        if (!$outer.is(':visible'))
+            /* Show the plugin elements */
             $box.add($outer).hide().fadeIn(options.fadeSpeed||0);
 
         shown = true;
             $box.add($outer).hide().fadeIn(options.fadeSpeed||0);
 
         shown = true;
@@ -420,6 +695,9 @@ $.imgAreaSelect = function (img, options) {
         options.onSelectStart(img, getSelection());
     }
 
         options.onSelectStart(img, getSelection());
     }
 
+    /**
+     * Cancel selection
+     */
     function cancelSelection() {
         $(document).unbind('mousemove', startSelection)
             .unbind('mouseup', cancelSelection);
     function cancelSelection() {
         $(document).unbind('mousemove', startSelection)
             .unbind('mouseup', cancelSelection);
@@ -427,29 +705,49 @@ $.imgAreaSelect = function (img, options) {
 
         setSelection(selX(x1), selY(y1), selX(x1), selY(y1));
 
 
         setSelection(selX(x1), selY(y1), selX(x1), selY(y1));
 
-        options.onSelectChange(img, getSelection());
-        options.onSelectEnd(img, getSelection());
+        /* If this is an API call, callback functions should not be triggered */
+        if (!this instanceof $.imgAreaSelect) {
+            options.onSelectChange(img, getSelection());
+            options.onSelectEnd(img, getSelection());
+        }
     }
 
     }
 
+    /**
+     * Image mousedown event handler
+     *
+     * @param event
+     *            The event object
+     * @return false
+     */
     function imgMouseDown(event) {
     function imgMouseDown(event) {
+        /* Ignore the event if animation is in progress */
         if (event.which != 1 || $outer.is(':animated')) return false;
 
         adjust();
         startX = x1 = evX(event);
         startY = y1 = evY(event);
 
         if (event.which != 1 || $outer.is(':animated')) return false;
 
         adjust();
         startX = x1 = evX(event);
         startY = y1 = evY(event);
 
+        /* Selection will start when the mouse is moved */
         $(document).mousemove(startSelection).mouseup(cancelSelection);
 
         return false;
     }
 
         $(document).mousemove(startSelection).mouseup(cancelSelection);
 
         return false;
     }
 
+    /**
+     * Window resize event handler
+     */
     function windowResize() {
         doUpdate(false);
     }
 
     function windowResize() {
         doUpdate(false);
     }
 
+    /**
+     * Image load event handler. This is the final part of the initialization
+     * process.
+     */
     function imgLoad() {
         imgLoaded = true;
 
     function imgLoad() {
         imgLoaded = true;
 
+        /* Set options */
         setOptions(options = $.extend({
             classPrefix: 'imgareaselect',
             movable: true,
         setOptions(options = $.extend({
             classPrefix: 'imgareaselect',
             movable: true,
@@ -471,9 +769,21 @@ $.imgAreaSelect = function (img, options) {
             $box.add($outer).hide().fadeIn(options.fadeSpeed||0);
         }
 
             $box.add($outer).hide().fadeIn(options.fadeSpeed||0);
         }
 
+        /*
+         * Call the onInit callback. The setTimeout() call is used to ensure
+         * that the plugin has been fully initialized and the object instance is
+         * available (so that it can be obtained in the callback).
+         */
         setTimeout(function () { options.onInit(img, getSelection()); }, 0);
     }
 
         setTimeout(function () { options.onInit(img, getSelection()); }, 0);
     }
 
+    /**
+     * Document keypress event handler
+     *
+     * @param event
+     *            The event object
+     * @return false
+     */
     var docKeyPress = function(event) {
         var k = options.keys, d, t, key = event.keyCode;
 
     var docKeyPress = function(event) {
         var k = options.keys, d, t, key = event.keyCode;
 
@@ -486,18 +796,24 @@ $.imgAreaSelect = function (img, options) {
             (k.ctrl == 'resize' && event.ctrlKey) ||
             (k.alt == 'resize' && (event.altKey || event.originalEvent.altKey)))
         {
             (k.ctrl == 'resize' && event.ctrlKey) ||
             (k.alt == 'resize' && (event.altKey || event.originalEvent.altKey)))
         {
+            /* Resize selection */
+
             switch (key) {
             case 37:
             switch (key) {
             case 37:
+                /* Left */
                 d = -d;
             case 39:
                 d = -d;
             case 39:
+                /* Right */
                 t = max(x1, x2);
                 x1 = min(x1, x2);
                 x2 = max(t + d, x1);
                 fixAspectRatio();
                 break;
             case 38:
                 t = max(x1, x2);
                 x1 = min(x1, x2);
                 x2 = max(t + d, x1);
                 fixAspectRatio();
                 break;
             case 38:
+                /* Up */
                 d = -d;
             case 40:
                 d = -d;
             case 40:
+                /* Down */
                 t = max(y1, y2);
                 y1 = min(y1, y2);
                 y2 = max(t + d, y1);
                 t = max(y1, y2);
                 y1 = min(y1, y2);
                 y2 = max(t + d, y1);
@@ -510,20 +826,26 @@ $.imgAreaSelect = function (img, options) {
             doResize();
         }
         else {
             doResize();
         }
         else {
+            /* Move selection */
+
             x1 = min(x1, x2);
             y1 = min(y1, y2);
 
             switch (key) {
             case 37:
             x1 = min(x1, x2);
             y1 = min(y1, y2);
 
             switch (key) {
             case 37:
+                /* Left */
                 doMove(max(x1 - d, left), y1);
                 break;
             case 38:
                 doMove(max(x1 - d, left), y1);
                 break;
             case 38:
+                /* Up */
                 doMove(x1, max(y1 - d, top));
                 break;
             case 39:
                 doMove(x1, max(y1 - d, top));
                 break;
             case 39:
+                /* Right */
                 doMove(x1 + min(d, imgWidth - selX(x2)), y1);
                 break;
             case 40:
                 doMove(x1 + min(d, imgWidth - selX(x2)), y1);
                 break;
             case 40:
+                /* Down */
                 doMove(x1, y1 + min(d, imgHeight - selY(y2)));
                 break;
             default:
                 doMove(x1, y1 + min(d, imgHeight - selY(y2)));
                 break;
             default:
@@ -534,21 +856,38 @@ $.imgAreaSelect = function (img, options) {
         return false;
     };
 
         return false;
     };
 
+    /**
+     * Apply style options to plugin element (or multiple elements)
+     *
+     * @param $elem
+     *            A jQuery object representing the element(s) to style
+     * @param props
+     *            An object that maps option names to corresponding CSS
+     *            properties
+     */
     function styleOptions($elem, props) {
         for (option in props)
             if (options[option] !== undefined)
                 $elem.css(props[option], options[option]);
     }
 
     function styleOptions($elem, props) {
         for (option in props)
             if (options[option] !== undefined)
                 $elem.css(props[option], options[option]);
     }
 
+    /**
+     * Set plugin options
+     *
+     * @param newOptions
+     *            The new options object
+     */
     function setOptions(newOptions) {
         if (newOptions.parent)
             ($parent = $(newOptions.parent)).append($box.add($outer));
 
     function setOptions(newOptions) {
         if (newOptions.parent)
             ($parent = $(newOptions.parent)).append($box.add($outer));
 
+        /* Merge the new options with the existing ones */
         $.extend(options, newOptions);
 
         adjust();
 
         if (newOptions.handles != null) {
         $.extend(options, newOptions);
 
         adjust();
 
         if (newOptions.handles != null) {
+            /* Recreate selection area handles */
             $handles.remove();
             $handles = $([]);
 
             $handles.remove();
             $handles = $([]);
 
@@ -557,26 +896,42 @@ $.imgAreaSelect = function (img, options) {
             while (i--)
                 $handles = $handles.add(div());
 
             while (i--)
                 $handles = $handles.add(div());
 
+            /* Add a class to handles and set the CSS properties */
             $handles.addClass(options.classPrefix + '-handle').css({
                 position: 'absolute',
             $handles.addClass(options.classPrefix + '-handle').css({
                 position: 'absolute',
+                /*
+                 * The font-size property needs to be set to zero, otherwise
+                 * Internet Explorer makes the handles too large
+                 */
                 fontSize: 0,
                 zIndex: zIndex + 1 || 1
             });
 
                 fontSize: 0,
                 zIndex: zIndex + 1 || 1
             });
 
+            /*
+             * If handle width/height has not been set with CSS rules, set the
+             * default 5px
+             */
             if (!parseInt($handles.css('width')) >= 0)
                 $handles.width(5).height(5);
 
             if (!parseInt($handles.css('width')) >= 0)
                 $handles.width(5).height(5);
 
+            /*
+             * If the borderWidth option is in use, add a solid border to
+             * handles
+             */
             if (o = options.borderWidth)
                 $handles.css({ borderWidth: o, borderStyle: 'solid' });
 
             if (o = options.borderWidth)
                 $handles.css({ borderWidth: o, borderStyle: 'solid' });
 
+            /* Apply other style options */
             styleOptions($handles, { borderColor1: 'border-color',
                 borderColor2: 'background-color',
                 borderOpacity: 'opacity' });
         }
 
             styleOptions($handles, { borderColor1: 'border-color',
                 borderColor2: 'background-color',
                 borderOpacity: 'opacity' });
         }
 
+        /* Calculate scale factors */
         scaleX = options.imageWidth / imgWidth || 1;
         scaleY = options.imageHeight / imgHeight || 1;
 
         scaleX = options.imageWidth / imgWidth || 1;
         scaleY = options.imageHeight / imgHeight || 1;
 
+        /* Set selection */
         if (newOptions.x1 != null) {
             setSelection(newOptions.x1, newOptions.y1, newOptions.x2,
                 newOptions.y2);
         if (newOptions.x1 != null) {
             setSelection(newOptions.x1, newOptions.y1, newOptions.x2,
                 newOptions.y2);
@@ -584,14 +939,17 @@ $.imgAreaSelect = function (img, options) {
         }
 
         if (newOptions.keys)
         }
 
         if (newOptions.keys)
+            /* Enable keyboard support */
             options.keys = $.extend({ shift: 1, ctrl: 'resize' },
                 newOptions.keys);
 
             options.keys = $.extend({ shift: 1, ctrl: 'resize' },
                 newOptions.keys);
 
+        /* Add classes to plugin elements */
         $outer.addClass(options.classPrefix + '-outer');
         $area.addClass(options.classPrefix + '-selection');
         for (i = 0; i++ < 4;)
             $($border[i-1]).addClass(options.classPrefix + '-border' + i);
 
         $outer.addClass(options.classPrefix + '-outer');
         $area.addClass(options.classPrefix + '-selection');
         for (i = 0; i++ < 4;)
             $($border[i-1]).addClass(options.classPrefix + '-border' + i);
 
+        /* Apply style options */
         styleOptions($area, { selectionColor: 'background-color',
             selectionOpacity: 'opacity' });
         styleOptions($border, { borderOpacity: 'opacity',
         styleOptions($area, { selectionColor: 'background-color',
             selectionOpacity: 'opacity' });
         styleOptions($border, { borderOpacity: 'opacity',
@@ -603,12 +961,13 @@ $.imgAreaSelect = function (img, options) {
         if (o = options.borderColor2)
             $($border[1]).css({ borderStyle: 'dashed', borderColor: o });
 
         if (o = options.borderColor2)
             $($border[1]).css({ borderStyle: 'dashed', borderColor: o });
 
+        /* Append all the selection area elements to the container box */
         $box.append($area.add($border).add($areaOpera).add($handles));
 
         if ($.browser.msie) {
         $box.append($area.add($border).add($areaOpera).add($handles));
 
         if ($.browser.msie) {
-            if (o = $outer.css('filter').match(/opacity=([0-9]+)/))
+            if (o = $outer.css('filter').match(/opacity=(\d+)/))
                 $outer.css('opacity', o[1]/100);
                 $outer.css('opacity', o[1]/100);
-            if (o = $border.css('filter').match(/opacity=([0-9]+)/))
+            if (o = $border.css('filter').match(/opacity=(\d+)/))
                 $border.css('opacity', o[1]/100);
         }
 
                 $border.css('opacity', o[1]/100);
         }
 
@@ -620,16 +979,19 @@ $.imgAreaSelect = function (img, options) {
             doUpdate();
         }
 
             doUpdate();
         }
 
+        /* Calculate the aspect ratio factor */
         aspectRatio = (d = (options.aspectRatio || '').split(/:/))[0] / d[1];
 
         $img.add($outer).unbind('mousedown', imgMouseDown);
 
         if (options.disable || options.enable === false) {
         aspectRatio = (d = (options.aspectRatio || '').split(/:/))[0] / d[1];
 
         $img.add($outer).unbind('mousedown', imgMouseDown);
 
         if (options.disable || options.enable === false) {
+            /* Disable the plugin */
             $box.unbind('mousemove', areaMouseMove).unbind('mousedown', areaMouseDown);
             $(window).unbind('resize', windowResize);
         }
         else {
             if (options.enable || options.disable === false) {
             $box.unbind('mousemove', areaMouseMove).unbind('mousedown', areaMouseDown);
             $(window).unbind('resize', windowResize);
         }
         else {
             if (options.enable || options.disable === false) {
+                /* Enable the plugin */
                 if (options.resizable || options.movable)
                     $box.mousemove(areaMouseMove).mousedown(areaMouseDown);
 
                 if (options.resizable || options.movable)
                     $box.mousemove(areaMouseMove).mousedown(areaMouseDown);
 
@@ -643,69 +1005,179 @@ $.imgAreaSelect = function (img, options) {
         options.enable = options.disable = undefined;
     }
 
         options.enable = options.disable = undefined;
     }
 
+    /**
+     * Remove plugin completely
+     */
     this.remove = function () {
     this.remove = function () {
+        /*
+         * Call setOptions with { disable: true } to unbind the event handlers
+         */
         setOptions({ disable: true });
         $box.add($outer).remove();
     };
 
         setOptions({ disable: true });
         $box.add($outer).remove();
     };
 
+    /*
+     * Public API
+     */
+
+    /**
+     * Get current options
+     *
+     * @return An object containing the set of options currently in use
+     */
     this.getOptions = function () { return options; };
 
     this.getOptions = function () { return options; };
 
+    /**
+     * Set plugin options
+     *
+     * @param newOptions
+     *            The new options object
+     */
     this.setOptions = setOptions;
 
     this.setOptions = setOptions;
 
+    /**
+     * Get the current selection
+     *
+     * @param noScale
+     *            If set to <code>true</code>, scaling is not applied to the
+     *            returned selection
+     * @return Selection object
+     */
     this.getSelection = getSelection;
 
     this.getSelection = getSelection;
 
+    /**
+     * Set the current selection
+     *
+     * @param x1
+     *            X coordinate of the upper left corner of the selection area
+     * @param y1
+     *            Y coordinate of the upper left corner of the selection area
+     * @param x2
+     *            X coordinate of the lower right corner of the selection area
+     * @param y2
+     *            Y coordinate of the lower right corner of the selection area
+     * @param noScale
+     *            If set to <code>true</code>, scaling is not applied to the
+     *            new selection
+     */
     this.setSelection = setSelection;
 
     this.setSelection = setSelection;
 
+    /**
+     * Cancel selection
+     */
+    this.cancelSelection = cancelSelection;
+
+    /**
+     * Update plugin elements
+     *
+     * @param resetKeyPress
+     *            If set to <code>false</code>, this instance's keypress
+     *            event handler is not activated
+     */
     this.update = doUpdate;
 
     this.update = doUpdate;
 
+    /*
+     * Traverse the image's parent elements (up to <body>) and find the
+     * highest z-index
+     */
     $p = $img;
 
     while ($p.length) {
         zIndex = max(zIndex,
             !isNaN($p.css('z-index')) ? $p.css('z-index') : zIndex);
     $p = $img;
 
     while ($p.length) {
         zIndex = max(zIndex,
             !isNaN($p.css('z-index')) ? $p.css('z-index') : zIndex);
+        /* Also check if any of the ancestor elements has fixed position */
         if ($p.css('position') == 'fixed')
             position = 'fixed';
 
         $p = $p.parent(':not(body)');
     }
 
         if ($p.css('position') == 'fixed')
             position = 'fixed';
 
         $p = $p.parent(':not(body)');
     }
 
+    /*
+     * If z-index is given as an option, it overrides the one found by the
+     * above loop
+     */
     zIndex = options.zIndex || zIndex;
 
     if ($.browser.msie)
         $img.attr('unselectable', 'on');
 
     zIndex = options.zIndex || zIndex;
 
     if ($.browser.msie)
         $img.attr('unselectable', 'on');
 
+    /*
+     * In MSIE and WebKit, we need to use the keydown event instead of keypress
+     */
     $.imgAreaSelect.keyPress = $.browser.msie ||
         $.browser.safari ? 'keydown' : 'keypress';
 
     $.imgAreaSelect.keyPress = $.browser.msie ||
         $.browser.safari ? 'keydown' : 'keypress';
 
+    /*
+     * There is a bug affecting the CSS cursor property in Opera (observed in
+     * versions up to 10.00) that prevents the cursor from being updated unless
+     * the mouse leaves and enters the element again. To trigger the mouseover
+     * event, we're adding an additional div to $box and we're going to toggle
+     * it when mouse moves inside the selection area.
+     */
     if ($.browser.opera)
         $areaOpera = div().css({ width: '100%', height: '100%',
             position: 'absolute', zIndex: zIndex + 2 || 2 });
 
     if ($.browser.opera)
         $areaOpera = div().css({ width: '100%', height: '100%',
             position: 'absolute', zIndex: zIndex + 2 || 2 });
 
+    /*
+     * We initially set visibility to "hidden" as a workaround for a weird
+     * behaviour observed in Google Chrome 1.0.154.53 (on Windows XP). Normally
+     * we would just set display to "none", but, for some reason, if we do so
+     * then Chrome refuses to later display the element with .show() or
+     * .fadeIn().
+     */
     $box.add($outer).css({ visibility: 'hidden', position: position,
         overflow: 'hidden', zIndex: zIndex || '0' });
     $box.css({ zIndex: zIndex + 2 || 2 });
     $area.add($border).css({ position: 'absolute', fontSize: 0 });
 
     $box.add($outer).css({ visibility: 'hidden', position: position,
         overflow: 'hidden', zIndex: zIndex || '0' });
     $box.css({ zIndex: zIndex + 2 || 2 });
     $area.add($border).css({ position: 'absolute', fontSize: 0 });
 
+    /*
+     * If the image has been fully loaded, or if it is not really an image (eg.
+     * a div), call imgLoad() immediately; otherwise, bind it to be called once
+     * on image load event.
+     */
     img.complete || img.readyState == 'complete' || !$img.is('img') ?
         imgLoad() : $img.one('load', imgLoad);
 
     img.complete || img.readyState == 'complete' || !$img.is('img') ?
         imgLoad() : $img.one('load', imgLoad);
 
-    if ($.browser.msie && $.browser.version >= 9)
+    /*
+     * MSIE 9.0 doesn't always fire the image load event -- resetting the src
+     * attribute seems to trigger it. The check is for version 7 and above to
+     * accommodate for MSIE 9 running in compatibility mode.
+     */
+   if ($.browser.msie && $.browser.version >= 7)
         img.src = img.src;
 };
 
         img.src = img.src;
 };
 
+/**
+ * Invoke imgAreaSelect on a jQuery object containing the image(s)
+ *
+ * @param options
+ *            Options object
+ * @return The jQuery object or a reference to imgAreaSelect instance (if the
+ *         <code>instance</code> option was specified)
+ */
 $.fn.imgAreaSelect = function (options) {
     options = options || {};
 
     this.each(function () {
 $.fn.imgAreaSelect = function (options) {
     options = options || {};
 
     this.each(function () {
+        /* Is there already an imgAreaSelect instance bound to this element? */
         if ($(this).data('imgAreaSelect')) {
         if ($(this).data('imgAreaSelect')) {
+            /* Yes there is -- is it supposed to be removed? */
             if (options.remove) {
             if (options.remove) {
+                /* Remove the plugin */
                 $(this).data('imgAreaSelect').remove();
                 $(this).removeData('imgAreaSelect');
             }
             else
                 $(this).data('imgAreaSelect').remove();
                 $(this).removeData('imgAreaSelect');
             }
             else
+                /* Reset options */
                 $(this).data('imgAreaSelect').setOptions(options);
         }
         else if (!options.remove) {
                 $(this).data('imgAreaSelect').setOptions(options);
         }
         else if (!options.remove) {
+            /* No exising instance -- create a new one */
+
+            /*
+             * If neither the "enable" nor the "disable" option is present, add
+             * "enable" as the default
+             */
             if (options.enable === undefined && options.disable === undefined)
                 options.enable = true;
 
             if (options.enable === undefined && options.disable === undefined)
                 options.enable = true;
 
@@ -714,6 +1186,10 @@ $.fn.imgAreaSelect = function (options) {
     });
 
     if (options.instance)
     });
 
     if (options.instance)
+        /*
+         * Return the imgAreaSelect instance bound to the first element in the
+         * set
+         */
         return $(this).data('imgAreaSelect');
 
     return this;
         return $(this).data('imgAreaSelect');
 
     return this;
index a29d6678f69084defb18a75ec7e55b89db9509c1..f35fa18689eb09b7305b44c8107aa5370e517ef1 100644 (file)
@@ -1 +1 @@
-(function(e){var b=Math.abs,a=Math.max,d=Math.min,c=Math.round;function f(){return e("<div/>")}e.imgAreaSelect=function(Q,ad){var M=e(Q),u,B=f(),E=f(),ap=f().add(f()).add(f()).add(f()),v=f().add(f()).add(f()).add(f()),ax=e([]),aj,T,ao,ay={left:0,top:0},S,aA,p,V={left:0,top:0},g=0,ak="absolute",an,am,ab,aa,az=10,t,q,al,k,x,aE,ah,D,n,C,l,aC={x1:0,y1:0,x2:0,y2:0,width:0,height:0},F=document.documentElement,Z,R,O,N,K,P,I;function Y(h){return h+ay.left-V.left}function X(h){return h+ay.top-V.top}function au(h){return h-ay.left+V.left}function at(h){return h-ay.top+V.top}function A(h){return h.pageX-V.left}function z(h){return h.pageY-V.top}function ar(h){var o=h||ab,i=h||aa;return{x1:c(aC.x1*o),y1:c(aC.y1*i),x2:c(aC.x2*o),y2:c(aC.y2*i),width:c(aC.x2*o)-c(aC.x1*o),height:c(aC.y2*i)-c(aC.y1*i)}}function aq(i,w,h,o,aF){var aH=aF||ab,aG=aF||aa;aC={x1:c(i/aH||0),y1:c(w/aG||0),x2:c(h/aH||0),y2:c(o/aG||0)};aC.width=aC.x2-aC.x1;aC.height=aC.y2-aC.y1}function m(){if(!M.width()){return}ay={left:c(M.offset().left),top:c(M.offset().top)};S=M.innerWidth();aA=M.innerHeight();ay.top+=(M.outerHeight()-aA)>>1;ay.left+=(M.outerWidth()-S)>>1;q=ad.minWidth||0;al=ad.minHeight||0;k=d(ad.maxWidth||1<<24,S);x=d(ad.maxHeight||1<<24,aA);if(e().jquery=="1.3.2"&&ak=="fixed"&&!F.getBoundingClientRect){ay.top+=a(document.body.scrollTop,F.scrollTop);ay.left+=a(document.body.scrollLeft,F.scrollLeft)}V=e.inArray(p.css("position"),["absolute","relative"])+1?{left:c(p.offset().left)-p.scrollLeft(),top:c(p.offset().top)-p.scrollTop()}:ak=="fixed"?{left:e(document).scrollLeft(),top:e(document).scrollTop()}:{left:0,top:0};T=Y(0);ao=X(0);if(aC.x2>S||aC.y2>aA){aB()}}function J(h){if(!ah){return}B.css({left:Y(aC.x1),top:X(aC.y1)}).add(E).width(K=aC.width).height(P=aC.height);E.add(ap).add(ax).css({left:0,top:0});ap.width(a(K-ap.outerWidth()+ap.innerWidth(),0)).height(a(P-ap.outerHeight()+ap.innerHeight(),0));e(v[0]).css({left:T,top:ao,width:aC.x1,height:aA});e(v[1]).css({left:T+aC.x1,top:ao,width:K,height:aC.y1});e(v[2]).css({left:T+aC.x2,top:ao,width:S-aC.x2,height:aA});e(v[3]).css({left:T+aC.x1,top:ao+aC.y2,width:K,height:aA-aC.y2});K-=ax.outerWidth();P-=ax.outerHeight();switch(ax.length){case 8:e(ax[4]).css({left:K>>1});e(ax[5]).css({left:K,top:P>>1});e(ax[6]).css({left:K>>1,top:P});e(ax[7]).css({top:P>>1});case 4:ax.slice(1,3).css({left:K});ax.slice(2,4).css({top:P})}if(h!==false){if(e.imgAreaSelect.keyPress!=av){e(document).unbind(e.imgAreaSelect.keyPress,e.imgAreaSelect.onKeyPress)}if(ad.keys){e(document)[e.imgAreaSelect.keyPress](e.imgAreaSelect.onKeyPress=av)}}if(e.browser.msie&&ap.outerWidth()-ap.innerWidth()==2){ap.css("margin",0);setTimeout(function(){ap.css("margin","auto")},0)}}function y(h){m();J(h);D=Y(aC.x1);n=X(aC.y1);C=Y(aC.x2);l=X(aC.y2)}function ag(h,i){ad.fadeSpeed?h.fadeOut(ad.fadeSpeed,i):h.hide()}function H(i){var h=au(A(i))-aC.x1,o=at(z(i))-aC.y1;if(!I){m();I=true;B.one("mouseout",function(){I=false})}t="";if(ad.resizable){if(o<=ad.resizeMargin){t="n"}else{if(o>=aC.height-ad.resizeMargin){t="s"}}if(h<=ad.resizeMargin){t+="w"}else{if(h>=aC.width-ad.resizeMargin){t+="e"}}}B.css("cursor",t?t+"-resize":ad.movable?"move":"");if(aj){aj.toggle()}}function j(h){e("body").css("cursor","");if(ad.autoHide||aC.width*aC.height==0){ag(B.add(v),function(){e(this).hide()})}e(document).unbind("mousemove",ae);B.mousemove(H);ad.onSelectEnd(Q,ar())}function aw(h){if(h.which!=1){return false}m();if(t){e("body").css("cursor",t+"-resize");D=Y(aC[/w/.test(t)?"x2":"x1"]);n=X(aC[/n/.test(t)?"y2":"y1"]);e(document).mousemove(ae).one("mouseup",j);B.unbind("mousemove",H)}else{if(ad.movable){an=T+aC.x1-A(h);am=ao+aC.y1-z(h);B.unbind("mousemove",H);e(document).mousemove(ac).one("mouseup",function(){ad.onSelectEnd(Q,ar());e(document).unbind("mousemove",ac);B.mousemove(H)})}else{M.mousedown(h)}}return false}function L(h){if(aE){if(h){C=a(T,d(T+S,D+b(l-n)*aE*(C>D||-1)));l=c(a(ao,d(ao+aA,n+b(C-D)/aE*(l>n||-1))));C=c(C)}else{l=a(ao,d(ao+aA,n+b(C-D)/aE*(l>n||-1)));C=c(a(T,d(T+S,D+b(l-n)*aE*(C>D||-1))));l=c(l)}}}function aB(){D=d(D,T+S);n=d(n,ao+aA);if(b(C-D)<q){C=D-q*(C<D||-1);if(C<T){D=T+q}else{if(C>T+S){D=T+S-q}}}if(b(l-n)<al){l=n-al*(l<n||-1);if(l<ao){n=ao+al}else{if(l>ao+aA){n=ao+aA-al}}}C=a(T,d(C,T+S));l=a(ao,d(l,ao+aA));L(b(C-D)<b(l-n)*aE);if(b(C-D)>k){C=D-k*(C<D||-1);L()}if(b(l-n)>x){l=n-x*(l<n||-1);L(true)}aC={x1:au(d(D,C)),x2:au(a(D,C)),y1:at(d(n,l)),y2:at(a(n,l)),width:b(C-D),height:b(l-n)};J();ad.onSelectChange(Q,ar())}function ae(h){C=t==""||/w|e/.test(t)||aE?A(h):Y(aC.x2);l=t==""||/n|s/.test(t)||aE?z(h):X(aC.y2);aB();return false}function U(h,i){C=(D=h)+aC.width;l=(n=i)+aC.height;e.extend(aC,{x1:au(D),y1:at(n),x2:au(C),y2:at(l)});J();ad.onSelectChange(Q,ar())}function ac(h){D=a(T,d(an+A(h),T+S-aC.width));n=a(ao,d(am+z(h),ao+aA-aC.height));U(D,n);h.preventDefault();return false}function r(){e(document).unbind("mousemove",r);m();C=D;l=n;aB();t="";if(v.is(":not(:visible)")){B.add(v).hide().fadeIn(ad.fadeSpeed||0)}ah=true;e(document).unbind("mouseup",W).mousemove(ae).one("mouseup",j);B.unbind("mousemove",H);ad.onSelectStart(Q,ar())}function W(){e(document).unbind("mousemove",r).unbind("mouseup",W);ag(B.add(v));aq(au(D),at(n),au(D),at(n));ad.onSelectChange(Q,ar());ad.onSelectEnd(Q,ar())}function aD(h){if(h.which!=1||v.is(":animated")){return false}m();an=D=A(h);am=n=z(h);e(document).mousemove(r).mouseup(W);return false}function ai(){y(false)}function s(){u=true;af(ad=e.extend({classPrefix:"imgareaselect",movable:true,parent:"body",resizable:true,resizeMargin:10,onInit:function(){},onSelectStart:function(){},onSelectChange:function(){},onSelectEnd:function(){}},ad));B.add(v).css({visibility:""});if(ad.show){ah=true;m();J();B.add(v).hide().fadeIn(ad.fadeSpeed||0)}setTimeout(function(){ad.onInit(Q,ar())},0)}var av=function(w){var h=ad.keys,aF,o,i=w.keyCode;aF=!isNaN(h.alt)&&(w.altKey||w.originalEvent.altKey)?h.alt:!isNaN(h.ctrl)&&w.ctrlKey?h.ctrl:!isNaN(h.shift)&&w.shiftKey?h.shift:!isNaN(h.arrows)?h.arrows:10;if(h.arrows=="resize"||(h.shift=="resize"&&w.shiftKey)||(h.ctrl=="resize"&&w.ctrlKey)||(h.alt=="resize"&&(w.altKey||w.originalEvent.altKey))){switch(i){case 37:aF=-aF;case 39:o=a(D,C);D=d(D,C);C=a(o+aF,D);L();break;case 38:aF=-aF;case 40:o=a(n,l);n=d(n,l);l=a(o+aF,n);L(true);break;default:return}aB()}else{D=d(D,C);n=d(n,l);switch(i){case 37:U(a(D-aF,T),n);break;case 38:U(D,a(n-aF,ao));break;case 39:U(D+d(aF,S-au(C)),n);break;case 40:U(D,n+d(aF,aA-at(l)));break;default:return}}return false};function G(h,i){for(option in i){if(ad[option]!==undefined){h.css(i[option],ad[option])}}}function af(h){if(h.parent){(p=e(h.parent)).append(B.add(v))}e.extend(ad,h);m();if(h.handles!=null){ax.remove();ax=e([]);O=h.handles?h.handles=="corners"?4:8:0;while(O--){ax=ax.add(f())}ax.addClass(ad.classPrefix+"-handle").css({position:"absolute",fontSize:0,zIndex:g+1||1});if(!parseInt(ax.css("width"))>=0){ax.width(5).height(5)}if(N=ad.borderWidth){ax.css({borderWidth:N,borderStyle:"solid"})}G(ax,{borderColor1:"border-color",borderColor2:"background-color",borderOpacity:"opacity"})}ab=ad.imageWidth/S||1;aa=ad.imageHeight/aA||1;if(h.x1!=null){aq(h.x1,h.y1,h.x2,h.y2);h.show=!h.hide}if(h.keys){ad.keys=e.extend({shift:1,ctrl:"resize"},h.keys)}v.addClass(ad.classPrefix+"-outer");E.addClass(ad.classPrefix+"-selection");for(O=0;O++<4;){e(ap[O-1]).addClass(ad.classPrefix+"-border"+O)}G(E,{selectionColor:"background-color",selectionOpacity:"opacity"});G(ap,{borderOpacity:"opacity",borderWidth:"border-width"});G(v,{outerColor:"background-color",outerOpacity:"opacity"});if(N=ad.borderColor1){e(ap[0]).css({borderStyle:"solid",borderColor:N})}if(N=ad.borderColor2){e(ap[1]).css({borderStyle:"dashed",borderColor:N})}B.append(E.add(ap).add(aj).add(ax));if(e.browser.msie){if(N=v.css("filter").match(/opacity=([0-9]+)/)){v.css("opacity",N[1]/100)}if(N=ap.css("filter").match(/opacity=([0-9]+)/)){ap.css("opacity",N[1]/100)}}if(h.hide){ag(B.add(v))}else{if(h.show&&u){ah=true;B.add(v).fadeIn(ad.fadeSpeed||0);y()}}aE=(R=(ad.aspectRatio||"").split(/:/))[0]/R[1];M.add(v).unbind("mousedown",aD);if(ad.disable||ad.enable===false){B.unbind("mousemove",H).unbind("mousedown",aw);e(window).unbind("resize",ai)}else{if(ad.enable||ad.disable===false){if(ad.resizable||ad.movable){B.mousemove(H).mousedown(aw)}e(window).resize(ai)}if(!ad.persistent){M.add(v).mousedown(aD)}}ad.enable=ad.disable=undefined}this.remove=function(){af({disable:true});B.add(v).remove()};this.getOptions=function(){return ad};this.setOptions=af;this.getSelection=ar;this.setSelection=aq;this.update=y;Z=M;while(Z.length){g=a(g,!isNaN(Z.css("z-index"))?Z.css("z-index"):g);if(Z.css("position")=="fixed"){ak="fixed"}Z=Z.parent(":not(body)")}g=ad.zIndex||g;if(e.browser.msie){M.attr("unselectable","on")}e.imgAreaSelect.keyPress=e.browser.msie||e.browser.safari?"keydown":"keypress";if(e.browser.opera){aj=f().css({width:"100%",height:"100%",position:"absolute",zIndex:g+2||2})}B.add(v).css({visibility:"hidden",position:ak,overflow:"hidden",zIndex:g||"0"});B.css({zIndex:g+2||2});E.add(ap).css({position:"absolute",fontSize:0});Q.complete||Q.readyState=="complete"||!M.is("img")?s():M.one("load",s);if(e.browser.msie&&e.browser.version>=9){Q.src=Q.src}};e.fn.imgAreaSelect=function(g){g=g||{};this.each(function(){if(e(this).data("imgAreaSelect")){if(g.remove){e(this).data("imgAreaSelect").remove();e(this).removeData("imgAreaSelect")}else{e(this).data("imgAreaSelect").setOptions(g)}}else{if(!g.remove){if(g.enable===undefined&&g.disable===undefined){g.enable=true}e(this).data("imgAreaSelect",new e.imgAreaSelect(this,g))}}});if(g.instance){return e(this).data("imgAreaSelect")}return this}})(jQuery);
\ No newline at end of file
+(function(e){var b=Math.abs,a=Math.max,d=Math.min,c=Math.round;function f(){return e("<div/>")}e.imgAreaSelect=function(s,X){var az=e(s),Z,av=f(),ai=f(),K=f().add(f()).add(f()).add(f()),ab=f().add(f()).add(f()).add(f()),O=e([]),V,n,q,aC={left:0,top:0},Q,j,C,P={left:0,top:0},D=0,ag="absolute",T,S,ad,ac,L,E,U,W,am,Y,N,A,aD,z,aB,y={x1:0,y1:0,x2:0,y2:0,width:0,height:0},p=document.documentElement,l,au,ap,aj,af,aq,x;function J(h){return h+aC.left-P.left}function I(h){return h+aC.top-P.top}function H(h){return h-aC.left+P.left}function B(h){return h-aC.top+P.top}function ao(h){return h.pageX-P.left}function al(h){return h.pageY-P.top}function G(h){var o=h||ad,i=h||ac;return{x1:c(y.x1*o),y1:c(y.y1*i),x2:c(y.x2*o),y2:c(y.y2*i),width:c(y.x2*o)-c(y.x1*o),height:c(y.y2*i)-c(y.y1*i)}}function ah(i,w,h,o,aE){var aG=aE||ad,aF=aE||ac;y={x1:c(i/aG||0),y1:c(w/aF||0),x2:c(h/aG||0),y2:c(o/aF||0)};y.width=y.x2-y.x1;y.height=y.y2-y.y1}function ar(){if(!az.width()){return}aC={left:c(az.offset().left),top:c(az.offset().top)};Q=az.innerWidth();j=az.innerHeight();aC.top+=(az.outerHeight()-j)>>1;aC.left+=(az.outerWidth()-Q)>>1;E=c(X.minWidth/ad)||0;U=c(X.minHeight/ac)||0;W=c(d(X.maxWidth/ad||1<<24,Q));am=c(d(X.maxHeight/ac||1<<24,j));if(e().jquery=="1.3.2"&&ag=="fixed"&&!p.getBoundingClientRect){aC.top+=a(document.body.scrollTop,p.scrollTop);aC.left+=a(document.body.scrollLeft,p.scrollLeft)}P=/absolute|relative/.test(C.css("position"))?{left:c(C.offset().left)-C.scrollLeft(),top:c(C.offset().top)-C.scrollTop()}:ag=="fixed"?{left:e(document).scrollLeft(),top:e(document).scrollTop()}:{left:0,top:0};n=J(0);q=I(0);if(y.x2>Q||y.y2>j){ay()}}function aa(h){if(!N){return}av.css({left:J(y.x1),top:I(y.y1)}).add(ai).width(af=y.width).height(aq=y.height);ai.add(K).add(O).css({left:0,top:0});K.width(a(af-K.outerWidth()+K.innerWidth(),0)).height(a(aq-K.outerHeight()+K.innerHeight(),0));e(ab[0]).css({left:n,top:q,width:y.x1,height:j});e(ab[1]).css({left:n+y.x1,top:q,width:af,height:y.y1});e(ab[2]).css({left:n+y.x2,top:q,width:Q-y.x2,height:j});e(ab[3]).css({left:n+y.x1,top:q+y.y2,width:af,height:j-y.y2});af-=O.outerWidth();aq-=O.outerHeight();switch(O.length){case 8:e(O[4]).css({left:af>>1});e(O[5]).css({left:af,top:aq>>1});e(O[6]).css({left:af>>1,top:aq});e(O[7]).css({top:aq>>1});case 4:O.slice(1,3).css({left:af});O.slice(2,4).css({top:aq})}if(h!==false){if(e.imgAreaSelect.keyPress!=aw){e(document).unbind(e.imgAreaSelect.keyPress,e.imgAreaSelect.onKeyPress)}if(X.keys){e(document)[e.imgAreaSelect.keyPress](e.imgAreaSelect.onKeyPress=aw)}}if(e.browser.msie&&K.outerWidth()-K.innerWidth()==2){K.css("margin",0);setTimeout(function(){K.css("margin","auto")},0)}}function u(h){ar();aa(h);A=J(y.x1);aD=I(y.y1);z=J(y.x2);aB=I(y.y2)}function ak(h,i){X.fadeSpeed?h.fadeOut(X.fadeSpeed,i):h.hide()}function F(i){var h=H(ao(i))-y.x1,o=B(al(i))-y.y1;if(!x){ar();x=true;av.one("mouseout",function(){x=false})}L="";if(X.resizable){if(o<=X.resizeMargin){L="n"}else{if(o>=y.height-X.resizeMargin){L="s"}}if(h<=X.resizeMargin){L+="w"}else{if(h>=y.width-X.resizeMargin){L+="e"}}}av.css("cursor",L?L+"-resize":X.movable?"move":"");if(V){V.toggle()}}function an(h){e("body").css("cursor","");if(X.autoHide||y.width*y.height==0){ak(av.add(ab),function(){e(this).hide()})}e(document).unbind("mousemove",ae);av.mousemove(F);X.onSelectEnd(s,G())}function t(h){if(h.which!=1){return false}ar();if(L){e("body").css("cursor",L+"-resize");A=J(y[/w/.test(L)?"x2":"x1"]);aD=I(y[/n/.test(L)?"y2":"y1"]);e(document).mousemove(ae).one("mouseup",an);av.unbind("mousemove",F)}else{if(X.movable){T=n+y.x1-ao(h);S=q+y.y1-al(h);av.unbind("mousemove",F);e(document).mousemove(g).one("mouseup",function(){X.onSelectEnd(s,G());e(document).unbind("mousemove",g);av.mousemove(F)})}else{az.mousedown(h)}}return false}function r(h){if(Y){if(h){z=a(n,d(n+Q,A+b(aB-aD)*Y*(z>A||-1)));aB=c(a(q,d(q+j,aD+b(z-A)/Y*(aB>aD||-1))));z=c(z)}else{aB=a(q,d(q+j,aD+b(z-A)/Y*(aB>aD||-1)));z=c(a(n,d(n+Q,A+b(aB-aD)*Y*(z>A||-1))));aB=c(aB)}}}function ay(){A=d(A,n+Q);aD=d(aD,q+j);if(b(z-A)<E){z=A-E*(z<A||-1);if(z<n){A=n+E}else{if(z>n+Q){A=n+Q-E}}}if(b(aB-aD)<U){aB=aD-U*(aB<aD||-1);if(aB<q){aD=q+U}else{if(aB>q+j){aD=q+j-U}}}z=a(n,d(z,n+Q));aB=a(q,d(aB,q+j));r(b(z-A)<b(aB-aD)*Y);if(b(z-A)>W){z=A-W*(z<A||-1);r()}if(b(aB-aD)>am){aB=aD-am*(aB<aD||-1);r(true)}y={x1:H(d(A,z)),x2:H(a(A,z)),y1:B(d(aD,aB)),y2:B(a(aD,aB)),width:b(z-A),height:b(aB-aD)};aa();X.onSelectChange(s,G())}function ae(h){z=/w|e|^$/.test(L)||Y?ao(h):J(y.x2);aB=/n|s|^$/.test(L)||Y?al(h):I(y.y2);ay();return false}function R(h,i){z=(A=h)+y.width;aB=(aD=i)+y.height;e.extend(y,{x1:H(A),y1:B(aD),x2:H(z),y2:B(aB)});aa();X.onSelectChange(s,G())}function g(h){A=a(n,d(T+ao(h),n+Q-y.width));aD=a(q,d(S+al(h),q+j-y.height));R(A,aD);h.preventDefault();return false}function aA(){e(document).unbind("mousemove",aA);ar();z=A;aB=aD;ay();L="";if(!ab.is(":visible")){av.add(ab).hide().fadeIn(X.fadeSpeed||0)}N=true;e(document).unbind("mouseup",at).mousemove(ae).one("mouseup",an);av.unbind("mousemove",F);X.onSelectStart(s,G())}function at(){e(document).unbind("mousemove",aA).unbind("mouseup",at);ak(av.add(ab));ah(H(A),B(aD),H(A),B(aD));if(!this instanceof e.imgAreaSelect){X.onSelectChange(s,G());X.onSelectEnd(s,G())}}function m(h){if(h.which!=1||ab.is(":animated")){return false}ar();T=A=ao(h);S=aD=al(h);e(document).mousemove(aA).mouseup(at);return false}function v(){u(false)}function ax(){Z=true;M(X=e.extend({classPrefix:"imgareaselect",movable:true,parent:"body",resizable:true,resizeMargin:10,onInit:function(){},onSelectStart:function(){},onSelectChange:function(){},onSelectEnd:function(){}},X));av.add(ab).css({visibility:""});if(X.show){N=true;ar();aa();av.add(ab).hide().fadeIn(X.fadeSpeed||0)}setTimeout(function(){X.onInit(s,G())},0)}var aw=function(w){var h=X.keys,aE,o,i=w.keyCode;aE=!isNaN(h.alt)&&(w.altKey||w.originalEvent.altKey)?h.alt:!isNaN(h.ctrl)&&w.ctrlKey?h.ctrl:!isNaN(h.shift)&&w.shiftKey?h.shift:!isNaN(h.arrows)?h.arrows:10;if(h.arrows=="resize"||(h.shift=="resize"&&w.shiftKey)||(h.ctrl=="resize"&&w.ctrlKey)||(h.alt=="resize"&&(w.altKey||w.originalEvent.altKey))){switch(i){case 37:aE=-aE;case 39:o=a(A,z);A=d(A,z);z=a(o+aE,A);r();break;case 38:aE=-aE;case 40:o=a(aD,aB);aD=d(aD,aB);aB=a(o+aE,aD);r(true);break;default:return}ay()}else{A=d(A,z);aD=d(aD,aB);switch(i){case 37:R(a(A-aE,n),aD);break;case 38:R(A,a(aD-aE,q));break;case 39:R(A+d(aE,Q-H(z)),aD);break;case 40:R(A,aD+d(aE,j-B(aB)));break;default:return}}return false};function k(h,i){for(option in i){if(X[option]!==undefined){h.css(i[option],X[option])}}}function M(h){if(h.parent){(C=e(h.parent)).append(av.add(ab))}e.extend(X,h);ar();if(h.handles!=null){O.remove();O=e([]);ap=h.handles?h.handles=="corners"?4:8:0;while(ap--){O=O.add(f())}O.addClass(X.classPrefix+"-handle").css({position:"absolute",fontSize:0,zIndex:D+1||1});if(!parseInt(O.css("width"))>=0){O.width(5).height(5)}if(aj=X.borderWidth){O.css({borderWidth:aj,borderStyle:"solid"})}k(O,{borderColor1:"border-color",borderColor2:"background-color",borderOpacity:"opacity"})}ad=X.imageWidth/Q||1;ac=X.imageHeight/j||1;if(h.x1!=null){ah(h.x1,h.y1,h.x2,h.y2);h.show=!h.hide}if(h.keys){X.keys=e.extend({shift:1,ctrl:"resize"},h.keys)}ab.addClass(X.classPrefix+"-outer");ai.addClass(X.classPrefix+"-selection");for(ap=0;ap++<4;){e(K[ap-1]).addClass(X.classPrefix+"-border"+ap)}k(ai,{selectionColor:"background-color",selectionOpacity:"opacity"});k(K,{borderOpacity:"opacity",borderWidth:"border-width"});k(ab,{outerColor:"background-color",outerOpacity:"opacity"});if(aj=X.borderColor1){e(K[0]).css({borderStyle:"solid",borderColor:aj})}if(aj=X.borderColor2){e(K[1]).css({borderStyle:"dashed",borderColor:aj})}av.append(ai.add(K).add(V).add(O));if(e.browser.msie){if(aj=ab.css("filter").match(/opacity=(\d+)/)){ab.css("opacity",aj[1]/100)}if(aj=K.css("filter").match(/opacity=(\d+)/)){K.css("opacity",aj[1]/100)}}if(h.hide){ak(av.add(ab))}else{if(h.show&&Z){N=true;av.add(ab).fadeIn(X.fadeSpeed||0);u()}}Y=(au=(X.aspectRatio||"").split(/:/))[0]/au[1];az.add(ab).unbind("mousedown",m);if(X.disable||X.enable===false){av.unbind("mousemove",F).unbind("mousedown",t);e(window).unbind("resize",v)}else{if(X.enable||X.disable===false){if(X.resizable||X.movable){av.mousemove(F).mousedown(t)}e(window).resize(v)}if(!X.persistent){az.add(ab).mousedown(m)}}X.enable=X.disable=undefined}this.remove=function(){M({disable:true});av.add(ab).remove()};this.getOptions=function(){return X};this.setOptions=M;this.getSelection=G;this.setSelection=ah;this.cancelSelection=at;this.update=u;l=az;while(l.length){D=a(D,!isNaN(l.css("z-index"))?l.css("z-index"):D);if(l.css("position")=="fixed"){ag="fixed"}l=l.parent(":not(body)")}D=X.zIndex||D;if(e.browser.msie){az.attr("unselectable","on")}e.imgAreaSelect.keyPress=e.browser.msie||e.browser.safari?"keydown":"keypress";if(e.browser.opera){V=f().css({width:"100%",height:"100%",position:"absolute",zIndex:D+2||2})}av.add(ab).css({visibility:"hidden",position:ag,overflow:"hidden",zIndex:D||"0"});av.css({zIndex:D+2||2});ai.add(K).css({position:"absolute",fontSize:0});s.complete||s.readyState=="complete"||!az.is("img")?ax():az.one("load",ax);if(e.browser.msie&&e.browser.version>=7){s.src=s.src}};e.fn.imgAreaSelect=function(g){g=g||{};this.each(function(){if(e(this).data("imgAreaSelect")){if(g.remove){e(this).data("imgAreaSelect").remove();e(this).removeData("imgAreaSelect")}else{e(this).data("imgAreaSelect").setOptions(g)}}else{if(!g.remove){if(g.enable===undefined&&g.disable===undefined){g.enable=true}e(this).data("imgAreaSelect",new e.imgAreaSelect(this,g))}}});if(g.instance){return e(this).data("imgAreaSelect")}return this}})(jQuery);
\ No newline at end of file
index 006580752e264c08ab186df5590e4085a71c89be..d0cb23c238bd68061a5b11d4da1ba6f885ca348d 100644 (file)
@@ -823,4 +823,3 @@ function log() {
 };
 
 })(jQuery);
 };
 
 })(jQuery);
-
index 43c37ab65b418437b82604051987fe864c5bbec9..45ddd2f6c856506599e377ed381dbe5ba976acb9 100644 (file)
@@ -1,4 +1,4 @@
-/*
+/*!
  * jQuery Form Plugin
  * version: 2.73 (03-MAY-2011)
  * @requires jQuery v1.3.2 or later
  * jQuery Form Plugin
  * version: 2.73 (03-MAY-2011)
  * @requires jQuery v1.3.2 or later
index 7508630927fe3d249dd76989a2947eed30d3bd1c..85fa1ffcb9d86325383d6911b444710cfd39bf3b 100644 (file)
@@ -51,10 +51,12 @@ USAGE:
         
         // inspect if keystroke matches
         var inspector = function(event) {
         
         // inspect if keystroke matches
         var inspector = function(event) {
-            event = jQuery.event.fix(event); // jQuery event normalization.
+            // WP: not needed with newer jQuery
+            // event = jQuery.event.fix(event); // jQuery event normalization.
             var element = event.target;
             // @ TextNode -> nodeType == 3
             var element = event.target;
             // @ TextNode -> nodeType == 3
-            element = (element.nodeType==3) ? element.parentNode : element;
+            // WP: not needed with newer jQuery
+            // element = (element.nodeType==3) ? element.parentNode : element;
             
             if(opt['disableInInput']) { // Disable shortcut keys in Input, Textarea fields
                 var target = jQuery(element);
             
             if(opt['disableInInput']) { // Disable shortcut keys in Input, Textarea fields
                 var target = jQuery(element);
@@ -76,11 +78,12 @@ USAGE:
             // in opera + safari, the event.target is unpredictable.
             // for example: 'keydown' might be associated with HtmlBodyElement 
             // or the element where you last clicked with your mouse.
             // in opera + safari, the event.target is unpredictable.
             // for example: 'keydown' might be associated with HtmlBodyElement 
             // or the element where you last clicked with your mouse.
-            if (jQuery.browser.opera || jQuery.browser.safari){
+            // WP: needed for all browsers 
+            // if (jQuery.browser.opera || jQuery.browser.safari){
                 while (!that.all[element] && element.parentNode){
                     element = element.parentNode;
                 }
                 while (!that.all[element] && element.parentNode){
                     element = element.parentNode;
                 }
-            }
+            // }
             var cbMap = that.all[element].events[type].callbackMap;
             if(!shift && !ctrl && !alt && !meta) { // No Modifiers
                 mapPoint = cbMap[special] ||  cbMap[character]
             var cbMap = that.all[element].events[type].callbackMap;
             if(!shift && !ctrl && !alt && !meta) { // No Modifiers
                 mapPoint = cbMap[special] ||  cbMap[character]
index f6a3281210d4ec5414d4c57389e0700539cbd90f..3c2f66aa62d9b7be7bcaf25170613475757638da 100644 (file)
@@ -1 +1 @@
-(function(a){this.version="(beta)(0.0.3)";this.all={};this.special_keys={27:"esc",9:"tab",32:"space",13:"return",8:"backspace",145:"scroll",20:"capslock",144:"numlock",19:"pause",45:"insert",36:"home",46:"del",35:"end",33:"pageup",34:"pagedown",37:"left",38:"up",39:"right",40:"down",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12"};this.shift_nums={"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":":","'":'"',",":"<",".":">","/":"?","\\":"|"};this.add=function(c,b,h){if(a.isFunction(b)){h=b;b={}}var d={},f={type:"keydown",propagate:false,disableInInput:false,target:a("html")[0]},e=this;d=a.extend(d,f,b||{});c=c.toLowerCase();var g=function(j){j=a.event.fix(j);var o=j.target;o=(o.nodeType==3)?o.parentNode:o;if(d.disableInInput){var s=a(o);if(s.is("input")||s.is("textarea")){return}}var l=j.which,u=j.type,r=String.fromCharCode(l).toLowerCase(),t=e.special_keys[l],m=j.shiftKey,i=j.ctrlKey,p=j.altKey,w=j.metaKey,q=true,k=null;if(a.browser.opera||a.browser.safari){while(!e.all[o]&&o.parentNode){o=o.parentNode}}var v=e.all[o].events[u].callbackMap;if(!m&&!i&&!p&&!w){k=v[t]||v[r]}else{var n="";if(p){n+="alt+"}if(i){n+="ctrl+"}if(m){n+="shift+"}if(w){n+="meta+"}k=v[n+t]||v[n+r]||v[n+e.shift_nums[r]]}if(k){k.cb(j);if(!k.propagate){j.stopPropagation();j.preventDefault();return false}}};if(!this.all[d.target]){this.all[d.target]={events:{}}}if(!this.all[d.target].events[d.type]){this.all[d.target].events[d.type]={callbackMap:{}};a.event.add(d.target,d.type,g)}this.all[d.target].events[d.type].callbackMap[c]={cb:h,propagate:d.propagate};return a};this.remove=function(c,b){b=b||{};target=b.target||a("html")[0];type=b.type||"keydown";c=c.toLowerCase();delete this.all[target].events[type].callbackMap[c];return a};a.hotkeys=this;return a})(jQuery);
\ No newline at end of file
+(function(a){this.version="(beta)(0.0.3)";this.all={};this.special_keys={27:"esc",9:"tab",32:"space",13:"return",8:"backspace",145:"scroll",20:"capslock",144:"numlock",19:"pause",45:"insert",36:"home",46:"del",35:"end",33:"pageup",34:"pagedown",37:"left",38:"up",39:"right",40:"down",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12"};this.shift_nums={"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":":","'":'"',",":"<",".":">","/":"?","\\":"|"};this.add=function(c,b,h){if(a.isFunction(b)){h=b;b={}}var d={},f={type:"keydown",propagate:false,disableInInput:false,target:a("html")[0]},e=this;d=a.extend(d,f,b||{});c=c.toLowerCase();var g=function(j){var o=j.target;if(d.disableInInput){var s=a(o);if(s.is("input")||s.is("textarea")){return}}var l=j.which,u=j.type,r=String.fromCharCode(l).toLowerCase(),t=e.special_keys[l],m=j.shiftKey,i=j.ctrlKey,p=j.altKey,w=j.metaKey,q=true,k=null;while(!e.all[o]&&o.parentNode){o=o.parentNode}var v=e.all[o].events[u].callbackMap;if(!m&&!i&&!p&&!w){k=v[t]||v[r]}else{var n="";if(p){n+="alt+"}if(i){n+="ctrl+"}if(m){n+="shift+"}if(w){n+="meta+"}k=v[n+t]||v[n+r]||v[n+e.shift_nums[r]]}if(k){k.cb(j);if(!k.propagate){j.stopPropagation();j.preventDefault();return false}}};if(!this.all[d.target]){this.all[d.target]={events:{}}}if(!this.all[d.target].events[d.type]){this.all[d.target].events[d.type]={callbackMap:{}};a.event.add(d.target,d.type,g)}this.all[d.target].events[d.type].callbackMap[c]={cb:h,propagate:d.propagate};return a};this.remove=function(c,b){b=b||{};target=b.target||a("html")[0];type=b.type||"keydown";c=c.toLowerCase();delete this.all[target].events[type].callbackMap[c];return a};a.hotkeys=this;return a})(jQuery);
\ No newline at end of file
index 806a974824b622b0513b094d5a4453c208092aba..8348c97816676150813eecac8daf58621eef25e0 100644 (file)
@@ -1,5 +1,5 @@
-/*! jQuery v1.7.1 jquery.com | jquery.org/license */
-(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function ca(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)ca(a+"["+e+"]",b[e],c,d);else d(a,b)}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bT,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bC(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bx:by,g=0,h=e.length;if(d>0){if(c!=="border")for(;g<h;g++)c||(d-=parseFloat(f.css(a,"padding"+e[g]))||0),c==="margin"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,"border"+e[g]+"Width"))||0;return d+"px"}d=bz(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;g<h;g++)d+=parseFloat(f.css(a,"padding"+e[g]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+e[g]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+e[g]))||0);return d+"px"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement("div"),r=c.documentElement;q.setAttribute("className","t"),q.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="<div style='width:4px;'></div>",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h<g;h++)e=d[h],e&&(c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};
-f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j<e;j++)r=d[j],s=r.selector,o[s]===b&&(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]&&q.push(r);q.length&&i.push({elem:l,matches:q})}}d.length>e&&i.push({elem:this,matches:d.slice(e)});for(j=0;j<i.length&&!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k<p.matches.length&&!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function()
-{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\([^)]*\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\d+(?:px)?$/i,bu=/^-?\d/,bv=/^([\-+])=([\-+.\de]+)/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bv.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cp&&(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
+/*! jQuery v1.7.2 jquery.com | jquery.org/license */
+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="<div "+n+"display:block;'><div style='"+t+"0;display:block;overflow:hidden;'></div></div>"+"<table "+n+"' cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style='"+t+"0;display:none'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style='width:5px;'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(
+a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);return c.result}},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")[\\s/>]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f
+.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\([^)]*\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\-+]?(?:\d*\.)?\d+$/i,bt=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,bu=/^([\-+])=([\-+.\de]+)/,bv=/^margin/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),(e===""&&f.css(d,"display")==="none"||!f.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf("margin")&&(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&&c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&&c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){if(f.support.fixedPosition&&j.position==="fixed")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position==="relative"||j.position==="static")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&&j.position==="fixed"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
 jQuery.noConflict();
 jQuery.noConflict();
diff --git a/wp-includes/js/jquery/jquery.ui.touch-punch.js b/wp-includes/js/jquery/jquery.ui.touch-punch.js
new file mode 100644 (file)
index 0000000..e10607a
--- /dev/null
@@ -0,0 +1,11 @@
+/*!
+ * jQuery UI Touch Punch 0.2.2
+ *
+ * Copyright 2011, Dave Furfero
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ *
+ * Depends:
+ *  jquery.ui.widget.js
+ *  jquery.ui.mouse.js
+ */
+(function(b){b.support.touch="ontouchend" in document;if(!b.support.touch){return}var c=b.ui.mouse.prototype,e=c._mouseInit,a;function d(g,h){if(g.originalEvent.touches.length>1){return}g.preventDefault();var i=g.originalEvent.changedTouches[0],f=document.createEvent("MouseEvents");f.initMouseEvent(h,true,true,window,1,i.screenX,i.screenY,i.clientX,i.clientY,false,false,false,false,0,null);g.target.dispatchEvent(f)}c._touchStart=function(g){var f=this;if(a||!f._mouseCapture(g.originalEvent.changedTouches[0])){return}a=true;f._touchMoved=false;d(g,"mouseover");d(g,"mousemove");d(g,"mousedown")};c._touchMove=function(f){if(!a){return}this._touchMoved=true;d(f,"mousemove")};c._touchEnd=function(f){if(!a){return}d(f,"mouseup");d(f,"mouseout");if(!this._touchMoved){d(f,"click")}a=false};c._mouseInit=function(){var f=this;f.element.bind("touchstart",b.proxy(f,"_touchStart")).bind("touchmove",b.proxy(f,"_touchMove")).bind("touchend",b.proxy(f,"_touchEnd"));e.call(f)}})(jQuery);
\ No newline at end of file
index 1f80e26a538c884d42d56a00cd577355358ce2e8..4182718cb5549a1ba031f044d72a8982cfa2e6f7 100644 (file)
@@ -1,14 +1,5 @@
-/*
- * jQuery UI Effects Blind 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Blind
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(b){b.effects.blind=function(c){return this.queue(function(){var a=b(this),g=["position","top","bottom","left","right"],f=b.effects.setMode(a,c.options.mode||"hide"),d=c.options.direction||"vertical";b.effects.save(a,g);a.show();var e=b.effects.createWrapper(a).css({overflow:"hidden"}),h=d=="vertical"?"height":"width";d=d=="vertical"?e.height():e.width();f=="show"&&e.css(h,0);var i={};i[h]=f=="show"?d:0;e.animate(i,c.duration,c.options.easing,function(){f=="hide"&&a.hide();b.effects.restore(a,
-g);b.effects.removeWrapper(a);c.callback&&c.callback.apply(a[0],arguments);a.dequeue()})})}})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.blind.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.effects.blind=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"vertical";a.effects.save(c,d),c.show();var g=a.effects.createWrapper(c).css({overflow:"hidden"}),h=f=="vertical"?"height":"width",i=f=="vertical"?g.height():g.width();e=="show"&&g.css(h,0);var j={};j[h]=e=="show"?i:0,g.animate(j,b.duration,b.options.easing,function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);
\ No newline at end of file
index af330e4c7efe8f6592e7fa4410bbe3e0ca5ec39e..008892b6c46a31afb13fdf22a6bb6a2e73e2b5eb 100644 (file)
@@ -1,15 +1,5 @@
-/*
- * jQuery UI Effects Bounce 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Bounce
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(e){e.effects.bounce=function(b){return this.queue(function(){var a=e(this),l=["position","top","bottom","left","right"],h=e.effects.setMode(a,b.options.mode||"effect"),d=b.options.direction||"up",c=b.options.distance||20,m=b.options.times||5,i=b.duration||250;/show|hide/.test(h)&&l.push("opacity");e.effects.save(a,l);a.show();e.effects.createWrapper(a);var f=d=="up"||d=="down"?"top":"left";d=d=="up"||d=="left"?"pos":"neg";c=b.options.distance||(f=="top"?a.outerHeight({margin:true})/3:a.outerWidth({margin:true})/
-3);if(h=="show")a.css("opacity",0).css(f,d=="pos"?-c:c);if(h=="hide")c/=m*2;h!="hide"&&m--;if(h=="show"){var g={opacity:1};g[f]=(d=="pos"?"+=":"-=")+c;a.animate(g,i/2,b.options.easing);c/=2;m--}for(g=0;g<m;g++){var j={},k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing);c=h=="hide"?c*2:c/2}if(h=="hide"){g={opacity:0};g[f]=(d=="pos"?"-=":"+=")+c;a.animate(g,i/2,b.options.easing,function(){a.hide();e.effects.restore(a,l);e.effects.removeWrapper(a);
-b.callback&&b.callback.apply(this,arguments)})}else{j={};k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing,function(){e.effects.restore(a,l);e.effects.removeWrapper(a);b.callback&&b.callback.apply(this,arguments)})}a.queue("fx",function(){a.dequeue()});a.dequeue()})}})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.bounce.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.effects.bounce=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"effect"),f=b.options.direction||"up",g=b.options.distance||20,h=b.options.times||5,i=b.duration||250;/show|hide/.test(e)&&d.push("opacity"),a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var j=f=="up"||f=="down"?"top":"left",k=f=="up"||f=="left"?"pos":"neg",g=b.options.distance||(j=="top"?c.outerHeight({margin:!0})/3:c.outerWidth({margin:!0})/3);e=="show"&&c.css("opacity",0).css(j,k=="pos"?-g:g),e=="hide"&&(g=g/(h*2)),e!="hide"&&h--;if(e=="show"){var l={opacity:1};l[j]=(k=="pos"?"+=":"-=")+g,c.animate(l,i/2,b.options.easing),g=g/2,h--}for(var m=0;m<h;m++){var n={},p={};n[j]=(k=="pos"?"-=":"+=")+g,p[j]=(k=="pos"?"+=":"-=")+g,c.animate(n,i/2,b.options.easing).animate(p,i/2,b.options.easing),g=e=="hide"?g*2:g/2}if(e=="hide"){var l={opacity:0};l[j]=(k=="pos"?"-=":"+=")+g,c.animate(l,i/2,b.options.easing,function(){c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)})}else{var n={},p={};n[j]=(k=="pos"?"-=":"+=")+g,p[j]=(k=="pos"?"+=":"-=")+g,c.animate(n,i/2,b.options.easing).animate(p,i/2,b.options.easing,function(){a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)})}c.queue("fx",function(){c.dequeue()}),c.dequeue()})}})(jQuery);
\ No newline at end of file
index 4869b6bcc8cd36b55cf8bb4da02f11836d6c18db..aedbc111ea1455871e8b0dc700591c400ba3d4ee 100644 (file)
@@ -1,14 +1,5 @@
-/*
- * jQuery UI Effects Clip 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Clip
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(b){b.effects.clip=function(e){return this.queue(function(){var a=b(this),i=["position","top","bottom","left","right","height","width"],f=b.effects.setMode(a,e.options.mode||"hide"),c=e.options.direction||"vertical";b.effects.save(a,i);a.show();var d=b.effects.createWrapper(a).css({overflow:"hidden"});d=a[0].tagName=="IMG"?d:a;var g={size:c=="vertical"?"height":"width",position:c=="vertical"?"top":"left"};c=c=="vertical"?d.height():d.width();if(f=="show"){d.css(g.size,0);d.css(g.position,
-c/2)}var h={};h[g.size]=f=="show"?c:0;h[g.position]=f=="show"?0:c/2;d.animate(h,{queue:false,duration:e.duration,easing:e.options.easing,complete:function(){f=="hide"&&a.hide();b.effects.restore(a,i);b.effects.removeWrapper(a);e.callback&&e.callback.apply(a[0],arguments);a.dequeue()}})})}})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.clip.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.effects.clip=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","height","width"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"vertical";a.effects.save(c,d),c.show();var g=a.effects.createWrapper(c).css({overflow:"hidden"}),h=c[0].tagName=="IMG"?g:c,i={size:f=="vertical"?"height":"width",position:f=="vertical"?"top":"left"},j=f=="vertical"?h.height():h.width();e=="show"&&(h.css(i.size,0),h.css(i.position,j/2));var k={};k[i.size]=e=="show"?j:0,k[i.position]=e=="show"?0:j/2,h.animate(k,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()}})})}})(jQuery);
\ No newline at end of file
index a2bec45441b2c77e56bb41ec32bd74bfd04250e2..5d7766d915cc91787fd5dcba063bf8433f889c64 100644 (file)
@@ -1,31 +1,5 @@
-/*
- * jQuery UI Effects 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/
- */
-jQuery.effects||function(f,j){function m(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1],
-16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return n.transparent;return n[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return m(b)}function o(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,
-a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function p(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d=
-a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function l(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor",
-"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=m(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var n={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,
-0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,
-211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},q=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b,
-d){if(f.isFunction(b)){d=b;b=null}return this.queue(function(){var e=f(this),g=e.attr("style")||" ",h=p(o.call(this)),r,v=e.attr("class");f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});r=p(o.call(this));e.attr("class",v);e.animate(u(h,r),{queue:false,duration:a,easing:b,complete:function(){f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments);f.dequeue(this)}})})};
-f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c,a):f.effects.animateClass.apply(this,
-[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.16",save:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.data("ec.storage."+a[b],c[0].style[a[b]])},restore:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.css(a[b],c.data("ec.storage."+a[b]))},setMode:function(c,a){if(a=="toggle")a=c.is(":hidden")?"show":"hide";return a},getBaseline:function(c,a){var b;switch(c[0]){case "top":b=
-0;break;case "middle":b=0.5;break;case "bottom":b=1;break;default:b=c[0]/a.height}switch(c[1]){case "left":c=0;break;case "center":c=0.5;break;case "right":c=1;break;default:c=c[1]/a.width}return{x:c,y:b}},createWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent();var a={width:c.outerWidth(true),height:c.outerHeight(true),"float":c.css("float")},b=f("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),
-d=document.activeElement;c.wrap(b);if(c[0]===d||f.contains(c[0],d))f(d).focus();b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(e,g){a[g]=c.css(g);if(isNaN(parseInt(a[g],10)))a[g]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){var a,b=document.activeElement;
-if(c.parent().is(".ui-effects-wrapper")){a=c.parent().replaceWith(c);if(c[0]===b||f.contains(c[0],b))f(b).focus();return a}return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)});
-return d.call(this,b)},_show:f.fn.show,show:function(c){if(l(c))return this._show.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(l(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(l(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,
-arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/
-2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,
-d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,
-a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,
-d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g))+b},easeOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*a)*Math.sin((a*e-c)*2*Math.PI/g)+d+b},easeInOutElastic:function(c,a,b,d,e){c=1.70158;var g=
-0,h=d;if(a==0)return b;if((a/=e/2)==2)return b+d;g||(g=e*0.3*1.5);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);if(a<1)return-0.5*h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)+b;return h*Math.pow(2,-10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)*0.5+d+b},easeInBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*(a/=e)*a*((g+1)*a-g)+b},easeOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*((a=a/e-1)*a*((g+1)*a+g)+1)+b},easeInOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;
-if((a/=e/2)<1)return d/2*a*a*(((g*=1.525)+1)*a-g)+b;return d/2*((a-=2)*a*(((g*=1.525)+1)*a+g)+2)+b},easeInBounce:function(c,a,b,d,e){return d-f.easing.easeOutBounce(c,e-a,0,d,e)+b},easeOutBounce:function(c,a,b,d,e){return(a/=e)<1/2.75?d*7.5625*a*a+b:a<2/2.75?d*(7.5625*(a-=1.5/2.75)*a+0.75)+b:a<2.5/2.75?d*(7.5625*(a-=2.25/2.75)*a+0.9375)+b:d*(7.5625*(a-=2.625/2.75)*a+0.984375)+b},easeInOutBounce:function(c,a,b,d,e){if(a<e/2)return f.easing.easeInBounce(c,a*2,0,d,e)*0.5+b;return f.easing.easeOutBounce(c,
-a*2-e,0,d,e)*0.5+d*0.5+b}})}(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.core.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+jQuery.effects||function(a,b){function c(b){var c;return b&&b.constructor==Array&&b.length==3?b:(c=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(b))?[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)]:(c=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(b))?[parseFloat(c[1])*2.55,parseFloat(c[2])*2.55,parseFloat(c[3])*2.55]:(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(b))?[parseInt(c[1],16),parseInt(c[2],16),parseInt(c[3],16)]:(c=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(b))?[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)]:(c=/rgba\(0, 0, 0, 0\)/.exec(b))?e.transparent:e[a.trim(b).toLowerCase()]}function d(b,d){var e;do{e=a.curCSS(b,d);if(e!=""&&e!="transparent"||a.nodeName(b,"body"))break;d="backgroundColor"}while(b=b.parentNode);return c(e)}function h(){var a=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,b={},c,d;if(a&&a.length&&a[0]&&a[a[0]]){var e=a.length;while(e--)c=a[e],typeof a[c]=="string"&&(d=c.replace(/\-(\w)/g,function(a,b){return b.toUpperCase()}),b[d]=a[c])}else for(c in a)typeof a[c]=="string"&&(b[c]=a[c]);return b}function i(b){var c,d;for(c in b)d=b[c],(d==null||a.isFunction(d)||c in g||/scrollbar/.test(c)||!/color/i.test(c)&&isNaN(parseFloat(d)))&&delete b[c];return b}function j(a,b){var c={_:0},d;for(d in b)a[d]!=b[d]&&(c[d]=b[d]);return c}function k(b,c,d,e){typeof b=="object"&&(e=c,d=null,c=b,b=c.effect),a.isFunction(c)&&(e=c,d=null,c={});if(typeof c=="number"||a.fx.speeds[c])e=d,d=c,c={};return a.isFunction(d)&&(e=d,d=null),c=c||{},d=d||c.duration,d=a.fx.off?0:typeof d=="number"?d:d in a.fx.speeds?a.fx.speeds[d]:a.fx.speeds._default,e=e||c.complete,[b,c,d,e]}function l(b){return!b||typeof b=="number"||a.fx.speeds[b]?!0:typeof b=="string"&&!a.effects[b]?!0:!1}a.effects={},a.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","borderColor","color","outlineColor"],function(b,e){a.fx.step[e]=function(a){a.colorInit||(a.start=d(a.elem,e),a.end=c(a.end),a.colorInit=!0),a.elem.style[e]="rgb("+Math.max(Math.min(parseInt(a.pos*(a.end[0]-a.start[0])+a.start[0],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[1]-a.start[1])+a.start[1],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[2]-a.start[2])+a.start[2],10),255),0)+")"}});var e={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},f=["add","remove","toggle"],g={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};a.effects.animateClass=function(b,c,d,e){return a.isFunction(d)&&(e=d,d=null),this.queue(function(){var g=a(this),k=g.attr("style")||" ",l=i(h.call(this)),m,n=g.attr("class")||"";a.each(f,function(a,c){b[c]&&g[c+"Class"](b[c])}),m=i(h.call(this)),g.attr("class",n),g.animate(j(l,m),{queue:!1,duration:c,easing:d,complete:function(){a.each(f,function(a,c){b[c]&&g[c+"Class"](b[c])}),typeof g.attr("style")=="object"?(g.attr("style").cssText="",g.attr("style").cssText=k):g.attr("style",k),e&&e.apply(this,arguments),a.dequeue(this)}})})},a.fn.extend({_addClass:a.fn.addClass,addClass:function(b,c,d,e){return c?a.effects.animateClass.apply(this,[{add:b},c,d,e]):this._addClass(b)},_removeClass:a.fn.removeClass,removeClass:function(b,c,d,e){return c?a.effects.animateClass.apply(this,[{remove:b},c,d,e]):this._removeClass(b)},_toggleClass:a.fn.toggleClass,toggleClass:function(c,d,e,f,g){return typeof d=="boolean"||d===b?e?a.effects.animateClass.apply(this,[d?{add:c}:{remove:c},e,f,g]):this._toggleClass(c,d):a.effects.animateClass.apply(this,[{toggle:c},d,e,f])},switchClass:function(b,c,d,e,f){return a.effects.animateClass.apply(this,[{add:c,remove:b},d,e,f])}}),a.extend(a.effects,{version:"1.8.20",save:function(a,b){for(var c=0;c<b.length;c++)b[c]!==null&&a.data("ec.storage."+b[c],a[0].style[b[c]])},restore:function(a,b){for(var c=0;c<b.length;c++)b[c]!==null&&a.css(b[c],a.data("ec.storage."+b[c]))},setMode:function(a,b){return b=="toggle"&&(b=a.is(":hidden")?"show":"hide"),b},getBaseline:function(a,b){var c,d;switch(a[0]){case"top":c=0;break;case"middle":c=.5;break;case"bottom":c=1;break;default:c=a[0]/b.height}switch(a[1]){case"left":d=0;break;case"center":d=.5;break;case"right":d=1;break;default:d=a[1]/b.width}return{x:d,y:c}},createWrapper:function(b){if(b.parent().is(".ui-effects-wrapper"))return b.parent();var c={width:b.outerWidth(!0),height:b.outerHeight(!0),"float":b.css("float")},d=a("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e=document.activeElement;return b.wrap(d),(b[0]===e||a.contains(b[0],e))&&a(e).focus(),d=b.parent(),b.css("position")=="static"?(d.css({position:"relative"}),b.css({position:"relative"})):(a.extend(c,{position:b.css("position"),zIndex:b.css("z-index")}),a.each(["top","left","bottom","right"],function(a,d){c[d]=b.css(d),isNaN(parseInt(c[d],10))&&(c[d]="auto")}),b.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),d.css(c).show()},removeWrapper:function(b){var c,d=document.activeElement;return b.parent().is(".ui-effects-wrapper")?(c=b.parent().replaceWith(b),(b[0]===d||a.contains(b[0],d))&&a(d).focus(),c):b},setTransition:function(b,c,d,e){return e=e||{},a.each(c,function(a,c){var f=b.cssUnit(c);f[0]>0&&(e[c]=f[0]*d+f[1])}),e}}),a.fn.extend({effect:function(b,c,d,e){var f=k.apply(this,arguments),g={options:f[1],duration:f[2],callback:f[3]},h=g.options.mode,i=a.effects[b];return a.fx.off||!i?h?this[h](g.duration,g.callback):this.each(function(){g.callback&&g.callback.call(this)}):i.call(this,g)},_show:a.fn.show,show:function(a){if(l(a))return this._show.apply(this,arguments);var b=k.apply(this,arguments);return b[1].mode="show",this.effect.apply(this,b)},_hide:a.fn.hide,hide:function(a){if(l(a))return this._hide.apply(this,arguments);var b=k.apply(this,arguments);return b[1].mode="hide",this.effect.apply(this,b)},__toggle:a.fn.toggle,toggle:function(b){if(l(b)||typeof b=="boolean"||a.isFunction(b))return this.__toggle.apply(this,arguments);var c=k.apply(this,arguments);return c[1].mode="toggle",this.effect.apply(this,c)},cssUnit:function(b){var c=this.css(b),d=[];return a.each(["em","px","%","pt"],function(a,b){c.indexOf(b)>0&&(d=[parseFloat(c),b])}),d}}),a.easing.jswing=a.easing.swing,a.extend(a.easing,{def:"easeOutQuad",swing:function(b,c,d,e,f){return a.easing[a.easing.def](b,c,d,e,f)},easeInQuad:function(a,b,c,d,e){return d*(b/=e)*b+c},easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c},easeInOutQuad:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b+c:-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b+c:d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c},easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b*b+c:-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b*b*b+c:d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return b==0?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){return b==0?c:b==e?c+d:(b/=e/2)<1?d/2*Math.pow(2,10*(b-1))+c:d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)*b)+c},easeInOutCirc:function(a,b,c,d,e){return(b/=e/2)<1?-d/2*(Math.sqrt(1-b*b)-1)+c:d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e)==1)return c+d;g||(g=e*.3);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g))+c},easeOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e)==1)return c+d;g||(g=e*.3);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*b)*Math.sin((b*e-f)*2*Math.PI/g)+d+c},easeInOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e/2)==2)return c+d;g||(g=e*.3*1.5);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return b<1?-0.5*h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g)+c:h*Math.pow(2,-10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g)*.5+d+c},easeInBack:function(a,c,d,e,f,g){return g==b&&(g=1.70158),e*(c/=f)*c*((g+1)*c-g)+d},easeOutBack:function(a,c,d,e,f,g){return g==b&&(g=1.70158),e*((c=c/f-1)*c*((g+1)*c+g)+1)+d},easeInOutBack:function(a,c,d,e,f,g){return g==b&&(g=1.70158),(c/=f/2)<1?e/2*c*c*(((g*=1.525)+1)*c-g)+d:e/2*((c-=2)*c*(((g*=1.525)+1)*c+g)+2)+d},easeInBounce:function(b,c,d,e,f){return e-a.easing.easeOutBounce(b,f-c,0,e,f)+d},easeOutBounce:function(a,b,c,d,e){return(b/=e)<1/2.75?d*7.5625*b*b+c:b<2/2.75?d*(7.5625*(b-=1.5/2.75)*b+.75)+c:b<2.5/2.75?d*(7.5625*(b-=2.25/2.75)*b+.9375)+c:d*(7.5625*(b-=2.625/2.75)*b+.984375)+c},easeInOutBounce:function(b,c,d,e,f){return c<f/2?a.easing.easeInBounce(b,c*2,0,e,f)*.5+d:a.easing.easeOutBounce(b,c*2-f,0,e,f)*.5+e*.5+d}})}(jQuery);
\ No newline at end of file
index dc893d547cd7c95aa9a35faf2554725643b961f1..e440577f834a077a07cc0bd1ff5fffc711cd73a0 100644 (file)
@@ -1,14 +1,5 @@
-/*
- * jQuery UI Effects Drop 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Drop
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(c){c.effects.drop=function(d){return this.queue(function(){var a=c(this),h=["position","top","bottom","left","right","opacity"],e=c.effects.setMode(a,d.options.mode||"hide"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a);var f=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var g=d.options.distance||(f=="top"?a.outerHeight({margin:true})/2:a.outerWidth({margin:true})/2);if(e=="show")a.css("opacity",0).css(f,b=="pos"?-g:g);var i={opacity:e==
-"show"?1:0};i[f]=(e=="show"?b=="pos"?"+=":"-=":b=="pos"?"-=":"+=")+g;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){e=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.drop.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.effects.drop=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","opacity"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"left";a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var g=f=="up"||f=="down"?"top":"left",h=f=="up"||f=="left"?"pos":"neg",i=b.options.distance||(g=="top"?c.outerHeight({margin:!0})/2:c.outerWidth({margin:!0})/2);e=="show"&&c.css("opacity",0).css(g,h=="pos"?-i:i);var j={opacity:e=="show"?1:0};j[g]=(e=="show"?h=="pos"?"+=":"-=":h=="pos"?"-=":"+=")+i,c.animate(j,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);
\ No newline at end of file
index f83305890bcd42e2ea6808955ab9e83c2d1f59ea..06f53c796062152924d6ce4127fc9d35f1b86e57 100644 (file)
@@ -1,15 +1,5 @@
-/*
- * jQuery UI Effects Explode 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Explode
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(j){j.effects.explode=function(a){return this.queue(function(){var c=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3,d=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3;a.options.mode=a.options.mode=="toggle"?j(this).is(":visible")?"hide":"show":a.options.mode;var b=j(this).show().css("visibility","hidden"),g=b.offset();g.top-=parseInt(b.css("marginTop"),10)||0;g.left-=parseInt(b.css("marginLeft"),10)||0;for(var h=b.outerWidth(true),i=b.outerHeight(true),e=0;e<c;e++)for(var f=
-0;f<d;f++)b.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+
-e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.explode.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.effects.explode=function(b){return this.queue(function(){var c=b.options.pieces?Math.round(Math.sqrt(b.options.pieces)):3,d=b.options.pieces?Math.round(Math.sqrt(b.options.pieces)):3;b.options.mode=b.options.mode=="toggle"?a(this).is(":visible")?"hide":"show":b.options.mode;var e=a(this).show().css("visibility","hidden"),f=e.offset();f.top-=parseInt(e.css("marginTop"),10)||0,f.left-=parseInt(e.css("marginLeft"),10)||0;var g=e.outerWidth(!0),h=e.outerHeight(!0);for(var i=0;i<c;i++)for(var j=0;j<d;j++)e.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-j*(g/d),top:-i*(h/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:g/d,height:h/c,left:f.left+j*(g/d)+(b.options.mode=="show"?(j-Math.floor(d/2))*(g/d):0),top:f.top+i*(h/c)+(b.options.mode=="show"?(i-Math.floor(c/2))*(h/c):0),opacity:b.options.mode=="show"?0:1}).animate({left:f.left+j*(g/d)+(b.options.mode=="show"?0:(j-Math.floor(d/2))*(g/d)),top:f.top+i*(h/c)+(b.options.mode=="show"?0:(i-Math.floor(c/2))*(h/c)),opacity:b.options.mode=="show"?1:0},b.duration||500);setTimeout(function(){b.options.mode=="show"?e.css({visibility:"visible"}):e.css({visibility:"visible"}).hide(),b.callback&&b.callback.apply(e[0]),e.dequeue(),a("div.ui-effects-explode").remove()},b.duration||500)})}})(jQuery);
\ No newline at end of file
index 2469821f538bb1a9b31053a821fcdba7e64f2f4d..d36845b63301b2b62fc01c44c96389309d85a9f6 100644 (file)
@@ -1,13 +1,5 @@
-/*
- * jQuery UI Effects Fade 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Fade
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.fade.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.effects.fade=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"hide");c.animate({opacity:d},{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);
\ No newline at end of file
index 67ff80c00eaa18fa578d70d19a13ee213a3e3f45..ecc9d0ad0ff207b9e8f4ddb6572bb810559c0666 100644 (file)
@@ -1,14 +1,5 @@
-/*
- * jQuery UI Effects Fold 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Fold
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","bottom","left","right"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1],
-10)/100*f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.fold.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.effects.fold=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.size||15,g=!!b.options.horizFirst,h=b.duration?b.duration/2:a.fx.speeds._default/2;a.effects.save(c,d),c.show();var i=a.effects.createWrapper(c).css({overflow:"hidden"}),j=e=="show"!=g,k=j?["width","height"]:["height","width"],l=j?[i.width(),i.height()]:[i.height(),i.width()],m=/([0-9]+)%/.exec(f);m&&(f=parseInt(m[1],10)/100*l[e=="hide"?0:1]),e=="show"&&i.css(g?{height:0,width:f}:{height:f,width:0});var n={},p={};n[k[0]]=e=="show"?l[0]:f,p[k[1]]=e=="show"?l[1]:0,i.animate(n,h,b.options.easing).animate(p,h,b.options.easing,function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);
\ No newline at end of file
index a6cbe7bd2165bd9700a1aa3a644c2f970caa972b..8cf0a25650e9991231067760f33230dfb3f0c817 100644 (file)
@@ -1,14 +1,5 @@
-/*
- * jQuery UI Effects Highlight 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Highlight
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&&
-this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.highlight.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.effects.highlight=function(b){return this.queue(function(){var c=a(this),d=["backgroundImage","backgroundColor","opacity"],e=a.effects.setMode(c,b.options.mode||"show"),f={backgroundColor:c.css("backgroundColor")};e=="hide"&&(f.opacity=0),a.effects.save(c,d),c.show().css({backgroundImage:"none",backgroundColor:b.options.color||"#ffff99"}).animate(f,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),e=="show"&&!a.support.opacity&&this.style.removeAttribute("filter"),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);
\ No newline at end of file
index eac51f6f8a1ffa7bf73af6d0383ee20b22882fef..41e07ba648c4b7b4b7deb7f23e52cc78627485cb 100644 (file)
@@ -1,14 +1,5 @@
-/*
- * jQuery UI Effects Pulsate 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Pulsate
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c<times;c++){b.animate({opacity:animateTo},duration,a.options.easing);animateTo=(animateTo+1)%2}b.animate({opacity:animateTo},duration,
-a.options.easing,function(){animateTo==0&&b.hide();a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()}).dequeue()})}})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.pulsate.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.effects.pulsate=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"show"),e=(b.options.times||5)*2-1,f=b.duration?b.duration/2:a.fx.speeds._default/2,g=c.is(":visible"),h=0;g||(c.css("opacity",0).show(),h=1),(d=="hide"&&g||d=="show"&&!g)&&e--;for(var i=0;i<e;i++)c.animate({opacity:h},f,b.options.easing),h=(h+1)%2;c.animate({opacity:h},f,b.options.easing,function(){h==0&&c.hide(),b.callback&&b.callback.apply(this,arguments)}),c.queue("fx",function(){c.dequeue()}).dequeue()})}})(jQuery);
\ No newline at end of file
index a902d871824308694f95fde09a3e8276463392fd..955a51fcfb20c19fcc0d4c4cd9f0193d4e0af871 100644 (file)
@@ -1,20 +1,5 @@
-/*
- * jQuery UI Effects Scale 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Scale
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(c){c.effects.puff=function(b){return this.queue(function(){var a=c(this),e=c.effects.setMode(a,b.options.mode||"hide"),g=parseInt(b.options.percent,10)||150,h=g/100,i={height:a.height(),width:a.width()};c.extend(b.options,{fade:true,mode:e,percent:e=="hide"?g:100,from:e=="hide"?i:{height:i.height*h,width:i.width*h}});a.effect("scale",b.options,b.duration,b.callback);a.dequeue()})};c.effects.scale=function(b){return this.queue(function(){var a=c(this),e=c.extend(true,{},b.options),g=c.effects.setMode(a,
-b.options.mode||"effect"),h=parseInt(b.options.percent,10)||(parseInt(b.options.percent,10)==0?0:g=="hide"?0:100),i=b.options.direction||"both",f=b.options.origin;if(g!="effect"){e.origin=f||["middle","center"];e.restore=true}f={height:a.height(),width:a.width()};a.from=b.options.from||(g=="show"?{height:0,width:0}:f);h={y:i!="horizontal"?h/100:1,x:i!="vertical"?h/100:1};a.to={height:f.height*h.y,width:f.width*h.x};if(b.options.fade){if(g=="show"){a.from.opacity=0;a.to.opacity=1}if(g=="hide"){a.from.opacity=
-1;a.to.opacity=0}}e.from=a.from;e.to=a.to;e.mode=g;a.effect("size",e,b.duration,b.callback);a.dequeue()})};c.effects.size=function(b){return this.queue(function(){var a=c(this),e=["position","top","bottom","left","right","width","height","overflow","opacity"],g=["position","top","bottom","left","right","overflow","opacity"],h=["width","height","overflow"],i=["fontSize"],f=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],k=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],
-p=c.effects.setMode(a,b.options.mode||"effect"),n=b.options.restore||false,m=b.options.scale||"both",l=b.options.origin,j={height:a.height(),width:a.width()};a.from=b.options.from||j;a.to=b.options.to||j;if(l){l=c.effects.getBaseline(l,j);a.from.top=(j.height-a.from.height)*l.y;a.from.left=(j.width-a.from.width)*l.x;a.to.top=(j.height-a.to.height)*l.y;a.to.left=(j.width-a.to.width)*l.x}var d={from:{y:a.from.height/j.height,x:a.from.width/j.width},to:{y:a.to.height/j.height,x:a.to.width/j.width}};
-if(m=="box"||m=="both"){if(d.from.y!=d.to.y){e=e.concat(f);a.from=c.effects.setTransition(a,f,d.from.y,a.from);a.to=c.effects.setTransition(a,f,d.to.y,a.to)}if(d.from.x!=d.to.x){e=e.concat(k);a.from=c.effects.setTransition(a,k,d.from.x,a.from);a.to=c.effects.setTransition(a,k,d.to.x,a.to)}}if(m=="content"||m=="both")if(d.from.y!=d.to.y){e=e.concat(i);a.from=c.effects.setTransition(a,i,d.from.y,a.from);a.to=c.effects.setTransition(a,i,d.to.y,a.to)}c.effects.save(a,n?e:g);a.show();c.effects.createWrapper(a);
-a.css("overflow","hidden").css(a.from);if(m=="content"||m=="both"){f=f.concat(["marginTop","marginBottom"]).concat(i);k=k.concat(["marginLeft","marginRight"]);h=e.concat(f).concat(k);a.find("*[width]").each(function(){child=c(this);n&&c.effects.save(child,h);var o={height:child.height(),width:child.width()};child.from={height:o.height*d.from.y,width:o.width*d.from.x};child.to={height:o.height*d.to.y,width:o.width*d.to.x};if(d.from.y!=d.to.y){child.from=c.effects.setTransition(child,f,d.from.y,child.from);
-child.to=c.effects.setTransition(child,f,d.to.y,child.to)}if(d.from.x!=d.to.x){child.from=c.effects.setTransition(child,k,d.from.x,child.from);child.to=c.effects.setTransition(child,k,d.to.x,child.to)}child.css(child.from);child.animate(child.to,b.duration,b.options.easing,function(){n&&c.effects.restore(child,h)})})}a.animate(a.to,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){a.to.opacity===0&&a.css("opacity",a.from.opacity);p=="hide"&&a.hide();c.effects.restore(a,
-n?e:g);c.effects.removeWrapper(a);b.callback&&b.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.scale.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.effects.puff=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"hide"),e=parseInt(b.options.percent,10)||150,f=e/100,g={height:c.height(),width:c.width()};a.extend(b.options,{fade:!0,mode:d,percent:d=="hide"?e:100,from:d=="hide"?g:{height:g.height*f,width:g.width*f}}),c.effect("scale",b.options,b.duration,b.callback),c.dequeue()})},a.effects.scale=function(b){return this.queue(function(){var c=a(this),d=a.extend(!0,{},b.options),e=a.effects.setMode(c,b.options.mode||"effect"),f=parseInt(b.options.percent,10)||(parseInt(b.options.percent,10)==0?0:e=="hide"?0:100),g=b.options.direction||"both",h=b.options.origin;e!="effect"&&(d.origin=h||["middle","center"],d.restore=!0);var i={height:c.height(),width:c.width()};c.from=b.options.from||(e=="show"?{height:0,width:0}:i);var j={y:g!="horizontal"?f/100:1,x:g!="vertical"?f/100:1};c.to={height:i.height*j.y,width:i.width*j.x},b.options.fade&&(e=="show"&&(c.from.opacity=0,c.to.opacity=1),e=="hide"&&(c.from.opacity=1,c.to.opacity=0)),d.from=c.from,d.to=c.to,d.mode=e,c.effect("size",d,b.duration,b.callback),c.dequeue()})},a.effects.size=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","width","height","overflow","opacity"],e=["position","top","bottom","left","right","overflow","opacity"],f=["width","height","overflow"],g=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],i=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],j=a.effects.setMode(c,b.options.mode||"effect"),k=b.options.restore||!1,l=b.options.scale||"both",m=b.options.origin,n={height:c.height(),width:c.width()};c.from=b.options.from||n,c.to=b.options.to||n;if(m){var p=a.effects.getBaseline(m,n);c.from.top=(n.height-c.from.height)*p.y,c.from.left=(n.width-c.from.width)*p.x,c.to.top=(n.height-c.to.height)*p.y,c.to.left=(n.width-c.to.width)*p.x}var q={from:{y:c.from.height/n.height,x:c.from.width/n.width},to:{y:c.to.height/n.height,x:c.to.width/n.width}};if(l=="box"||l=="both")q.from.y!=q.to.y&&(d=d.concat(h),c.from=a.effects.setTransition(c,h,q.from.y,c.from),c.to=a.effects.setTransition(c,h,q.to.y,c.to)),q.from.x!=q.to.x&&(d=d.concat(i),c.from=a.effects.setTransition(c,i,q.from.x,c.from),c.to=a.effects.setTransition(c,i,q.to.x,c.to));(l=="content"||l=="both")&&q.from.y!=q.to.y&&(d=d.concat(g),c.from=a.effects.setTransition(c,g,q.from.y,c.from),c.to=a.effects.setTransition(c,g,q.to.y,c.to)),a.effects.save(c,k?d:e),c.show(),a.effects.createWrapper(c),c.css("overflow","hidden").css(c.from);if(l=="content"||l=="both")h=h.concat(["marginTop","marginBottom"]).concat(g),i=i.concat(["marginLeft","marginRight"]),f=d.concat(h).concat(i),c.find("*[width]").each(function(){var c=a(this);k&&a.effects.save(c,f);var d={height:c.height(),width:c.width()};c.from={height:d.height*q.from.y,width:d.width*q.from.x},c.to={height:d.height*q.to.y,width:d.width*q.to.x},q.from.y!=q.to.y&&(c.from=a.effects.setTransition(c,h,q.from.y,c.from),c.to=a.effects.setTransition(c,h,q.to.y,c.to)),q.from.x!=q.to.x&&(c.from=a.effects.setTransition(c,i,q.from.x,c.from),c.to=a.effects.setTransition(c,i,q.to.x,c.to)),c.css(c.from),c.animate(c.to,b.duration,b.options.easing,function(){k&&a.effects.restore(c,f)})});c.animate(c.to,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){c.to.opacity===0&&c.css("opacity",c.from.opacity),j=="hide"&&c.hide(),a.effects.restore(c,k?d:e),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);
\ No newline at end of file
index f9fbca49d262a99cd4cc462b3d4304a5aadd52c3..2c83b7a4f3164ed57ab3d3247bcddd3475212893 100644 (file)
@@ -1,14 +1,5 @@
-/*
- * jQuery UI Effects Shake 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Shake
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(d){d.effects.shake=function(a){return this.queue(function(){var b=d(this),j=["position","top","bottom","left","right"];d.effects.setMode(b,a.options.mode||"effect");var c=a.options.direction||"left",e=a.options.distance||20,l=a.options.times||3,f=a.duration||a.options.duration||140;d.effects.save(b,j);b.show();d.effects.createWrapper(b);var g=c=="up"||c=="down"?"top":"left",h=c=="up"||c=="left"?"pos":"neg";c={};var i={},k={};c[g]=(h=="pos"?"-=":"+=")+e;i[g]=(h=="pos"?"+=":"-=")+e*2;k[g]=
-(h=="pos"?"-=":"+=")+e*2;b.animate(c,f,a.options.easing);for(e=1;e<l;e++)b.animate(i,f,a.options.easing).animate(k,f,a.options.easing);b.animate(i,f,a.options.easing).animate(c,f/2,a.options.easing,function(){d.effects.restore(b,j);d.effects.removeWrapper(b);a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()});b.dequeue()})}})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.shake.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.effects.shake=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"effect"),f=b.options.direction||"left",g=b.options.distance||20,h=b.options.times||3,i=b.duration||b.options.duration||140;a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var j=f=="up"||f=="down"?"top":"left",k=f=="up"||f=="left"?"pos":"neg",l={},m={},n={};l[j]=(k=="pos"?"-=":"+=")+g,m[j]=(k=="pos"?"+=":"-=")+g*2,n[j]=(k=="pos"?"-=":"+=")+g*2,c.animate(l,i,b.options.easing);for(var p=1;p<h;p++)c.animate(m,i,b.options.easing).animate(n,i,b.options.easing);c.animate(m,i,b.options.easing).animate(l,i/2,b.options.easing,function(){a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)}),c.queue("fx",function(){c.dequeue()}),c.dequeue()})}})(jQuery);
\ No newline at end of file
index 24e5b4838acb098970ebf0532baec44aa7c3185c..4275a59bfe5d4b1a0f29388e574355d2447fdf17 100644 (file)
@@ -1,14 +1,5 @@
-/*
- * jQuery UI Effects Slide 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Slide
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(c){c.effects.slide=function(d){return this.queue(function(){var a=c(this),h=["position","top","bottom","left","right"],f=c.effects.setMode(a,d.options.mode||"show"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a).css({overflow:"hidden"});var g=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var e=d.options.distance||(g=="top"?a.outerHeight({margin:true}):a.outerWidth({margin:true}));if(f=="show")a.css(g,b=="pos"?isNaN(e)?"-"+e:-e:e);
-var i={};i[g]=(f=="show"?b=="pos"?"+=":"-=":b=="pos"?"-=":"+=")+e;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){f=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.slide.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.effects.slide=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"show"),f=b.options.direction||"left";a.effects.save(c,d),c.show(),a.effects.createWrapper(c).css({overflow:"hidden"});var g=f=="up"||f=="down"?"top":"left",h=f=="up"||f=="left"?"pos":"neg",i=b.options.distance||(g=="top"?c.outerHeight({margin:!0}):c.outerWidth({margin:!0}));e=="show"&&c.css(g,h=="pos"?isNaN(i)?"-"+i:-i:i);var j={};j[g]=(e=="show"?h=="pos"?"+=":"-=":h=="pos"?"-=":"+=")+i,c.animate(j,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);
\ No newline at end of file
index 925650be6612ad1e9ed1d2ce265426a20b5e058f..b8231847ee9d474b8ffe40326c940de204912e77 100644 (file)
@@ -1,14 +1,5 @@
-/*
- * jQuery UI Effects Transfer 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Effects/Transfer
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(e){e.effects.transfer=function(a){return this.queue(function(){var b=e(this),c=e(a.options.to),d=c.offset();c={top:d.top,left:d.left,height:c.innerHeight(),width:c.innerWidth()};d=b.offset();var f=e('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments);
-b.dequeue()})})}})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.transfer.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.effects.transfer=function(b){return this.queue(function(){var c=a(this),d=a(b.options.to),e=d.offset(),f={top:e.top,left:e.left,height:d.innerHeight(),width:d.innerWidth()},g=c.offset(),h=a('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(b.options.className).css({top:g.top,left:g.left,height:c.innerHeight(),width:c.innerWidth(),position:"absolute"}).animate(f,b.duration,b.options.easing,function(){h.remove(),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);
\ No newline at end of file
index f8d83dd84eebc541eec00bc4443d7e55afa346a7..3679011ebaea3da32f0146561570f86ef355e45b 100644 (file)
@@ -1,30 +1,5 @@
-/*
- * jQuery UI Accordion 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Accordion
- *
- * Depends:
- *     jquery.ui.core.js
- *     jquery.ui.widget.js
- */
-(function(c){c.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:true,clearStyle:false,collapsible:false,event:"click",fillSpace:false,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix");
-a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");
-if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var h=d.closest(".ui-accordion-header");a.active=h.length?h:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion",
-function(f){return a._keydown(f)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(f){a._clickHandler.call(a,f,this);f.preventDefault()})},_createIcons:function(){var a=
-this.options;if(a.icons){c("<span></span>").addClass("ui-icon "+a.icons.header).prependTo(this.headers);this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex");
-this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons();
-b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,h=this.headers.index(a.target),f=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:f=this.headers[(h+1)%d];break;case b.LEFT:case b.UP:f=this.headers[(h-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target);
-a.preventDefault()}if(f){c(a.target).attr("tabIndex",-1);c(f).attr("tabIndex",0);f.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+
-c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options;
-if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){var h=this.active;j=a.next();g=this.active.next();e={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):j,oldContent:g};var f=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(j,g,e,b,f);h.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);
-if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected);a.next().addClass("ui-accordion-content-active")}}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var g=this.active.next(),
-e={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:g},j=this.active=c([]);this._toggle(j,g,e)}},_toggle:function(a,b,d,h,f){var g=this,e=g.options;g.toShow=a;g.toHide=b;g.data=d;var j=function(){if(g)return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data);g.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&h?{toShow:c([]),toHide:b,complete:j,down:f,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:f,autoHeight:e.autoHeight||
-e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;h=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!h[k]&&!c.easing[k])k="slide";h[k]||(h[k]=function(l){this.slide(l,{easing:k,duration:i||700})});h[k](d)}else{if(e.collapsible&&h)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false",
-"aria-selected":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");if(this.toHide.length)this.toHide.parent()[0].className=this.toHide.parent()[0].className;this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.16",
-animations:{slide:function(a,b){a=c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),h=0,f={},g={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){g[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/);
-f[i]={value:j[1],unit:j[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(g,{step:function(j,i){if(i.prop=="height")h=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=h*f[i.prop].value+f[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide",
-paddingTop:"hide",paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.accordion.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:!0,clearStyle:!1,collapsible:!1,event:"click",fillSpace:!1,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:!1,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var b=this,c=b.options;b.running=0,b.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"),b.headers=b.element.find(c.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){if(c.disabled)return;a(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){if(c.disabled)return;a(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){if(c.disabled)return;a(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){if(c.disabled)return;a(this).removeClass("ui-state-focus")}),b.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");if(c.navigation){var d=b.element.find("a").filter(c.navigationFilter).eq(0);if(d.length){var e=d.closest(".ui-accordion-header");e.length?b.active=e:b.active=d.closest(".ui-accordion-content").prev()}}b.active=b._findActive(b.active||c.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top"),b.active.next().addClass("ui-accordion-content-active"),b._createIcons(),b.resize(),b.element.attr("role","tablist"),b.headers.attr("role","tab").bind("keydown.accordion",function(a){return b._keydown(a)}).next().attr("role","tabpanel"),b.headers.not(b.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide(),b.active.length?b.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):b.headers.eq(0).attr("tabIndex",0),a.browser.safari||b.headers.find("a").attr("tabIndex",-1),c.event&&b.headers.bind(c.event.split(" ").join(".accordion ")+".accordion",function(a){b._clickHandler.call(b,a,this),a.preventDefault()})},_createIcons:function(){var b=this.options;b.icons&&(a("<span></span>").addClass("ui-icon "+b.icons.header).prependTo(this.headers),this.active.children(".ui-icon").toggleClass(b.icons.header).toggleClass(b.icons.headerSelected),this.element.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.children(".ui-icon").remove(),this.element.removeClass("ui-accordion-icons")},destroy:function(){var b=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex"),this.headers.find("a").removeAttr("tabIndex"),this._destroyIcons();var c=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");return(b.autoHeight||b.fillHeight)&&c.css("height",""),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments),b=="active"&&this.activate(c),b=="icons"&&(this._destroyIcons(),c&&this._createIcons()),b=="disabled"&&this.headers.add(this.headers.next())[c?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(b){if(this.options.disabled||b.altKey||b.ctrlKey)return;var c=a.ui.keyCode,d=this.headers.length,e=this.headers.index(b.target),f=!1;switch(b.keyCode){case c.RIGHT:case c.DOWN:f=this.headers[(e+1)%d];break;case c.LEFT:case c.UP:f=this.headers[(e-1+d)%d];break;case c.SPACE:case c.ENTER:this._clickHandler({target:b.target},b.target),b.preventDefault()}return f?(a(b.target).attr("tabIndex",-1),a(f).attr("tabIndex",0),f.focus(),!1):!0},resize:function(){var b=this.options,c;if(b.fillSpace){if(a.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}c=this.element.parent().height(),a.browser.msie&&this.element.parent().css("overflow",d),this.headers.each(function(){c-=a(this).outerHeight(!0)}),this.headers.next().each(function(){a(this).height(Math.max(0,c-a(this).innerHeight()+a(this).height()))}).css("overflow","auto")}else b.autoHeight&&(c=0,this.headers.next().each(function(){c=Math.max(c,a(this).height("").height())}).height(c));return this},activate:function(a){this.options.active=a;var b=this._findActive(a)[0];return this._clickHandler({target:b},b),this},_findActive:function(b){return b?typeof b=="number"?this.headers.filter(":eq("+b+")"):this.headers.not(this.headers.not(b)):b===!1?a([]):this.headers.filter(":eq(0)")},_clickHandler:function(b,c){var d=this.options;if(d.disabled)return;if(!b.target){if(!d.collapsible)return;this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header),this.active.next().addClass("ui-accordion-content-active");var e=this.active.next(),f={options:d,newHeader:a([]),oldHeader:d.active,newContent:a([]),oldContent:e},g=this.active=a([]);this._toggle(g,e,f);return}var h=a(b.currentTarget||c),i=h[0]===this.active[0];d.active=d.collapsible&&i?!1:this.headers.index(h);if(this.running||!d.collapsible&&i)return;var j=this.active,g=h.next(),e=this.active.next(),f={options:d,newHeader:i&&d.collapsible?a([]):h,oldHeader:this.active,newContent:i&&d.collapsible?a([]):g,oldContent:e},k=this.headers.index(this.active[0])>this.headers.index(h[0]);this.active=i?a([]):h,this._toggle(g,e,f,i,k),j.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header),i||(h.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected),h.next().addClass("ui-accordion-content-active"));return},_toggle:function(b,c,d,e,f){var g=this,h=g.options;g.toShow=b,g.toHide=c,g.data=d;var i=function(){if(!g)return;return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data),g.running=c.size()===0?b.size():c.size();if(h.animated){var j={};h.collapsible&&e?j={toShow:a([]),toHide:c,complete:i,down:f,autoHeight:h.autoHeight||h.fillSpace}:j={toShow:b,toHide:c,complete:i,down:f,autoHeight:h.autoHeight||h.fillSpace},h.proxied||(h.proxied=h.animated),h.proxiedDuration||(h.proxiedDuration=h.duration),h.animated=a.isFunction(h.proxied)?h.proxied(j):h.proxied,h.duration=a.isFunction(h.proxiedDuration)?h.proxiedDuration(j):h.proxiedDuration;var k=a.ui.accordion.animations,l=h.duration,m=h.animated;m&&!k[m]&&!a.easing[m]&&(m="slide"),k[m]||(k[m]=function(a){this.slide(a,{easing:m,duration:l||700})}),k[m](j)}else h.collapsible&&e?b.toggle():(c.hide(),b.show()),i(!0);c.prev().attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).blur(),b.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(this.running)return;this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""}),this.toHide.removeClass("ui-accordion-content-active"),this.toHide.length&&(this.toHide.parent()[0].className=this.toHide.parent()[0].className),this._trigger("change",null,this.data)}}),a.extend(a.ui.accordion,{version:"1.8.20",animations:{slide:function(b,c){b=a.extend({easing:"swing",duration:300},b,c);if(!b.toHide.size()){b.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},b);return}if(!b.toShow.size()){b.toHide.animate({height:"hide",paddingTop:"hide",paddingBottom:"hide"},b);return}var d=b.toShow.css("overflow"),e=0,f={},g={},h=["height","paddingTop","paddingBottom"],i,j=b.toShow;i=j[0].style.width,j.width(j.parent().width()-parseFloat(j.css("paddingLeft"))-parseFloat(j.css("paddingRight"))-(parseFloat(j.css("borderLeftWidth"))||0)-(parseFloat(j.css("borderRightWidth"))||0)),a.each(h,function(c,d){g[d]="hide";var e=(""+a.css(b.toShow[0],d)).match(/^([\d+-.]+)(.*)$/);f[d]={value:e[1],unit:e[2]||"px"}}),b.toShow.css({height:0,overflow:"hidden"}).show(),b.toHide.filter(":hidden").each(b.complete).end().filter(":visible").animate(g,{step:function(a,c){c.prop=="height"&&(e=c.end-c.start===0?0:(c.now-c.start)/(c.end-c.start)),b.toShow[0].style[c.prop]=e*f[c.prop].value+f[c.prop].unit},duration:b.duration,easing:b.easing,complete:function(){b.autoHeight||b.toShow.css("height",""),b.toShow.css({width:i,overflow:d}),b.complete()}})},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1e3:200})}}})})(jQuery);
\ No newline at end of file
index 795fab731e7c24adffd4f566a274a4d72ab96d6f..689479c9fb2dfc2df6487b0a5b6c8488107a0eed 100644 (file)
@@ -1,32 +1,5 @@
-/*
- * jQuery UI Autocomplete 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Autocomplete
- *
- * Depends:
- *     jquery.ui.core.js
- *     jquery.ui.widget.js
- *     jquery.ui.position.js
- */
-(function(d){var e=0;d.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:false,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var a=this,b=this.element[0].ownerDocument,g;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!(a.options.disabled||a.element.propAttr("readOnly"))){g=
-false;var f=d.ui.keyCode;switch(c.keyCode){case f.PAGE_UP:a._move("previousPage",c);break;case f.PAGE_DOWN:a._move("nextPage",c);break;case f.UP:a._move("previous",c);c.preventDefault();break;case f.DOWN:a._move("next",c);c.preventDefault();break;case f.ENTER:case f.NUMPAD_ENTER:if(a.menu.active){g=true;c.preventDefault()}case f.TAB:if(!a.menu.active)return;a.menu.select(c);break;case f.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!=
-a.element.val()){a.selectedItem=null;a.search(null,c)}},a.options.delay);break}}}).bind("keypress.autocomplete",function(c){if(g){g=false;c.preventDefault()}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)};
-this.menu=d("<ul></ul>").addClass("ui-autocomplete").appendTo(d(this.options.appendTo||"body",b)[0]).mousedown(function(c){var f=a.menu.element[0];d(c.target).closest(".ui-menu-item").length||setTimeout(function(){d(document).one("mousedown",function(h){h.target!==a.element[0]&&h.target!==f&&!d.ui.contains(f,h.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,f){f=f.item.data("item.autocomplete");false!==a._trigger("focus",c,{item:f})&&/^key/.test(c.originalEvent.type)&&
-a.element.val(f.value)},selected:function(c,f){var h=f.item.data("item.autocomplete"),i=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();a.previous=i;setTimeout(function(){a.previous=i;a.selectedItem=h},1)}false!==a._trigger("select",c,{item:h})&&a.element.val(h.value);a.term=a.element.val();a.close(c);a.selectedItem=h},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");
-d.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();d.Widget.prototype.destroy.call(this)},_setOption:function(a,b){d.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(d(b||"body",this.element[0].ownerDocument)[0]);a==="disabled"&&
-b&&this.xhr&&this.xhr.abort()},_initSource:function(){var a=this,b,g;if(d.isArray(this.options.source)){b=this.options.source;this.source=function(c,f){f(d.ui.autocomplete.filter(b,c.term))}}else if(typeof this.options.source==="string"){g=this.options.source;this.source=function(c,f){a.xhr&&a.xhr.abort();a.xhr=d.ajax({url:g,data:c,dataType:"json",autocompleteRequest:++e,success:function(h){this.autocompleteRequest===e&&f(h)},error:function(){this.autocompleteRequest===e&&f([])}})}}else this.source=
-this.options.source},search:function(a,b){a=a!=null?a:this.element.val();this.term=this.element.val();if(a.length<this.options.minLength)return this.close(b);clearTimeout(this.closing);if(this._trigger("search",b)!==false)return this._search(a)},_search:function(a){this.pending++;this.element.addClass("ui-autocomplete-loading");this.source({term:a},this.response)},_response:function(a){if(!this.options.disabled&&a&&a.length){a=this._normalize(a);this._suggest(a);this._trigger("open")}else this.close();
-this.pending--;this.pending||this.element.removeClass("ui-autocomplete-loading")},close:function(a){clearTimeout(this.closing);if(this.menu.element.is(":visible")){this.menu.element.hide();this.menu.deactivate();this._trigger("close",a)}},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(a){if(a.length&&a[0].label&&a[0].value)return a;return d.map(a,function(b){if(typeof b==="string")return{label:b,value:b};return d.extend({label:b.label||
-b.value,value:b.value||b.label},b)})},_suggest:function(a){var b=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(b,a);this.menu.deactivate();this.menu.refresh();b.show();this._resizeMenu();b.position(d.extend({of:this.element},this.options.position));this.options.autoFocus&&this.menu.next(new d.Event("mouseover"))},_resizeMenu:function(){var a=this.menu.element;a.outerWidth(Math.max(a.width("").outerWidth(),this.element.outerWidth()))},_renderMenu:function(a,b){var g=this;
-d.each(b,function(c,f){g._renderItem(a,f)})},_renderItem:function(a,b){return d("<li></li>").data("item.autocomplete",b).append(d("<a></a>").text(b.label)).appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b);else this.search(null,b)},widget:function(){return this.menu.element}});d.extend(d.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,
-"\\$&")},filter:function(a,b){var g=new RegExp(d.ui.autocomplete.escapeRegex(b),"i");return d.grep(a,function(c){return g.test(c.label||c.value||c)})}})})(jQuery);
-(function(d){d.widget("ui.menu",{_create:function(){var e=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(a){if(d(a.target).closest(".ui-menu-item a").length){a.preventDefault();e.select(a)}});this.refresh()},refresh:function(){var e=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex",
--1).mouseenter(function(a){e.activate(a,d(this).parent())}).mouseleave(function(){e.deactivate()})},activate:function(e,a){this.deactivate();if(this.hasScroll()){var b=a.offset().top-this.element.offset().top,g=this.element.scrollTop(),c=this.element.height();if(b<0)this.element.scrollTop(g+b);else b>=c&&this.element.scrollTop(g+b-c+a.height())}this.active=a.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",e,{item:a})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id");
-this._trigger("blur");this.active=null}},next:function(e){this.move("next",".ui-menu-item:first",e)},previous:function(e){this.move("prev",".ui-menu-item:last",e)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(e,a,b){if(this.active){e=this.active[e+"All"](".ui-menu-item").eq(0);e.length?this.activate(b,e):this.activate(b,this.element.children(a))}else this.activate(b,
-this.element.children(a))},nextPage:function(e){if(this.hasScroll())if(!this.active||this.last())this.activate(e,this.element.children(".ui-menu-item:first"));else{var a=this.active.offset().top,b=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var c=d(this).offset().top-a-b+d(this).height();return c<10&&c>-10});g.length||(g=this.element.children(".ui-menu-item:last"));this.activate(e,g)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active||
-this.last()?":first":":last"))},previousPage:function(e){if(this.hasScroll())if(!this.active||this.first())this.activate(e,this.element.children(".ui-menu-item:last"));else{var a=this.active.offset().top,b=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var g=d(this).offset().top-a+b-d(this).height();return g<10&&g>-10});result.length||(result=this.element.children(".ui-menu-item:first"));this.activate(e,result)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active||
-this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element[d.fn.prop?"prop":"attr"]("scrollHeight")},select:function(e){this._trigger("selected",e,{item:this.active})}})})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.autocomplete.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){var c=0;a.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var b=this,c=this.element[0].ownerDocument,d;this.isMultiLine=this.element.is("textarea"),this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(b.options.disabled||b.element.propAttr("readOnly"))return;d=!1;var e=a.ui.keyCode;switch(c.keyCode){case e.PAGE_UP:b._move("previousPage",c);break;case e.PAGE_DOWN:b._move("nextPage",c);break;case e.UP:b._keyEvent("previous",c);break;case e.DOWN:b._keyEvent("next",c);break;case e.ENTER:case e.NUMPAD_ENTER:b.menu.active&&(d=!0,c.preventDefault());case e.TAB:if(!b.menu.active)return;b.menu.select(c);break;case e.ESCAPE:b.element.val(b.term),b.close(c);break;default:clearTimeout(b.searching),b.searching=setTimeout(function(){b.term!=b.element.val()&&(b.selectedItem=null,b.search(null,c))},b.options.delay)}}).bind("keypress.autocomplete",function(a){d&&(d=!1,a.preventDefault())}).bind("focus.autocomplete",function(){if(b.options.disabled)return;b.selectedItem=null,b.previous=b.element.val()}).bind("blur.autocomplete",function(a){if(b.options.disabled)return;clearTimeout(b.searching),b.closing=setTimeout(function(){b.close(a),b._change(a)},150)}),this._initSource(),this.menu=a("<ul></ul>").addClass("ui-autocomplete").appendTo(a(this.options.appendTo||"body",c)[0]).mousedown(function(c){var d=b.menu.element[0];a(c.target).closest(".ui-menu-item").length||setTimeout(function(){a(document).one("mousedown",function(c){c.target!==b.element[0]&&c.target!==d&&!a.ui.contains(d,c.target)&&b.close()})},1),setTimeout(function(){clearTimeout(b.closing)},13)}).menu({focus:function(a,c){var d=c.item.data("item.autocomplete");!1!==b._trigger("focus",a,{item:d})&&/^key/.test(a.originalEvent.type)&&b.element.val(d.value)},selected:function(a,d){var e=d.item.data("item.autocomplete"),f=b.previous;b.element[0]!==c.activeElement&&(b.element.focus(),b.previous=f,setTimeout(function(){b.previous=f,b.selectedItem=e},1)),!1!==b._trigger("select",a,{item:e})&&b.element.val(e.value),b.term=b.element.val(),b.close(a),b.selectedItem=e},blur:function(a,c){b.menu.element.is(":visible")&&b.element.val()!==b.term&&b.element.val(b.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu"),a.fn.bgiframe&&this.menu.element.bgiframe(),b.beforeunloadHandler=function(){b.element.removeAttr("autocomplete")},a(window).bind("beforeunload",b.beforeunloadHandler)},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"),this.menu.element.remove(),a(window).unbind("beforeunload",this.beforeunloadHandler),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments),b==="source"&&this._initSource(),b==="appendTo"&&this.menu.element.appendTo(a(c||"body",this.element[0].ownerDocument)[0]),b==="disabled"&&c&&this.xhr&&this.xhr.abort()},_initSource:function(){var b=this,c,d;a.isArray(this.options.source)?(c=this.options.source,this.source=function(b,d){d(a.ui.autocomplete.filter(c,b.term))}):typeof this.options.source=="string"?(d=this.options.source,this.source=function(c,e){b.xhr&&b.xhr.abort(),b.xhr=a.ajax({url:d,data:c,dataType:"json",success:function(a,b){e(a)},error:function(){e([])}})}):this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val(),this.term=this.element.val();if(a.length<this.options.minLength)return this.close(b);clearTimeout(this.closing);if(this._trigger("search",b)===!1)return;return this._search(a)},_search:function(a){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.source({term:a},this._response())},_response:function(){var a=this,b=++c;return function(d){b===c&&a.__response(d),a.pending--,a.pending||a.element.removeClass("ui-autocomplete-loading")}},__response:function(a){!this.options.disabled&&a&&a.length?(a=this._normalize(a),this._suggest(a),this._trigger("open")):this.close()},close:function(a){clearTimeout(this.closing),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.deactivate(),this._trigger("close",a))},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(b){return b.length&&b[0].label&&b[0].value?b:a.map(b,function(b){return typeof b=="string"?{label:b,value:b}:a.extend({label:b.label||b.value,value:b.value||b.label},b)})},_suggest:function(b){var c=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(c,b),this.menu.deactivate(),this.menu.refresh(),c.show(),this._resizeMenu(),c.position(a.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(new a.Event("mouseover"))},_resizeMenu:function(){var a=this.menu.element;a.outerWidth(Math.max(a.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(b,c){var d=this;a.each(c,function(a,c){d._renderItem(b,c)})},_renderItem:function(b,c){return a("<li></li>").data("item.autocomplete",c).append(a("<a></a>").text(c.label)).appendTo(b)},_move:function(a,b){if(!this.menu.element.is(":visible")){this.search(null,b);return}if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term),this.menu.deactivate();return}this.menu[a](b)},widget:function(){return this.menu.element},_keyEvent:function(a,b){if(!this.isMultiLine||this.menu.element.is(":visible"))this._move(a,b),b.preventDefault()}}),a.extend(a.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(b,c){var d=new RegExp(a.ui.autocomplete.escapeRegex(c),"i");return a.grep(b,function(a){return d.test(a.label||a.value||a)})}})})(jQuery),function(a){a.widget("ui.menu",{_create:function(){var b=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){if(!a(c.target).closest(".ui-menu-item a").length)return;c.preventDefault(),b.select(c)}),this.refresh()},refresh:function(){var b=this,c=this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem");c.children("a").addClass("ui-corner-all").attr("tabindex",-1).mouseenter(function(c){b.activate(c,a(this).parent())}).mouseleave(function(){b.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var c=b.offset().top-this.element.offset().top,d=this.element.scrollTop(),e=this.element.height();c<0?this.element.scrollTop(d+c):c>=e&&this.element.scrollTop(d+c-e+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end(),this._trigger("focus",a,{item:b})},deactivate:function(){if(!this.active)return;this.active.children("a").removeClass("ui-state-hover").removeAttr("id"),this._trigger("blur"),this.active=null},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(a,b,c){if(!this.active){this.activate(c,this.element.children(b));return}var d=this.active[a+"All"](".ui-menu-item").eq(0);d.length?this.activate(c,d):this.activate(c,this.element.children(b))},nextPage:function(b){if(this.hasScroll()){if(!this.active||this.last()){this.activate(b,this.element.children(".ui-menu-item:first"));return}var c=this.active.offset().top,d=this.element.height(),e=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c-d+a(this).height();return b<10&&b>-10});e.length||(e=this.element.children(".ui-menu-item:last")),this.activate(b,e)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(b){if(this.hasScroll()){if(!this.active||this.first()){this.activate(b,this.element.children(".ui-menu-item:last"));return}var c=this.active.offset().top,d=this.element.height(),e=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c+d-a(this).height();return b<10&&b>-10});e.length||(e=this.element.children(".ui-menu-item:first")),this.activate(b,e)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element[a.fn.prop?"prop":"attr"]("scrollHeight")},select:function(a){this._trigger("selected",a,{item:this.active})}})}(jQuery);
\ No newline at end of file
index 903f73e93b0e8ef962e43ec532fd4e8673c76865..8e560a2e29b296016d38a6874b0cd0bea93fb9a1 100644 (file)
@@ -1,27 +1,5 @@
-/*
- * jQuery UI Button 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Button
- *
- * Depends:
- *     jquery.ui.core.js
- *     jquery.ui.widget.js
- */
-(function(b){var h,i,j,g,l=function(){var a=b(this).find(":ui-button");setTimeout(function(){a.button("refresh")},1)},k=function(a){var c=a.name,e=a.form,f=b([]);if(c)f=e?b(e).find("[name='"+c+"']"):b("[name='"+c+"']",a.ownerDocument).filter(function(){return!this.form});return f};b.widget("ui.button",{options:{disabled:null,text:true,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",l);if(typeof this.options.disabled!==
-"boolean")this.options.disabled=this.element.propAttr("disabled");this._determineButtonType();this.hasTitle=!!this.buttonElement.attr("title");var a=this,c=this.options,e=this.type==="checkbox"||this.type==="radio",f="ui-state-hover"+(!e?" ui-state-active":"");if(c.label===null)c.label=this.buttonElement.html();if(this.element.is(":disabled"))c.disabled=true;this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",function(){if(!c.disabled){b(this).addClass("ui-state-hover");
-this===h&&b(this).addClass("ui-state-active")}}).bind("mouseleave.button",function(){c.disabled||b(this).removeClass(f)}).bind("click.button",function(d){if(c.disabled){d.preventDefault();d.stopImmediatePropagation()}});this.element.bind("focus.button",function(){a.buttonElement.addClass("ui-state-focus")}).bind("blur.button",function(){a.buttonElement.removeClass("ui-state-focus")});if(e){this.element.bind("change.button",function(){g||a.refresh()});this.buttonElement.bind("mousedown.button",function(d){if(!c.disabled){g=
-false;i=d.pageX;j=d.pageY}}).bind("mouseup.button",function(d){if(!c.disabled)if(i!==d.pageX||j!==d.pageY)g=true})}if(this.type==="checkbox")this.buttonElement.bind("click.button",function(){if(c.disabled||g)return false;b(this).toggleClass("ui-state-active");a.buttonElement.attr("aria-pressed",a.element[0].checked)});else if(this.type==="radio")this.buttonElement.bind("click.button",function(){if(c.disabled||g)return false;b(this).addClass("ui-state-active");a.buttonElement.attr("aria-pressed","true");
-var d=a.element[0];k(d).not(d).map(function(){return b(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")});else{this.buttonElement.bind("mousedown.button",function(){if(c.disabled)return false;b(this).addClass("ui-state-active");h=this;b(document).one("mouseup",function(){h=null})}).bind("mouseup.button",function(){if(c.disabled)return false;b(this).removeClass("ui-state-active")}).bind("keydown.button",function(d){if(c.disabled)return false;if(d.keyCode==b.ui.keyCode.SPACE||
-d.keyCode==b.ui.keyCode.ENTER)b(this).addClass("ui-state-active")}).bind("keyup.button",function(){b(this).removeClass("ui-state-active")});this.buttonElement.is("a")&&this.buttonElement.keyup(function(d){d.keyCode===b.ui.keyCode.SPACE&&b(this).click()})}this._setOption("disabled",c.disabled);this._resetButton()},_determineButtonType:function(){this.type=this.element.is(":checkbox")?"checkbox":this.element.is(":radio")?"radio":this.element.is("input")?"input":"button";if(this.type==="checkbox"||this.type===
-"radio"){var a=this.element.parents().filter(":last"),c="label[for='"+this.element.attr("id")+"']";this.buttonElement=a.find(c);if(!this.buttonElement.length){a=a.length?a.siblings():this.element.siblings();this.buttonElement=a.filter(c);if(!this.buttonElement.length)this.buttonElement=a.find(c)}this.element.addClass("ui-helper-hidden-accessible");(a=this.element.is(":checked"))&&this.buttonElement.addClass("ui-state-active");this.buttonElement.attr("aria-pressed",a)}else this.buttonElement=this.element},
-widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible");this.buttonElement.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active  ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only").removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html());this.hasTitle||this.buttonElement.removeAttr("title");
-b.Widget.prototype.destroy.call(this)},_setOption:function(a,c){b.Widget.prototype._setOption.apply(this,arguments);if(a==="disabled")c?this.element.propAttr("disabled",true):this.element.propAttr("disabled",false);else this._resetButton()},refresh:function(){var a=this.element.is(":disabled");a!==this.options.disabled&&this._setOption("disabled",a);if(this.type==="radio")k(this.element[0]).each(function(){b(this).is(":checked")?b(this).button("widget").addClass("ui-state-active").attr("aria-pressed",
-"true"):b(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")});else if(this.type==="checkbox")this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false")},_resetButton:function(){if(this.type==="input")this.options.label&&this.element.val(this.options.label);else{var a=this.buttonElement.removeClass("ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only"),
-c=b("<span></span>").addClass("ui-button-text").html(this.options.label).appendTo(a.empty()).text(),e=this.options.icons,f=e.primary&&e.secondary,d=[];if(e.primary||e.secondary){if(this.options.text)d.push("ui-button-text-icon"+(f?"s":e.primary?"-primary":"-secondary"));e.primary&&a.prepend("<span class='ui-button-icon-primary ui-icon "+e.primary+"'></span>");e.secondary&&a.append("<span class='ui-button-icon-secondary ui-icon "+e.secondary+"'></span>");if(!this.options.text){d.push(f?"ui-button-icons-only":
-"ui-button-icon-only");this.hasTitle||a.attr("title",c)}}else d.push("ui-button-text-only");a.addClass(d.join(" "))}}});b.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(a,c){a==="disabled"&&this.buttons.button("option",a,c);b.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var a=this.element.css("direction")===
-"ltr";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(a?"ui-corner-left":"ui-corner-right").end().filter(":last").addClass(a?"ui-corner-right":"ui-corner-left").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");
-b.Widget.prototype.destroy.call(this)}})})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.button.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){var c,d,e,f,g="ui-button ui-widget ui-state-default ui-corner-all",h="ui-state-hover ui-state-active ",i="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",j=function(){var b=a(this).find(":ui-button");setTimeout(function(){b.button("refresh")},1)},k=function(b){var c=b.name,d=b.form,e=a([]);return c&&(d?e=a(d).find("[name='"+c+"']"):e=a("[name='"+c+"']",b.ownerDocument).filter(function(){return!this.form})),e};a.widget("ui.button",{options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",j),typeof this.options.disabled!="boolean"?this.options.disabled=!!this.element.propAttr("disabled"):this.element.propAttr("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var b=this,h=this.options,i=this.type==="checkbox"||this.type==="radio",l="ui-state-hover"+(i?"":" ui-state-active"),m="ui-state-focus";h.label===null&&(h.label=this.buttonElement.html()),this.buttonElement.addClass(g).attr("role","button").bind("mouseenter.button",function(){if(h.disabled)return;a(this).addClass("ui-state-hover"),this===c&&a(this).addClass("ui-state-active")}).bind("mouseleave.button",function(){if(h.disabled)return;a(this).removeClass(l)}).bind("click.button",function(a){h.disabled&&(a.preventDefault(),a.stopImmediatePropagation())}),this.element.bind("focus.button",function(){b.buttonElement.addClass(m)}).bind("blur.button",function(){b.buttonElement.removeClass(m)}),i&&(this.element.bind("change.button",function(){if(f)return;b.refresh()}),this.buttonElement.bind("mousedown.button",function(a){if(h.disabled)return;f=!1,d=a.pageX,e=a.pageY}).bind("mouseup.button",function(a){if(h.disabled)return;if(d!==a.pageX||e!==a.pageY)f=!0})),this.type==="checkbox"?this.buttonElement.bind("click.button",function(){if(h.disabled||f)return!1;a(this).toggleClass("ui-state-active"),b.buttonElement.attr("aria-pressed",b.element[0].checked)}):this.type==="radio"?this.buttonElement.bind("click.button",function(){if(h.disabled||f)return!1;a(this).addClass("ui-state-active"),b.buttonElement.attr("aria-pressed","true");var c=b.element[0];k(c).not(c).map(function(){return a(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown.button",function(){if(h.disabled)return!1;a(this).addClass("ui-state-active"),c=this,a(document).one("mouseup",function(){c=null})}).bind("mouseup.button",function(){if(h.disabled)return!1;a(this).removeClass("ui-state-active")}).bind("keydown.button",function(b){if(h.disabled)return!1;(b.keyCode==a.ui.keyCode.SPACE||b.keyCode==a.ui.keyCode.ENTER)&&a(this).addClass("ui-state-active")}).bind("keyup.button",function(){a(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(b){b.keyCode===a.ui.keyCode.SPACE&&a(this).click()})),this._setOption("disabled",h.disabled),this._resetButton()},_determineButtonType:function(){this.element.is(":checkbox")?this.type="checkbox":this.element.is(":radio")?this.type="radio":this.element.is("input")?this.type="input":this.type="button";if(this.type==="checkbox"||this.type==="radio"){var a=this.element.parents().filter(":last"),b="label[for='"+this.element.attr("id")+"']";this.buttonElement=a.find(b),this.buttonElement.length||(a=a.length?a.siblings():this.element.siblings(),this.buttonElement=a.filter(b),this.buttonElement.length||(this.buttonElement=a.find(b))),this.element.addClass("ui-helper-hidden-accessible");var c=this.element.is(":checked");c&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.attr("aria-pressed",c)}else this.buttonElement=this.element},widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(g+" "+h+" "+i).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title"),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments);if(b==="disabled"){c?this.element.propAttr("disabled",!0):this.element.propAttr("disabled",!1);return}this._resetButton()},refresh:function(){var b=this.element.is(":disabled");b!==this.options.disabled&&this._setOption("disabled",b),this.type==="radio"?k(this.element[0]).each(function(){a(this).is(":checked")?a(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):a(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):this.type==="checkbox"&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if(this.type==="input"){this.options.label&&this.element.val(this.options.label);return}var b=this.buttonElement.removeClass(i),c=a("<span></span>",this.element[0].ownerDocument).addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary,f=[];d.primary||d.secondary?(this.options.text&&f.push("ui-button-text-icon"+(e?"s":d.primary?"-primary":"-secondary")),d.primary&&b.prepend("<span class='ui-button-icon-primary ui-icon "+d.primary+"'></span>"),d.secondary&&b.append("<span class='ui-button-icon-secondary ui-icon "+d.secondary+"'></span>"),this.options.text||(f.push(e?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||b.attr("title",c))):f.push("ui-button-text-only"),b.addClass(f.join(" "))}}),a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c),a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var b=this.element.css("direction")==="rtl";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(b?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(b?"ui-corner-left":"ui-corner-right").end().end()},destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"),a.Widget.prototype.destroy.call(this)}})})(jQuery);
\ No newline at end of file
index 59d7bb29fbd4c37336a272ba09860e6ee75cb9ab..dc41e58145f24947cccdf414fd05060d3129b622 100644 (file)
@@ -1,18 +1,5 @@
-/*!
- * jQuery UI 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI
- */
-(function(c,j){function k(a,b){var d=a.nodeName.toLowerCase();if("area"===d){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&l(a)}return(/input|select|textarea|button|object/.test(d)?!a.disabled:"a"==d?a.href||b:b)&&l(a)}function l(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.16",
-keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({propAttr:c.fn.prop||c.fn.attr,_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=
-this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,
-"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":
-"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,m,n){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(m)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(n)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,
-outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){return k(a,!isNaN(c.attr(a,"tabindex")))},tabbable:function(a){var b=c.attr(a,
-"tabindex"),d=isNaN(b);return(d||b>=0)&&k(a,!d)}});c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&
-a.element[0].parentNode)for(var e=0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element,d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&
-c.ui.isOverAxis(b,e,i)}})}})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.core.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;return!b.href||!g||f.nodeName.toLowerCase()!=="map"?!1:(h=a("img[usemap=#"+g+"]")[0],!!h&&d(h))}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.ui=a.ui||{};if(a.ui.version)return;a.extend(a.ui,{version:"1.8.20",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;return a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0),/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(c,d){function h(b,c,d,f){return a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)}),c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){return c===b?g["inner"+d].call(this):this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){return typeof b!="number"?g["outer"+d].call(this,b):this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));c.offsetHeight,a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!d||!a.element[0].parentNode)return;for(var e=0;e<d.length;e++)a.options[d[e][0]]&&d[e][1].apply(a.element,c)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(b,c){if(a(b).css("overflow")==="hidden")return!1;var d=c&&c==="left"?"scrollLeft":"scrollTop",e=!1;return b[d]>0?!0:(b[d]=1,e=b[d]>0,b[d]=0,e)},isOverAxis:function(a,b,c){return a>b&&a<b+c},isOver:function(b,c,d,e,f,g){return a.ui.isOverAxis(b,d,f)&&a.ui.isOverAxis(c,e,g)}})})(jQuery);
\ No newline at end of file
index 07c83968e8a424458bd510318e25af7a4e4d6308..745616865972fa8a501c83036e124c877dacdec9 100644 (file)
@@ -1,83 +1,5 @@
-/*
- * jQuery UI Datepicker 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Datepicker
- *
- * Depends:
- *     jquery.ui.core.js
- */
-(function(d,C){function M(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._inDialog=this._datepickerShowing=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass=
-"ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su",
-"Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:""};this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,yearRange:"c-10:c+10",showOtherMonths:false,selectOtherMonths:false,showWeek:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",
-minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false,autoSize:false,disabled:false};d.extend(this._defaults,this.regional[""]);this.dpDiv=N(d('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function N(a){return a.bind("mouseout",
-function(b){b=d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");b.length&&b.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(b){b=d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");if(!(d.datepicker._isDisabledDatepicker(J.inline?a.parent()[0]:J.input[0])||!b.length)){b.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");
-b.addClass("ui-state-hover");b.hasClass("ui-datepicker-prev")&&b.addClass("ui-datepicker-prev-hover");b.hasClass("ui-datepicker-next")&&b.addClass("ui-datepicker-next-hover")}})}function H(a,b){d.extend(a,b);for(var c in b)if(b[c]==null||b[c]==C)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.16"}});var B=(new Date).getTime(),J;d.extend(M.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},
-setDefaults:function(a){H(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase();f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,
-"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:N(d('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}},_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",
-function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b);b.settings.disabled&&this._disableDatepicker(a)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&&b.append.remove();if(c){b.append=d('<span class="'+this._appendClass+'">'+c+"</span>");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c==
-"focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("<img/>").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('<button type="button"></button>').addClass(this._triggerClass).html(f==""?c:d("<img/>").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():
-d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;g<f.length;g++)if(f[g].length>h){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,
-b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b),true);this._updateDatepicker(b);this._updateAlternate(b);b.settings.disabled&&this._disableDatepicker(a);b.dpDiv.css("display","block")}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=
-1;this._dialogInput=d('<input type="text" id="'+("dp"+this.uuid)+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}H(a.settings,e||{});b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/
-2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=
-d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=
-a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().removeClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a,
-"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().addClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==
-a?null:f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return true;return false},_getInst:function(a){try{return d.data(a,"datepicker")}catch(b){throw"Missing instance data for this datepicker";}},_optionDatepicker:function(a,b,c){var e=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?d.extend({},d.datepicker._defaults):e?b=="all"?
-d.extend({},e.settings):this._get(e,b):null;var f=b||{};if(typeof b=="string"){f={};f[b]=c}if(e){this._curInst==e&&this._hideDatepicker();var h=this._getDateDatepicker(a,true),i=this._getMinMaxDate(e,"min"),g=this._getMinMaxDate(e,"max");H(e.settings,f);if(i!==null&&f.dateFormat!==C&&f.minDate===C)e.settings.minDate=this._formatDate(e,i);if(g!==null&&f.dateFormat!==C&&f.maxDate===C)e.settings.maxDate=this._formatDate(e,g);this._attachments(d(a),e);this._autoSize(e);this._setDate(e,h);this._updateAlternate(e);
-this._updateDatepicker(e)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){(a=this._getInst(a))&&this._updateDatepicker(a)},_setDateDatepicker:function(a,b){if(a=this._getInst(a)){this._setDate(a,b);this._updateDatepicker(a);this._updateAlternate(a)}},_getDateDatepicker:function(a,b){(a=this._getInst(a))&&!a.inline&&this._setDateFromField(a,b);return a?this._getDate(a):null},_doKeyDown:function(a){var b=d.datepicker._getInst(a.target),c=true,e=b.dpDiv.is(".ui-datepicker-rtl");
-b._keyEvent=true;if(d.datepicker._datepickerShowing)switch(a.keyCode){case 9:d.datepicker._hideDatepicker();c=false;break;case 13:c=d("td."+d.datepicker._dayOverClass+":not(."+d.datepicker._currentClass+")",b.dpDiv);c[0]&&d.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,c[0]);if(a=d.datepicker._get(b,"onSelect")){c=d.datepicker._formatDate(b);a.apply(b.input?b.input[0]:null,[c,b])}else d.datepicker._hideDatepicker();return false;case 27:d.datepicker._hideDatepicker();break;case 33:d.datepicker._adjustDate(a.target,
-a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 34:d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 35:if(a.ctrlKey||a.metaKey)d.datepicker._clearDate(a.target);c=a.ctrlKey||a.metaKey;break;case 36:if(a.ctrlKey||a.metaKey)d.datepicker._gotoToday(a.target);c=a.ctrlKey||a.metaKey;break;case 37:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?+1:-1,"D");c=
-a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 38:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,-7,"D");c=a.ctrlKey||a.metaKey;break;case 39:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?-1:+1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,
-"stepMonths"),"M");break;case 40:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,+7,"D");c=a.ctrlKey||a.metaKey;break;default:c=false}else if(a.keyCode==36&&a.ctrlKey)d.datepicker._showDatepicker(this);else c=false;if(c){a.preventDefault();a.stopPropagation()}},_doKeyPress:function(a){var b=d.datepicker._getInst(a.target);if(d.datepicker._get(b,"constrainInput")){b=d.datepicker._possibleChars(d.datepicker._get(b,"dateFormat"));var c=String.fromCharCode(a.charCode==C?a.keyCode:a.charCode);
-return a.ctrlKey||a.metaKey||c<" "||!b||b.indexOf(c)>-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input",
-a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);if(d.datepicker._curInst&&d.datepicker._curInst!=b){d.datepicker._datepickerShowing&&d.datepicker._triggerOnClose(d.datepicker._curInst);d.datepicker._curInst.dpDiv.stop(true,true)}var c=d.datepicker._get(b,"beforeShow");c=c?c.apply(a,[a,b]):{};if(c!==false){H(b.settings,c);b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value=
-"";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);
-c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){var i=b.dpDiv.find("iframe.ui-datepicker-cover");if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.datepicker._datepickerShowing=
-true;d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}}},_updateDatepicker:function(a){this.maxRows=4;var b=d.datepicker._getBorders(a.dpDiv);J=a;a.dpDiv.empty().append(this._generateHTML(a));var c=a.dpDiv.find("iframe.ui-datepicker-cover");c.length&&c.css({left:-b[0],top:-b[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});
-a.dpDiv.find("."+this._dayOverClass+" a").mouseover();b=this._getNumberOfMonths(a);c=b[1];a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");c>1&&a.dpDiv.addClass("ui-datepicker-multi-"+c).css("width",17*c+"em");a.dpDiv[(b[0]!=1||b[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&
-!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var e=a.yearshtml;setTimeout(function(){e===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);e=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),
-h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=
-this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1||d.expr.filters.hidden(a));)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_triggerOnClose:function(a){var b=this._get(a,"onClose");if(b)b.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a])},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);
-this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();d.datepicker._triggerOnClose(b);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},
-_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):
-0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e["selected"+(c=="M"?
-"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a);
-this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField");
-if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?
-b.toString():b+"";if(b=="")return null;var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;e=typeof e!="string"?e:(new Date).getFullYear()%100+parseInt(e,10);for(var f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=A+1<a.length&&a.charAt(A+1)==p)&&A++;return p},m=function(p){var D=
-o(p);p=new RegExp("^\\d{1,"+(p=="@"?14:p=="!"?20:p=="y"&&D?4:p=="o"?3:2)+"}");p=b.substring(q).match(p);if(!p)throw"Missing number at position "+q;q+=p[0].length;return parseInt(p[0],10)},n=function(p,D,K){p=d.map(o(p)?K:D,function(w,x){return[[x,w]]}).sort(function(w,x){return-(w[1].length-x[1].length)});var E=-1;d.each(p,function(w,x){w=x[1];if(b.substr(q,w.length).toLowerCase()==w.toLowerCase()){E=x[0];q+=w.length;return false}});if(E!=-1)return E+1;else throw"Unknown name at position "+q;},s=
-function(){if(b.charAt(q)!=a.charAt(A))throw"Unexpected literal at position "+q;q++},q=0,A=0;A<a.length;A++)if(k)if(a.charAt(A)=="'"&&!o("'"))k=false;else s();else switch(a.charAt(A)){case "d":l=m("d");break;case "D":n("D",f,h);break;case "o":u=m("o");break;case "m":j=m("m");break;case "M":j=n("M",i,g);break;case "y":c=m("y");break;case "@":var v=new Date(m("@"));c=v.getFullYear();j=v.getMonth()+1;l=v.getDate();break;case "!":v=new Date((m("!")-this._ticksTo1970)/1E4);c=v.getFullYear();j=v.getMonth()+
-1;l=v.getDate();break;case "'":if(o("'"))s();else k=true;break;default:s()}if(q<b.length)throw"Extra/unparsed characters found in date: "+b.substring(q);if(c==-1)c=(new Date).getFullYear();else if(c<100)c+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c<=e?0:-100);if(u>-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}v=this._daylightSavingAdjust(new Date(c,j-1,l));if(v.getFullYear()!=c||v.getMonth()+1!=j||v.getDate()!=l)throw"Invalid date";return v},ATOM:"yy-mm-dd",
-COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:
-null)||this._defaults.monthNames;var i=function(o){(o=k+1<a.length&&a.charAt(k+1)==o)&&k++;return o},g=function(o,m,n){m=""+m;if(i(o))for(;m.length<n;)m="0"+m;return m},j=function(o,m,n,s){return i(o)?s[m]:n[m]},l="",u=false;if(b)for(var k=0;k<a.length;k++)if(u)if(a.charAt(k)=="'"&&!i("'"))u=false;else l+=a.charAt(k);else switch(a.charAt(k)){case "d":l+=g("d",b.getDate(),2);break;case "D":l+=j("D",b.getDay(),e,f);break;case "o":l+=g("o",Math.round(((new Date(b.getFullYear(),b.getMonth(),b.getDate())).getTime()-
-(new Date(b.getFullYear(),0,0)).getTime())/864E5),3);break;case "m":l+=g("m",b.getMonth()+1,2);break;case "M":l+=j("M",b.getMonth(),h,c);break;case "y":l+=i("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case "@":l+=b.getTime();break;case "!":l+=b.getTime()*1E4+this._ticksTo1970;break;case "'":if(i("'"))l+="'";else u=true;break;default:l+=a.charAt(k)}return l},_possibleChars:function(a){for(var b="",c=false,e=function(h){(h=f+1<a.length&&a.charAt(f+1)==h)&&f++;return h},f=
-0;f<a.length;f++)if(c)if(a.charAt(f)=="'"&&!e("'"))c=false;else b+=a.charAt(f);else switch(a.charAt(f)){case "d":case "m":case "y":case "@":b+="0123456789";break;case "D":case "M":return null;case "'":if(e("'"))b+="'";else c=true;break;default:b+=a.charAt(f)}return b},_get:function(a,b){return a.settings[b]!==C?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()!=a.lastVal){var c=this._get(a,"dateFormat"),e=a.lastVal=a.input?a.input.val():null,f,h;f=h=this._getDefaultDate(a);
-var i=this._getFormatConfig(a);try{f=this.parseDate(c,e,i)||h}catch(g){this.log(g);e=b?"":e}a.selectedDay=f.getDate();a.drawMonth=a.selectedMonth=f.getMonth();a.drawYear=a.selectedYear=f.getFullYear();a.currentDay=e?f.getDate():0;a.currentMonth=e?f.getMonth():0;a.currentYear=e?f.getFullYear():0;this._adjustInstDate(a)}},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,c){var e=function(h){var i=new Date;
-i.setDate(i.getDate()+h);return i},f=function(h){try{return d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),h,d.datepicker._getFormatConfig(a))}catch(i){}var g=(h.toLowerCase().match(/^c/)?d.datepicker._getDate(a):null)||new Date,j=g.getFullYear(),l=g.getMonth();g=g.getDate();for(var u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,k=u.exec(h);k;){switch(k[2]||"d"){case "d":case "D":g+=parseInt(k[1],10);break;case "w":case "W":g+=parseInt(k[1],10)*7;break;case "m":case "M":l+=parseInt(k[1],10);g=
-Math.min(g,d.datepicker._getDaysInMonth(j,l));break;case "y":case "Y":j+=parseInt(k[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(j,l));break}k=u.exec(h)}return new Date(j,l,g)};if(b=(b=b==null||b===""?c:typeof b=="string"?f(b):typeof b=="number"?isNaN(b)?c:e(b):new Date(b.getTime()))&&b.toString()=="Invalid Date"?c:b){b.setHours(0);b.setMinutes(0);b.setSeconds(0);b.setMilliseconds(0)}return this._daylightSavingAdjust(b)},_daylightSavingAdjust:function(a){if(!a)return null;a.setHours(a.getHours()>
-12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&&
-a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?
-new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n=this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&n<k?k:n;this._daylightSavingAdjust(new Date(m,g,1))>n;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a));
-n=this._canAdjustMonth(a,-1,m,g)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+B+".datepicker._adjustDate('#"+a.id+"', -"+j+", 'M');\" title=\""+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>":f?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>";var s=this._get(a,"nextText");s=!h?s:this.formatDate(s,this._daylightSavingAdjust(new Date(m,
-g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+B+".datepicker._adjustDate('#"+a.id+"', +"+j+", 'M');\" title=\""+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>":f?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>";j=this._get(a,"currentText");s=this._get(a,"gotoCurrent")&&
-a.currentDay?u:b;j=!h?j:this.formatDate(j,s,this._getFormatConfig(a));h=!a.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+B+'.datepicker._hideDatepicker();">'+this._get(a,"closeText")+"</button>":"";e=e?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?h:"")+(this._isInRange(a,s)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+
-B+".datepicker._gotoToday('#"+a.id+"');\">"+j+"</button>":"")+(c?"":h)+"</div>":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");s=this._get(a,"dayNames");this._get(a,"dayNamesShort");var q=this._get(a,"dayNamesMin"),A=this._get(a,"monthNames"),v=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),D=this._get(a,"showOtherMonths"),K=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var E=this._getDefaultDate(a),w="",x=0;x<i[0];x++){var O=
-"";this.maxRows=4;for(var G=0;G<i[1];G++){var P=this._daylightSavingAdjust(new Date(m,g,a.selectedDay)),t=" ui-corner-all",y="";if(l){y+='<div class="ui-datepicker-group';if(i[1]>1)switch(G){case 0:y+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]-1:y+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:y+=" ui-datepicker-group-middle";t="";break}y+='">'}y+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+t+'">'+(/all|left/.test(t)&&
-x==0?c?f:n:"")+(/all|right/.test(t)&&x==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,x>0||G>0,A,v)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var z=j?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"";for(t=0;t<7;t++){var r=(t+h)%7;z+="<th"+((t+h+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+s[r]+'">'+q[r]+"</span></th>"}y+=z+"</tr></thead><tbody>";z=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,
-z);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;z=Math.ceil((t+z)/7);this.maxRows=z=l?this.maxRows>z?this.maxRows:z:z;r=this._daylightSavingAdjust(new Date(m,g,1-t));for(var Q=0;Q<z;Q++){y+="<tr>";var R=!j?"":'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(r)+"</td>";for(t=0;t<7;t++){var I=p?p.apply(a.input?a.input[0]:null,[r]):[true,""],F=r.getMonth()!=g,L=F&&!K||!I[0]||k&&r<k||o&&r>o;R+='<td class="'+((t+h+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(r.getTime()==
-P.getTime()&&g==a.selectedMonth&&a._keyEvent||E.getTime()==r.getTime()&&E.getTime()==P.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!D?"":" "+I[1]+(r.getTime()==u.getTime()?" "+this._currentClass:"")+(r.getTime()==b.getTime()?" ui-datepicker-today":""))+'"'+((!F||D)&&I[2]?' title="'+I[2]+'"':"")+(L?"":' onclick="DP_jQuery_'+B+".datepicker._selectDay('#"+a.id+"',"+r.getMonth()+","+r.getFullYear()+', this);return false;"')+">"+(F&&!D?"&#xa0;":L?'<span class="ui-state-default">'+
-r.getDate()+"</span>":'<a class="ui-state-default'+(r.getTime()==b.getTime()?" ui-state-highlight":"")+(r.getTime()==u.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+'" href="#">'+r.getDate()+"</a>")+"</td>";r.setDate(r.getDate()+1);r=this._daylightSavingAdjust(r)}y+=R+"</tr>"}g++;if(g>11){g=0;m++}y+="</tbody></table>"+(l?"</div>"+(i[0]>0&&G==i[1]-1?'<div class="ui-datepicker-row-break"></div>':""):"");O+=y}w+=O}w+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':
-"");a._keyEvent=false;return w},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='<div class="ui-datepicker-title">',o="";if(h||!j)o+='<span class="ui-datepicker-month">'+i[b]+"</span>";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+B+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" >";for(var n=0;n<12;n++)if((!i||n>=e.getMonth())&&
-(!m||n<=f.getMonth()))o+='<option value="'+n+'"'+(n==b?' selected="selected"':"")+">"+g[n]+"</option>";o+="</select>"}u||(k+=o+(h||!(j&&l)?"&#xa0;":""));if(!a.yearshtml){a.yearshtml="";if(h||!l)k+='<span class="ui-datepicker-year">'+c+"</span>";else{g=this._get(a,"yearRange").split(":");var s=(new Date).getFullYear();i=function(q){q=q.match(/c[+-].*/)?c+parseInt(q.substring(1),10):q.match(/[+-].*/)?s+parseInt(q,10):parseInt(q,10);return isNaN(q)?s:q};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b,
-e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+B+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" >";b<=g;b++)a.yearshtml+='<option value="'+b+'"'+(b==c?' selected="selected"':"")+">"+b+"</option>";a.yearshtml+="</select>";k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?"&#xa0;":"")+o;k+="</div>";return k},_adjustInstDate:function(a,b,c){var e=a.drawYear+(c=="Y"?b:0),f=a.drawMonth+
-(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&b<c?c:b;return b=a&&b>a?a:b},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");if(b)b.apply(a.input?
-a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a);c=this._daylightSavingAdjust(new Date(c,
-e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,
-"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker=function(a){if(!this.length)return this;
-if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));return this.each(function(){typeof a==
-"string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new M;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.16";window["DP_jQuery_"+B]=d})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.datepicker.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function($,undefined){function Datepicker(){this.debug=!1,this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},$.extend(this._defaults,this.regional[""]),this.dpDiv=bindHover($('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function bindHover(a){var b="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return a.bind("mouseout",function(a){var c=$(a.target).closest(b);if(!c.length)return;c.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(c){var d=$(c.target).closest(b);if($.datepicker._isDisabledDatepicker(instActive.inline?a.parent()[0]:instActive.input[0])||!d.length)return;d.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),d.addClass("ui-state-hover"),d.hasClass("ui-datepicker-prev")&&d.addClass("ui-datepicker-prev-hover"),d.hasClass("ui-datepicker-next")&&d.addClass("ui-datepicker-next-hover")})}function extendRemove(a,b){$.extend(a,b);for(var c in b)if(b[c]==null||b[c]==undefined)a[c]=b[c];return a}function isArray(a){return a&&($.browser.safari&&typeof a=="object"&&a.length||a.constructor&&a.constructor.toString().match(/\Array\(\)/))}$.extend($.ui,{datepicker:{version:"1.8.20"}});var PROP_NAME="datepicker",dpuuid=(new Date).getTime(),instActive;$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){return extendRemove(this._defaults,a||{}),this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase(),inline=nodeName=="div"||nodeName=="span";target.id||(this.uuid+=1,target.id="dp"+this.uuid);var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{}),nodeName=="input"?this._connectDatepicker(target,inst):inline&&this._inlineDatepicker(target,inst)},_newInst:function(a,b){var c=a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1");return{id:c,input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:b?bindHover($('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')):this.dpDiv}},_connectDatepicker:function(a,b){var c=$(a);b.append=$([]),b.trigger=$([]);if(c.hasClass(this.markerClassName))return;this._attachments(c,b),c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(a,c,d){b.settings[c]=d}).bind("getData.datepicker",function(a,c){return this._get(b,c)}),this._autoSize(b),$.data(a,PROP_NAME,b),b.settings.disabled&&this._disableDatepicker(a)},_attachments:function(a,b){var c=this._get(b,"appendText"),d=this._get(b,"isRTL");b.append&&b.append.remove(),c&&(b.append=$('<span class="'+this._appendClass+'">'+c+"</span>"),a[d?"before":"after"](b.append)),a.unbind("focus",this._showDatepicker),b.trigger&&b.trigger.remove();var e=this._get(b,"showOn");(e=="focus"||e=="both")&&a.focus(this._showDatepicker);if(e=="button"||e=="both"){var f=this._get(b,"buttonText"),g=this._get(b,"buttonImage");b.trigger=$(this._get(b,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:g,alt:f,title:f}):$('<button type="button"></button>').addClass(this._triggerClass).html(g==""?f:$("<img/>").attr({src:g,alt:f,title:f}))),a[d?"before":"after"](b.trigger),b.trigger.click(function(){return $.datepicker._datepickerShowing&&$.datepicker._lastInput==a[0]?$.datepicker._hideDatepicker():$.datepicker._datepickerShowing&&$.datepicker._lastInput!=a[0]?($.datepicker._hideDatepicker(),$.datepicker._showDatepicker(a[0])):$.datepicker._showDatepicker(a[0]),!1})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var d=function(a){var b=0,c=0;for(var d=0;d<a.length;d++)a[d].length>b&&(b=a[d].length,c=d);return c};b.setMonth(d(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort"))),b.setDate(d(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=$(a);if(c.hasClass(this.markerClassName))return;c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(a,c,d){b.settings[c]=d}).bind("getData.datepicker",function(a,c){return this._get(b,c)}),$.data(a,PROP_NAME,b),this._setDate(b,this._getDefaultDate(b),!0),this._updateDatepicker(b),this._updateAlternate(b),b.settings.disabled&&this._disableDatepicker(a),b.dpDiv.css("display","block")},_dialogDatepicker:function(a,b,c,d,e){var f=this._dialogInst;if(!f){this.uuid+=1;var g="dp"+this.uuid;this._dialogInput=$('<input type="text" id="'+g+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>'),this._dialogInput.keydown(this._doKeyDown),$("body").append(this._dialogInput),f=this._dialogInst=this._newInst(this._dialogInput,!1),f.settings={},$.data(this._dialogInput[0],PROP_NAME,f)}extendRemove(f.settings,d||{}),b=b&&b.constructor==Date?this._formatDate(f,b):b,this._dialogInput.val(b),this._pos=e?e.length?e:[e.pageX,e.pageY]:null;if(!this._pos){var h=document.documentElement.clientWidth,i=document.documentElement.clientHeight,j=document.documentElement.scrollLeft||document.body.scrollLeft,k=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[h/2-100+j,i/2-150+k]}return this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),f.settings.onSelect=c,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),$.blockUI&&$.blockUI(this.dpDiv),$.data(this._dialogInput[0],PROP_NAME,f),this},_destroyDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!b.hasClass(this.markerClassName))return;var d=a.nodeName.toLowerCase();$.removeData(a,PROP_NAME),d=="input"?(c.append.remove(),c.trigger.remove(),b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):(d=="div"||d=="span")&&b.removeClass(this.markerClassName).empty()},_enableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!b.hasClass(this.markerClassName))return;var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!1,c.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().removeClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b})},_disableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!b.hasClass(this.markerClassName))return;var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!0,c.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().addClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b}),this._disabledInputs[this._disabledInputs.length]=a},_isDisabledDatepicker:function(a){if(!a)return!1;for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return!0;return!1},_getInst:function(a){try{return $.data(a,PROP_NAME)}catch(b){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(a,b,c){var d=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?$.extend({},$.datepicker._defaults):d?b=="all"?$.extend({},d.settings):this._get(d,b):null;var e=b||{};typeof b=="string"&&(e={},e[b]=c);if(d){this._curInst==d&&this._hideDatepicker();var f=this._getDateDatepicker(a,!0),g=this._getMinMaxDate(d,"min"),h=this._getMinMaxDate(d,"max");extendRemove(d.settings,e),g!==null&&e.dateFormat!==undefined&&e.minDate===undefined&&(d.settings.minDate=this._formatDate(d,g)),h!==null&&e.dateFormat!==undefined&&e.maxDate===undefined&&(d.settings.maxDate=this._formatDate(d,h)),this._attachments($(a),d),this._autoSize(d),this._setDate(d,f),this._updateAlternate(d),this._updateDatepicker(d)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){var b=this._getInst(a);b&&this._updateDatepicker(b)},_setDateDatepicker:function(a,b){var c=this._getInst(a);c&&(this._setDate(c,b),this._updateDatepicker(c),this._updateAlternate(c))},_getDateDatepicker:function(a,b){var c=this._getInst(a);return c&&!c.inline&&this._setDateFromField(c,b),c?this._getDate(c):null},_doKeyDown:function(a){var b=$.datepicker._getInst(a.target),c=!0,d=b.dpDiv.is(".ui-datepicker-rtl");b._keyEvent=!0;if($.datepicker._datepickerShowing)switch(a.keyCode){case 9:$.datepicker._hideDatepicker(),c=!1;break;case 13:var e=$("td."+$.datepicker._dayOverClass+":not(."+$.datepicker._currentClass+")",b.dpDiv);e[0]&&$.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,e[0]);var f=$.datepicker._get(b,"onSelect");if(f){var g=$.datepicker._formatDate(b);f.apply(b.input?b.input[0]:null,[g,b])}else $.datepicker._hideDatepicker();return!1;case 27:$.datepicker._hideDatepicker();break;case 33:$.datepicker._adjustDate(a.target,a.ctrlKey?-$.datepicker._get(b,"stepBigMonths"):-$.datepicker._get(b,"stepMonths"),"M");break;case 34:$.datepicker._adjustDate(a.target,a.ctrlKey?+$.datepicker._get(b,"stepBigMonths"):+$.datepicker._get(b,"stepMonths"),"M");break;case 35:(a.ctrlKey||a.metaKey)&&$.datepicker._clearDate(a.target),c=a.ctrlKey||a.metaKey;break;case 36:(a.ctrlKey||a.metaKey)&&$.datepicker._gotoToday(a.target),c=a.ctrlKey||a.metaKey;break;case 37:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,d?1:-1,"D"),c=a.ctrlKey||a.metaKey,a.originalEvent.altKey&&$.datepicker._adjustDate(a.target,a.ctrlKey?-$.datepicker._get(b,"stepBigMonths"):-$.datepicker._get(b,"stepMonths"),"M");break;case 38:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,-7,"D"),c=a.ctrlKey||a.metaKey;break;case 39:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,d?-1:1,"D"),c=a.ctrlKey||a.metaKey,a.originalEvent.altKey&&$.datepicker._adjustDate(a.target,a.ctrlKey?+$.datepicker._get(b,"stepBigMonths"):+$.datepicker._get(b,"stepMonths"),"M");break;case 40:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,7,"D"),c=a.ctrlKey||a.metaKey;break;default:c=!1}else a.keyCode==36&&a.ctrlKey?$.datepicker._showDatepicker(this):c=!1;c&&(a.preventDefault(),a.stopPropagation())},_doKeyPress:function(a){var b=$.datepicker._getInst(a.target);if($.datepicker._get(b,"constrainInput")){var c=$.datepicker._possibleChars($.datepicker._get(b,"dateFormat")),d=String.fromCharCode(a.charCode==undefined?a.keyCode:a.charCode);return a.ctrlKey||a.metaKey||d<" "||!c||c.indexOf(d)>-1}},_doKeyUp:function(a){var b=$.datepicker._getInst(a.target);if(b.input.val()!=b.lastVal)try{var c=$.datepicker.parseDate($.datepicker._get(b,"dateFormat"),b.input?b.input.val():null,$.datepicker._getFormatConfig(b));c&&($.datepicker._setDateFromField(b),$.datepicker._updateAlternate(b),$.datepicker._updateDatepicker(b))}catch(d){$.datepicker.log(d)}return!0},_showDatepicker:function(a){a=a.target||a,a.nodeName.toLowerCase()!="input"&&(a=$("input",a.parentNode)[0]);if($.datepicker._isDisabledDatepicker(a)||$.datepicker._lastInput==a)return;var b=$.datepicker._getInst(a);$.datepicker._curInst&&$.datepicker._curInst!=b&&($.datepicker._curInst.dpDiv.stop(!0,!0),b&&$.datepicker._datepickerShowing&&$.datepicker._hideDatepicker($.datepicker._curInst.input[0]));var c=$.datepicker._get(b,"beforeShow"),d=c?c.apply(a,[a,b]):{};if(d===!1)return;extendRemove(b.settings,d),b.lastVal=null,$.datepicker._lastInput=a,$.datepicker._setDateFromField(b),$.datepicker._inDialog&&(a.value=""),$.datepicker._pos||($.datepicker._pos=$.datepicker._findPos(a),$.datepicker._pos[1]+=a.offsetHeight);var e=!1;$(a).parents().each(function(){return e|=$(this).css("position")=="fixed",!e}),e&&$.browser.opera&&($.datepicker._pos[0]-=document.documentElement.scrollLeft,$.datepicker._pos[1]-=document.documentElement.scrollTop);var f={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null,b.dpDiv.empty(),b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),$.datepicker._updateDatepicker(b),f=$.datepicker._checkOffset(b,f,e),b.dpDiv.css({position:$.datepicker._inDialog&&$.blockUI?"static":e?"fixed":"absolute",display:"none",left:f.left+"px",top:f.top+"px"});if(!b.inline){var g=$.datepicker._get(b,"showAnim"),h=$.datepicker._get(b,"duration"),i=function(){var a=b.dpDiv.find("iframe.ui-datepicker-cover");if(!!a.length){var c=$.datepicker._getBorders(b.dpDiv);a.css({left:-c[0],top:-c[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex($(a).zIndex()+1),$.datepicker._datepickerShowing=!0,$.effects&&$.effects[g]?b.dpDiv.show(g,$.datepicker._get(b,"showOptions"),h,i):b.dpDiv[g||"show"](g?h:null,i),(!g||!h)&&i(),b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus(),$.datepicker._curInst=b}},_updateDatepicker:function(a){var b=this;b.maxRows=4;var c=$.datepicker._getBorders(a.dpDiv);instActive=a,a.dpDiv.empty().append(this._generateHTML(a));var d=a.dpDiv.find("iframe.ui-datepicker-cover");!d.length||d.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()}),a.dpDiv.find("."+this._dayOverClass+" a").mouseover();var e=this._getNumberOfMonths(a),f=e[1],g=17;a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),f>1&&a.dpDiv.addClass("ui-datepicker-multi-"+f).css("width",g*f+"em"),a.dpDiv[(e[0]!=1||e[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"),a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),a==$.datepicker._curInst&&$.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var h=a.yearshtml;setTimeout(function(){h===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml),h=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(a){return{thin:1,medium:2,thick:3}[a]||a};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var d=a.dpDiv.outerWidth(),e=a.dpDiv.outerHeight(),f=a.input?a.input.outerWidth():0,g=a.input?a.input.outerHeight():0,h=document.documentElement.clientWidth+$(document).scrollLeft(),i=document.documentElement.clientHeight+$(document).scrollTop();return b.left-=this._get(a,"isRTL")?d-f:0,b.left-=c&&b.left==a.input.offset().left?$(document).scrollLeft():0,b.top-=c&&b.top==a.input.offset().top+g?$(document).scrollTop():0,b.left-=Math.min(b.left,b.left+d>h&&h>d?Math.abs(b.left+d-h):0),b.top-=Math.min(b.top,b.top+e>i&&i>e?Math.abs(e+g):0),b},_findPos:function(a){var b=this._getInst(a),c=this._get(b,"isRTL");while(a&&(a.type=="hidden"||a.nodeType!=1||$.expr.filters.hidden(a)))a=a[c?"previousSibling":"nextSibling"];var d=$(a).offset();return[d.left,d.top]},_hideDatepicker:function(a){var b=this._curInst;if(!b||a&&b!=$.data(a,PROP_NAME))return;if(this._datepickerShowing){var c=this._get(b,"showAnim"),d=this._get(b,"duration"),e=function(){$.datepicker._tidyDialog(b)};$.effects&&$.effects[c]?b.dpDiv.hide(c,$.datepicker._get(b,"showOptions"),d,e):b.dpDiv[c=="slideDown"?"slideUp":c=="fadeIn"?"fadeOut":"hide"](c?d:null,e),c||e(),this._datepickerShowing=!1;var f=this._get(b,"onClose");f&&f.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),$.blockUI&&($.unblockUI(),$("body").append(this.dpDiv))),this._inDialog=!1}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(!$.datepicker._curInst)return;var b=$(a.target),c=$.datepicker._getInst(b[0]);(b[0].id!=$.datepicker._mainDivId&&b.parents("#"+$.datepicker._mainDivId).length==0&&!b.hasClass($.datepicker.markerClassName)&&!b.closest("."+$.datepicker._triggerClass).length&&$.datepicker._datepickerShowing&&(!$.datepicker._inDialog||!$.blockUI)||b.hasClass($.datepicker.markerClassName)&&$.datepicker._curInst!=c)&&$.datepicker._hideDatepicker()},_adjustDate:function(a,b,c){var d=$(a),e=this._getInst(d[0]);if(this._isDisabledDatepicker(d[0]))return;this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c),this._updateDatepicker(e)},_gotoToday:function(a){var b=$(a),c=this._getInst(b[0]);if(this._get(c,"gotoCurrent")&&c.currentDay)c.selectedDay=c.currentDay,c.drawMonth=c.selectedMonth=c.currentMonth,c.drawYear=c.selectedYear=c.currentYear;else{var d=new Date;c.selectedDay=d.getDate(),c.drawMonth=c.selectedMonth=d.getMonth(),c.drawYear=c.selectedYear=d.getFullYear()}this._notifyChange(c),this._adjustDate(b)},_selectMonthYear:function(a,b,c){var d=$(a),e=this._getInst(d[0]);e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10),this._notifyChange(e),this._adjustDate(d)},_selectDay:function(a,b,c,d){var e=$(a);if($(d).hasClass(this._unselectableClass)||this._isDisabledDatepicker(e[0]))return;var f=this._getInst(e[0]);f.selectedDay=f.currentDay=$("a",d).html(),f.selectedMonth=f.currentMonth=b,f.selectedYear=f.currentYear=c,this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))},_clearDate:function(a){var b=$(a),c=this._getInst(b[0]);this._selectDate(b,"")},_selectDate:function(a,b){var c=$(a),d=this._getInst(c[0]);b=b!=null?b:this._formatDate(d),d.input&&d.input.val(b),this._updateAlternate(d);var e=this._get(d,"onSelect");e?e.apply(d.input?d.input[0]:null,[b,d]):d.input&&d.input.trigger("change"),d.inline?this._updateDatepicker(d):(this._hideDatepicker(),this._lastInput=d.input[0],typeof d.input[0]!="object"&&d.input.focus(),this._lastInput=null)},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),d=this._getDate(a),e=this.formatDate(c,d,this._getFormatConfig(a));$(b).each(function(){$(this).val(e)})}},noWeekends:function(a){var b=a.getDay();return[b>0&&b<6,""]},iso8601Week:function(a){var b=new Date(a.getTime());b.setDate(b.getDate()+4-(b.getDay()||7));var c=b.getTime();return b.setMonth(0),b.setDate(1),Math.floor(Math.round((c-b)/864e5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var d=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;d=typeof d!="string"?d:(new Date).getFullYear()%100+parseInt(d,10);var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,g=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,h=(c?c.monthNames:null)||this._defaults.monthNames,i=-1,j=-1,k=-1,l=-1,m=!1,n=function(b){var c=s+1<a.length&&a.charAt(s+1)==b;return c&&s++,c},o=function(a){var c=n(a),d=a=="@"?14:a=="!"?20:a=="y"&&c?4:a=="o"?3:2,e=new RegExp("^\\d{1,"+d+"}"),f=b.substring(r).match(e);if(!f)throw"Missing number at position "+r;return r+=f[0].length,parseInt(f[0],10)},p=function(a,c,d){var e=$.map(n(a)?d:c,function(a,b){return[[b,a]]}).sort(function(a,b){return-(a[1].length-b[1].length)}),f=-1;$.each(e,function(a,c){var d=c[1];if(b.substr(r,d.length).toLowerCase()==d.toLowerCase())return f=c[0],r+=d.length,!1});if(f!=-1)return f+1;throw"Unknown name at position "+r},q=function(){if(b.charAt(r)!=a.charAt(s))throw"Unexpected literal at position "+r;r++},r=0;for(var s=0;s<a.length;s++)if(m)a.charAt(s)=="'"&&!n("'")?m=!1:q();else switch(a.charAt(s)){case"d":k=o("d");break;case"D":p("D",e,f);break;case"o":l=o("o");break;case"m":j=o("m");break;case"M":j=p("M",g,h);break;case"y":i=o("y");break;case"@":var t=new Date(o("@"));i=t.getFullYear(),j=t.getMonth()+1,k=t.getDate();break;case"!":var t=new Date((o("!")-this._ticksTo1970)/1e4);i=t.getFullYear(),j=t.getMonth()+1,k=t.getDate();break;case"'":n("'")?q():m=!0;break;default:q()}if(r<b.length)throw"Extra/unparsed characters found in date: "+b.substring(r);i==-1?i=(new Date).getFullYear():i<100&&(i+=(new Date).getFullYear()-(new Date).getFullYear()%100+(i<=d?0:-100));if(l>-1){j=1,k=l;do{var u=this._getDaysInMonth(i,j-1);if(k<=u)break;j++,k-=u}while(!0)}var t=this._daylightSavingAdjust(new Date(i,j-1,k));if(t.getFullYear()!=i||t.getMonth()+1!=j||t.getDate()!=k)throw"Invalid date";return t},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1e7,formatDate:function(a,b,c){if(!b)return"";var d=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,e=(c?c.dayNames:null)||this._defaults.dayNames,f=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,h=function(b){var c=m+1<a.length&&a.charAt(m+1)==b;return c&&m++,c},i=function(a,b,c){var d=""+b;if(h(a))while(d.length<c)d="0"+d;return d},j=function(a,b,c,d){return h(a)?d[b]:c[b]},k="",l=!1;if(b)for(var m=0;m<a.length;m++)if(l)a.charAt(m)=="'"&&!h("'")?l=!1:k+=a.charAt(m);else switch(a.charAt(m)){case"d":k+=i("d",b.getDate(),2);break;case"D":k+=j("D",b.getDay(),d,e);break;case"o":k+=i("o",Math.round(((new Date(b.getFullYear(),b.getMonth(),b.getDate())).getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864e5),3);break;case"m":k+=i("m",b.getMonth()+1,2);break;case"M":k+=j("M",b.getMonth(),f,g);break;case"y":k+=h("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case"@":k+=b.getTime();break;case"!":k+=b.getTime()*1e4+this._ticksTo1970;break;case"'":h("'")?k+="'":l=!0;break;default:k+=a.charAt(m)}return k},_possibleChars:function(a){var b="",c=!1,d=function(b){var c=e+1<a.length&&a.charAt(e+1)==b;return c&&e++,c};for(var e=0;e<a.length;e++)if(c)a.charAt(e)=="'"&&!d("'")?c=!1:b+=a.charAt(e);else switch(a.charAt(e)){case"d":case"m":case"y":case"@":b+="0123456789";break;case"D":case"M":return null;case"'":d("'")?b+="'":c=!0;break;default:b+=a.charAt(e)}return b},_get:function(a,b){return a.settings[b]!==undefined?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()==a.lastVal)return;var c=this._get(a,"dateFormat"),d=a.lastVal=a.input?a.input.val():null,e,f;e=f=this._getDefaultDate(a);var g=this._getFormatConfig(a);try{e=this.parseDate(c,d,g)||f}catch(h){this.log(h),d=b?"":d}a.selectedDay=e.getDate(),a.drawMonth=a.selectedMonth=e.getMonth(),a.drawYear=a.selectedYear=e.getFullYear(),a.currentDay=d?e.getDate():0,a.currentMonth=d?e.getMonth():0,a.currentYear=d?e.getFullYear():0,this._adjustInstDate(a)},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,c){var d=function(a){var b=new Date;return b.setDate(b.getDate()+a),b},e=function(b){try{return $.datepicker.parseDate($.datepicker._get(a,"dateFormat"),b,$.datepicker._getFormatConfig(a))}catch(c){}var d=(b.toLowerCase().match(/^c/)?$.datepicker._getDate(a):null)||new Date,e=d.getFullYear(),f=d.getMonth(),g=d.getDate(),h=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,i=h.exec(b);while(i){switch(i[2]||"d"){case"d":case"D":g+=parseInt(i[1],10);break;case"w":case"W":g+=parseInt(i[1],10)*7;break;case"m":case"M":f+=parseInt(i[1],10),g=Math.min(g,$.datepicker._getDaysInMonth(e,f));break;case"y":case"Y":e+=parseInt(i[1],10),g=Math.min(g,$.datepicker._getDaysInMonth(e,f))}i=h.exec(b)}return new Date(e,f,g)},f=b==null||b===""?c:typeof b=="string"?e(b):typeof b=="number"?isNaN(b)?c:d(b):new Date(b.getTime());return f=f&&f.toString()=="Invalid Date"?c:f,f&&(f.setHours(0),f.setMinutes(0),f.setSeconds(0),f.setMilliseconds(0)),this._daylightSavingAdjust(f)},_daylightSavingAdjust:function(a){return a?(a.setHours(a.getHours()>12?a.getHours()+2:0),a):null},_setDate:function(a,b,c){var d=!b,e=a.selectedMonth,f=a.selectedYear,g=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=g.getDate(),a.drawMonth=a.selectedMonth=a.currentMonth=g.getMonth(),a.drawYear=a.selectedYear=a.currentYear=g.getFullYear(),(e!=a.selectedMonth||f!=a.selectedYear)&&!c&&this._notifyChange(a),this._adjustInstDate(a),a.input&&a.input.val(d?"":this._formatDate(a))},_getDate:function(a){var b=!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return b},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),d=this._get(a,"showButtonPanel"),e=this._get(a,"hideIfNoPrevNext"),f=this._get(a,"navigationAsDateFormat"),g=this._getNumberOfMonths(a),h=this._get(a,"showCurrentAtPos"),i=this._get(a,"stepMonths"),j=g[0]!=1||g[1]!=1,k=this._daylightSavingAdjust(a.currentDay?new Date(a.currentYear,a.currentMonth,a.currentDay):new Date(9999,9,9)),l=this._getMinMaxDate(a,"min"),m=this._getMinMaxDate(a,"max"),n=a.drawMonth-h,o=a.drawYear;n<0&&(n+=12,o--);if(m){var p=this._daylightSavingAdjust(new Date(m.getFullYear(),m.getMonth()-g[0]*g[1]+1,m.getDate()));p=l&&p<l?l:p;while(this._daylightSavingAdjust(new Date(o,n,1))>p)n--,n<0&&(n=11,o--)}a.drawMonth=n,a.drawYear=o;var q=this._get(a,"prevText");q=f?this.formatDate(q,this._daylightSavingAdjust(new Date(o,n-i,1)),this._getFormatConfig(a)):q;var r=this._canAdjustMonth(a,-1,o,n)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._adjustDate('#"+a.id+"', -"+i+", 'M');\""+' title="'+q+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+q+"</span></a>":e?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+q+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+q+"</span></a>",s=this._get(a,"nextText");s=f?this.formatDate(s,this._daylightSavingAdjust(new Date(o,n+i,1)),this._getFormatConfig(a)):s;var t=this._canAdjustMonth(a,1,o,n)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._adjustDate('#"+a.id+"', +"+i+", 'M');\""+' title="'+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>":e?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>",u=this._get(a,"currentText"),v=this._get(a,"gotoCurrent")&&a.currentDay?k:b;u=f?this.formatDate(u,v,this._getFormatConfig(a)):u;var w=a.inline?"":'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+dpuuid+'.datepicker._hideDatepicker();">'+this._get(a,"closeText")+"</button>",x=d?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?w:"")+(this._isInRange(a,v)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._gotoToday('#"+a.id+"');\""+">"+u+"</button>":"")+(c?"":w)+"</div>":"",y=parseInt(this._get(a,"firstDay"),10);y=isNaN(y)?0:y;var z=this._get(a,"showWeek"),A=this._get(a,"dayNames"),B=this._get(a,"dayNamesShort"),C=this._get(a,"dayNamesMin"),D=this._get(a,"monthNames"),E=this._get(a,"monthNamesShort"),F=this._get(a,"beforeShowDay"),G=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths"),I=this._get(a,"calculateWeek")||this.iso8601Week,J=this._getDefaultDate(a),K="";for(var L=0;L<g[0];L++){var M="";this.maxRows=4;for(var N=0;N<g[1];N++){var O=this._daylightSavingAdjust(new Date(o,n,a.selectedDay)),P=" ui-corner-all",Q="";if(j){Q+='<div class="ui-datepicker-group';if(g[1]>1)switch(N){case 0:Q+=" ui-datepicker-group-first",P=" ui-corner-"+(c?"right":"left");break;case g[1]-1:Q+=" ui-datepicker-group-last",P=" ui-corner-"+(c?"left":"right");break;default:Q+=" ui-datepicker-group-middle",P=""}Q+='">'}Q+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+P+'">'+(/all|left/.test(P)&&L==0?c?t:r:"")+(/all|right/.test(P)&&L==0?c?r:t:"")+this._generateMonthYearHeader(a,n,o,l,m,L>0||N>0,D,E)+'</div><table class="ui-datepicker-calendar"><thead>'+"<tr>";var R=z?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"";for(var S=0;S<7;S++){var T=(S+y)%7;R+="<th"+((S+y+6)%7>=5?' class="ui-datepicker-week-end"':"")+">"+'<span title="'+A[T]+'">'+C[T]+"</span></th>"}Q+=R+"</tr></thead><tbody>";var U=this._getDaysInMonth(o,n);o==a.selectedYear&&n==a.selectedMonth&&(a.selectedDay=Math.min(a.selectedDay,U));var V=(this._getFirstDayOfMonth(o,n)-y+7)%7,W=Math.ceil((V+U)/7),X=j?this.maxRows>W?this.maxRows:W:W;this.maxRows=X;var Y=this._daylightSavingAdjust(new Date(o,n,1-V));for(var Z=0;Z<X;Z++){Q+="<tr>";var _=z?'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(Y)+"</td>":"";for(var S=0;S<7;S++){var ba=F?F.apply(a.input?a.input[0]:null,[Y]):[!0,""],bb=Y.getMonth()!=n,bc=bb&&!H||!ba[0]||l&&Y<l||m&&Y>m;_+='<td class="'+((S+y+6)%7>=5?" ui-datepicker-week-end":"")+(bb?" ui-datepicker-other-month":"")+(Y.getTime()==O.getTime()&&n==a.selectedMonth&&a._keyEvent||J.getTime()==Y.getTime()&&J.getTime()==O.getTime()?" "+this._dayOverClass:"")+(bc?" "+this._unselectableClass+" ui-state-disabled":"")+(bb&&!G?"":" "+ba[1]+(Y.getTime()==k.getTime()?" "+this._currentClass:"")+(Y.getTime()==b.getTime()?" ui-datepicker-today":""))+'"'+((!bb||G)&&ba[2]?' title="'+ba[2]+'"':"")+(bc?"":' onclick="DP_jQuery_'+dpuuid+".datepicker._selectDay('#"+a.id+"',"+Y.getMonth()+","+Y.getFullYear()+', this);return false;"')+">"+(bb&&!G?"&#xa0;":bc?'<span class="ui-state-default">'+Y.getDate()+"</span>":'<a class="ui-state-default'+(Y.getTime()==b.getTime()?" ui-state-highlight":"")+(Y.getTime()==k.getTime()?" ui-state-active":"")+(bb?" ui-priority-secondary":"")+'" href="#">'+Y.getDate()+"</a>")+"</td>",Y.setDate(Y.getDate()+1),Y=this._daylightSavingAdjust(Y)}Q+=_+"</tr>"}n++,n>11&&(n=0,o++),Q+="</tbody></table>"+(j?"</div>"+(g[0]>0&&N==g[1]-1?'<div class="ui-datepicker-row-break"></div>':""):""),M+=Q}K+=M}return K+=x+($.browser.msie&&parseInt($.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':""),a._keyEvent=!1,K},_generateMonthYearHeader:function(a,b,c,d,e,f,g,h){var i=this._get(a,"changeMonth"),j=this._get(a,"changeYear"),k=this._get(a,"showMonthAfterYear"),l='<div class="ui-datepicker-title">',m="";if(f||!i)m+='<span class="ui-datepicker-month">'+g[b]+"</span>";else{var n=d&&d.getFullYear()==c,o=e&&e.getFullYear()==c;m+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+dpuuid+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" "+">";for(var p=0;p<12;p++)(!n||p>=d.getMonth())&&(!o||p<=e.getMonth())&&(m+='<option value="'+p+'"'+(p==b?' selected="selected"':"")+">"+h[p]+"</option>");m+="</select>"}k||(l+=m+(f||!i||!j?"&#xa0;":""));if(!a.yearshtml){a.yearshtml="";if(f||!j)l+='<span class="ui-datepicker-year">'+c+"</span>";else{var q=this._get(a,"yearRange").split(":"),r=(new Date).getFullYear(),s=function(a){var b=a.match(/c[+-].*/)?c+parseInt(a.substring(1),10):a.match(/[+-].*/)?r+parseInt(a,10):parseInt(a,10);return isNaN(b)?r:b},t=s(q[0]),u=Math.max(t,s(q[1]||""));t=d?Math.max(t,d.getFullYear()):t,u=e?Math.min(u,e.getFullYear()):u,a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+dpuuid+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" "+">";for(;t<=u;t++)a.yearshtml+='<option value="'+t+'"'+(t==c?' selected="selected"':"")+">"+t+"</option>";a.yearshtml+="</select>",l+=a.yearshtml,a.yearshtml=null}}return l+=this._get(a,"yearSuffix"),k&&(l+=(f||!i||!j?"&#xa0;":"")+m),l+="</div>",l},_adjustInstDate:function(a,b,c){var d=a.drawYear+(c=="Y"?b:0),e=a.drawMonth+(c=="M"?b:0),f=Math.min(a.selectedDay,this._getDaysInMonth(d,e))+(c=="D"?b:0),g=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(d,e,f)));a.selectedDay=g.getDate(),a.drawMonth=a.selectedMonth=g.getMonth(),a.drawYear=a.selectedYear=g.getFullYear(),(c=="M"||c=="Y")&&this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max"),e=c&&b<c?c:b;return e=d&&e>d?d:e,e},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");b&&b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){var b=this._get(a,"numberOfMonths");return b==null?[1,1]:typeof b=="number"?[1,b]:b},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,d){var e=this._getNumberOfMonths(a),f=this._daylightSavingAdjust(new Date(c,d+(b<0?b:e[0]*e[1]),1));return b<0&&f.setDate(this._getDaysInMonth(f.getFullYear(),f.getMonth())),this._isInRange(a,f)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!d||b.getTime()<=d.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");return b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10),{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,d){b||(a.currentDay=a.selectedDay,a.currentMonth=a.selectedMonth,a.currentYear=a.selectedYear);var e=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(d,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),e,this._getFormatConfig(a))}}),$.fn.datepicker=function(a){if(!this.length)return this;$.datepicker.initialized||($(document).mousedown($.datepicker._checkExternalClick).find("body").append($.datepicker.dpDiv),$.datepicker.initialized=!0);var b=Array.prototype.slice.call(arguments,1);return typeof a!="string"||a!="isDisabled"&&a!="getDate"&&a!="widget"?a=="option"&&arguments.length==2&&typeof arguments[1]=="string"?$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b)):this.each(function(){typeof a=="string"?$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this].concat(b)):$.datepicker._attachDatepicker(this,a)}):$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b))},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="1.8.20",window["DP_jQuery_"+dpuuid]=$})(jQuery);
\ No newline at end of file
index a16bf9eb0c13f3a8b21a4fe8759a9f57a1527529..2d8a7f0d9d28ce42ab1da212c30d80f85d5a5ff7 100644 (file)
@@ -1,40 +1,5 @@
-/*
- * jQuery UI Dialog 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Dialog
- *
- * Depends:
- *     jquery.ui.core.js
- *     jquery.ui.widget.js
- *  jquery.ui.button.js
- *     jquery.ui.draggable.js
- *     jquery.ui.mouse.js
- *     jquery.ui.position.js
- *     jquery.ui.resizable.js
- */
-(function(c,l){var m={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},n={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true},o=c.attrFn||{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true,click:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,
-position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||"&#160;",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("<div></div>")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+
-b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&!i.isDefaultPrevented()&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),
-h=c('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("<span></span>")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("<span></span>").addClass("ui-dialog-title").attr("id",
-e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");
-a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==
-b.uiDialog[0]){e=c(this).css("z-index");isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.scrollTop(),scrollLeft:d.element.scrollLeft()};c.ui.dialog.maxZ+=1;
-d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target===
-f[0]&&e.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("<div></div>").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,
-function(){return!(d=true)});if(d){c.each(a,function(f,h){h=c.isFunction(h)?{click:h,text:f}:h;var i=c('<button type="button"></button>').click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.each(h,function(j,k){if(j!=="click")j in o?i[j](k):i.attr(j,k)});c.fn.button&&i.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",
-handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,
-originalSize:f.originalSize,position:f.position,size:f.size}}a=a===l?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",
-f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):
-[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f);
-if(g in m)e=true;if(g in n)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):
-e.removeClass("ui-dialog-disabled");break;case "draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case "position":d._position(b);break;case "resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||"&#160;"));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a=
-this.options,b,d,e=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height-
-b,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.16",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),
-create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()<c.ui.dialog.overlay.maxZ)return false})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&!d.isDefaultPrevented()&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||
-c("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){var b=c.inArray(a,this.instances);b!=-1&&this.oldInstances.push(this.instances.splice(b,1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var d=0;c.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var a,b;if(c.browser.msie&&
-c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a<b?c(window).height()+"px":a+"px"}else return c(document).height()+"px"},width:function(){var a,b;if(c.browser.msie){a=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);b=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);return a<b?c(window).width()+"px":a+"px"}else return c(document).width()+
-"px"},resize:function(){var a=c([]);c.each(c.ui.dialog.overlay.instances,function(){a=a.add(this)});a.css({width:0,height:0}).css({width:c.ui.dialog.overlay.width(),height:c.ui.dialog.overlay.height()})}});c.extend(c.ui.dialog.overlay.prototype,{destroy:function(){c.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.dialog.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){var c="ui-dialog ui-widget ui-widget-content ui-corner-all ",d={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},e={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},f=a.attrFn||{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0,click:!0};a.widget("ui.dialog",{options:{autoOpen:!0,buttons:{},closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:!1,maxWidth:!1,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",collision:"fit",using:function(b){var c=a(this).css(b).offset().top;c<0&&a(this).css("top",b.top-c)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1e3},_create:function(){this.originalTitle=this.element.attr("title"),typeof this.originalTitle!="string"&&(this.originalTitle=""),this.options.title=this.options.title||this.originalTitle;var b=this,d=b.options,e=d.title||"&#160;",f=a.ui.dialog.getTitleId(b.element),g=(b.uiDialog=a("<div></div>")).appendTo(document.body).hide().addClass(c+d.dialogClass).css({zIndex:d.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(c){d.closeOnEscape&&!c.isDefaultPrevented()&&c.keyCode&&c.keyCode===a.ui.keyCode.ESCAPE&&(b.close(c),c.preventDefault())}).attr({role:"dialog","aria-labelledby":f}).mousedown(function(a){b.moveToTop(!1,a)}),h=b.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g),i=(b.uiDialogTitlebar=a("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),j=a('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){j.addClass("ui-state-hover")},function(){j.removeClass("ui-state-hover")}).focus(function(){j.addClass("ui-state-focus")}).blur(function(){j.removeClass("ui-state-focus")}).click(function(a){return b.close(a),!1}).appendTo(i),k=(b.uiDialogTitlebarCloseText=a("<span></span>")).addClass("ui-icon ui-icon-closethick").text(d.closeText).appendTo(j),l=a("<span></span>").addClass("ui-dialog-title").attr("id",f).html(e).prependTo(i);a.isFunction(d.beforeclose)&&!a.isFunction(d.beforeClose)&&(d.beforeClose=d.beforeclose),i.find("*").add(i).disableSelection(),d.draggable&&a.fn.draggable&&b._makeDraggable(),d.resizable&&a.fn.resizable&&b._makeResizable(),b._createButtons(d.buttons),b._isOpen=!1,a.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;return a.overlay&&a.overlay.destroy(),a.uiDialog.hide(),a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"),a.uiDialog.remove(),a.originalTitle&&a.element.attr("title",a.originalTitle),a},widget:function(){return this.uiDialog},close:function(b){var c=this,d,e;if(!1===c._trigger("beforeClose",b))return;return c.overlay&&c.overlay.destroy(),c.uiDialog.unbind("keypress.ui-dialog"),c._isOpen=!1,c.options.hide?c.uiDialog.hide(c.options.hide,function(){c._trigger("close",b)}):(c.uiDialog.hide(),c._trigger("close",b)),a.ui.dialog.overlay.resize(),c.options.modal&&(d=0,a(".ui-dialog").each(function(){this!==c.uiDialog[0]&&(e=a(this).css("z-index"),isNaN(e)||(d=Math.max(d,e)))}),a.ui.dialog.maxZ=d),c},isOpen:function(){return this._isOpen},moveToTop:function(b,c){var d=this,e=d.options,f;return e.modal&&!b||!e.stack&&!e.modal?d._trigger("focus",c):(e.zIndex>a.ui.dialog.maxZ&&(a.ui.dialog.maxZ=e.zIndex),d.overlay&&(a.ui.dialog.maxZ+=1,d.overlay.$el.css("z-index",a.ui.dialog.overlay.maxZ=a.ui.dialog.maxZ)),f={scrollTop:d.element.scrollTop(),scrollLeft:d.element.scrollLeft()},a.ui.dialog.maxZ+=1,d.uiDialog.css("z-index",a.ui.dialog.maxZ),d.element.attr(f),d._trigger("focus",c),d)},open:function(){if(this._isOpen)return;var b=this,c=b.options,d=b.uiDialog;return b.overlay=c.modal?new a.ui.dialog.overlay(b):null,b._size(),b._position(c.position),d.show(c.show),b.moveToTop(!0),c.modal&&d.bind("keydown.ui-dialog",function(b){if(b.keyCode!==a.ui.keyCode.TAB)return;var c=a(":tabbable",this),d=c.filter(":first"),e=c.filter(":last");if(b.target===e[0]&&!b.shiftKey)return d.focus(1),!1;if(b.target===d[0]&&b.shiftKey)return e.focus(1),!1}),a(b.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus(),b._isOpen=!0,b._trigger("open"),b},_createButtons:function(b){var c=this,d=!1,e=a("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=a("<div></div>").addClass("ui-dialog-buttonset").appendTo(e);c.uiDialog.find(".ui-dialog-buttonpane").remove(),typeof b=="object"&&b!==null&&a.each(b,function(){return!(d=!0)}),d&&(a.each(b,function(b,d){d=a.isFunction(d)?{click:d,text:b}:d;var e=a('<button type="button"></button>').click(function(){d.click.apply(c.element[0],arguments)}).appendTo(g);a.each(d,function(a,b){if(a==="click")return;a in f?e[a](b):e.attr(a,b)}),a.fn.button&&e.button()}),e.appendTo(c.uiDialog))},_makeDraggable:function(){function f(a){return{position:a.position,offset:a.offset}}var b=this,c=b.options,d=a(document),e;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(d,g){e=c.height==="auto"?"auto":a(this).height(),a(this).height(a(this).height()).addClass("ui-dialog-dragging"),b._trigger("dragStart",d,f(g))},drag:function(a,c){b._trigger("drag",a,f(c))},stop:function(g,h){c.position=[h.position.left-d.scrollLeft(),h.position.top-d.scrollTop()],a(this).removeClass("ui-dialog-dragging").height(e),b._trigger("dragStop",g,f(h)),a.ui.dialog.overlay.resize()}})},_makeResizable:function(c){function h(a){return{originalPosition:a.originalPosition,originalSize:a.originalSize,position:a.position,size:a.size}}c=c===b?this.options.resizable:c;var d=this,e=d.options,f=d.uiDialog.css("position"),g=typeof c=="string"?c:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:g,start:function(b,c){a(this).addClass("ui-dialog-resizing"),d._trigger("resizeStart",b,h(c))},resize:function(a,b){d._trigger("resize",a,h(b))},stop:function(b,c){a(this).removeClass("ui-dialog-resizing"),e.height=a(this).height(),e.width=a(this).width(),d._trigger("resizeStop",b,h(c)),a.ui.dialog.overlay.resize()}}).css("position",f).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(b){var c=[],d=[0,0],e;if(b){if(typeof b=="string"||typeof b=="object"&&"0"in b)c=b.split?b.split(" "):[b[0],b[1]],c.length===1&&(c[1]=c[0]),a.each(["left","top"],function(a,b){+c[a]===c[a]&&(d[a]=c[a],c[a]=b)}),b={my:c.join(" "),at:c.join(" "),offset:d.join(" ")};b=a.extend({},a.ui.dialog.prototype.options.position,b)}else b=a.ui.dialog.prototype.options.position;e=this.uiDialog.is(":visible"),e||this.uiDialog.show(),this.uiDialog.css({top:0,left:0}).position(a.extend({of:window},b)),e||this.uiDialog.hide()},_setOptions:function(b){var c=this,f={},g=!1;a.each(b,function(a,b){c._setOption(a,b),a in d&&(g=!0),a in e&&(f[a]=b)}),g&&this._size(),this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",f)},_setOption:function(b,d){var e=this,f=e.uiDialog;switch(b){case"beforeclose":b="beforeClose";break;case"buttons":e._createButtons(d);break;case"closeText":e.uiDialogTitlebarCloseText.text(""+d);break;case"dialogClass":f.removeClass(e.options.dialogClass).addClass(c+d);break;case"disabled":d?f.addClass("ui-dialog-disabled"):f.removeClass("ui-dialog-disabled");break;case"draggable":var g=f.is(":data(draggable)");g&&!d&&f.draggable("destroy"),!g&&d&&e._makeDraggable();break;case"position":e._position(d);break;case"resizable":var h=f.is(":data(resizable)");h&&!d&&f.resizable("destroy"),h&&typeof d=="string"&&f.resizable("option","handles",d),!h&&d!==!1&&e._makeResizable(d);break;case"title":a(".ui-dialog-title",e.uiDialogTitlebar).html(""+(d||"&#160;"))}a.Widget.prototype._setOption.apply(e,arguments)},_size:function(){var b=this.options,c,d,e=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0}),b.minWidth>b.width&&(b.width=b.minWidth),c=this.uiDialog.css({height:"auto",width:b.width}).height(),d=Math.max(0,b.minHeight-c);if(b.height==="auto")if(a.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();var f=this.element.css("height","auto").height();e||this.uiDialog.hide(),this.element.height(Math.max(f,d))}else this.element.height(Math.max(b.height-c,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}}),a.extend(a.ui.dialog,{version:"1.8.20",uuid:0,maxZ:0,getTitleId:function(a){var b=a.attr("id");return b||(this.uuid+=1,b=this.uuid),"ui-dialog-title-"+b},overlay:function(b){this.$el=a.ui.dialog.overlay.create(b)}}),a.extend(a.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:a.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(b){this.instances.length===0&&(setTimeout(function(){a.ui.dialog.overlay.instances.length&&a(document).bind(a.ui.dialog.overlay.events,function(b){if(a(b.target).zIndex()<a.ui.dialog.overlay.maxZ)return!1})},1),a(document).bind("keydown.dialog-overlay",function(c){b.options.closeOnEscape&&!c.isDefaultPrevented()&&c.keyCode&&c.keyCode===a.ui.keyCode.ESCAPE&&(b.close(c),c.preventDefault())}),a(window).bind("resize.dialog-overlay",a.ui.dialog.overlay.resize));var c=(this.oldInstances.pop()||a("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});return a.fn.bgiframe&&c.bgiframe(),this.instances.push(c),c},destroy:function(b){var c=a.inArray(b,this.instances);c!=-1&&this.oldInstances.push(this.instances.splice(c,1)[0]),this.instances.length===0&&a([document,window]).unbind(".dialog-overlay"),b.remove();var d=0;a.each(this.instances,function(){d=Math.max(d,this.css("z-index"))}),this.maxZ=d},height:function(){var b,c;return a.browser.msie&&a.browser.version<7?(b=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),c=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight),b<c?a(window).height()+"px":b+"px"):a(document).height()+"px"},width:function(){var b,c;return a.browser.msie?(b=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth),c=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth),b<c?a(window).width()+"px":b+"px"):a(document).width()+"px"},resize:function(){var b=a([]);a.each(a.ui.dialog.overlay.instances,function(){b=b.add(this)}),b.css({width:0,height:0}).css({width:a.ui.dialog.overlay.width(),height:a.ui.dialog.overlay.height()})}}),a.extend(a.ui.dialog.overlay.prototype,{destroy:function(){a.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);
\ No newline at end of file
index b72fb94eafac2fd24d9bc22e5a5e837d4b6057ee..8a4b4cfc129aac2397fe495b86e3983afe901bdf 100644 (file)
@@ -1,50 +1,5 @@
-/*
- * jQuery UI Draggable 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Draggables
- *
- * Depends:
- *     jquery.ui.core.js
- *     jquery.ui.mouse.js
- *     jquery.ui.widget.js
- */
-(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper==
-"original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b=
-this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;if(b.iframeFix)d(b.iframeFix===true?"iframe":b.iframeFix).each(function(){d('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")});return true},_mouseStart:function(a){var b=this.options;
-this.helper=this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});
-this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions();d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);d.ui.ddmanager&&d.ui.ddmanager.dragStart(this,a);return true},
-_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b=
-false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&&this.options.revert.call(this.element,b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,
-10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},_mouseUp:function(a){this.options.iframeFix===true&&d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});d.ui.ddmanager&&d.ui.ddmanager.dragStop(this,a);return d.ui.mouse.prototype._mouseUp.call(this,a)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle||
-!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone().removeAttr("id"):this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&
-a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=
-this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),
-10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),
-10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[a.containment=="document"?0:d(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,a.containment=="document"?0:d(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,
-(a.containment=="document"?0:d(window).scrollLeft())+d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a.containment=="document"?0:d(window).scrollTop())+(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){a=d(a.containment);var b=a[0];if(b){a.offset();var c=d(b).css("overflow")!=
-"hidden";this.containment=[(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0),(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0),(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),
-10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom];this.relative_container=a}}else if(a.containment.constructor==Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+
-this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&
-!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,h=a.pageY;if(this.originalPosition){var g;if(this.containment){if(this.relative_container){g=this.relative_container.offset();g=[this.containment[0]+g.left,this.containment[1]+g.top,this.containment[2]+g.left,this.containment[3]+g.top]}else g=this.containment;if(a.pageX-this.offset.click.left<g[0])e=g[0]+this.offset.click.left;
-if(a.pageY-this.offset.click.top<g[1])h=g[1]+this.offset.click.top;if(a.pageX-this.offset.click.left>g[2])e=g[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>g[3])h=g[3]+this.offset.click.top}if(b.grid){h=b.grid[1]?this.originalPageY+Math.round((h-this.originalPageY)/b.grid[1])*b.grid[1]:this.originalPageY;h=g?!(h-this.offset.click.top<g[1]||h-this.offset.click.top>g[3])?h:!(h-this.offset.click.top<g[1])?h-b.grid[1]:h+b.grid[1]:h;e=b.grid[0]?this.originalPageX+Math.round((e-this.originalPageX)/
-b.grid[0])*b.grid[0]:this.originalPageX;e=g?!(e-this.offset.click.left<g[0]||e-this.offset.click.left>g[2])?e:!(e-this.offset.click.left<g[0])?e-b.grid[0]:e+b.grid[0]:e}}return{top:h-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop()),left:e-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(d.browser.safari&&d.browser.version<
-526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=false},_trigger:function(a,b,c){c=c||this._uiHash();d.ui.plugin.call(this,a,[b,c]);if(a=="drag")this.positionAbs=this._convertPositionTo("absolute");return d.Widget.prototype._trigger.call(this,a,b,
-c)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});d.extend(d.ui.draggable,{version:"1.8.16"});d.ui.plugin.add("draggable","connectToSortable",{start:function(a,b){var c=d(this).data("draggable"),f=c.options,e=d.extend({},b,{item:c.element});c.sortables=[];d(f.connectToSortable).each(function(){var h=d.data(this,"sortable");if(h&&!h.options.disabled){c.sortables.push({instance:h,shouldRevert:h.options.revert});
-h.refreshPositions();h._trigger("activate",a,e)}})},stop:function(a,b){var c=d(this).data("draggable"),f=d.extend({},b,{item:c.element});d.each(c.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;c.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert)this.instance.options.revert=true;this.instance._mouseStop(a);this.instance.options.helper=this.instance.options._helper;c.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})}else{this.instance.cancelHelperRemoval=
-false;this.instance._trigger("deactivate",a,f)}})},drag:function(a,b){var c=d(this).data("draggable"),f=this;d.each(c.sortables,function(){this.instance.positionAbs=c.positionAbs;this.instance.helperProportions=c.helperProportions;this.instance.offset.click=c.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=d(f).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",true);
-this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return b.helper[0]};a.target=this.instance.currentItem[0];this.instance._mouseCapture(a,true);this.instance._mouseStart(a,true,true);this.instance.offset.click.top=c.offset.click.top;this.instance.offset.click.left=c.offset.click.left;this.instance.offset.parent.left-=c.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=c.offset.parent.top-this.instance.offset.parent.top;
-c._trigger("toSortable",a);c.dropped=this.instance.element;c.currentItem=c.element;this.instance.fromOutside=c}this.instance.currentItem&&this.instance._mouseDrag(a)}else if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",a,this.instance._uiHash(this.instance));this.instance._mouseStop(a,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();this.instance.placeholder&&
-this.instance.placeholder.remove();c._trigger("fromSortable",a);c.dropped=false}})}});d.ui.plugin.add("draggable","cursor",{start:function(){var a=d("body"),b=d(this).data("draggable").options;if(a.css("cursor"))b._cursor=a.css("cursor");a.css("cursor",b.cursor)},stop:function(){var a=d(this).data("draggable").options;a._cursor&&d("body").css("cursor",a._cursor)}});d.ui.plugin.add("draggable","opacity",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("opacity"))b._opacity=
-a.css("opacity");a.css("opacity",b.opacity)},stop:function(a,b){a=d(this).data("draggable").options;a._opacity&&d(b.helper).css("opacity",a._opacity)}});d.ui.plugin.add("draggable","scroll",{start:function(){var a=d(this).data("draggable");if(a.scrollParent[0]!=document&&a.scrollParent[0].tagName!="HTML")a.overflowOffset=a.scrollParent.offset()},drag:function(a){var b=d(this).data("draggable"),c=b.options,f=false;if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){if(!c.axis||c.axis!=
-"x")if(b.overflowOffset.top+b.scrollParent[0].offsetHeight-a.pageY<c.scrollSensitivity)b.scrollParent[0].scrollTop=f=b.scrollParent[0].scrollTop+c.scrollSpeed;else if(a.pageY-b.overflowOffset.top<c.scrollSensitivity)b.scrollParent[0].scrollTop=f=b.scrollParent[0].scrollTop-c.scrollSpeed;if(!c.axis||c.axis!="y")if(b.overflowOffset.left+b.scrollParent[0].offsetWidth-a.pageX<c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft+c.scrollSpeed;else if(a.pageX-b.overflowOffset.left<
-c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft-c.scrollSpeed}else{if(!c.axis||c.axis!="x")if(a.pageY-d(document).scrollTop()<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()-c.scrollSpeed);else if(d(window).height()-(a.pageY-d(document).scrollTop())<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()+c.scrollSpeed);if(!c.axis||c.axis!="y")if(a.pageX-d(document).scrollLeft()<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()-
-c.scrollSpeed);else if(d(window).width()-(a.pageX-d(document).scrollLeft())<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()+c.scrollSpeed)}f!==false&&d.ui.ddmanager&&!c.dropBehaviour&&d.ui.ddmanager.prepareOffsets(b,a)}});d.ui.plugin.add("draggable","snap",{start:function(){var a=d(this).data("draggable"),b=a.options;a.snapElements=[];d(b.snap.constructor!=String?b.snap.items||":data(draggable)":b.snap).each(function(){var c=d(this),f=c.offset();this!=a.element[0]&&a.snapElements.push({item:this,
-width:c.outerWidth(),height:c.outerHeight(),top:f.top,left:f.left})})},drag:function(a,b){for(var c=d(this).data("draggable"),f=c.options,e=f.snapTolerance,h=b.offset.left,g=h+c.helperProportions.width,n=b.offset.top,o=n+c.helperProportions.height,i=c.snapElements.length-1;i>=0;i--){var j=c.snapElements[i].left,l=j+c.snapElements[i].width,k=c.snapElements[i].top,m=k+c.snapElements[i].height;if(j-e<h&&h<l+e&&k-e<n&&n<m+e||j-e<h&&h<l+e&&k-e<o&&o<m+e||j-e<g&&g<l+e&&k-e<n&&n<m+e||j-e<g&&g<l+e&&k-e<o&&
-o<m+e){if(f.snapMode!="inner"){var p=Math.abs(k-o)<=e,q=Math.abs(m-n)<=e,r=Math.abs(j-g)<=e,s=Math.abs(l-h)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:k-c.helperProportions.height,left:0}).top-c.margins.top;if(q)b.position.top=c._convertPositionTo("relative",{top:m,left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:j-c.helperProportions.width}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:l}).left-c.margins.left}var t=
-p||q||r||s;if(f.snapMode!="outer"){p=Math.abs(k-n)<=e;q=Math.abs(m-o)<=e;r=Math.abs(j-h)<=e;s=Math.abs(l-g)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:k,left:0}).top-c.margins.top;if(q)b.position.top=c._convertPositionTo("relative",{top:m-c.helperProportions.height,left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:j}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:l-c.helperProportions.width}).left-c.margins.left}if(!c.snapElements[i].snapping&&
-(p||q||r||s||t))c.options.snap.snap&&c.options.snap.snap.call(c.element,a,d.extend(c._uiHash(),{snapItem:c.snapElements[i].item}));c.snapElements[i].snapping=p||q||r||s||t}else{c.snapElements[i].snapping&&c.options.snap.release&&c.options.snap.release.call(c.element,a,d.extend(c._uiHash(),{snapItem:c.snapElements[i].item}));c.snapElements[i].snapping=false}}}});d.ui.plugin.add("draggable","stack",{start:function(){var a=d(this).data("draggable").options;a=d.makeArray(d(a.stack)).sort(function(c,f){return(parseInt(d(c).css("zIndex"),
-10)||0)-(parseInt(d(f).css("zIndex"),10)||0)});if(a.length){var b=parseInt(a[0].style.zIndex)||0;d(a).each(function(c){this.style.zIndex=b+c});this[0].style.zIndex=b+a.length}}});d.ui.plugin.add("draggable","zIndex",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("zIndex"))b._zIndex=a.css("zIndex");a.css("zIndex",b.zIndex)},stop:function(a,b){a=d(this).data("draggable").options;a._zIndex&&d(b.helper).css("zIndex",a._zIndex)}})})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.draggable.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1},_create:function(){this.options.helper=="original"&&!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},destroy:function(){if(!this.element.data("draggable"))return;return this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy(),this},_mouseCapture:function(b){var c=this.options;return this.helper||c.disabled||a(b.target).is(".ui-resizable-handle")?!1:(this.handle=this._getHandle(b),this.handle?(c.iframeFix&&a(c.iframeFix===!0?"iframe":c.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(a(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(b){var c=this.options;return this.helper=this._createHelper(b),this._cacheHelperProportions(),a.ui.ddmanager&&(a.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt),c.containment&&this._setContainment(),this._trigger("start",b)===!1?(this._clear(),!1):(this._cacheHelperProportions(),a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.helper.addClass("ui-draggable-dragging"),this._mouseDrag(b,!0),a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,b),!0)},_mouseDrag:function(b,c){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute");if(!c){var d=this._uiHash();if(this._trigger("drag",b,d)===!1)return this._mouseUp({}),!1;this.position=d.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";return a.ui.ddmanager&&a.ui.ddmanager.drag(this,b),!1},_mouseStop:function(b){var c=!1;a.ui.ddmanager&&!this.options.dropBehaviour&&(c=a.ui.ddmanager.drop(this,b)),this.dropped&&(c=this.dropped,this.dropped=!1);var d=this.element[0],e=!1;while(d&&(d=d.parentNode))d==document&&(e=!0);if(!e&&this.options.helper==="original")return!1;if(this.options.revert=="invalid"&&!c||this.options.revert=="valid"&&c||this.options.revert===!0||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var f=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){f._trigger("stop",b)!==!1&&f._clear()})}else this._trigger("stop",b)!==!1&&this._clear();return!1},_mouseUp:function(b){return this.options.iframeFix===!0&&a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,b),a.ui.mouse.prototype._mouseUp.call(this,b)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?!0:!1;return a(this.options.handle,this.element).find("*").andSelf().each(function(){this==b.target&&(c=!0)}),c},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b])):c.helper=="clone"?this.element.clone().removeAttr("id"):this.element;return d.parents("body").length||d.appendTo(c.appendTo=="parent"?this.element[0].parentNode:c.appendTo),d[0]!=this.element[0]&&!/(fixed|absolute)/.test(d.css("position"))&&d.css("position","absolute"),d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[b.containment=="document"?0:a(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,b.containment=="document"?0:a(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(b.containment=="document"?0:a(window).scrollLeft())+a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(b.containment=="document"?0:a(window).scrollTop())+(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)&&b.containment.constructor!=Array){var c=a(b.containment),d=c[0];if(!d)return;var e=c.offset(),f=a(d).css("overflow")!="hidden";this.containment=[(parseInt(a(d).css("borderLeftWidth"),10)||0)+(parseInt(a(d).css("paddingLeft"),10)||0),(parseInt(a(d).css("borderTopWidth"),10)||0)+(parseInt(a(d).css("paddingTop"),10)||0),(f?Math.max(d.scrollWidth,d.offsetWidth):d.offsetWidth)-(parseInt(a(d).css("borderLeftWidth"),10)||0)-(parseInt(a(d).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(f?Math.max(d.scrollHeight,d.offsetHeight):d.offsetHeight)-(parseInt(a(d).css("borderTopWidth"),10)||0)-(parseInt(a(d).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=c}else b.containment.constructor==Array&&(this.containment=b.containment)},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(d[0].tagName),f=b.pageX,g=b.pageY;if(this.originalPosition){var h;if(this.containment){if(this.relative_container){var i=this.relative_container.offset();h=[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]}else h=this.containment;b.pageX-this.offset.click.left<h[0]&&(f=h[0]+this.offset.click.left),b.pageY-this.offset.click.top<h[1]&&(g=h[1]+this.offset.click.top),b.pageX-this.offset.click.left>h[2]&&(f=h[2]+this.offset.click.left),b.pageY-this.offset.click.top>h[3]&&(g=h[3]+this.offset.click.top)}if(c.grid){var j=c.grid[1]?this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY;g=h?j-this.offset.click.top<h[1]||j-this.offset.click.top>h[3]?j-this.offset.click.top<h[1]?j+c.grid[1]:j-c.grid[1]:j:j;var k=c.grid[0]?this.originalPageX+Math.round((f-this.originalPageX)/c.grid[0])*c.grid[0]:this.originalPageX;f=h?k-this.offset.click.left<h[0]||k-this.offset.click.left>h[2]?k-this.offset.click.left<h[0]?k+c.grid[0]:k-c.grid[0]:k:k}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:d.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:d.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(b,c,d){return d=d||this._uiHash(),a.ui.plugin.call(this,b,[c,d]),b=="drag"&&(this.positionAbs=this._convertPositionTo("absolute")),a.Widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(a){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),a.extend(a.ui.draggable,{version:"1.8.20"}),a.ui.plugin.add("draggable","connectToSortable",{start:function(b,c){var d=a(this).data("draggable"),e=d.options,f=a.extend({},c,{item:d.element});d.sortables=[],a(e.connectToSortable).each(function(){var c=a.data(this,"sortable");c&&!c.options.disabled&&(d.sortables.push({instance:c,shouldRevert:c.options.revert}),c.refreshPositions(),c._trigger("activate",b,f))})},stop:function(b,c){var d=a(this).data("draggable"),e=a.extend({},c,{item:d.element});a.each(d.sortables,function(){this.instance.isOver?(this.instance.isOver=0,d.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(b),this.instance.options.helper=this.instance.options._helper,d.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",b,e))})},drag:function(b,c){var d=a(this).data("draggable"),e=this,f=function(b){var c=this.offset.click.top,d=this.offset.click.left,e=this.positionAbs.top,f=this.positionAbs.left,g=b.height,h=b.width,i=b.top,j=b.left;return a.ui.isOver(e+c,f+d,i,j,g,h)};a.each(d.sortables,function(f){this.instance.positionAbs=d.positionAbs,this.instance.helperProportions=d.helperProportions,this.instance.offset.click=d.offset.click,this.instance._intersectsWith(this.instance.containerCache)?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=a(e).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return c.helper[0]},b.target=this.instance.currentItem[0],this.instance._mouseCapture(b,!0),this.instance._mouseStart(b,!0,!0),this.instance.offset.click.top=d.offset.click.top,this.instance.offset.click.left=d.offset.click.left,this.instance.offset.parent.left-=d.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=d.offset.parent.top-this.instance.offset.parent.top,d._trigger("toSortable",b),d.dropped=this.instance.element,d.currentItem=d.element,this.instance.fromOutside=d),this.instance.currentItem&&this.instance._mouseDrag(b)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",b,this.instance._uiHash(this.instance)),this.instance._mouseStop(b,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),d._trigger("fromSortable",b),d.dropped=!1)})}}),a.ui.plugin.add("draggable","cursor",{start:function(b,c){var d=a("body"),e=a(this).data("draggable").options;d.css("cursor")&&(e._cursor=d.css("cursor")),d.css("cursor",e.cursor)},stop:function(b,c){var d=a(this).data("draggable").options;d._cursor&&a("body").css("cursor",d._cursor)}}),a.ui.plugin.add("draggable","opacity",{start:function(b,c){var d=a(c.helper),e=a(this).data("draggable").options;d.css("opacity")&&(e._opacity=d.css("opacity")),d.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;d._opacity&&a(c.helper).css("opacity",d._opacity)}}),a.ui.plugin.add("draggable","scroll",{start:function(b,c){var d=a(this).data("draggable");d.scrollParent[0]!=document&&d.scrollParent[0].tagName!="HTML"&&(d.overflowOffset=d.scrollParent.offset())},drag:function(b,c){var d=a(this).data("draggable"),e=d.options,f=!1;if(d.scrollParent[0]!=document&&d.scrollParent[0].tagName!="HTML"){if(!e.axis||e.axis!="x")d.overflowOffset.top+d.scrollParent[0].offsetHeight-b.pageY<e.scrollSensitivity?d.scrollParent[0].scrollTop=f=d.scrollParent[0].scrollTop+e.scrollSpeed:b.pageY-d.overflowOffset.top<e.scrollSensitivity&&(d.scrollParent[0].scrollTop=f=d.scrollParent[0].scrollTop-e.scrollSpeed);if(!e.axis||e.axis!="y")d.overflowOffset.left+d.scrollParent[0].offsetWidth-b.pageX<e.scrollSensitivity?d.scrollParent[0].scrollLeft=f=d.scrollParent[0].scrollLeft+e.scrollSpeed:b.pageX-d.overflowOffset.left<e.scrollSensitivity&&(d.scrollParent[0].scrollLeft=f=d.scrollParent[0].scrollLeft-e.scrollSpeed)}else{if(!e.axis||e.axis!="x")b.pageY-a(document).scrollTop()<e.scrollSensitivity?f=a(document).scrollTop(a(document).scrollTop()-e.scrollSpeed):a(window).height()-(b.pageY-a(document).scrollTop())<e.scrollSensitivity&&(f=a(document).scrollTop(a(document).scrollTop()+e.scrollSpeed));if(!e.axis||e.axis!="y")b.pageX-a(document).scrollLeft()<e.scrollSensitivity?f=a(document).scrollLeft(a(document).scrollLeft()-e.scrollSpeed):a(window).width()-(b.pageX-a(document).scrollLeft())<e.scrollSensitivity&&(f=a(document).scrollLeft(a(document).scrollLeft()+e.scrollSpeed))}f!==!1&&a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(d,b)}}),a.ui.plugin.add("draggable","snap",{start:function(b,c){var d=a(this).data("draggable"),e=d.options;d.snapElements=[],a(e.snap.constructor!=String?e.snap.items||":data(draggable)":e.snap).each(function(){var b=a(this),c=b.offset();this!=d.element[0]&&d.snapElements.push({item:this,width:b.outerWidth(),height:b.outerHeight(),top:c.top,left:c.left})})},drag:function(b,c){var d=a(this).data("draggable"),e=d.options,f=e.snapTolerance,g=c.offset.left,h=g+d.helperProportions.width,i=c.offset.top,j=i+d.helperProportions.height;for(var k=d.snapElements.length-1;k>=0;k--){var l=d.snapElements[k].left,m=l+d.snapElements[k].width,n=d.snapElements[k].top,o=n+d.snapElements[k].height;if(!(l-f<g&&g<m+f&&n-f<i&&i<o+f||l-f<g&&g<m+f&&n-f<j&&j<o+f||l-f<h&&h<m+f&&n-f<i&&i<o+f||l-f<h&&h<m+f&&n-f<j&&j<o+f)){d.snapElements[k].snapping&&d.options.snap.release&&d.options.snap.release.call(d.element,b,a.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=!1;continue}if(e.snapMode!="inner"){var p=Math.abs(n-j)<=f,q=Math.abs(o-i)<=f,r=Math.abs(l-h)<=f,s=Math.abs(m-g)<=f;p&&(c.position.top=d._convertPositionTo("relative",{top:n-d.helperProportions.height,left:0}).top-d.margins.top),q&&(c.position.top=d._convertPositionTo("relative",{top:o,left:0}).top-d.margins.top),r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l-d.helperProportions.width}).left-d.margins.left),s&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m}).left-d.margins.left)}var t=p||q||r||s;if(e.snapMode!="outer"){var p=Math.abs(n-i)<=f,q=Math.abs(o-j)<=f,r=Math.abs(l-g)<=f,s=Math.abs(m-h)<=f;p&&(c.position.top=d._convertPositionTo("relative",{top:n,left:0}).top-d.margins.top),q&&(c.position.top=d._convertPositionTo("relative",{top:o-d.helperProportions.height,left:0}).top-d.margins.top),r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l}).left-d.margins.left),s&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m-d.helperProportions.width}).left-d.margins.left)}!d.snapElements[k].snapping&&(p||q||r||s||t)&&d.options.snap.snap&&d.options.snap.snap.call(d.element,b,a.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=p||q||r||s||t}}}),a.ui.plugin.add("draggable","stack",{start:function(b,c){var d=a(this).data("draggable").options,e=a.makeArray(a(d.stack)).sort(function(b,c){return(parseInt(a(b).css("zIndex"),10)||0)-(parseInt(a(c).css("zIndex"),10)||0)});if(!e.length)return;var f=parseInt(e[0].style.zIndex)||0;a(e).each(function(a){this.style.zIndex=f+a}),this[0].style.zIndex=f+e.length}}),a.ui.plugin.add("draggable","zIndex",{start:function(b,c){var d=a(c.helper),e=a(this).data("draggable").options;d.css("zIndex")&&(e._zIndex=d.css("zIndex")),d.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("draggable").options;d._zIndex&&a(c.helper).css("zIndex",d._zIndex)}})})(jQuery);
\ No newline at end of file
index dc7904243b3079769a54479a604a741b31c1bb9c..5d51ce3468153133e908e91f05e04998af9cab56 100644 (file)
@@ -1,27 +1,5 @@
-/*
- * jQuery UI Droppable 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Droppables
- *
- * Depends:
- *     jquery.ui.core.js
- *     jquery.ui.widget.js
- *     jquery.ui.mouse.js
- *     jquery.ui.draggable.js
- */
-(function(d){d.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:false,addClasses:true,greedy:false,hoverClass:false,scope:"default",tolerance:"intersect"},_create:function(){var a=this.options,b=a.accept;this.isover=0;this.isout=1;this.accept=d.isFunction(b)?b:function(c){return c.is(b)};this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};d.ui.ddmanager.droppables[a.scope]=d.ui.ddmanager.droppables[a.scope]||[];d.ui.ddmanager.droppables[a.scope].push(this);
-a.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){for(var a=d.ui.ddmanager.droppables[this.options.scope],b=0;b<a.length;b++)a[b]==this&&a.splice(b,1);this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(a,b){if(a=="accept")this.accept=d.isFunction(b)?b:function(c){return c.is(b)};d.Widget.prototype._setOption.apply(this,arguments)},_activate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&&
-this.element.addClass(this.options.activeClass);b&&this._trigger("activate",a,this.ui(b))},_deactivate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass);b&&this._trigger("deactivate",a,this.ui(b))},_over:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.addClass(this.options.hoverClass);
-this._trigger("over",a,this.ui(b))}},_out:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("out",a,this.ui(b))}},_drop:function(a,b){var c=b||d.ui.ddmanager.current;if(!c||(c.currentItem||c.element)[0]==this.element[0])return false;var e=false;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var g=
-d.data(this,"droppable");if(g.options.greedy&&!g.options.disabled&&g.options.scope==c.options.scope&&g.accept.call(g.element[0],c.currentItem||c.element)&&d.ui.intersect(c,d.extend(g,{offset:g.element.offset()}),g.options.tolerance)){e=true;return false}});if(e)return false;if(this.accept.call(this.element[0],c.currentItem||c.element)){this.options.activeClass&&this.element.removeClass(this.options.activeClass);this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("drop",
-a,this.ui(c));return this.element}return false},ui:function(a){return{draggable:a.currentItem||a.element,helper:a.helper,position:a.position,offset:a.positionAbs}}});d.extend(d.ui.droppable,{version:"1.8.16"});d.ui.intersect=function(a,b,c){if(!b.offset)return false;var e=(a.positionAbs||a.position.absolute).left,g=e+a.helperProportions.width,f=(a.positionAbs||a.position.absolute).top,h=f+a.helperProportions.height,i=b.offset.left,k=i+b.proportions.width,j=b.offset.top,l=j+b.proportions.height;
-switch(c){case "fit":return i<=e&&g<=k&&j<=f&&h<=l;case "intersect":return i<e+a.helperProportions.width/2&&g-a.helperProportions.width/2<k&&j<f+a.helperProportions.height/2&&h-a.helperProportions.height/2<l;case "pointer":return d.ui.isOver((a.positionAbs||a.position.absolute).top+(a.clickOffset||a.offset.click).top,(a.positionAbs||a.position.absolute).left+(a.clickOffset||a.offset.click).left,j,i,b.proportions.height,b.proportions.width);case "touch":return(f>=j&&f<=l||h>=j&&h<=l||f<j&&h>l)&&(e>=
-i&&e<=k||g>=i&&g<=k||e<i&&g>k);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f<c.length;f++)if(!(c[f].options.disabled||a&&!c[f].accept.call(c[f].element[0],a.currentItem||a.element))){for(var h=0;h<g.length;h++)if(g[h]==c[f].element[0]){c[f].proportions.height=0;continue a}c[f].visible=c[f].element.css("display")!=
-"none";if(c[f].visible){e=="mousedown"&&c[f]._activate.call(c[f],b);c[f].offset=c[f].element.offset();c[f].proportions={width:c[f].element[0].offsetWidth,height:c[f].element[0].offsetHeight}}}},drop:function(a,b){var c=false;d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(this.options){if(!this.options.disabled&&this.visible&&d.ui.intersect(a,this,this.options.tolerance))c=c||this._drop.call(this,b);if(!this.options.disabled&&this.visible&&this.accept.call(this.element[0],a.currentItem||
-a.element)){this.isout=1;this.isover=0;this._deactivate.call(this,b)}}});return c},dragStart:function(a,b){a.element.parents(":not(body,html)").bind("scroll.droppable",function(){a.options.refreshPositions||d.ui.ddmanager.prepareOffsets(a,b)})},drag:function(a,b){a.options.refreshPositions&&d.ui.ddmanager.prepareOffsets(a,b);d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(!(this.options.disabled||this.greedyChild||!this.visible)){var c=d.ui.intersect(a,this,this.options.tolerance);
-if(c=!c&&this.isover==1?"isout":c&&this.isover==0?"isover":null){var e;if(this.options.greedy){var g=this.element.parents(":data(droppable):eq(0)");if(g.length){e=d.data(g[0],"droppable");e.greedyChild=c=="isover"?1:0}}if(e&&c=="isover"){e.isover=0;e.isout=1;e._out.call(e,b)}this[c]=1;this[c=="isout"?"isover":"isout"]=0;this[c=="isover"?"_over":"_out"].call(this,b);if(e&&c=="isout"){e.isout=0;e.isover=1;e._over.call(e,b)}}}})},dragStop:function(a,b){a.element.parents(":not(body,html)").unbind("scroll.droppable");
-a.options.refreshPositions||d.ui.ddmanager.prepareOffsets(a,b)}}})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.droppable.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect"},_create:function(){var b=this.options,c=b.accept;this.isover=0,this.isout=1,this.accept=a.isFunction(c)?c:function(a){return a.is(c)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},a.ui.ddmanager.droppables[b.scope]=a.ui.ddmanager.droppables[b.scope]||[],a.ui.ddmanager.droppables[b.scope].push(this),b.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){var b=a.ui.ddmanager.droppables[this.options.scope];for(var c=0;c<b.length;c++)b[c]==this&&b.splice(c,1);return this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable"),this},_setOption:function(b,c){b=="accept"&&(this.accept=a.isFunction(c)?c:function(a){return a.is(c)}),a.Widget.prototype._setOption.apply(this,arguments)},_activate:function(b){var c=a.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),c&&this._trigger("activate",b,this.ui(c))},_deactivate:function(b){var c=a.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),c&&this._trigger("deactivate",b,this.ui(c))},_over:function(b){var c=a.ui.ddmanager.current;if(!c||(c.currentItem||c.element)[0]==this.element[0])return;this.accept.call(this.element[0],c.currentItem||c.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",b,this.ui(c)))},_out:function(b){var c=a.ui.ddmanager.current;if(!c||(c.currentItem||c.element)[0]==this.element[0])return;this.accept.call(this.element[0],c.currentItem||c.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",b,this.ui(c)))},_drop:function(b,c){var d=c||a.ui.ddmanager.current;if(!d||(d.currentItem||d.element)[0]==this.element[0])return!1;var e=!1;return this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var b=a.data(this,"droppable");if(b.options.greedy&&!b.options.disabled&&b.options.scope==d.options.scope&&b.accept.call(b.element[0],d.currentItem||d.element)&&a.ui.intersect(d,a.extend(b,{offset:b.element.offset()}),b.options.tolerance))return e=!0,!1}),e?!1:this.accept.call(this.element[0],d.currentItem||d.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",b,this.ui(d)),this.element):!1},ui:function(a){return{draggable:a.currentItem||a.element,helper:a.helper,position:a.position,offset:a.positionAbs}}}),a.extend(a.ui.droppable,{version:"1.8.20"}),a.ui.intersect=function(b,c,d){if(!c.offset)return!1;var e=(b.positionAbs||b.position.absolute).left,f=e+b.helperProportions.width,g=(b.positionAbs||b.position.absolute).top,h=g+b.helperProportions.height,i=c.offset.left,j=i+c.proportions.width,k=c.offset.top,l=k+c.proportions.height;switch(d){case"fit":return i<=e&&f<=j&&k<=g&&h<=l;case"intersect":return i<e+b.helperProportions.width/2&&f-b.helperProportions.width/2<j&&k<g+b.helperProportions.height/2&&h-b.helperProportions.height/2<l;case"pointer":var m=(b.positionAbs||b.position.absolute).left+(b.clickOffset||b.offset.click).left,n=(b.positionAbs||b.position.absolute).top+(b.clickOffset||b.offset.click).top,o=a.ui.isOver(n,m,k,i,c.proportions.height,c.proportions.width);return o;case"touch":return(g>=k&&g<=l||h>=k&&h<=l||g<k&&h>l)&&(e>=i&&e<=j||f>=i&&f<=j||e<i&&f>j);default:return!1}},a.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(b,c){var d=a.ui.ddmanager.droppables[b.options.scope]||[],e=c?c.type:null,f=(b.currentItem||b.element).find(":data(droppable)").andSelf();g:for(var h=0;h<d.length;h++){if(d[h].options.disabled||b&&!d[h].accept.call(d[h].element[0],b.currentItem||b.element))continue;for(var i=0;i<f.length;i++)if(f[i]==d[h].element[0]){d[h].proportions.height=0;continue g}d[h].visible=d[h].element.css("display")!="none";if(!d[h].visible)continue;e=="mousedown"&&d[h]._activate.call(d[h],c),d[h].offset=d[h].element.offset(),d[h].proportions={width:d[h].element[0].offsetWidth,height:d[h].element[0].offsetHeight}}},drop:function(b,c){var d=!1;return a.each(a.ui.ddmanager.droppables[b.options.scope]||[],function(){if(!this.options)return;!this.options.disabled&&this.visible&&a.ui.intersect(b,this,this.options.tolerance)&&(d=this._drop.call(this,c)||d),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],b.currentItem||b.element)&&(this.isout=1,this.isover=0,this._deactivate.call(this,c))}),d},dragStart:function(b,c){b.element.parents(":not(body,html)").bind("scroll.droppable",function(){b.options.refreshPositions||a.ui.ddmanager.prepareOffsets(b,c)})},drag:function(b,c){b.options.refreshPositions&&a.ui.ddmanager.prepareOffsets(b,c),a.each(a.ui.ddmanager.droppables[b.options.scope]||[],function(){if(this.options.disabled||this.greedyChild||!this.visible)return;var d=a.ui.intersect(b,this,this.options.tolerance),e=!d&&this.isover==1?"isout":d&&this.isover==0?"isover":null;if(!e)return;var f;if(this.options.greedy){var g=this.element.parents(":data(droppable):eq(0)");g.length&&(f=a.data(g[0],"droppable"),f.greedyChild=e=="isover"?1:0)}f&&e=="isover"&&(f.isover=0,f.isout=1,f._out.call(f,c)),this[e]=1,this[e=="isout"?"isover":"isout"]=0,this[e=="isover"?"_over":"_out"].call(this,c),f&&e=="isout"&&(f.isout=0,f.isover=1,f._over.call(f,c))})},dragStop:function(b,c){b.element.parents(":not(body,html)").unbind("scroll.droppable"),b.options.refreshPositions||a.ui.ddmanager.prepareOffsets(b,c)}}})(jQuery);
\ No newline at end of file
index 9c51579ba58173ac7c234fccc795fb842adeb87d..84a616db10cd72a2abb1ef8533b839885994b56c 100644 (file)
@@ -1,17 +1,5 @@
-/*!
- * jQuery UI Mouse 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Mouse
- *
- * Depends:
- *     jquery.ui.widget.js
- */
-(function(b){var d=false;b(document).mouseup(function(){d=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(c){return a._mouseDown(c)}).bind("click."+this.widgetName,function(c){if(true===b.data(c.target,a.widgetName+".preventClickEvent")){b.removeData(c.target,a.widgetName+".preventClickEvent");c.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+
-this.widgetName)},_mouseDown:function(a){if(!d){this._mouseStarted&&this._mouseUp(a);this._mouseDownEvent=a;var c=this,f=a.which==1,g=typeof this.options.cancel=="string"&&a.target.nodeName?b(a.target).closest(this.options.cancel).length:false;if(!f||g||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){c.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=
-this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault();return true}}true===b.data(a.target,this.widgetName+".preventClickEvent")&&b.removeData(a.target,this.widgetName+".preventClickEvent");this._mouseMoveDelegate=function(e){return c._mouseMove(e)};this._mouseUpDelegate=function(e){return c._mouseUp(e)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);a.preventDefault();return d=true}},_mouseMove:function(a){if(b.browser.msie&&
-!(document.documentMode>=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=
-false;a.target==this._mouseDownEvent.target&&b.data(a.target,this.widgetName+".preventClickEvent",true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.mouse.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){var c=!1;a(document).mouseup(function(a){c=!1}),a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(a){return b._mouseDown(a)}).bind("click."+this.widgetName,function(c){if(!0===a.data(c.target,b.widgetName+".preventClickEvent"))return a.removeData(c.target,b.widgetName+".preventClickEvent"),c.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(b){if(c)return;this._mouseStarted&&this._mouseUp(b),this._mouseDownEvent=b;var d=this,e=b.which==1,f=typeof this.options.cancel=="string"&&b.target.nodeName?a(b.target).closest(this.options.cancel).length:!1;if(!e||f||!this._mouseCapture(b))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){d.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=this._mouseStart(b)!==!1;if(!this._mouseStarted)return b.preventDefault(),!0}return!0===a.data(b.target,this.widgetName+".preventClickEvent")&&a.removeData(b.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(a){return d._mouseMove(a)},this._mouseUpDelegate=function(a){return d._mouseUp(a)},a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),b.preventDefault(),c=!0,!0},_mouseMove:function(b){return!a.browser.msie||document.documentMode>=9||!!b.button?this._mouseStarted?(this._mouseDrag(b),b.preventDefault()):(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b)),!this._mouseStarted):this._mouseUp(b)},_mouseUp:function(b){return a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b)),!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery);
\ No newline at end of file
index 42d93654dea863e02945b30ffec62131de99a4a3..4f40f96a61c2892ab173eca57cb3ab602be169aa 100644 (file)
@@ -1,16 +1,5 @@
-/*
- * jQuery UI Position 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Position
- */
-(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY,
-left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+=
-k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+(parseInt(c.curCSS(this,"marginRight",true))||0),w=m+q+(parseInt(c.curCSS(this,"marginBottom",true))||0),i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-=
-m/2;i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left=
-d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+=
-a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b),
-g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.position.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.ui=a.ui||{};var c=/left|center|right/,d=/top|center|bottom/,e="center",f={},g=a.fn.position,h=a.fn.offset;a.fn.position=function(b){if(!b||!b.of)return g.apply(this,arguments);b=a.extend({},b);var h=a(b.of),i=h[0],j=(b.collision||"flip").split(" "),k=b.offset?b.offset.split(" "):[0,0],l,m,n;return i.nodeType===9?(l=h.width(),m=h.height(),n={top:0,left:0}):i.setTimeout?(l=h.width(),m=h.height(),n={top:h.scrollTop(),left:h.scrollLeft()}):i.preventDefault?(b.at="left top",l=m=0,n={top:b.of.pageY,left:b.of.pageX}):(l=h.outerWidth(),m=h.outerHeight(),n=h.offset()),a.each(["my","at"],function(){var a=(b[this]||"").split(" ");a.length===1&&(a=c.test(a[0])?a.concat([e]):d.test(a[0])?[e].concat(a):[e,e]),a[0]=c.test(a[0])?a[0]:e,a[1]=d.test(a[1])?a[1]:e,b[this]=a}),j.length===1&&(j[1]=j[0]),k[0]=parseInt(k[0],10)||0,k.length===1&&(k[1]=k[0]),k[1]=parseInt(k[1],10)||0,b.at[0]==="right"?n.left+=l:b.at[0]===e&&(n.left+=l/2),b.at[1]==="bottom"?n.top+=m:b.at[1]===e&&(n.top+=m/2),n.left+=k[0],n.top+=k[1],this.each(function(){var c=a(this),d=c.outerWidth(),g=c.outerHeight(),h=parseInt(a.curCSS(this,"marginLeft",!0))||0,i=parseInt(a.curCSS(this,"marginTop",!0))||0,o=d+h+(parseInt(a.curCSS(this,"marginRight",!0))||0),p=g+i+(parseInt(a.curCSS(this,"marginBottom",!0))||0),q=a.extend({},n),r;b.my[0]==="right"?q.left-=d:b.my[0]===e&&(q.left-=d/2),b.my[1]==="bottom"?q.top-=g:b.my[1]===e&&(q.top-=g/2),f.fractions||(q.left=Math.round(q.left),q.top=Math.round(q.top)),r={left:q.left-h,top:q.top-i},a.each(["left","top"],function(c,e){a.ui.position[j[c]]&&a.ui.position[j[c]][e](q,{targetWidth:l,targetHeight:m,elemWidth:d,elemHeight:g,collisionPosition:r,collisionWidth:o,collisionHeight:p,offset:k,my:b.my,at:b.at})}),a.fn.bgiframe&&c.bgiframe(),c.offset(a.extend(q,{using:b.using}))})},a.ui.position={fit:{left:function(b,c){var d=a(window),e=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft();b.left=e>0?b.left-e:Math.max(b.left-c.collisionPosition.left,b.left)},top:function(b,c){var d=a(window),e=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop();b.top=e>0?b.top-e:Math.max(b.top-c.collisionPosition.top,b.top)}},flip:{left:function(b,c){if(c.at[0]===e)return;var d=a(window),f=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft(),g=c.my[0]==="left"?-c.elemWidth:c.my[0]==="right"?c.elemWidth:0,h=c.at[0]==="left"?c.targetWidth:-c.targetWidth,i=-2*c.offset[0];b.left+=c.collisionPosition.left<0?g+h+i:f>0?g+h+i:0},top:function(b,c){if(c.at[1]===e)return;var d=a(window),f=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop(),g=c.my[1]==="top"?-c.elemHeight:c.my[1]==="bottom"?c.elemHeight:0,h=c.at[1]==="top"?c.targetHeight:-c.targetHeight,i=-2*c.offset[1];b.top+=c.collisionPosition.top<0?g+h+i:f>0?g+h+i:0}}},a.offset.setOffset||(a.offset.setOffset=function(b,c){/static/.test(a.curCSS(b,"position"))&&(b.style.position="relative");var d=a(b),e=d.offset(),f=parseInt(a.curCSS(b,"top",!0),10)||0,g=parseInt(a.curCSS(b,"left",!0),10)||0,h={top:c.top-e.top+f,left:c.left-e.left+g};"using"in c?c.using.call(b,h):d.css(h)},a.fn.offset=function(b){var c=this[0];return!c||!c.ownerDocument?null:b?this.each(function(){a.offset.setOffset(this,b)}):h.call(this)}),function(){var b=document.getElementsByTagName("body")[0],c=document.createElement("div"),d,e,g,h,i;d=document.createElement(b?"div":"body"),g={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},b&&a.extend(g,{position:"absolute",left:"-1000px",top:"-1000px"});for(var j in g)d.style[j]=g[j];d.appendChild(c),e=b||document.documentElement,e.insertBefore(d,e.firstChild),c.style.cssText="position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;",h=a(c).offset(function(a,b){return b}).offset(),d.innerHTML="",e.removeChild(d),i=h.top+h.left+(b?2e3:0),f.fractions=i>21&&i<22}()})(jQuery);
\ No newline at end of file
index b758ebaeeb2be70e29ca87515710fe96fede20f5..9b5c68c5a15d1007a1dd48cd0f261da079769e4f 100644 (file)
@@ -1,16 +1,5 @@
-/*
- * jQuery UI Progressbar 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Progressbar
- *
- * Depends:
- *   jquery.ui.core.js
- *   jquery.ui.widget.js
- */
-(function(b,d){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow");
-this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===d)return this._value();this._setOption("value",a);return this},_setOption:function(a,c){if(a==="value"){this.options.value=c;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100*
-this._value()/this.options.max},_refreshValue:function(){var a=this.value(),c=this._percentage();if(this.oldValue!==a){this.oldValue=a;this._trigger("change")}this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(c.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.16"})})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.progressbar.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()}),this.valueDiv=a("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this.oldValue=this._value(),this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove(),a.Widget.prototype.destroy.apply(this,arguments)},value:function(a){return a===b?this._value():(this._setOption("value",a),this)},_setOption:function(b,c){b==="value"&&(this.options.value=c,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete")),a.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;return typeof a!="number"&&(a=0),Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100*this._value()/this.options.max},_refreshValue:function(){var a=this.value(),b=this._percentage();this.oldValue!==a&&(this.oldValue=a,this._trigger("change")),this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(b.toFixed(0)+"%"),this.element.attr("aria-valuenow",a)}}),a.extend(a.ui.progressbar,{version:"1.8.20"})})(jQuery);
\ No newline at end of file
index d6b71b39f697ff4be876d87302a79fb4d05336ca..62f7bce6b3e4eb90bd232435409545ae6ce5936a 100644 (file)
@@ -1,49 +1,5 @@
-/*
- * jQuery UI Resizable 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Resizables
- *
- * Depends:
- *     jquery.ui.core.js
- *     jquery.ui.mouse.js
- *     jquery.ui.widget.js
- */
-(function(e){e.widget("ui.resizable",e.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var b=this,a=this.options;this.element.addClass("ui-resizable");e.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element,
-_proportionallyResizeElements:[],_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&e.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(e('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),
-top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=
-this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",
-nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d<c.length;d++){var f=e.trim(c[d]),g=e('<div class="ui-resizable-handle '+("ui-resizable-"+f)+'"></div>');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor==
-String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),l=0;l=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,l);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection();
-this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){if(!a.disabled){e(this).removeClass("ui-resizable-autohide");b._handles.show()}},function(){if(!a.disabled)if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();
-var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=
-false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"});
-this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff=
-{width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio:this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis];
-if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize",b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},
-_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height;f=f?0:c.sizeDiff.width;f={width:c.helper.width()-f,height:c.helper.height()-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f,
-{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",b);this._helper&&this.helper.remove();return false},_updateVirtualBoundaries:function(b){var a=this.options,c,d,f;a={minWidth:k(a.minWidth)?a.minWidth:0,maxWidth:k(a.maxWidth)?a.maxWidth:Infinity,minHeight:k(a.minHeight)?a.minHeight:0,maxHeight:k(a.maxHeight)?a.maxHeight:
-Infinity};if(this._aspectRatio||b){b=a.minHeight*this.aspectRatio;d=a.minWidth/this.aspectRatio;c=a.maxHeight*this.aspectRatio;f=a.maxWidth/this.aspectRatio;if(b>a.minWidth)a.minWidth=b;if(d>a.minHeight)a.minHeight=d;if(c<a.maxWidth)a.maxWidth=c;if(f<a.maxHeight)a.maxHeight=f}this._vBoundaries=a},_updateCache:function(b){this.offset=this.helper.offset();if(k(b.left))this.position.left=b.left;if(k(b.top))this.position.top=b.top;if(k(b.height))this.size.height=b.height;if(k(b.width))this.size.width=
-b.width},_updateRatio:function(b){var a=this.position,c=this.size,d=this.axis;if(k(b.height))b.width=b.height*this.aspectRatio;else if(k(b.width))b.height=b.width/this.aspectRatio;if(d=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(d=="nw"){b.top=a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this._vBoundaries,c=this.axis,d=k(b.width)&&a.maxWidth&&a.maxWidth<b.width,f=k(b.height)&&a.maxHeight&&a.maxHeight<b.height,g=k(b.width)&&a.minWidth&&
-a.minWidth>b.width,h=k(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height,l=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&l)b.left=i-a.minWidth;if(d&&l)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=
-null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a<this._proportionallyResizeElements.length;a++){var c=this._proportionallyResizeElements[a];if(!this.borderDif){var d=[c.css("borderTopWidth"),c.css("borderRightWidth"),c.css("borderBottomWidth"),c.css("borderLeftWidth")],f=[c.css("paddingTop"),c.css("paddingRight"),c.css("paddingBottom"),c.css("paddingLeft")];this.borderDif=e.map(d,function(g,h){g=parseInt(g,10)||
-0;h=parseInt(f[h],10)||0;return g+h})}e.browser.msie&&(e(b).is(":hidden")||e(b).parents(":hidden").length)||c.css({height:b.height()-this.borderDif[0]-this.borderDif[2]||0,width:b.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var b=this.options;this.elementOffset=this.element.offset();if(this._helper){this.helper=this.helper||e('<div style="overflow:hidden;"></div>');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+
-a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+
-c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]);
-b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});e.extend(e.ui.resizable,{version:"1.8.16"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(),
-10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize,function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top-
-f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var l=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:l.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(n,o){if((n=(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(l.css("position"))){c._revertToRelativePosition=true;l.css({position:"absolute",top:"auto",left:"auto"})}l.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType?
-e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})};if(b._revertToRelativePosition){b._revertToRelativePosition=false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a=
-e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-g};g=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing,
-step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement=
-e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d=e(a),f=[];e(["Top","Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset;
-var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options,d=a.containerOffset,f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left:
-a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?d.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top-
-d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(d+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition,
-f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&&/static/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25,
-display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b=
-e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height=
-d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},k=function(b){return!isNaN(parseInt(b,10))}})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.resizable.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.widget("ui.resizable",a.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1e3},_create:function(){var b=this,c=this.options;this.element.addClass("ui-resizable"),a.extend(this,{_aspectRatio:!!c.aspectRatio,aspectRatio:c.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:c.helper||c.ghost||c.animate?c.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(a('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=c.handles||(a(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var d=this.handles.split(",");this.handles={};for(var e=0;e<d.length;e++){var f=a.trim(d[e]),g="ui-resizable-"+f,h=a('<div class="ui-resizable-handle '+g+'"></div>');h.css({zIndex:c.zIndex}),"se"==f&&h.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[f]=".ui-resizable-"+f,this.element.append(h)}}this._renderAxis=function(b){b=b||this.element;for(var c in this.handles){this.handles[c].constructor==String&&(this.handles[c]=a(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var d=a(this.handles[c],this.element),e=0;e=/sw|ne|nw|se|n|s/.test(c)?d.outerHeight():d.outerWidth();var f=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");b.css(f,e),this._proportionallyResize()}if(!a(this.handles[c]).length)continue}},this._renderAxis(this.element),this._handles=a(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!b.resizing){if(this.className)var a=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=a&&a[1]?a[1]:"se"}}),c.autoHide&&(this._handles.hide(),a(this.element).addClass("ui-resizable-autohide").hover(function(){if(c.disabled)return;a(this).removeClass("ui-resizable-autohide"),b._handles.show()},function(){if(c.disabled)return;b.resizing||(a(this).addClass("ui-resizable-autohide"),b._handles.hide())})),this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(b){a(b).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var c=this.element;c.after(this.originalElement.css({position:c.css("position"),width:c.outerWidth(),height:c.outerHeight(),top:c.css("top"),left:c.css("left")})).remove()}return this.originalElement.css("resize",this.originalResizeStyle),b(this.originalElement),this},_mouseCapture:function(b){var c=!1;for(var d in this.handles)a(this.handles[d])[0]==b.target&&(c=!0);return!this.options.disabled&&c},_mouseStart:function(b){var d=this.options,e=this.element.position(),f=this.element;this.resizing=!0,this.documentScroll={top:a(document).scrollTop(),left:a(document).scrollLeft()},(f.is(".ui-draggable")||/absolute/.test(f.css("position")))&&f.css({position:"absolute",top:e.top,left:e.left}),this._renderProxy();var g=c(this.helper.css("left")),h=c(this.helper.css("top"));d.containment&&(g+=a(d.containment).scrollLeft()||0,h+=a(d.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:g,top:h},this.size=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalSize=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalPosition={left:g,top:h},this.sizeDiff={width:f.outerWidth()-f.width(),height:f.outerHeight()-f.height()},this.originalMousePosition={left:b.pageX,top:b.pageY},this.aspectRatio=typeof d.aspectRatio=="number"?d.aspectRatio:this.originalSize.width/this.originalSize.height||1;var i=a(".ui-resizable-"+this.axis).css("cursor");return a("body").css("cursor",i=="auto"?this.axis+"-resize":i),f.addClass("ui-resizable-resizing"),this._propagate("start",b),!0},_mouseDrag:function(b){var c=this.helper,d=this.options,e={},f=this,g=this.originalMousePosition,h=this.axis,i=b.pageX-g.left||0,j=b.pageY-g.top||0,k=this._change[h];if(!k)return!1;var l=k.apply(this,[b,i,j]),m=a.browser.msie&&a.browser.version<7,n=this.sizeDiff;this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)l=this._updateRatio(l,b);return l=this._respectSize(l,b),this._propagate("resize",b),c.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(l),this._trigger("resize",b,this.ui()),!1},_mouseStop:function(b){this.resizing=!1;var c=this.options,d=this;if(this._helper){var e=this._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName),g=f&&a.ui.hasScroll(e[0],"left")?0:d.sizeDiff.height,h=f?0:d.sizeDiff.width,i={width:d.helper.width()-h,height:d.helper.height()-g},j=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,k=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;c.animate||this.element.css(a.extend(i,{top:k,left:j})),d.helper.height(d.size.height),d.helper.width(d.size.width),this._helper&&!c.animate&&this._proportionallyResize()}return a("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",b),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(a){var b=this.options,c,e,f,g,h;h={minWidth:d(b.minWidth)?b.minWidth:0,maxWidth:d(b.maxWidth)?b.maxWidth:Infinity,minHeight:d(b.minHeight)?b.minHeight:0,maxHeight:d(b.maxHeight)?b.maxHeight:Infinity};if(this._aspectRatio||a)c=h.minHeight*this.aspectRatio,f=h.minWidth/this.aspectRatio,e=h.maxHeight*this.aspectRatio,g=h.maxWidth/this.aspectRatio,c>h.minWidth&&(h.minWidth=c),f>h.minHeight&&(h.minHeight=f),e<h.maxWidth&&(h.maxWidth=e),g<h.maxHeight&&(h.maxHeight=g);this._vBoundaries=h},_updateCache:function(a){var b=this.options;this.offset=this.helper.offset(),d(a.left)&&(this.position.left=a.left),d(a.top)&&(this.position.top=a.top),d(a.height)&&(this.size.height=a.height),d(a.width)&&(this.size.width=a.width)},_updateRatio:function(a,b){var c=this.options,e=this.position,f=this.size,g=this.axis;return d(a.height)?a.width=a.height*this.aspectRatio:d(a.width)&&(a.height=a.width/this.aspectRatio),g=="sw"&&(a.left=e.left+(f.width-a.width),a.top=null),g=="nw"&&(a.top=e.top+(f.height-a.height),a.left=e.left+(f.width-a.width)),a},_respectSize:function(a,b){var c=this.helper,e=this._vBoundaries,f=this._aspectRatio||b.shiftKey,g=this.axis,h=d(a.width)&&e.maxWidth&&e.maxWidth<a.width,i=d(a.height)&&e.maxHeight&&e.maxHeight<a.height,j=d(a.width)&&e.minWidth&&e.minWidth>a.width,k=d(a.height)&&e.minHeight&&e.minHeight>a.height;j&&(a.width=e.minWidth),k&&(a.height=e.minHeight),h&&(a.width=e.maxWidth),i&&(a.height=e.maxHeight);var l=this.originalPosition.left+this.originalSize.width,m=this.position.top+this.size.height,n=/sw|nw|w/.test(g),o=/nw|ne|n/.test(g);j&&n&&(a.left=l-e.minWidth),h&&n&&(a.left=l-e.maxWidth),k&&o&&(a.top=m-e.minHeight),i&&o&&(a.top=m-e.maxHeight);var p=!a.width&&!a.height;return p&&!a.left&&a.top?a.top=null:p&&!a.top&&a.left&&(a.left=null),a},_proportionallyResize:function(){var b=this.options;if(!this._proportionallyResizeElements.length)return;var c=this.helper||this.element;for(var d=0;d<this._proportionallyResizeElements.length;d++){var e=this._proportionallyResizeElements[d];if(!this.borderDif){var f=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],g=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];this.borderDif=a.map(f,function(a,b){var c=parseInt(a,10)||0,d=parseInt(g[b],10)||0;return c+d})}if(!a.browser.msie||!a(c).is(":hidden")&&!a(c).parents(":hidden").length)e.css({height:c.height()-this.borderDif[0]-this.borderDif[2]||0,width:c.width()-this.borderDif[1]-this.borderDif[3]||0});else continue}},_renderProxy:function(){var b=this.element,c=this.options;this.elementOffset=b.offset();if(this._helper){this.helper=this.helper||a('<div style="overflow:hidden;"></div>');var d=a.browser.msie&&a.browser.version<7,e=d?1:0,f=d?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+f,height:this.element.outerHeight()+f,position:"absolute",left:this.elementOffset.left-e+"px",top:this.elementOffset.top-e+"px",zIndex:++c.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(a,b,c){return{width:this.originalSize.width+b}},w:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{left:f.left+b,width:e.width-b}},n:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{top:f.top+c,height:e.height-c}},s:function(a,b,c){return{height:this.originalSize.height+c}},se:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},sw:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,c,d]))},ne:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},nw:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,c,d]))}},_propagate:function(b,c){a.ui.plugin.call(this,b,[c,this.ui()]),b!="resize"&&this._trigger(b,c,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),a.extend(a.ui.resizable,{version:"1.8.20"}),a.ui.plugin.add("resizable","alsoResize",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=function(b){a(b).each(function(){var b=a(this);b.data("resizable-alsoresize",{width:parseInt(b.width(),10),height:parseInt(b.height(),10),left:parseInt(b.css("left"),10),top:parseInt(b.css("top"),10)})})};typeof e.alsoResize=="object"&&!e.alsoResize.parentNode?e.alsoResize.length?(e.alsoResize=e.alsoResize[0],f(e.alsoResize)):a.each(e.alsoResize,function(a){f(a)}):f(e.alsoResize)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.originalSize,g=d.originalPosition,h={height:d.size.height-f.height||0,width:d.size.width-f.width||0,top:d.position.top-g.top||0,left:d.position.left-g.left||0},i=function(b,d){a(b).each(function(){var b=a(this),e=a(this).data("resizable-alsoresize"),f={},g=d&&d.length?d:b.parents(c.originalElement[0]).length?["width","height"]:["width","height","top","left"];a.each(g,function(a,b){var c=(e[b]||0)+(h[b]||0);c&&c>=0&&(f[b]=c||null)}),b.css(f)})};typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?a.each(e.alsoResize,function(a,b){i(a,b)}):i(e.alsoResize)},stop:function(b,c){a(this).removeData("resizable-alsoresize")}}),a.ui.plugin.add("resizable","animate",{stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d._proportionallyResizeElements,g=f.length&&/textarea/i.test(f[0].nodeName),h=g&&a.ui.hasScroll(f[0],"left")?0:d.sizeDiff.height,i=g?0:d.sizeDiff.width,j={width:d.size.width-i,height:d.size.height-h},k=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,l=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;d.element.animate(a.extend(j,l&&k?{top:l,left:k}:{}),{duration:e.animateDuration,easing:e.animateEasing,step:function(){var c={width:parseInt(d.element.css("width"),10),height:parseInt(d.element.css("height"),10),top:parseInt(d.element.css("top"),10),left:parseInt(d.element.css("left"),10)};f&&f.length&&a(f[0]).css({width:c.width,height:c.height}),d._updateCache(c),d._propagate("resize",b)}})}}),a.ui.plugin.add("resizable","containment",{start:function(b,d){var e=a(this).data("resizable"),f=e.options,g=e.element,h=f.containment,i=h instanceof a?h.get(0):/parent/.test(h)?g.parent().get(0):h;if(!i)return;e.containerElement=a(i);if(/document/.test(h)||h==document)e.containerOffset={left:0,top:0},e.containerPosition={left:0,top:0},e.parentData={element:a(document),left:0,top:0,width:a(document).width(),height:a(document).height()||document.body.parentNode.scrollHeight};else{var j=a(i),k=[];a(["Top","Right","Left","Bottom"]).each(function(a,b){k[a]=c(j.css("padding"+b))}),e.containerOffset=j.offset(),e.containerPosition=j.position(),e.containerSize={height:j.innerHeight()-k[3],width:j.innerWidth()-k[1]};var l=e.containerOffset,m=e.containerSize.height,n=e.containerSize.width,o=a.ui.hasScroll(i,"left")?i.scrollWidth:n,p=a.ui.hasScroll(i)?i.scrollHeight:m;e.parentData={element:i,left:l.left,top:l.top,width:o,height:p}}},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.containerSize,g=d.containerOffset,h=d.size,i=d.position,j=d._aspectRatio||b.shiftKey,k={top:0,left:0},l=d.containerElement;l[0]!=document&&/static/.test(l.css("position"))&&(k=g),i.left<(d._helper?g.left:0)&&(d.size.width=d.size.width+(d._helper?d.position.left-g.left:d.position.left-k.left),j&&(d.size.height=d.size.width/d.aspectRatio),d.position.left=e.helper?g.left:0),i.top<(d._helper?g.top:0)&&(d.size.height=d.size.height+(d._helper?d.position.top-g.top:d.position.top),j&&(d.size.width=d.size.height*d.aspectRatio),d.position.top=d._helper?g.top:0),d.offset.left=d.parentData.left+d.position.left,d.offset.top=d.parentData.top+d.position.top;var m=Math.abs((d._helper?d.offset.left-k.left:d.offset.left-k.left)+d.sizeDiff.width),n=Math.abs((d._helper?d.offset.top-k.top:d.offset.top-g.top)+d.sizeDiff.height),o=d.containerElement.get(0)==d.element.parent().get(0),p=/relative|absolute/.test(d.containerElement.css("position"));o&&p&&(m-=d.parentData.left),m+d.size.width>=d.parentData.width&&(d.size.width=d.parentData.width-m,j&&(d.size.height=d.size.width/d.aspectRatio)),n+d.size.height>=d.parentData.height&&(d.size.height=d.parentData.height-n,j&&(d.size.width=d.size.height*d.aspectRatio))},stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.position,g=d.containerOffset,h=d.containerPosition,i=d.containerElement,j=a(d.helper),k=j.offset(),l=j.outerWidth()-d.sizeDiff.width,m=j.outerHeight()-d.sizeDiff.height;d._helper&&!e.animate&&/relative/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m}),d._helper&&!e.animate&&/static/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m})}}),a.ui.plugin.add("resizable","ghost",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size;d.ghost=d.originalElement.clone(),d.ghost.css({opacity:.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof e.ghost=="string"?e.ghost:""),d.ghost.appendTo(d.helper)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})},stop:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.helper&&d.helper.get(0).removeChild(d.ghost.get(0))}}),a.ui.plugin.add("resizable","grid",{resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size,g=d.originalSize,h=d.originalPosition,i=d.axis,j=e._aspectRatio||b.shiftKey;e.grid=typeof e.grid=="number"?[e.grid,e.grid]:e.grid;var k=Math.round((f.width-g.width)/(e.grid[0]||1))*(e.grid[0]||1),l=Math.round((f.height-g.height)/(e.grid[1]||1))*(e.grid[1]||1);/^(se|s|e)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l):/^(ne)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l):/^(sw)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.left=h.left-k):(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l,d.position.left=h.left-k)}});var c=function(a){return parseInt(a,10)||0},d=function(a){return!isNaN(parseInt(a,10))}})(jQuery);
\ No newline at end of file
index 3c600af0a5eee41f95da26addae5ca5708760dd1..500c8a89a05f87aef5ca5d63713e2aad5f9d0290 100644 (file)
@@ -1,22 +1,5 @@
-/*
- * jQuery UI Selectable 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Selectables
- *
- * Depends:
- *     jquery.ui.core.js
- *     jquery.ui.mouse.js
- *     jquery.ui.widget.js
- */
-(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"),
-selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX,
-c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting",
-c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d=
-this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.right<b||a.top>i||a.bottom<g);else if(d.tolerance=="fit")k=a.left>b&&a.right<h&&a.top>g&&a.bottom<i;if(k){if(a.selected){a.$element.removeClass("ui-selected");a.selected=false}if(a.unselecting){a.$element.removeClass("ui-unselecting");
-a.unselecting=false}if(!a.selecting){a.$element.addClass("ui-selecting");a.selecting=true;f._trigger("selecting",c,{selecting:a.element})}}else{if(a.selecting)if(c.metaKey&&a.startselected){a.$element.removeClass("ui-selecting");a.selecting=false;a.$element.addClass("ui-selected");a.selected=true}else{a.$element.removeClass("ui-selecting");a.selecting=false;if(a.startselected){a.$element.addClass("ui-unselecting");a.unselecting=true}f._trigger("unselecting",c,{unselecting:a.element})}if(a.selected)if(!c.metaKey&&
-!a.startselected){a.$element.removeClass("ui-selected");a.selected=false;a.$element.addClass("ui-unselecting");a.unselecting=true;f._trigger("unselecting",c,{unselecting:a.element})}}}});return false}},_mouseStop:function(c){var f=this;this.dragged=false;e(".ui-unselecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-unselecting");d.unselecting=false;d.startselected=false;f._trigger("unselected",c,{unselected:d.element})});e(".ui-selecting",this.element[0]).each(function(){var d=
-e.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected");d.selecting=false;d.selected=true;d.startselected=true;f._trigger("selected",c,{selected:d.element})});this._trigger("stop",c);this.helper.remove();return false}});e.extend(e.ui.selectable,{version:"1.8.16"})})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.selectable.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.widget("ui.selectable",a.ui.mouse,{options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var b=this;this.element.addClass("ui-selectable"),this.dragged=!1;var c;this.refresh=function(){c=a(b.options.filter,b.element[0]),c.addClass("ui-selectee"),c.each(function(){var b=a(this),c=b.offset();a.data(this,"selectable-item",{element:this,$element:b,left:c.left,top:c.top,right:c.left+b.outerWidth(),bottom:c.top+b.outerHeight(),startselected:!1,selected:b.hasClass("ui-selected"),selecting:b.hasClass("ui-selecting"),unselecting:b.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=c.addClass("ui-selectee"),this._mouseInit(),this.helper=a("<div class='ui-selectable-helper'></div>")},destroy:function(){return this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable"),this._mouseDestroy(),this},_mouseStart:function(b){var c=this;this.opos=[b.pageX,b.pageY];if(this.options.disabled)return;var d=this.options;this.selectees=a(d.filter,this.element[0]),this._trigger("start",b),a(d.appendTo).append(this.helper),this.helper.css({left:b.clientX,top:b.clientY,width:0,height:0}),d.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var d=a.data(this,"selectable-item");d.startselected=!0,!b.metaKey&&!b.ctrlKey&&(d.$element.removeClass("ui-selected"),d.selected=!1,d.$element.addClass("ui-unselecting"),d.unselecting=!0,c._trigger("unselecting",b,{unselecting:d.element}))}),a(b.target).parents().andSelf().each(function(){var d=a.data(this,"selectable-item");if(d){var e=!b.metaKey&&!b.ctrlKey||!d.$element.hasClass("ui-selected");return d.$element.removeClass(e?"ui-unselecting":"ui-selected").addClass(e?"ui-selecting":"ui-unselecting"),d.unselecting=!e,d.selecting=e,d.selected=e,e?c._trigger("selecting",b,{selecting:d.element}):c._trigger("unselecting",b,{unselecting:d.element}),!1}})},_mouseDrag:function(b){var c=this;this.dragged=!0;if(this.options.disabled)return;var d=this.options,e=this.opos[0],f=this.opos[1],g=b.pageX,h=b.pageY;if(e>g){var i=g;g=e,e=i}if(f>h){var i=h;h=f,f=i}return this.helper.css({left:e,top:f,width:g-e,height:h-f}),this.selectees.each(function(){var i=a.data(this,"selectable-item");if(!i||i.element==c.element[0])return;var j=!1;d.tolerance=="touch"?j=!(i.left>g||i.right<e||i.top>h||i.bottom<f):d.tolerance=="fit"&&(j=i.left>e&&i.right<g&&i.top>f&&i.bottom<h),j?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,c._trigger("selecting",b,{selecting:i.element}))):(i.selecting&&((b.metaKey||b.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),c._trigger("unselecting",b,{unselecting:i.element}))),i.selected&&!b.metaKey&&!b.ctrlKey&&!i.startselected&&(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,c._trigger("unselecting",b,{unselecting:i.element})))}),!1},_mouseStop:function(b){var c=this;this.dragged=!1;var d=this.options;return a(".ui-unselecting",this.element[0]).each(function(){var d=a.data(this,"selectable-item");d.$element.removeClass("ui-unselecting"),d.unselecting=!1,d.startselected=!1,c._trigger("unselected",b,{unselected:d.element})}),a(".ui-selecting",this.element[0]).each(function(){var d=a.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected"),d.selecting=!1,d.selected=!0,d.startselected=!0,c._trigger("selected",b,{selected:d.element})}),this._trigger("stop",b),this.helper.remove(),!1}}),a.extend(a.ui.selectable,{version:"1.8.20"})})(jQuery);
\ No newline at end of file
index cc8dee1fe5ff93ff5052671a867f1ff7c4bfe0e8..ec8700a02f5869eae950d81f90ab2a335f07343f 100644 (file)
@@ -1,33 +1,5 @@
-/*
- * jQuery UI Slider 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Slider
- *
- * Depends:
- *     jquery.ui.core.js
- *     jquery.ui.mouse.js
- *     jquery.ui.widget.js
- */
-(function(d){d.widget("ui.slider",d.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var a=this,b=this.options,c=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f=b.values&&b.values.length||1,e=[];this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+
-this.orientation+" ui-widget ui-widget-content ui-corner-all"+(b.disabled?" ui-slider-disabled ui-disabled":""));this.range=d([]);if(b.range){if(b.range===true){if(!b.values)b.values=[this._valueMin(),this._valueMin()];if(b.values.length&&b.values.length!==2)b.values=[b.values[0],b.values[0]]}this.range=d("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(b.range==="min"||b.range==="max"?" ui-slider-range-"+b.range:""))}for(var j=c.length;j<f;j+=1)e.push("<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>");
-this.handles=c.add(d(e.join("")).appendTo(a.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(g){g.preventDefault()}).hover(function(){b.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(b.disabled)d(this).blur();else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(g){d(this).data("index.ui-slider-handle",
-g)});this.handles.keydown(function(g){var k=true,l=d(this).data("index.ui-slider-handle"),i,h,m;if(!a.options.disabled){switch(g.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:k=false;if(!a._keySliding){a._keySliding=true;d(this).addClass("ui-state-active");i=a._start(g,l);if(i===false)return}break}m=a.options.step;i=a.options.values&&a.options.values.length?
-(h=a.values(l)):(h=a.value());switch(g.keyCode){case d.ui.keyCode.HOME:h=a._valueMin();break;case d.ui.keyCode.END:h=a._valueMax();break;case d.ui.keyCode.PAGE_UP:h=a._trimAlignValue(i+(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:h=a._trimAlignValue(i-(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(i===a._valueMax())return;h=a._trimAlignValue(i+m);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(i===a._valueMin())return;h=a._trimAlignValue(i-
-m);break}a._slide(g,l,h);return k}}).keyup(function(g){var k=d(this).data("index.ui-slider-handle");if(a._keySliding){a._keySliding=false;a._stop(g,k);a._change(g,k);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();
-return this},_mouseCapture:function(a){var b=this.options,c,f,e,j,g;if(b.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:a.pageX,y:a.pageY});f=this._valueMax()-this._valueMin()+1;j=this;this.handles.each(function(k){var l=Math.abs(c-j.values(k));if(f>l){f=l;e=d(this);g=k}});if(b.range===true&&this.values(1)===b.min){g+=1;e=d(this.handles[g])}if(this._start(a,g)===false)return false;
-this._mouseSliding=true;j._handleIndex=g;e.addClass("ui-state-active").focus();b=e.offset();this._clickOffset=!d(a.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:a.pageX-b.left-e.width()/2,top:a.pageY-b.top-e.height()/2-(parseInt(e.css("borderTopWidth"),10)||0)-(parseInt(e.css("borderBottomWidth"),10)||0)+(parseInt(e.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(a,g,c);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(a){var b=
-this._normValueFromMouse({x:a.pageX,y:a.pageY});this._slide(a,this._handleIndex,b);return false},_mouseStop:function(a){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(a,this._handleIndex);this._change(a,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b;if(this.orientation==="horizontal"){b=
-this.elementSize.width;a=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{b=this.elementSize.height;a=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}b=a/b;if(b>1)b=1;if(b<0)b=0;if(this.orientation==="vertical")b=1-b;a=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+b*a)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);
-c.values=this.values()}return this._trigger("start",a,c)},_slide:function(a,b,c){var f;if(this.options.values&&this.options.values.length){f=this.values(b?0:1);if(this.options.values.length===2&&this.options.range===true&&(b===0&&c>f||b===1&&c<f))c=f;if(c!==this.values(b)){f=this.values();f[b]=c;a=this._trigger("slide",a,{handle:this.handles[b],value:c,values:f});this.values(b?0:1);a!==false&&this.values(b,c,true)}}else if(c!==this.value()){a=this._trigger("slide",a,{handle:this.handles[b],value:c});
-a!==false&&this.value(c)}},_stop:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);c.values=this.values()}this._trigger("stop",a,c)},_change:function(a,b){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);c.values=this.values()}this._trigger("change",a,c)}},value:function(a){if(arguments.length){this.options.value=
-this._trimAlignValue(a);this._refreshValue();this._change(null,0)}else return this._value()},values:function(a,b){var c,f,e;if(arguments.length>1){this.options.values[a]=this._trimAlignValue(b);this._refreshValue();this._change(null,a)}else if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;f=arguments[0];for(e=0;e<c.length;e+=1){c[e]=this._trimAlignValue(f[e]);this._change(null,e)}this._refreshValue()}else return this.options.values&&this.options.values.length?this._values(a):
-this.value();else return this._values()},_setOption:function(a,b){var c,f=0;if(d.isArray(this.options.values))f=this.options.values.length;d.Widget.prototype._setOption.apply(this,arguments);switch(a){case "disabled":if(b){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.propAttr("disabled",true);this.element.addClass("ui-disabled")}else{this.handles.propAttr("disabled",false);this.element.removeClass("ui-disabled")}break;case "orientation":this._detectOrientation();
-this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case "value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case "values":this._animateOff=true;this._refreshValue();for(c=0;c<f;c+=1)this._change(null,c);this._animateOff=false;break}},_value:function(){var a=this.options.value;return a=this._trimAlignValue(a)},_values:function(a){var b,c;if(arguments.length){b=this.options.values[a];
-return b=this._trimAlignValue(b)}else{b=this.options.values.slice();for(c=0;c<b.length;c+=1)b[c]=this._trimAlignValue(b[c]);return b}},_trimAlignValue:function(a){if(a<=this._valueMin())return this._valueMin();if(a>=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b;a=a-c;if(Math.abs(c)*2>=b)a+=c>0?b:-b;return parseFloat(a.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var a=
-this.options.range,b=this.options,c=this,f=!this._animateOff?b.animate:false,e,j={},g,k,l,i;if(this.options.values&&this.options.values.length)this.handles.each(function(h){e=(c.values(h)-c._valueMin())/(c._valueMax()-c._valueMin())*100;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";d(this).stop(1,1)[f?"animate":"css"](j,b.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(h===0)c.range.stop(1,1)[f?"animate":"css"]({left:e+"%"},b.animate);if(h===1)c.range[f?"animate":"css"]({width:e-
-g+"%"},{queue:false,duration:b.animate})}else{if(h===0)c.range.stop(1,1)[f?"animate":"css"]({bottom:e+"%"},b.animate);if(h===1)c.range[f?"animate":"css"]({height:e-g+"%"},{queue:false,duration:b.animate})}g=e});else{k=this.value();l=this._valueMin();i=this._valueMax();e=i!==l?(k-l)/(i-l)*100:0;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";this.handle.stop(1,1)[f?"animate":"css"](j,b.animate);if(a==="min"&&this.orientation==="horizontal")this.range.stop(1,1)[f?"animate":"css"]({width:e+"%"},
-b.animate);if(a==="max"&&this.orientation==="horizontal")this.range[f?"animate":"css"]({width:100-e+"%"},{queue:false,duration:b.animate});if(a==="min"&&this.orientation==="vertical")this.range.stop(1,1)[f?"animate":"css"]({height:e+"%"},b.animate);if(a==="max"&&this.orientation==="vertical")this.range[f?"animate":"css"]({height:100-e+"%"},{queue:false,duration:b.animate})}}});d.extend(d.ui.slider,{version:"1.8.16"})})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.slider.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){var c=5;a.widget("ui.slider",a.ui.mouse,{widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var b=this,d=this.options,e=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",g=d.values&&d.values.length||1,h=[];this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"+(d.disabled?" ui-slider-disabled ui-disabled":"")),this.range=a([]),d.range&&(d.range===!0&&(d.values||(d.values=[this._valueMin(),this._valueMin()]),d.values.length&&d.values.length!==2&&(d.values=[d.values[0],d.values[0]])),this.range=a("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(d.range==="min"||d.range==="max"?" ui-slider-range-"+d.range:"")));for(var i=e.length;i<g;i+=1)h.push(f);this.handles=e.add(a(h.join("")).appendTo(b.element)),this.handle=this.handles.eq(0),this.handles.add(this.range).filter("a").click(function(a){a.preventDefault()}).hover(function(){d.disabled||a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}).focus(function(){d.disabled?a(this).blur():(a(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),a(this).addClass("ui-state-focus"))}).blur(function(){a(this).removeClass("ui-state-focus")}),this.handles.each(function(b){a(this).data("index.ui-slider-handle",b)}),this.handles.keydown(function(d){var e=a(this).data("index.ui-slider-handle"),f,g,h,i;if(b.options.disabled)return;switch(d.keyCode){case a.ui.keyCode.HOME:case a.ui.keyCode.END:case a.ui.keyCode.PAGE_UP:case a.ui.keyCode.PAGE_DOWN:case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:d.preventDefault();if(!b._keySliding){b._keySliding=!0,a(this).addClass("ui-state-active"),f=b._start(d,e);if(f===!1)return}}i=b.options.step,b.options.values&&b.options.values.length?g=h=b.values(e):g=h=b.value();switch(d.keyCode){case a.ui.keyCode.HOME:h=b._valueMin();break;case a.ui.keyCode.END:h=b._valueMax();break;case a.ui.keyCode.PAGE_UP:h=b._trimAlignValue(g+(b._valueMax()-b._valueMin())/c);break;case a.ui.keyCode.PAGE_DOWN:h=b._trimAlignValue(g-(b._valueMax()-b._valueMin())/c);break;case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:if(g===b._valueMax())return;h=b._trimAlignValue(g+i);break;case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:if(g===b._valueMin())return;h=b._trimAlignValue(g-i)}b._slide(d,e,h)}).keyup(function(c){var d=a(this).data("index.ui-slider-handle");b._keySliding&&(b._keySliding=!1,b._stop(c,d),b._change(c,d),a(this).removeClass("ui-state-active"))}),this._refreshValue(),this._animateOff=!1},destroy:function(){return this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider"),this._mouseDestroy(),this},_mouseCapture:function(b){var c=this.options,d,e,f,g,h,i,j,k,l;return c.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),d={x:b.pageX,y:b.pageY},e=this._normValueFromMouse(d),f=this._valueMax()-this._valueMin()+1,h=this,this.handles.each(function(b){var c=Math.abs(e-h.values(b));f>c&&(f=c,g=a(this),i=b)}),c.range===!0&&this.values(1)===c.min&&(i+=1,g=a(this.handles[i])),j=this._start(b,i),j===!1?!1:(this._mouseSliding=!0,h._handleIndex=i,g.addClass("ui-state-active").focus(),k=g.offset(),l=!a(b.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:b.pageX-k.left-g.width()/2,top:b.pageY-k.top-g.height()/2-(parseInt(g.css("borderTopWidth"),10)||0)-(parseInt(g.css("borderBottomWidth"),10)||0)+(parseInt(g.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(b,i,e),this._animateOff=!0,!0))},_mouseStart:function(a){return!0},_mouseDrag:function(a){var b={x:a.pageX,y:a.pageY},c=this._normValueFromMouse(b);return this._slide(a,this._handleIndex,c),!1},_mouseStop:function(a){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(a,this._handleIndex),this._change(a,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b,c,d,e,f;return this.orientation==="horizontal"?(b=this.elementSize.width,c=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(b=this.elementSize.height,c=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),d=c/b,d>1&&(d=1),d<0&&(d=0),this.orientation==="vertical"&&(d=1-d),e=this._valueMax()-this._valueMin(),f=this._valueMin()+d*e,this._trimAlignValue(f)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};return this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("start",a,c)},_slide:function(a,b,c){var d,e,f;this.options.values&&this.options.values.length?(d=this.values(b?0:1),this.options.values.length===2&&this.options.range===!0&&(b===0&&c>d||b===1&&c<d)&&(c=d),c!==this.values(b)&&(e=this.values(),e[b]=c,f=this._trigger("slide",a,{handle:this.handles[b],value:c,values:e}),d=this.values(b?0:1),f!==!1&&this.values(b,c,!0))):c!==this.value()&&(f=this._trigger("slide",a,{handle:this.handles[b],value:c}),f!==!1&&this.value(c))},_stop:function(a,b){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("stop",a,c)},_change:function(a,b){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("change",a,c)}},value:function(a){if(arguments.length){this.options.value=this._trimAlignValue(a),this._refreshValue(),this._change(null,0);return}return this._value()},values:function(b,c){var d,e,f;if(arguments.length>1){this.options.values[b]=this._trimAlignValue(c),this._refreshValue(),this._change(null,b);return}if(!arguments.length)return this._values();if(!a.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(b):this.value();d=this.options.values,e=arguments[0];for(f=0;f<d.length;f+=1)d[f]=this._trimAlignValue(e[f]),this._change(null,f);this._refreshValue()},_setOption:function(b,c){var d,e=0;a.isArray(this.options.values)&&(e=this.options.values.length),a.Widget.prototype._setOption.apply(this,arguments);switch(b){case"disabled":c?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.propAttr("disabled",!0),this.element.addClass("ui-disabled")):(this.handles.propAttr("disabled",!1),this.element.removeClass("ui-disabled"));break;case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":this._animateOff=!0,this._refreshValue();for(d=0;d<e;d+=1)this._change(null,d);this._animateOff=!1}},_value:function(){var a=this.options.value;return a=this._trimAlignValue(a),a},_values:function(a){var b,c,d;if(arguments.length)return b=this.options.values[a],b=this._trimAlignValue(b),b;c=this.options.values.slice();for(d=0;d<c.length;d+=1)c[d]=this._trimAlignValue(c[d]);return c},_trimAlignValue:function(a){if(a<=this._valueMin())return this._valueMin();if(a>=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b,d=a-c;return Math.abs(c)*2>=b&&(d+=c>0?b:-b),parseFloat(d.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var b=this.options.range,c=this.options,d=this,e=this._animateOff?!1:c.animate,f,g={},h,i,j,k;this.options.values&&this.options.values.length?this.handles.each(function(b,i){f=(d.values(b)-d._valueMin())/(d._valueMax()-d._valueMin())*100,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",a(this).stop(1,1)[e?"animate":"css"](g,c.animate),d.options.range===!0&&(d.orientation==="horizontal"?(b===0&&d.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({width:f-h+"%"},{queue:!1,duration:c.animate})):(b===0&&d.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({height:f-h+"%"},{queue:!1,duration:c.animate}))),h=f}):(i=this.value(),j=this._valueMin(),k=this._valueMax(),f=k!==j?(i-j)/(k-j)*100:0,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",this.handle.stop(1,1)[e?"animate":"css"](g,c.animate),b==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[e?"animate":"css"]({width:f+"%"},c.animate),b==="max"&&this.orientation==="horizontal"&&this.range[e?"animate":"css"]({width:100-f+"%"},{queue:!1,duration:c.animate}),b==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},c.animate),b==="max"&&this.orientation==="vertical"&&this.range[e?"animate":"css"]({height:100-f+"%"},{queue:!1,duration:c.animate}))}}),a.extend(a.ui.slider,{version:"1.8.20"})})(jQuery);
\ No newline at end of file
index d0ad528df65559a8ec6c75feb7c6ed8bc48e2ac7..593dfb964f929f560927a160ad59945ad0935824 100644 (file)
@@ -1,60 +1,5 @@
-/*
- * jQuery UI Sortable 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Sortables
- *
- * Depends:
- *     jquery.ui.core.js
- *     jquery.ui.mouse.js
- *     jquery.ui.widget.js
- */
-(function(d){d.widget("ui.sortable",d.ui.mouse,{widgetEventPrefix:"sort",options:{appendTo:"parent",axis:false,connectWith:false,containment:false,cursor:"auto",cursorAt:false,dropOnEmpty:true,forcePlaceholderSize:false,forceHelperSize:false,grid:false,handle:false,helper:"original",items:"> *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){var a=this.options;this.containerCache={};this.element.addClass("ui-sortable");
-this.refresh();this.floating=this.items.length?a.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a===
-"disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&&
-!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem=c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,
-left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};
-this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment();if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!=
-document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start",a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);
-return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY<b.scrollSensitivity)this.scrollParent[0].scrollTop=c=this.scrollParent[0].scrollTop+b.scrollSpeed;else if(a.pageY-this.overflowOffset.top<
-b.scrollSensitivity)this.scrollParent[0].scrollTop=c=this.scrollParent[0].scrollTop-b.scrollSpeed;if(this.overflowOffset.left+this.scrollParent[0].offsetWidth-a.pageX<b.scrollSensitivity)this.scrollParent[0].scrollLeft=c=this.scrollParent[0].scrollLeft+b.scrollSpeed;else if(a.pageX-this.overflowOffset.left<b.scrollSensitivity)this.scrollParent[0].scrollLeft=c=this.scrollParent[0].scrollLeft-b.scrollSpeed}else{if(a.pageY-d(document).scrollTop()<b.scrollSensitivity)c=d(document).scrollTop(d(document).scrollTop()-
-b.scrollSpeed);else if(d(window).height()-(a.pageY-d(document).scrollTop())<b.scrollSensitivity)c=d(document).scrollTop(d(document).scrollTop()+b.scrollSpeed);if(a.pageX-d(document).scrollLeft()<b.scrollSensitivity)c=d(document).scrollLeft(d(document).scrollLeft()-b.scrollSpeed);else if(d(window).width()-(a.pageX-d(document).scrollLeft())<b.scrollSensitivity)c=d(document).scrollLeft(d(document).scrollLeft()+b.scrollSpeed)}c!==false&&d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,
-a)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(b=this.items.length-1;b>=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0],
-e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a,c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset();
-c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=this;if(this.dragging){this._mouseUp({target:null});this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):
-this.currentItem.show();for(var b=this.containers.length-1;b>=0;b--){this.containers[b]._trigger("deactivate",null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}if(this.placeholder){this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();d.extend(this,{helper:null,
-dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem):d(this.domPosition.parent).prepend(this.currentItem)}return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});!c.length&&a.key&&c.push(a.key+"=");return c.join("&")},
-toArray:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute||"id")||"")});return c},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+j<k&&b+l>g&&b+l<h;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||
-this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>a[this.floating?"width":"height"]?j:g<b+this.helperProportions.width/2&&c-this.helperProportions.width/2<h&&i<e+this.helperProportions.height/2&&f-this.helperProportions.height/2<k},_intersectsWithPointer:function(a){var b=d.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top,a.height);a=d.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left,a.width);b=b&&a;a=this._getDragVerticalDirection();
-var c=this._getDragHorizontalDirection();if(!b)return false;return this.floating?c&&c=="right"||a=="down"?2:1:a&&(a=="down"?2:1)},_intersectsWithSides:function(a){var b=d.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top+a.height/2,a.height);a=d.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left+a.width/2,a.width);var c=this._getDragVerticalDirection(),e=this._getDragHorizontalDirection();return this.floating&&e?e=="right"&&a||e=="left"&&!a:c&&(c=="down"&&b||c=="up"&&!b)},
-_getDragVerticalDirection:function(){var a=this.positionAbs.top-this.lastPositionAbs.top;return a!=0&&(a>0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a);this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(a){var b=[],c=[],e=this._connectWith();
-if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h=d.data(f[g],"sortable");if(h&&h!=this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),
-this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)});return d(b)},_removeCurrentsFromItems:function(){for(var a=this.currentItem.find(":data(sortable-item)"),b=0;b<this.items.length;b++)for(var c=0;c<a.length;c++)a[c]==this.items[b].item[0]&&this.items.splice(b,1)},_refreshItems:function(a){this.items=[];this.containers=[this];var b=this.items,c=[[d.isFunction(this.options.items)?this.options.items.call(this.element[0],a,{item:this.currentItem}):d(this.options.items,this.element),
-this]],e=this._connectWith();if(e)for(var f=e.length-1;f>=0;f--)for(var g=d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable");if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h<g;h++){i=d(e[h]);i.data("sortable-item",a);b.push({item:i,instance:a,width:0,height:0,left:0,top:0})}}},refreshPositions:function(a){if(this.offsetParent&&
-this.helper)this.offset.parent=this._getParentOffset();for(var b=this.items.length-1;b>=0;b--){var c=this.items[b];if(!(c.instance!=this.currentContainer&&this.currentContainer&&c.item[0]!=this.currentItem[0])){var e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b=
-this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top=e.top;this.containers[b].containerCache.width=this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f=
-d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!e)f.style.visibility="hidden";return f},update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||
-0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b=null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out",
-a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length===1){this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h-
-f)<b){b=Math.abs(h-f);e=this.items[g]}}if(e||this.options.dropOnEmpty){this.currentContainer=this.containers[c];e?this._rearrange(a,e,null,true):this._rearrange(a,null,this.containers[c].element,true);this._trigger("change",a,this._uiHash());this.containers[c]._trigger("change",a,this._uiHash(this));this.options.placeholder.update(this.currentContainer,this.placeholder);this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}}},_createHelper:function(a){var b=
-this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a,this.currentItem])):b.helper=="clone"?this.currentItem.clone():this.currentItem;a.parents("body").length||d(b.appendTo!="parent"?b.appendTo:this.currentItem[0].parentNode)[0].appendChild(a[0]);if(a[0]==this.currentItem[0])this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")};if(a[0].style.width==
-""||b.forceHelperSize)a.width(this.currentItem.width());if(a[0].style.height==""||b.forceHelperSize)a.height(this.currentItem.height());return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=
-this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a=
-{top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.currentItem.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),
-10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,d(a.containment=="document"?
-document:window).width()-this.helperProportions.width-this.margins.left,(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)){var b=d(a.containment)[0];a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"),
-10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(a,b){if(!b)b=
-this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&
-this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(c[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0]))this.offset.relative=this._getRelativeOffset();
-var f=a.pageX,g=a.pageY;if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.left<this.containment[0])f=this.containment[0]+this.offset.click.left;if(a.pageY-this.offset.click.top<this.containment[1])g=this.containment[1]+this.offset.click.top;if(a.pageX-this.offset.click.left>this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-
-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:!(g-this.offset.click.top<this.containment[1])?g-b.grid[1]:g+b.grid[1]:g;f=this.originalPageX+Math.round((f-this.originalPageX)/b.grid[0])*b.grid[0];f=this.containment?!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:!(f-this.offset.click.left<this.containment[0])?f-b.grid[0]:f+b.grid[0]:f}}return{top:g-
-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(d.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:c.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(d.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:c.scrollLeft())}},_rearrange:function(a,b,c,e){c?c[0].appendChild(this.placeholder[0]):b.item[0].parentNode.insertBefore(this.placeholder[0],
-this.direction=="down"?b.item[0]:b.item[0].nextSibling);this.counter=this.counter?++this.counter:1;var f=this,g=this.counter;window.setTimeout(function(){g==f.counter&&f.refreshPositions(!e)},0)},_clear:function(a,b){this.reverting=false;var c=[];!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem);this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var e in this._storedCSS)if(this._storedCSS[e]=="auto"||this._storedCSS[e]=="static")this._storedCSS[e]=
-"";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!b&&c.push(function(f){this._trigger("receive",f,this._uiHash(this.fromOutside))});if((this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!b)c.push(function(f){this._trigger("update",f,this._uiHash())});if(!d.ui.contains(this.element[0],this.currentItem[0])){b||c.push(function(f){this._trigger("remove",
-f,this._uiHash())});for(e=this.containers.length-1;e>=0;e--)if(d.ui.contains(this.containers[e].element[0],this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive",g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this,
-this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out",g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over=0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop",
-a,this._uiHash());for(e=0;e<c.length;e++)c[e].call(this,a);this._trigger("stop",a,this._uiHash())}return false}b||this._trigger("beforeStop",a,this._uiHash());this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.helper[0]!=this.currentItem[0]&&this.helper.remove();this.helper=null;if(!b){for(e=0;e<c.length;e++)c[e].call(this,a);this._trigger("stop",a,this._uiHash())}this.fromOutside=false;return true},_trigger:function(){d.Widget.prototype._trigger.apply(this,arguments)===false&&this.cancel()},
-_uiHash:function(a){var b=a||this;return{helper:b.helper,placeholder:b.placeholder||d([]),position:b.position,originalPosition:b.originalPosition,offset:b.positionAbs,item:b.currentItem,sender:a?a.element:null}}});d.extend(d.ui.sortable,{version:"1.8.16"})})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.sortable.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.widget("ui.sortable",a.ui.mouse,{widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3},_create:function(){var a=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?a.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},destroy:function(){a.Widget.prototype.destroy.call(this),this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var b=this.items.length-1;b>=0;b--)this.items[b].item.removeData(this.widgetName+"-item");return this},_setOption:function(b,c){b==="disabled"?(this.options[b]=c,this.widget()[c?"addClass":"removeClass"]("ui-sortable-disabled")):a.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(b,c){var d=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type=="static")return!1;this._refreshItems(b);var e=null,f=this,g=a(b.target).parents().each(function(){if(a.data(this,d.widgetName+"-item")==f)return e=a(this),!1});a.data(b.target,d.widgetName+"-item")==f&&(e=a(b.target));if(!e)return!1;if(this.options.handle&&!c){var h=!1;a(this.options.handle,e).find("*").andSelf().each(function(){this==b.target&&(h=!0)});if(!h)return!1}return this.currentItem=e,this._removeCurrentsFromItems(),!0},_mouseStart:function(b,c,d){var e=this.options,f=this;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(b),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),e.containment&&this._setContainment(),e.cursor&&(a("body").css("cursor")&&(this._storedCursor=a("body").css("cursor")),a("body").css("cursor",e.cursor)),e.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",e.opacity)),e.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",e.zIndex)),this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",b,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!d)for(var g=this.containers.length-1;g>=0;g--)this.containers[g]._trigger("activate",b,f._uiHash(this));return a.ui.ddmanager&&(a.ui.ddmanager.current=this),a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(b),!0},_mouseDrag:function(b){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var c=this.options,d=!1;this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-b.pageY<c.scrollSensitivity?this.scrollParent[0].scrollTop=d=this.scrollParent[0].scrollTop+c.scrollSpeed:b.pageY-this.overflowOffset.top<c.scrollSensitivity&&(this.scrollParent[0].scrollTop=d=this.scrollParent[0].scrollTop-c.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-b.pageX<c.scrollSensitivity?this.scrollParent[0].scrollLeft=d=this.scrollParent[0].scrollLeft+c.scrollSpeed:b.pageX-this.overflowOffset.left<c.scrollSensitivity&&(this.scrollParent[0].scrollLeft=d=this.scrollParent[0].scrollLeft-c.scrollSpeed)):(b.pageY-a(document).scrollTop()<c.scrollSensitivity?d=a(document).scrollTop(a(document).scrollTop()-c.scrollSpeed):a(window).height()-(b.pageY-a(document).scrollTop())<c.scrollSensitivity&&(d=a(document).scrollTop(a(document).scrollTop()+c.scrollSpeed)),b.pageX-a(document).scrollLeft()<c.scrollSensitivity?d=a(document).scrollLeft(a(document).scrollLeft()-c.scrollSpeed):a(window).width()-(b.pageX-a(document).scrollLeft())<c.scrollSensitivity&&(d=a(document).scrollLeft(a(document).scrollLeft()+c.scrollSpeed))),d!==!1&&a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(var e=this.items.length-1;e>=0;e--){var f=this.items[e],g=f.item[0],h=this._intersectsWithPointer(f);if(!h)continue;if(g!=this.currentItem[0]&&this.placeholder[h==1?"next":"prev"]()[0]!=g&&!a.ui.contains(this.placeholder[0],g)&&(this.options.type=="semi-dynamic"?!a.ui.contains(this.element[0],g):!0)){this.direction=h==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(f))this._rearrange(b,f);else break;this._trigger("change",b,this._uiHash());break}}return this._contactContainers(b),a.ui.ddmanager&&a.ui.ddmanager.drag(this,b),this._trigger("sort",b,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(b,c){if(!b)return;a.ui.ddmanager&&!this.options.dropBehaviour&&a.ui.ddmanager.drop(this,b);if(this.options.revert){var d=this,e=d.placeholder.offset();d.reverting=!0,a(this.helper).animate({left:e.left-this.offset.parent.left-d.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:e.top-this.offset.parent.top-d.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){d._clear(b)})}else this._clear(b,c);return!1},cancel:function(){var b=this;if(this.dragging){this._mouseUp({target:null}),this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("deactivate",null,b._uiHash(this)),this.containers[c].containerCache.over&&(this.containers[c]._trigger("out",null,b._uiHash(this)),this.containers[c].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),a.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?a(this.domPosition.prev).after(this.currentItem):a(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];return b=b||{},a(c).each(function(){var c=(a(b.item||this).attr(b.attribute||"id")||"").match(b.expression||/(.+)[-=_](.+)/);c&&d.push((b.key||c[1]+"[]")+"="+(b.key&&b.expression?c[1]:c[2]))}),!d.length&&b.key&&d.push(b.key+"="),d.join("&")},toArray:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];return b=b||{},c.each(function(){d.push(a(b.item||this).attr(b.attribute||"id")||"")}),d},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,d=this.positionAbs.top,e=d+this.helperProportions.height,f=a.left,g=f+a.width,h=a.top,i=h+a.height,j=this.offset.click.top,k=this.offset.click.left,l=d+j>h&&d+j<i&&b+k>f&&b+k<g;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>a[this.floating?"width":"height"]?l:f<b+this.helperProportions.width/2&&c-this.helperProportions.width/2<g&&h<d+this.helperProportions.height/2&&e-this.helperProportions.height/2<i},_intersectsWithPointer:function(b){var c=this.options.axis==="x"||a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,b.top,b.height),d=this.options.axis==="y"||a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,b.left,b.width),e=c&&d,f=this._getDragVerticalDirection(),g=this._getDragHorizontalDirection();return e?this.floating?g&&g=="right"||f=="down"?2:1:f&&(f=="down"?2:1):!1},_intersectsWithSides:function(b){var c=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,b.top+b.height/2,b.height),d=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,b.left+b.width/2,b.width),e=this._getDragVerticalDirection(),f=this._getDragHorizontalDirection();return this.floating&&f?f=="right"&&d||f=="left"&&!d:e&&(e=="down"&&c||e=="up"&&!c)},_getDragVerticalDirection:function(){var a=this.positionAbs.top-this.lastPositionAbs.top;return a!=0&&(a>0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){return this._refreshItems(a),this.refreshPositions(),this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(b){var c=this,d=[],e=[],f=this._connectWith();if(f&&b)for(var g=f.length-1;g>=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&e.push([a.isFunction(j.options.items)?j.options.items.call(j.element):a(j.options.items,j.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),j])}}e.push([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var g=e.length-1;g>=0;g--)e[g][0].each(function(){d.push(this)});return a(d)},_removeCurrentsFromItems:function(){var a=this.currentItem.find(":data("+this.widgetName+"-item)");for(var b=0;b<this.items.length;b++)for(var c=0;c<a.length;c++)a[c]==this.items[b].item[0]&&this.items.splice(b,1)},_refreshItems:function(b){this.items=[],this.containers=[this];var c=this.items,d=this,e=[[a.isFunction(this.options.items)?this.options.items.call(this.element[0],b,{item:this.currentItem}):a(this.options.items,this.element),this]],f=this._connectWith();if(f&&this.ready)for(var g=f.length-1;g>=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&(e.push([a.isFunction(j.options.items)?j.options.items.call(j.element[0],b,{item:this.currentItem}):a(j.options.items,j.element),j]),this.containers.push(j))}}for(var g=e.length-1;g>=0;g--){var k=e[g][1],l=e[g][0];for(var i=0,m=l.length;i<m;i++){var n=a(l[i]);n.data(this.widgetName+"-item",k),c.push({item:n,instance:k,width:0,height:0,left:0,top:0})}}},refreshPositions:function(b){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());for(var c=this.items.length-1;c>=0;c--){var d=this.items[c];if(d.instance!=this.currentContainer&&this.currentContainer&&d.item[0]!=this.currentItem[0])continue;var e=this.options.toleranceElement?a(this.options.toleranceElement,d.item):d.item;b||(d.width=e.outerWidth(),d.height=e.outerHeight());var f=e.offset();d.left=f.left,d.top=f.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var c=this.containers.length-1;c>=0;c--){var f=this.containers[c].element.offset();this.containers[c].containerCache.left=f.left,this.containers[c].containerCache.top=f.top,this.containers[c].containerCache.width=this.containers[c].element.outerWidth(),this.containers[c].containerCache.height=this.containers[c].element.outerHeight()}return this},_createPlaceholder:function(b){var c=b||this,d=c.options;if(!d.placeholder||d.placeholder.constructor==String){var e=d.placeholder;d.placeholder={element:function(){var b=a(document.createElement(c.currentItem[0].nodeName)).addClass(e||c.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];return e||(b.style.visibility="hidden"),b},update:function(a,b){if(e&&!d.forcePlaceholderSize)return;b.height()||b.height(c.currentItem.innerHeight()-parseInt(c.currentItem.css("paddingTop")||0,10)-parseInt(c.currentItem.css("paddingBottom")||0,10)),b.width()||b.width(c.currentItem.innerWidth()-parseInt(c.currentItem.css("paddingLeft")||0,10)-parseInt(c.currentItem.css("paddingRight")||0,10))}}}c.placeholder=a(d.placeholder.element.call(c.element,c.currentItem)),c.currentItem.after(c.placeholder),d.placeholder.update(c,c.placeholder)},_contactContainers:function(b){var c=null,d=null;for(var e=this.containers.length-1;e>=0;e--){if(a.ui.contains(this.currentItem[0],this.containers[e].element[0]))continue;if(this._intersectsWith(this.containers[e].containerCache)){if(c&&a.ui.contains(this.containers[e].element[0],c.element[0]))continue;c=this.containers[e],d=e}else this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",b,this._uiHash(this)),this.containers[e].containerCache.over=0)}if(!c)return;if(this.containers.length===1)this.containers[d]._trigger("over",b,this._uiHash(this)),this.containers[d].containerCache.over=1;else if(this.currentContainer!=this.containers[d]){var f=1e4,g=null,h=this.positionAbs[this.containers[d].floating?"left":"top"];for(var i=this.items.length-1;i>=0;i--){if(!a.ui.contains(this.containers[d].element[0],this.items[i].item[0]))continue;var j=this.items[i][this.containers[d].floating?"left":"top"];Math.abs(j-h)<f&&(f=Math.abs(j-h),g=this.items[i])}if(!g&&!this.options.dropOnEmpty)return;this.currentContainer=this.containers[d],g?this._rearrange(b,g,null,!0):this._rearrange(b,null,this.containers[d].element,!0),this._trigger("change",b,this._uiHash()),this.containers[d]._trigger("change",b,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[d]._trigger("over",b,this._uiHash(this)),this.containers[d].containerCache.over=1}},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b,this.currentItem])):c.helper=="clone"?this.currentItem.clone():this.currentItem;return d.parents("body").length||a(c.appendTo!="parent"?c.appendTo:this.currentItem[0].parentNode)[0].appendChild(d[0]),d[0]==this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(d[0].style.width==""||c.forceHelperSize)&&d.width(this.currentItem.width()),(d[0].style.height==""||c.forceHelperSize)&&d.height(this.currentItem.height()),d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.currentItem.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)){var c=a(b.containment)[0],d=a(b.containment).offset(),e=a(c).css("overflow")!="hidden";this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(e?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(e?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(d[0].tagName);this.cssPosition=="relative"&&(this.scrollParent[0]==document||this.scrollParent[0]==this.offsetParent[0])&&(this.offset.relative=this._getRelativeOffset());var f=b.pageX,g=b.pageY;if(this.originalPosition){this.containment&&(b.pageX-this.offset.click.left<this.containment[0]&&(f=this.containment[0]+this.offset.click.left),b.pageY-this.offset.click.top<this.containment[1]&&(g=this.containment[1]+this.offset.click.top),b.pageX-this.offset.click.left>this.containment[2]&&(f=this.containment[2]+this.offset.click.left),b.pageY-this.offset.click.top>this.containment[3]&&(g=this.containment[3]+this.offset.click.top));if(c.grid){var h=this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1];g=this.containment?h-this.offset.click.top<this.containment[1]||h-this.offset.click.top>this.containment[3]?h-this.offset.click.top<this.containment[1]?h+c.grid[1]:h-c.grid[1]:h:h;var i=this.originalPageX+Math.round((f-this.originalPageX)/c.grid[0])*c.grid[0];f=this.containment?i-this.offset.click.left<this.containment[0]||i-this.offset.click.left>this.containment[2]?i-this.offset.click.left<this.containment[0]?i+c.grid[0]:i-c.grid[0]:i:i}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:d.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:d.scrollLeft())}},_rearrange:function(a,b,c,d){c?c[0].appendChild(this.placeholder[0]):b.item[0].parentNode.insertBefore(this.placeholder[0],this.direction=="down"?b.item[0]:b.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var e=this,f=this.counter;window.setTimeout(function(){f==e.counter&&e.refreshPositions(!d)},0)},_clear:function(b,c){this.reverting=!1;var d=[],e=this;!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var f in this._storedCSS)if(this._storedCSS[f]=="auto"||this._storedCSS[f]=="static")this._storedCSS[f]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!c&&d.push(function(a){this._trigger("receive",a,this._uiHash(this.fromOutside))}),(this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!c&&d.push(function(a){this._trigger("update",a,this._uiHash())});if(!a.ui.contains(this.element[0],this.currentItem[0])){c||d.push(function(a){this._trigger("remove",a,this._uiHash())});for(var f=this.containers.length-1;f>=0;f--)a.ui.contains(this.containers[f].element[0],this.currentItem[0])&&!c&&(d.push(function(a){return function(b){a._trigger("receive",b,this._uiHash(this))}}.call(this,this.containers[f])),d.push(function(a){return function(b){a._trigger("update",b,this._uiHash(this))}}.call(this,this.containers[f])))}for(var f=this.containers.length-1;f>=0;f--)c||d.push(function(a){return function(b){a._trigger("deactivate",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over&&(d.push(function(a){return function(b){a._trigger("out",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over=0);this._storedCursor&&a("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!c){this._trigger("beforeStop",b,this._uiHash());for(var f=0;f<d.length;f++)d[f].call(this,b);this._trigger("stop",b,this._uiHash())}return!1}c||this._trigger("beforeStop",b,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!=this.currentItem[0]&&this.helper.remove(),this.helper=null;if(!c){for(var f=0;f<d.length;f++)d[f].call(this,b);this._trigger("stop",b,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){a.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(b){var c=b||this;return{helper:c.helper,placeholder:c.placeholder||a([]),position:c.position,originalPosition:c.originalPosition,offset:c.positionAbs,item:c.currentItem,sender:b?b.element:null}}}),a.extend(a.ui.sortable,{version:"1.8.20"})})(jQuery);
\ No newline at end of file
index 3697f421cf82ec696504a93ef070057111a6b3f8..a4c6e9d4eb8a8d65e19e9aa3fbbd23954f147c38 100644 (file)
@@ -1,35 +1,5 @@
-/*
- * jQuery UI Tabs 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Tabs
- *
- * Depends:
- *     jquery.ui.core.js
- *     jquery.ui.widget.js
- */
-(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading&#8230;</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(true)},_setOption:function(b,e){if(b=="selected")this.options.collapsible&&
-e==this.options.selected||this.select(e);else{this.options[b]=e;this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[b].concat(d.makeArray(arguments)))},_ui:function(b,e){return{tab:b,panel:e,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=
-d(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(b){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var a=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]||
-(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))a.panels=a.panels.add(a.element.find(a._sanitizeSelector(i)));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=a._tabId(f);f.href="#"+i;f=a.element.find("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else c.disabled.push(g)});if(b){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");
-this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(a._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected=
-this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");
-if(c.selected>=0&&this.anchors.length){a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[c.selected],a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash))[0]))});this.load(c.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));
-this.element[c.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);b=0;for(var j;j=this.lis[b];b++)d(j)[d.inArray(b,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+
-g)};this.lis.bind("mouseover.tabs",function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",
-function(){e(f,o);a._trigger("show",null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")};
-this.anchors.bind(c.event+".tabs",function(){var g=this,f=d(g).closest("li"),i=a.panels.filter(":not(.ui-tabs-hide)"),l=a.element.find(a._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a.panels.filter(":animated").length||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}c.selected=a.anchors.index(this);a.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected=
--1;c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this));this.blur();return false}c.cookie&&a._cookie(c.selected,c.cookie);if(l.length){i.length&&a.element.queue("tabs",function(){s(g,i)});a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";
-d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){if(typeof b=="string")b=this.anchors.index(this.anchors.filter("[href$="+b+"]"));return b},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=
-d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});b.cookie&&this._cookie(null,b.cookie);return this},add:function(b,
-e,a){if(a===p)a=this.anchors.length;var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,b).replace(/#\{label\}/g,e));b=!b.indexOf("#")?b.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=c.element.find("#"+b);j.length||(j=d(h.panelTemplate).attr("id",b).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]);
-j.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(b){b=this._getIndex(b);var e=this.options,a=this.lis.eq(b).remove(),c=this.panels.eq(b).remove();
-if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(b+(b+1<this.anchors.length?1:-1));e.disabled=d.map(d.grep(e.disabled,function(h){return h!=b}),function(h){return h>=b?--h:h});this._tabify();this._trigger("remove",null,this._ui(a.find("a")[0],c[0]));return this},enable:function(b){b=this._getIndex(b);var e=this.options;if(d.inArray(b,e.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=b});this._trigger("enable",null,
-this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(b){b=this._getIndex(b);var e=this.options;if(b!=e.selected){this.lis.eq(b).addClass("ui-state-disabled");e.disabled.push(b);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b]))}return this},select:function(b){b=this._getIndex(b);if(b==-1)if(this.options.collapsible&&this.options.selected!=-1)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+".tabs");return this},
-load:function(b){b=this._getIndex(b);var e=this,a=this.options,c=this.anchors.eq(b)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(a.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){e.element.find(e._sanitizeSelector(c.hash)).html(k);e._cleanup();a.cache&&d.data(c,
-"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.error(k,n,b,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},
-url:function(b,e){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.16"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(b,e){var a=this,c=this.options,h=a._rotate||(a._rotate=function(j){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=c.selected;a.select(++k<a.anchors.length?k:0)},b);j&&j.stopPropagation()});e=a._unrotate||(a._unrotate=!e?function(j){j.clientX&&
-a.rotate(null)}:function(){t=c.selected;h()});if(b){this.element.bind("tabsshow",h);this.anchors.bind(c.event+".tabs",e);h()}else{clearTimeout(a.rotation);this.element.unbind("tabsshow",h);this.anchors.unbind(c.event+".tabs",e);delete this._rotate;delete this._unrotate}return this}})})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.tabs.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){function e(){return++c}function f(){return++d}var c=0,d=0;a.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:!1,cookie:null,collapsible:!1,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading&#8230;</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(!0)},_setOption:function(a,b){if(a=="selected"){if(this.options.collapsible&&b==this.options.selected)return;this.select(b)}else this.options[a]=b,this._tabify()},_tabId:function(a){return a.title&&a.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+e()},_sanitizeSelector:function(a){return a.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+f());return a.cookie.apply(null,[b].concat(a.makeArray(arguments)))},_ui:function(a,b){return{tab:a,panel:b,index:this.anchors.index(a)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=a(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function m(b,c){b.css("display",""),!a.support.opacity&&c.opacity&&b[0].style.removeAttribute("filter")}var d=this,e=this.options,f=/^#.+/;this.list=this.element.find("ol,ul").eq(0),this.lis=a(" > li:has(a[href])",this.list),this.anchors=this.lis.map(function(){return a("a",this)[0]}),this.panels=a([]),this.anchors.each(function(b,c){var g=a(c).attr("href"),h=g.split("#")[0],i;h&&(h===location.toString().split("#")[0]||(i=a("base")[0])&&h===i.href)&&(g=c.hash,c.href=g);if(f.test(g))d.panels=d.panels.add(d.element.find(d._sanitizeSelector(g)));else if(g&&g!=="#"){a.data(c,"href.tabs",g),a.data(c,"load.tabs",g.replace(/#.*$/,""));var j=d._tabId(c);c.href="#"+j;var k=d.element.find("#"+j);k.length||(k=a(e.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(d.panels[b-1]||d.list),k.data("destroy.tabs",!0)),d.panels=d.panels.add(k)}else e.disabled.push(b)}),c?(this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"),this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.lis.addClass("ui-state-default ui-corner-top"),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom"),e.selected===b?(location.hash&&this.anchors.each(function(a,b){if(b.hash==location.hash)return e.selected=a,!1}),typeof e.selected!="number"&&e.cookie&&(e.selected=parseInt(d._cookie(),10)),typeof e.selected!="number"&&this.lis.filter(".ui-tabs-selected").length&&(e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))),e.selected=e.selected||(this.lis.length?0:-1)):e.selected===null&&(e.selected=-1),e.selected=e.selected>=0&&this.anchors[e.selected]||e.selected<0?e.selected:0,e.disabled=a.unique(e.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(a,b){return d.lis.index(a)}))).sort(),a.inArray(e.selected,e.disabled)!=-1&&e.disabled.splice(a.inArray(e.selected,e.disabled),1),this.panels.addClass("ui-tabs-hide"),this.lis.removeClass("ui-tabs-selected ui-state-active"),e.selected>=0&&this.anchors.length&&(d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash)).removeClass("ui-tabs-hide"),this.lis.eq(e.selected).addClass("ui-tabs-selected ui-state-active"),d.element.queue("tabs",function(){d._trigger("show",null,d._ui(d.anchors[e.selected],d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash))[0]))}),this.load(e.selected)),a(window).bind("unload",function(){d.lis.add(d.anchors).unbind(".tabs"),d.lis=d.anchors=d.panels=null})):e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")),this.element[e.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible"),e.cookie&&this._cookie(e.selected,e.cookie);for(var g=0,h;h=this.lis[g];g++)a(h)[a.inArray(g,e.disabled)!=-1&&!a(h).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");e.cache===!1&&this.anchors.removeData("cache.tabs"),this.lis.add(this.anchors).unbind(".tabs");if(e.event!=="mouseover"){var i=function(a,b){b.is(":not(.ui-state-disabled)")&&b.addClass("ui-state-"+a)},j=function(a,b){b.removeClass("ui-state-"+a)};this.lis.bind("mouseover.tabs",function(){i("hover",a(this))}),this.lis.bind("mouseout.tabs",function(){j("hover",a(this))}),this.anchors.bind("focus.tabs",function(){i("focus",a(this).closest("li"))}),this.anchors.bind("blur.tabs",function(){j("focus",a(this).closest("li"))})}var k,l;e.fx&&(a.isArray(e.fx)?(k=e.fx[0],l=e.fx[1]):k=l=e.fx);var n=l?function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.hide().removeClass("ui-tabs-hide").animate(l,l.duration||"normal",function(){m(c,l),d._trigger("show",null,d._ui(b,c[0]))})}:function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.removeClass("ui-tabs-hide"),d._trigger("show",null,d._ui(b,c[0]))},o=k?function(a,b){b.animate(k,k.duration||"normal",function(){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),m(b,k),d.element.dequeue("tabs")})}:function(a,b,c){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),d.element.dequeue("tabs")};this.anchors.bind(e.event+".tabs",function(){var b=this,c=a(b).closest("li"),f=d.panels.filter(":not(.ui-tabs-hide)"),g=d.element.find(d._sanitizeSelector(b.hash));if(c.hasClass("ui-tabs-selected")&&!e.collapsible||c.hasClass("ui-state-disabled")||c.hasClass("ui-state-processing")||d.panels.filter(":animated").length||d._trigger("select",null,d._ui(this,g[0]))===!1)return this.blur(),!1;e.selected=d.anchors.index(this),d.abort();if(e.collapsible){if(c.hasClass("ui-tabs-selected"))return e.selected=-1,e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){o(b,f)}).dequeue("tabs"),this.blur(),!1;if(!f.length)return e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this)),this.blur(),!1}e.cookie&&d._cookie(e.selected,e.cookie);if(g.length)f.length&&d.element.queue("tabs",function(){o(b,f)}),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this));else throw"jQuery UI Tabs: Mismatching fragment identifier.";a.browser.msie&&this.blur()}),this.anchors.bind("click.tabs",function(){return!1})},_getIndex:function(a){return typeof a=="string"&&(a=this.anchors.index(this.anchors.filter("[href$='"+a+"']"))),a},destroy:function(){var b=this.options;return this.abort(),this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs"),this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.anchors.each(function(){var b=a.data(this,"href.tabs");b&&(this.href=b);var c=a(this).unbind(".tabs");a.each(["href","load","cache"],function(a,b){c.removeData(b+".tabs")})}),this.lis.unbind(".tabs").add(this.panels).each(function(){a.data(this,"destroy.tabs")?a(this).remove():a(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}),b.cookie&&this._cookie(null,b.cookie),this},add:function(c,d,e){e===b&&(e=this.anchors.length);var f=this,g=this.options,h=a(g.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,d)),i=c.indexOf("#")?this._tabId(a("a",h)[0]):c.replace("#","");h.addClass("ui-state-default ui-corner-top").data("destroy.tabs",!0);var j=f.element.find("#"+i);return j.length||(j=a(g.panelTemplate).attr("id",i).data("destroy.tabs",!0)),j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"),e>=this.lis.length?(h.appendTo(this.list),j.appendTo(this.list[0].parentNode)):(h.insertBefore(this.lis[e]),j.insertBefore(this.panels[e])),g.disabled=a.map(g.disabled,function(a,b){return a>=e?++a:a}),this._tabify(),this.anchors.length==1&&(g.selected=0,h.addClass("ui-tabs-selected ui-state-active"),j.removeClass("ui-tabs-hide"),this.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[0],f.panels[0]))}),this.load(0)),this._trigger("add",null,this._ui(this.anchors[e],this.panels[e])),this},remove:function(b){b=this._getIndex(b);var c=this.options,d=this.lis.eq(b).remove(),e=this.panels.eq(b).remove();return d.hasClass("ui-tabs-selected")&&this.anchors.length>1&&this.select(b+(b+1<this.anchors.length?1:-1)),c.disabled=a.map(a.grep(c.disabled,function(a,c){return a!=b}),function(a,c){return a>=b?--a:a}),this._tabify(),this._trigger("remove",null,this._ui(d.find("a")[0],e[0])),this},enable:function(b){b=this._getIndex(b);var c=this.options;if(a.inArray(b,c.disabled)==-1)return;return this.lis.eq(b).removeClass("ui-state-disabled"),c.disabled=a.grep(c.disabled,function(a,c){return a!=b}),this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b])),this},disable:function(a){a=this._getIndex(a);var b=this,c=this.options;return a!=c.selected&&(this.lis.eq(a).addClass("ui-state-disabled"),c.disabled.push(a),c.disabled.sort(),this._trigger("disable",null,this._ui(this.anchors[a],this.panels[a]))),this},select:function(a){a=this._getIndex(a);if(a==-1)if(this.options.collapsible&&this.options.selected!=-1)a=this.options.selected;else return this;return this.anchors.eq(a).trigger(this.options.event+".tabs"),this},load:function(b){b=this._getIndex(b);var c=this,d=this.options,e=this.anchors.eq(b)[0],f=a.data(e,"load.tabs");this.abort();if(!f||this.element.queue("tabs").length!==0&&a.data(e,"cache.tabs")){this.element.dequeue("tabs");return}this.lis.eq(b).addClass("ui-state-processing");if(d.spinner){var g=a("span",e);g.data("label.tabs",g.html()).html(d.spinner)}return this.xhr=a.ajax(a.extend({},d.ajaxOptions,{url:f,success:function(f,g){c.element.find(c._sanitizeSelector(e.hash)).html(f),c._cleanup(),d.cache&&a.data(e,"cache.tabs",!0),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.success(f,g)}catch(h){}},error:function(a,f,g){c._cleanup(),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.error(a,f,b,e)}catch(g){}}})),c.element.dequeue("tabs"),this},abort:function(){return this.element.queue([]),this.panels.stop(!1,!0),this.element.queue("tabs",this.element.queue("tabs").splice(-2,2)),this.xhr&&(this.xhr.abort(),delete this.xhr),this._cleanup(),this},url:function(a,b){return this.anchors.eq(a).removeData("cache.tabs").data("load.tabs",b),this},length:function(){return this.anchors.length}}),a.extend(a.ui.tabs,{version:"1.8.20"}),a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(a,b){var c=this,d=this.options,e=c._rotate||(c._rotate=function(b){clearTimeout(c.rotation),c.rotation=setTimeout(function(){var a=d.selected;c.select(++a<c.anchors.length?a:0)},a),b&&b.stopPropagation()}),f=c._unrotate||(c._unrotate=b?function(a){e()}:function(a){a.clientX&&c.rotate(null)});return a?(this.element.bind("tabsshow",e),this.anchors.bind(d.event+".tabs",f),e()):(clearTimeout(c.rotation),this.element.unbind("tabsshow",e),this.anchors.unbind(d.event+".tabs",f),delete this._rotate,delete this._unrotate),this}})})(jQuery);
\ No newline at end of file
index 64893bb99e49e1eb8b9053a1c8d6996836b0931d..32362074490f3f016f29c7ef4862a728c8848732 100644 (file)
@@ -1,15 +1,5 @@
-/*!
- * jQuery UI Widget 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Widget
- */
-(function(b,j){if(b.cleanData){var k=b.cleanData;b.cleanData=function(a){for(var c=0,d;(d=a[c])!=null;c++)try{b(d).triggerHandler("remove")}catch(e){}k(a)}}else{var l=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(d){}});return l.call(b(this),a,c)})}}b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=
-function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options);b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):
-d;if(e&&d.charAt(0)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}):this.each(function(){var g=b.data(this,a);g?g.option(d||{})._init():b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=
-b.extend(true,{},this.options,this._getCreateOptions(),a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+
-"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a;if(arguments.length===0)return b.extend({},this.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}this._setOptions(d);return this},_setOptions:function(a){var c=this;b.each(a,function(d,e){c._setOption(d,e)});return this},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",
-c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a=b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery);
+/*! jQuery UI - v1.8.20 - 2012-04-30
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.widget.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){if(a.cleanData){var c=a.cleanData;a.cleanData=function(b){for(var d=0,e;(e=b[d])!=null;d++)try{a(e).triggerHandler("remove")}catch(f){}c(b)}}else{var d=a.fn.remove;a.fn.remove=function(b,c){return this.each(function(){return c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(b){}}),d.call(a(this),b,c)})}}a.widget=function(b,c,d){var e=b.split(".")[0],f;b=b.split(".")[1],f=e+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][f]=function(c){return!!a.data(c,b)},a[e]=a[e]||{},a[e][b]=function(a,b){arguments.length&&this._createWidget(a,b)};var g=new c;g.options=a.extend(!0,{},g.options),a[e][b].prototype=a.extend(!0,g,{namespace:e,widgetName:b,widgetEventPrefix:a[e][b].prototype.widgetEventPrefix||b,widgetBaseClass:f},d),a.widget.bridge(b,a[e][b])},a.widget.bridge=function(c,d){a.fn[c]=function(e){var f=typeof e=="string",g=Array.prototype.slice.call(arguments,1),h=this;return e=!f&&g.length?a.extend.apply(null,[!0,e].concat(g)):e,f&&e.charAt(0)==="_"?h:(f?this.each(function(){var d=a.data(this,c),f=d&&a.isFunction(d[e])?d[e].apply(d,g):d;if(f!==d&&f!==b)return h=f,!1}):this.each(function(){var b=a.data(this,c);b?b.option(e||{})._init():a.data(this,c,new d(e,this))}),h)}},a.Widget=function(a,b){arguments.length&&this._createWidget(a,b)},a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(b,c){a.data(c,this.widgetName,this),this.element=a(c),this.options=a.extend(!0,{},this.options,this._getCreateOptions(),b);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}),this._create(),this._trigger("create"),this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled")},widget:function(){return this.element},option:function(c,d){var e=c;if(arguments.length===0)return a.extend({},this.options);if(typeof c=="string"){if(d===b)return this.options[c];e={},e[c]=d}return this._setOptions(e),this},_setOptions:function(b){var c=this;return a.each(b,function(a,b){c._setOption(a,b)}),this},_setOption:function(a,b){return this.options[a]=b,a==="disabled"&&this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",b),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(b,c,d){var e,f,g=this.options[b];d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent;if(f)for(e in f)e in c||(c[e]=f[e]);return this.element.trigger(c,d),!(a.isFunction(g)&&g.call(this.element[0],c,d)===!1||c.isDefaultPrevented())}}})(jQuery);
\ No newline at end of file
index 5dc56a3d1c46c87b330d166c52a7f8eccc8093f6..0a631d61dddc8998aba660d8e30b37005dcaecf7 100644 (file)
@@ -83,7 +83,7 @@ function uploadSuccess(fileObj, serverData) {
        serverData = serverData.replace(/^<pre>(\d+)<\/pre>$/, '$1');
 
        // if async-upload returned an error message, place it in the media item div and return
        serverData = serverData.replace(/^<pre>(\d+)<\/pre>$/, '$1');
 
        // if async-upload returned an error message, place it in the media item div and return
-       if ( serverData.match('media-upload-error') ) {
+       if ( serverData.match(/media-upload-error|error-div/) ) {
                item.html(serverData);
                return;
        } else {
                item.html(serverData);
                return;
        } else {
@@ -138,7 +138,7 @@ function prepareMediaItemInit(fileObj) {
        jQuery('a.delete', item).click(function(){
                // Tell the server to delete it. TODO: handle exceptions
                jQuery.ajax({
        jQuery('a.delete', item).click(function(){
                // Tell the server to delete it. TODO: handle exceptions
                jQuery.ajax({
-                       url: 'admin-ajax.php',
+                       url: ajaxurl,
                        type: 'post',
                        success: deleteSuccess,
                        error: deleteError,
                        type: 'post',
                        success: deleteSuccess,
                        error: deleteError,
@@ -156,7 +156,7 @@ function prepareMediaItemInit(fileObj) {
        jQuery('a.undo', item).click(function(){
                // Tell the server to untrash it. TODO: handle exceptions
                jQuery.ajax({
        jQuery('a.undo', item).click(function(){
                // Tell the server to untrash it. TODO: handle exceptions
                jQuery.ajax({
-                       url: 'admin-ajax.php',
+                       url: ajaxurl,
                        type: 'post',
                        id: fileObj.id,
                        data: {
                        type: 'post',
                        id: fileObj.id,
                        data: {
@@ -346,9 +346,9 @@ jQuery(document).ready(function($){
                if ( target.is('input[type="radio"]') ) { // remember the last used image size and alignment
                        tr = target.closest('tr');
 
                if ( target.is('input[type="radio"]') ) { // remember the last used image size and alignment
                        tr = target.closest('tr');
 
-                       if ( $(tr).hasClass('align') )
+                       if ( tr.hasClass('align') )
                                setUserSetting('align', target.val());
                                setUserSetting('align', target.val());
-                       else if ( $(tr).hasClass('image-size') )
+                       else if ( tr.hasClass('image-size') )
                                setUserSetting('imgsize', target.val());
 
                } else if ( target.is('button.button') ) { // remember the last used image link url
                                setUserSetting('imgsize', target.val());
 
                } else if ( target.is('button.button') ) { // remember the last used image link url
@@ -357,7 +357,7 @@ jQuery(document).ready(function($){
 
                        if ( c && c[1] ) {
                                setUserSetting('urlbutton', c[1]);
 
                        if ( c && c[1] ) {
                                setUserSetting('urlbutton', c[1]);
-                               target.siblings('.urlfield').val( target.attr('title') );
+                               target.siblings('.urlfield').val( target.data('link-url') );
                        }
                } else if ( target.is('a.dismiss') ) {
                        target.parents('.media-item').fadeOut(200, function(){
                        }
                } else if ( target.is('a.dismiss') ) {
                        target.parents('.media-item').fadeOut(200, function(){
@@ -366,11 +366,11 @@ jQuery(document).ready(function($){
                } else if ( target.is('.upload-flash-bypass a') || target.is('a.uploader-html') ) { // switch uploader to html4
                        $('#media-items, p.submit, span.big-file-warning').css('display', 'none');
                        switchUploader(0);
                } else if ( target.is('.upload-flash-bypass a') || target.is('a.uploader-html') ) { // switch uploader to html4
                        $('#media-items, p.submit, span.big-file-warning').css('display', 'none');
                        switchUploader(0);
-                       return false;
+                       e.preventDefault();
                } else if ( target.is('.upload-html-bypass a') ) { // switch uploader to multi-file
                        $('#media-items, p.submit, span.big-file-warning').css('display', '');
                        switchUploader(1);
                } else if ( target.is('.upload-html-bypass a') ) { // switch uploader to multi-file
                        $('#media-items, p.submit, span.big-file-warning').css('display', '');
                        switchUploader(1);
-                       return false;
+                       e.preventDefault();
                } else if ( target.is('a.describe-toggle-on') ) { // Show
                        target.parent().addClass('open');
                        target.siblings('.slidetoggle').fadeIn(250, function(){
                } else if ( target.is('a.describe-toggle-on') ) { // Show
                        target.parent().addClass('open');
                        target.siblings('.slidetoggle').fadeIn(250, function(){
@@ -388,12 +388,12 @@ jQuery(document).ready(function($){
                                        }
                                }
                        });
                                        }
                                }
                        });
-                       return false;
+                       e.preventDefault();
                } else if ( target.is('a.describe-toggle-off') ) { // Hide
                        target.siblings('.slidetoggle').fadeOut(250, function(){
                                target.parent().removeClass('open');
                        });
                } else if ( target.is('a.describe-toggle-off') ) { // Hide
                        target.siblings('.slidetoggle').fadeOut(250, function(){
                                target.parent().removeClass('open');
                        });
-                       return false;
+                       e.preventDefault();
                }
        });
 
                }
        });
 
@@ -417,7 +417,7 @@ jQuery(document).ready(function($){
 
                        setResize( getUserSetting('upload_resize', false) );
 
 
                        setResize( getUserSetting('upload_resize', false) );
 
-                       if ( up.features.dragdrop ) {
+                       if ( up.features.dragdrop && ! $(document.body).hasClass('mobile') ) {
                                uploaddiv.addClass('drag-drop');
                                $('#drag-drop-area').bind('dragover.wp-uploader', function(){ // dragenter doesn't fire right :(
                                        uploaddiv.addClass('drag-over');
                                uploaddiv.addClass('drag-drop');
                                $('#drag-drop-area').bind('dragover.wp-uploader', function(){ // dragenter doesn't fire right :(
                                        uploaddiv.addClass('drag-over');
index 96076a24d93f5fa68513d59f9dd0b5d0cb846f6a..eb1787db32d5c8dcf64063ee448799385971a1ff 100644 (file)
@@ -1 +1 @@
-var topWin=window.dialogArguments||opener||parent||top,uploader,uploader_init;function fileDialogStart(){jQuery("#media-upload-error").empty()}function fileQueued(b){jQuery(".media-blank").remove();var a=jQuery("#media-items").children(),c=post_id||0;if(a.length==1){a.removeClass("open").find(".slidetoggle").slideUp(200)}jQuery("#media-items").append('<div id="media-item-'+b.id+'" class="media-item child-of-'+c+'"><div class="progress"><div class="percent">0%</div><div class="bar"></div></div><div class="filename original"> '+b.name+"</div></div>");jQuery("#insert-gallery").prop("disabled",true)}function uploadStart(){try{if(typeof topWin.tb_remove!="undefined"){topWin.jQuery("#TB_overlay").unbind("click",topWin.tb_remove)}}catch(a){}return true}function uploadProgress(a,b){var c=jQuery("#media-item-"+b.id);jQuery(".bar",c).width((200*b.loaded)/b.size);jQuery(".percent",c).html(b.percent+"%")}function fileUploading(c,d){var b=100*1024*1024,a=parseInt(c.settings.max_file_size,10);if(a>b&&d.size>b){setTimeout(function(){if(d.status==2&&d.loaded==0){wpFileError(d,pluploadL10n.big_upload_failed.replace("%1$s",'<a class="uploader-html" href="#">').replace("%2$s","</a>"));if(c.current&&c.current.file.id==d.id&&c.current.xhr.abort){c.current.xhr.abort()}}},10000)}}function updateMediaForm(){var a=jQuery("#media-items").children();if(a.length==1){a.addClass("open").find(".slidetoggle").show();jQuery(".insert-gallery").hide()}else{if(a.length>1){a.removeClass("open");jQuery(".insert-gallery").show()}}if(a.not(".media-blank").length>0){jQuery(".savebutton").show()}else{jQuery(".savebutton").hide()}}function uploadSuccess(c,a){var b=jQuery("#media-item-"+c.id);a=a.replace(/^<pre>(\d+)<\/pre>$/,"$1");if(a.match("media-upload-error")){b.html(a);return}else{jQuery(".percent",b).html(pluploadL10n.crunching)}prepareMediaItem(c,a);updateMediaForm();if(post_id&&b.hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(1*jQuery("#attachments-count").text()+1)}}function setResize(a){if(a){if(uploader.features.jpgresize){uploader.settings.resize={width:resize_width,height:resize_height,quality:100}}else{uploader.settings.multipart_params.image_resize=true}}else{delete (uploader.settings.resize);delete (uploader.settings.multipart_params.image_resize)}}function prepareMediaItem(c,a){var d=(typeof shortform=="undefined")?1:2,b=jQuery("#media-item-"+c.id);try{if(typeof topWin.tb_remove!="undefined"){topWin.jQuery("#TB_overlay").click(topWin.tb_remove)}}catch(g){}if(isNaN(a)||!a){b.append(a);prepareMediaItemInit(c)}else{b.load("async-upload.php",{attachment_id:a,fetch:d},function(){prepareMediaItemInit(c);updateMediaForm()})}}function prepareMediaItemInit(b){var a=jQuery("#media-item-"+b.id);jQuery(".thumbnail",a).clone().attr("class","pinkynail toggle").prependTo(a);jQuery(".filename.original",a).replaceWith(jQuery(".filename.new",a));jQuery("a.delete",a).click(function(){jQuery.ajax({url:"admin-ajax.php",type:"post",success:deleteSuccess,error:deleteError,id:b.id,data:{id:this.id.replace(/[^0-9]/g,""),action:"trash-post",_ajax_nonce:this.href.replace(/^.*wpnonce=/,"")}});return false});jQuery("a.undo",a).click(function(){jQuery.ajax({url:"admin-ajax.php",type:"post",id:b.id,data:{id:this.id.replace(/[^0-9]/g,""),action:"untrash-post",_ajax_nonce:this.href.replace(/^.*wpnonce=/,"")},success:function(d,e){var c=jQuery("#media-item-"+b.id);if(type=jQuery("#type-of-"+b.id).val()){jQuery("#"+type+"-counter").text(jQuery("#"+type+"-counter").text()-0+1)}if(post_id&&c.hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(jQuery("#attachments-count").text()-0+1)}jQuery(".filename .trashnotice",c).remove();jQuery(".filename .title",c).css("font-weight","normal");jQuery("a.undo",c).addClass("hidden");jQuery(".menu_order_input",c).show();c.css({backgroundColor:"#ceb"}).animate({backgroundColor:"#fff"},{queue:false,duration:500,complete:function(){jQuery(this).css({backgroundColor:""})}}).removeClass("undo")}});return false});jQuery("#media-item-"+b.id+".startopen").removeClass("startopen").addClass("open").find("slidetoggle").fadeIn()}function wpQueueError(a){jQuery("#media-upload-error").show().html('<div class="error"><p>'+a+"</p></div>")}function wpFileError(b,a){itemAjaxError(b.id,a)}function itemAjaxError(e,c){var b=jQuery("#media-item-"+e),a=b.find(".filename").text(),d=b.data("last-err");if(d==e){return}b.html('<div class="error-div"><a class="dismiss" href="#">'+pluploadL10n.dismiss+"</a><strong>"+pluploadL10n.error_uploading.replace("%s",jQuery.trim(a))+"</strong> "+c+"</div>").data("last-err",e)}function deleteSuccess(b,d){if(b=="-1"){return itemAjaxError(this.id,"You do not have permission. Has your session expired?")}if(b=="0"){return itemAjaxError(this.id,"Could not be deleted. Has it been deleted already?")}var c=this.id,a=jQuery("#media-item-"+c);if(type=jQuery("#type-of-"+c).val()){jQuery("#"+type+"-counter").text(jQuery("#"+type+"-counter").text()-1)}if(post_id&&a.hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(jQuery("#attachments-count").text()-1)}if(jQuery("form.type-form #media-items").children().length==1&&jQuery(".hidden","#media-items").length>0){jQuery(".toggle").toggle();jQuery(".slidetoggle").slideUp(200).siblings().removeClass("hidden")}jQuery(".toggle",a).toggle();jQuery(".slidetoggle",a).slideUp(200).siblings().removeClass("hidden");a.css({backgroundColor:"#faa"}).animate({backgroundColor:"#f4f4f4"},{queue:false,duration:500}).addClass("undo");jQuery(".filename:empty",a).remove();jQuery(".filename .title",a).css("font-weight","bold");jQuery(".filename",a).append('<span class="trashnotice"> '+pluploadL10n.deleted+" </span>").siblings("a.toggle").hide();jQuery(".filename",a).append(jQuery("a.undo",a).removeClass("hidden"));jQuery(".menu_order_input",a).hide();return}function deleteError(c,b,a){}function uploadComplete(){jQuery("#insert-gallery").prop("disabled",false)}function switchUploader(a){if(a){deleteUserSetting("uploader");jQuery(".media-upload-form").removeClass("html-uploader");if(typeof(uploader)=="object"){uploader.refresh()}}else{setUserSetting("uploader","1");jQuery(".media-upload-form").addClass("html-uploader")}}function dndHelper(a){var b=document.getElementById("dnd-helper");if(a){b.style.display="block"}else{b.style.display="none"}}function uploadError(d,f,c,e){var b=100*1024*1024,a;switch(f){case plupload.FAILED:wpFileError(d,pluploadL10n.upload_failed);break;case plupload.FILE_EXTENSION_ERROR:wpFileError(d,pluploadL10n.invalid_filetype);break;case plupload.FILE_SIZE_ERROR:uploadSizeError(e,d);break;case plupload.IMAGE_FORMAT_ERROR:wpFileError(d,pluploadL10n.not_an_image);break;case plupload.IMAGE_MEMORY_ERROR:wpFileError(d,pluploadL10n.image_memory_exceeded);break;case plupload.IMAGE_DIMENSIONS_ERROR:wpFileError(d,pluploadL10n.image_dimensions_exceeded);break;case plupload.GENERIC_ERROR:wpQueueError(pluploadL10n.upload_failed);break;case plupload.IO_ERROR:a=parseInt(e.settings.max_file_size,10);if(a>b&&d.size>b){wpFileError(d,pluploadL10n.big_upload_failed.replace("%1$s",'<a class="uploader-html" href="#">').replace("%2$s","</a>"))}else{wpQueueError(pluploadL10n.io_error)}break;case plupload.HTTP_ERROR:wpQueueError(pluploadL10n.http_error);break;case plupload.INIT_ERROR:jQuery(".media-upload-form").addClass("html-uploader");break;case plupload.SECURITY_ERROR:wpQueueError(pluploadL10n.security_error);break;default:wpFileError(d,pluploadL10n.default_error)}}function uploadSizeError(a,b,d){var c;if(d){c=pluploadL10n.big_upload_queued.replace("%s",b.name)+" "+pluploadL10n.big_upload_failed.replace("%1$s",'<a class="uploader-html" href="#">').replace("%2$s","</a>")}else{c=pluploadL10n.file_exceeds_size_limit.replace("%s",b.name)}jQuery("#media-items").append('<div id="media-item-'+b.id+'" class="media-item error"><p>'+c+"</p></div>");a.removeFile(b)}jQuery(document).ready(function(a){a(".media-upload-form").bind("click.uploader",function(f){var d=a(f.target),b,g;if(d.is('input[type="radio"]')){b=d.closest("tr");if(a(b).hasClass("align")){setUserSetting("align",d.val())}else{if(a(b).hasClass("image-size")){setUserSetting("imgsize",d.val())}}}else{if(d.is("button.button")){g=f.target.className||"";g=g.match(/url([^ '"]+)/);if(g&&g[1]){setUserSetting("urlbutton",g[1]);d.siblings(".urlfield").val(d.attr("title"))}}else{if(d.is("a.dismiss")){d.parents(".media-item").fadeOut(200,function(){a(this).remove()})}else{if(d.is(".upload-flash-bypass a")||d.is("a.uploader-html")){a("#media-items, p.submit, span.big-file-warning").css("display","none");switchUploader(0);return false}else{if(d.is(".upload-html-bypass a")){a("#media-items, p.submit, span.big-file-warning").css("display","");switchUploader(1);return false}else{if(d.is("a.describe-toggle-on")){d.parent().addClass("open");d.siblings(".slidetoggle").fadeIn(250,function(){var i=a(window).scrollTop(),e=a(window).height(),k=a(this).offset().top,j=a(this).height(),c,l;if(e&&k&&j){c=k+j;l=i+e;if(c>l){if(c-l<k-i){window.scrollBy(0,(c-l)+10)}else{window.scrollBy(0,k-i-40)}}}});return false}else{if(d.is("a.describe-toggle-off")){d.siblings(".slidetoggle").fadeOut(250,function(){d.parent().removeClass("open")});return false}}}}}}}});uploader_init=function(){uploader=new plupload.Uploader(wpUploaderInit);a("#image_resize").bind("change",function(){var b=a(this).prop("checked");setResize(b);if(b){setUserSetting("upload_resize","1")}else{deleteUserSetting("upload_resize")}});uploader.bind("Init",function(b){var c=a("#plupload-upload-ui");setResize(getUserSetting("upload_resize",false));if(b.features.dragdrop){c.addClass("drag-drop");a("#drag-drop-area").bind("dragover.wp-uploader",function(){c.addClass("drag-over")}).bind("dragleave.wp-uploader, drop.wp-uploader",function(){c.removeClass("drag-over")})}else{c.removeClass("drag-drop");a("#drag-drop-area").unbind(".wp-uploader")}});uploader.init();uploader.bind("FilesAdded",function(d,e){var c=100*1024*1024,b=parseInt(d.settings.max_file_size,10);a("#media-upload-error").html("");uploadStart();plupload.each(e,function(f){if(b>c&&f.size>c&&d.runtime!="html5"){uploadSizeError(d,f,true)}else{fileQueued(f)}});d.refresh();d.start()});uploader.bind("BeforeUpload",function(b,c){});uploader.bind("UploadFile",function(b,c){fileUploading(b,c)});uploader.bind("UploadProgress",function(b,c){uploadProgress(b,c)});uploader.bind("Error",function(b,c){uploadError(c.file,c.code,c.message,b);b.refresh()});uploader.bind("FileUploaded",function(b,d,c){uploadSuccess(d,c.response)});uploader.bind("UploadComplete",function(b,c){uploadComplete()})};if(typeof(wpUploaderInit)=="object"){uploader_init()}});
\ No newline at end of file
+var topWin=window.dialogArguments||opener||parent||top,uploader,uploader_init;function fileDialogStart(){jQuery("#media-upload-error").empty()}function fileQueued(b){jQuery(".media-blank").remove();var a=jQuery("#media-items").children(),c=post_id||0;if(a.length==1){a.removeClass("open").find(".slidetoggle").slideUp(200)}jQuery("#media-items").append('<div id="media-item-'+b.id+'" class="media-item child-of-'+c+'"><div class="progress"><div class="percent">0%</div><div class="bar"></div></div><div class="filename original"> '+b.name+"</div></div>");jQuery("#insert-gallery").prop("disabled",true)}function uploadStart(){try{if(typeof topWin.tb_remove!="undefined"){topWin.jQuery("#TB_overlay").unbind("click",topWin.tb_remove)}}catch(a){}return true}function uploadProgress(a,b){var c=jQuery("#media-item-"+b.id);jQuery(".bar",c).width((200*b.loaded)/b.size);jQuery(".percent",c).html(b.percent+"%")}function fileUploading(c,d){var b=100*1024*1024,a=parseInt(c.settings.max_file_size,10);if(a>b&&d.size>b){setTimeout(function(){var e;if(d.status<3&&d.loaded==0){wpFileError(d,pluploadL10n.big_upload_failed.replace("%1$s",'<a class="uploader-html" href="#">').replace("%2$s","</a>"));c.stop();c.removeFile(d);c.start()}},10000)}}function updateMediaForm(){var a=jQuery("#media-items").children();if(a.length==1){a.addClass("open").find(".slidetoggle").show();jQuery(".insert-gallery").hide()}else{if(a.length>1){a.removeClass("open");jQuery(".insert-gallery").show()}}if(a.not(".media-blank").length>0){jQuery(".savebutton").show()}else{jQuery(".savebutton").hide()}}function uploadSuccess(c,a){var b=jQuery("#media-item-"+c.id);a=a.replace(/^<pre>(\d+)<\/pre>$/,"$1");if(a.match(/media-upload-error|error-div/)){b.html(a);return}else{jQuery(".percent",b).html(pluploadL10n.crunching)}prepareMediaItem(c,a);updateMediaForm();if(post_id&&b.hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(1*jQuery("#attachments-count").text()+1)}}function setResize(a){if(a){if(uploader.features.jpgresize){uploader.settings.resize={width:resize_width,height:resize_height,quality:100}}else{uploader.settings.multipart_params.image_resize=true}}else{delete (uploader.settings.resize);delete (uploader.settings.multipart_params.image_resize)}}function prepareMediaItem(c,a){var d=(typeof shortform=="undefined")?1:2,b=jQuery("#media-item-"+c.id);try{if(typeof topWin.tb_remove!="undefined"){topWin.jQuery("#TB_overlay").click(topWin.tb_remove)}}catch(g){}if(isNaN(a)||!a){b.append(a);prepareMediaItemInit(c)}else{b.load("async-upload.php",{attachment_id:a,fetch:d},function(){prepareMediaItemInit(c);updateMediaForm()})}}function prepareMediaItemInit(b){var a=jQuery("#media-item-"+b.id);jQuery(".thumbnail",a).clone().attr("class","pinkynail toggle").prependTo(a);jQuery(".filename.original",a).replaceWith(jQuery(".filename.new",a));jQuery("a.delete",a).click(function(){jQuery.ajax({url:ajaxurl,type:"post",success:deleteSuccess,error:deleteError,id:b.id,data:{id:this.id.replace(/[^0-9]/g,""),action:"trash-post",_ajax_nonce:this.href.replace(/^.*wpnonce=/,"")}});return false});jQuery("a.undo",a).click(function(){jQuery.ajax({url:ajaxurl,type:"post",id:b.id,data:{id:this.id.replace(/[^0-9]/g,""),action:"untrash-post",_ajax_nonce:this.href.replace(/^.*wpnonce=/,"")},success:function(d,e){var c=jQuery("#media-item-"+b.id);if(type=jQuery("#type-of-"+b.id).val()){jQuery("#"+type+"-counter").text(jQuery("#"+type+"-counter").text()-0+1)}if(post_id&&c.hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(jQuery("#attachments-count").text()-0+1)}jQuery(".filename .trashnotice",c).remove();jQuery(".filename .title",c).css("font-weight","normal");jQuery("a.undo",c).addClass("hidden");jQuery(".menu_order_input",c).show();c.css({backgroundColor:"#ceb"}).animate({backgroundColor:"#fff"},{queue:false,duration:500,complete:function(){jQuery(this).css({backgroundColor:""})}}).removeClass("undo")}});return false});jQuery("#media-item-"+b.id+".startopen").removeClass("startopen").addClass("open").find("slidetoggle").fadeIn()}function wpQueueError(a){jQuery("#media-upload-error").show().html('<div class="error"><p>'+a+"</p></div>")}function wpFileError(b,a){itemAjaxError(b.id,a)}function itemAjaxError(e,c){var b=jQuery("#media-item-"+e),a=b.find(".filename").text(),d=b.data("last-err");if(d==e){return}b.html('<div class="error-div"><a class="dismiss" href="#">'+pluploadL10n.dismiss+"</a><strong>"+pluploadL10n.error_uploading.replace("%s",jQuery.trim(a))+"</strong> "+c+"</div>").data("last-err",e)}function deleteSuccess(b,d){if(b=="-1"){return itemAjaxError(this.id,"You do not have permission. Has your session expired?")}if(b=="0"){return itemAjaxError(this.id,"Could not be deleted. Has it been deleted already?")}var c=this.id,a=jQuery("#media-item-"+c);if(type=jQuery("#type-of-"+c).val()){jQuery("#"+type+"-counter").text(jQuery("#"+type+"-counter").text()-1)}if(post_id&&a.hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(jQuery("#attachments-count").text()-1)}if(jQuery("form.type-form #media-items").children().length==1&&jQuery(".hidden","#media-items").length>0){jQuery(".toggle").toggle();jQuery(".slidetoggle").slideUp(200).siblings().removeClass("hidden")}jQuery(".toggle",a).toggle();jQuery(".slidetoggle",a).slideUp(200).siblings().removeClass("hidden");a.css({backgroundColor:"#faa"}).animate({backgroundColor:"#f4f4f4"},{queue:false,duration:500}).addClass("undo");jQuery(".filename:empty",a).remove();jQuery(".filename .title",a).css("font-weight","bold");jQuery(".filename",a).append('<span class="trashnotice"> '+pluploadL10n.deleted+" </span>").siblings("a.toggle").hide();jQuery(".filename",a).append(jQuery("a.undo",a).removeClass("hidden"));jQuery(".menu_order_input",a).hide();return}function deleteError(c,b,a){}function uploadComplete(){jQuery("#insert-gallery").prop("disabled",false)}function switchUploader(a){if(a){deleteUserSetting("uploader");jQuery(".media-upload-form").removeClass("html-uploader");if(typeof(uploader)=="object"){uploader.refresh()}}else{setUserSetting("uploader","1");jQuery(".media-upload-form").addClass("html-uploader")}}function dndHelper(a){var b=document.getElementById("dnd-helper");if(a){b.style.display="block"}else{b.style.display="none"}}function uploadError(d,f,c,e){var b=100*1024*1024,a;switch(f){case plupload.FAILED:wpFileError(d,pluploadL10n.upload_failed);break;case plupload.FILE_EXTENSION_ERROR:wpFileError(d,pluploadL10n.invalid_filetype);break;case plupload.FILE_SIZE_ERROR:uploadSizeError(e,d);break;case plupload.IMAGE_FORMAT_ERROR:wpFileError(d,pluploadL10n.not_an_image);break;case plupload.IMAGE_MEMORY_ERROR:wpFileError(d,pluploadL10n.image_memory_exceeded);break;case plupload.IMAGE_DIMENSIONS_ERROR:wpFileError(d,pluploadL10n.image_dimensions_exceeded);break;case plupload.GENERIC_ERROR:wpQueueError(pluploadL10n.upload_failed);break;case plupload.IO_ERROR:a=parseInt(e.settings.max_file_size,10);if(a>b&&d.size>b){wpFileError(d,pluploadL10n.big_upload_failed.replace("%1$s",'<a class="uploader-html" href="#">').replace("%2$s","</a>"))}else{wpQueueError(pluploadL10n.io_error)}break;case plupload.HTTP_ERROR:wpQueueError(pluploadL10n.http_error);break;case plupload.INIT_ERROR:jQuery(".media-upload-form").addClass("html-uploader");break;case plupload.SECURITY_ERROR:wpQueueError(pluploadL10n.security_error);break;default:wpFileError(d,pluploadL10n.default_error)}}function uploadSizeError(a,b,d){var c;if(d){c=pluploadL10n.big_upload_queued.replace("%s",b.name)+" "+pluploadL10n.big_upload_failed.replace("%1$s",'<a class="uploader-html" href="#">').replace("%2$s","</a>")}else{c=pluploadL10n.file_exceeds_size_limit.replace("%s",b.name)}jQuery("#media-items").append('<div id="media-item-'+b.id+'" class="media-item error"><p>'+c+"</p></div>");a.removeFile(b)}jQuery(document).ready(function(a){a(".media-upload-form").bind("click.uploader",function(f){var d=a(f.target),b,g;if(d.is('input[type="radio"]')){b=d.closest("tr");if(b.hasClass("align")){setUserSetting("align",d.val())}else{if(b.hasClass("image-size")){setUserSetting("imgsize",d.val())}}}else{if(d.is("button.button")){g=f.target.className||"";g=g.match(/url([^ '"]+)/);if(g&&g[1]){setUserSetting("urlbutton",g[1]);d.siblings(".urlfield").val(d.data("link-url"))}}else{if(d.is("a.dismiss")){d.parents(".media-item").fadeOut(200,function(){a(this).remove()})}else{if(d.is(".upload-flash-bypass a")||d.is("a.uploader-html")){a("#media-items, p.submit, span.big-file-warning").css("display","none");switchUploader(0);f.preventDefault()}else{if(d.is(".upload-html-bypass a")){a("#media-items, p.submit, span.big-file-warning").css("display","");switchUploader(1);f.preventDefault()}else{if(d.is("a.describe-toggle-on")){d.parent().addClass("open");d.siblings(".slidetoggle").fadeIn(250,function(){var i=a(window).scrollTop(),e=a(window).height(),k=a(this).offset().top,j=a(this).height(),c,l;if(e&&k&&j){c=k+j;l=i+e;if(c>l){if(c-l<k-i){window.scrollBy(0,(c-l)+10)}else{window.scrollBy(0,k-i-40)}}}});f.preventDefault()}else{if(d.is("a.describe-toggle-off")){d.siblings(".slidetoggle").fadeOut(250,function(){d.parent().removeClass("open")});f.preventDefault()}}}}}}}});uploader_init=function(){uploader=new plupload.Uploader(wpUploaderInit);a("#image_resize").bind("change",function(){var b=a(this).prop("checked");setResize(b);if(b){setUserSetting("upload_resize","1")}else{deleteUserSetting("upload_resize")}});uploader.bind("Init",function(b){var c=a("#plupload-upload-ui");setResize(getUserSetting("upload_resize",false));if(b.features.dragdrop&&!a(document.body).hasClass("mobile")){c.addClass("drag-drop");a("#drag-drop-area").bind("dragover.wp-uploader",function(){c.addClass("drag-over")}).bind("dragleave.wp-uploader, drop.wp-uploader",function(){c.removeClass("drag-over")})}else{c.removeClass("drag-drop");a("#drag-drop-area").unbind(".wp-uploader")}});uploader.init();uploader.bind("FilesAdded",function(d,e){var c=100*1024*1024,b=parseInt(d.settings.max_file_size,10);a("#media-upload-error").html("");uploadStart();plupload.each(e,function(f){if(b>c&&f.size>c&&d.runtime!="html5"){uploadSizeError(d,f,true)}else{fileQueued(f)}});d.refresh();d.start()});uploader.bind("BeforeUpload",function(b,c){});uploader.bind("UploadFile",function(b,c){fileUploading(b,c)});uploader.bind("UploadProgress",function(b,c){uploadProgress(b,c)});uploader.bind("Error",function(b,c){uploadError(c.file,c.code,c.message,b);b.refresh()});uploader.bind("FileUploaded",function(b,d,c){uploadSuccess(d,c.response)});uploader.bind("UploadComplete",function(b,c){uploadComplete()})};if(typeof(wpUploaderInit)=="object"){uploader_init()}});
\ No newline at end of file
diff --git a/wp-includes/js/plupload/wp-plupload.dev.js b/wp-includes/js/plupload/wp-plupload.dev.js
new file mode 100644 (file)
index 0000000..94a5b25
--- /dev/null
@@ -0,0 +1,220 @@
+if ( typeof wp === 'undefined' )
+       var wp = {};
+
+(function( exports, $ ) {
+       var Uploader;
+
+       if ( typeof _wpPluploadSettings === 'undefined' )
+               return;
+
+       /*
+        * An object that helps create a WordPress uploader using plupload.
+        *
+        * @param options - object - The options passed to the new plupload instance.
+        *    Requires the following parameters:
+        *    - container - The id of uploader container.
+        *    - browser   - The id of button to trigger the file select.
+        *    - dropzone  - The id of file drop target.
+        *    - plupload  - An object of parameters to pass to the plupload instance.
+        *    - params    - An object of parameters to pass to $_POST when uploading the file.
+        *                  Extends this.plupload.multipart_params under the hood.
+        *
+        * @param attributes - object - Attributes and methods for this specific instance.
+        */
+       Uploader = function( options ) {
+               var self = this,
+                       elements = {
+                               container: 'container',
+                               browser:   'browse_button',
+                               dropzone:  'drop_element'
+                       },
+                       key;
+
+               this.supports = {
+                       upload: Uploader.browser.supported
+               };
+
+               this.supported = this.supports.upload;
+
+               if ( ! this.supported )
+                       return;
+
+               // Use deep extend to ensure that multipart_params and other objects are cloned.
+               this.plupload = $.extend( true, { multipart_params: {} }, Uploader.defaults );
+               this.container = document.body; // Set default container.
+
+               // Extend the instance with options
+               //
+               // Use deep extend to allow options.plupload to override individual
+               // default plupload keys.
+               $.extend( true, this, options );
+
+               // Proxy all methods so this always refers to the current instance.
+               for ( key in this ) {
+                       if ( $.isFunction( this[ key ] ) )
+                               this[ key ] = $.proxy( this[ key ], this );
+               }
+
+               // Ensure all elements are jQuery elements and have id attributes
+               // Then set the proper plupload arguments to the ids.
+               for ( key in elements ) {
+                       if ( ! this[ key ] )
+                               continue;
+
+                       this[ key ] = $( this[ key ] ).first();
+
+                       if ( ! this[ key ].length ) {
+                               delete this[ key ];
+                               continue;
+                       }
+
+                       if ( ! this[ key ].prop('id') )
+                               this[ key ].prop( 'id', '__wp-uploader-id-' + Uploader.uuid++ );
+                       this.plupload[ elements[ key ] ] = this[ key ].prop('id');
+               }
+
+               this.uploader = new plupload.Uploader( this.plupload );
+               delete this.plupload;
+
+               // Set default params and remove this.params alias.
+               this.param( this.params || {} );
+               delete this.params;
+
+               this.uploader.init();
+
+               this.supports.dragdrop = this.uploader.features.dragdrop && ! Uploader.browser.mobile;
+
+               // Generate drag/drop helper classes.
+               (function( dropzone, supported ) {
+                       var sensitivity = 50,
+                               active;
+
+                       if ( ! dropzone )
+                               return;
+
+                       dropzone.toggleClass( 'supports-drag-drop', !! supported );
+
+                       if ( ! supported )
+                               return dropzone.unbind('.wp-uploader');
+
+                       // 'dragenter' doesn't fire correctly,
+                       // simulate it with a limited 'dragover'
+                       dropzone.bind( 'dragover.wp-uploader', function(){
+                               if ( active )
+                                       return;
+
+                               dropzone.addClass('drag-over');
+                               active = true;
+                       });
+
+                       dropzone.bind('dragleave.wp-uploader, drop.wp-uploader', function(){
+                               active = false;
+                               dropzone.removeClass('drag-over');
+                       });
+               }( this.dropzone, this.supports.dragdrop ));
+
+               this.browser.on( 'mouseenter', this.refresh );
+
+               this.uploader.bind( 'UploadProgress', this.progress );
+
+               this.uploader.bind( 'FileUploaded', function( up, file, response ) {
+                       try {
+                               response = JSON.parse( response.response );
+                       } catch ( e ) {
+                               return self.error( pluploadL10n.default_error, e );
+                       }
+
+                       if ( ! response || ! response.type || ! response.data )
+                               return self.error( pluploadL10n.default_error );
+
+                       if ( 'error' === response.type )
+                               return self.error( response.data.message, response.data );
+
+                       if ( 'success' === response.type )
+                               return self.success( response.data );
+
+               });
+
+               this.uploader.bind( 'Error', function( up, error ) {
+                       var message = pluploadL10n.default_error,
+                               key;
+
+                       // Check for plupload errors.
+                       for ( key in Uploader.errorMap ) {
+                               if ( error.code === plupload[ key ] ) {
+                                       message = Uploader.errorMap[ key ];
+                                       break;
+                               }
+                       }
+
+                       self.error( message, error );
+                       up.refresh();
+               });
+
+               this.uploader.bind( 'FilesAdded', function( up, files ) {
+                       $.each( files, function() {
+                               self.added( this );
+                       });
+
+                       up.refresh();
+                       up.start();
+               });
+
+               this.init();
+       };
+
+       // Adds the 'defaults' and 'browser' properties.
+       $.extend( Uploader, _wpPluploadSettings );
+
+       Uploader.uuid = 0;
+
+       Uploader.errorMap = {
+               'FAILED':                 pluploadL10n.upload_failed,
+               'FILE_EXTENSION_ERROR':   pluploadL10n.invalid_filetype,
+               // 'FILE_SIZE_ERROR': '',
+               'IMAGE_FORMAT_ERROR':     pluploadL10n.not_an_image,
+               'IMAGE_MEMORY_ERROR':     pluploadL10n.image_memory_exceeded,
+               'IMAGE_DIMENSIONS_ERROR': pluploadL10n.image_dimensions_exceeded,
+               'GENERIC_ERROR':          pluploadL10n.upload_failed,
+               'IO_ERROR':               pluploadL10n.io_error,
+               'HTTP_ERROR':             pluploadL10n.http_error,
+               'SECURITY_ERROR':         pluploadL10n.security_error
+       };
+
+       $.extend( Uploader.prototype, {
+               /**
+                * Acts as a shortcut to extending the uploader's multipart_params object.
+                *
+                * param( key )
+                *    Returns the value of the key.
+                *
+                * param( key, value )
+                *    Sets the value of a key.
+                *
+                * param( map )
+                *    Sets values for a map of data.
+                */
+               param: function( key, value ) {
+                       if ( arguments.length === 1 && typeof key === 'string' )
+                               return this.uploader.settings.multipart_params[ key ];
+
+                       if ( arguments.length > 1 ) {
+                               this.uploader.settings.multipart_params[ key ] = value;
+                       } else {
+                               $.extend( this.uploader.settings.multipart_params, key );
+                       }
+               },
+
+               init:     function() {},
+               error:    function() {},
+               success:  function() {},
+               added:    function() {},
+               progress: function() {},
+               complete: function() {},
+               refresh:  function() {
+                       this.uploader.refresh();
+               }
+       });
+
+       exports.Uploader = Uploader;
+})( wp, jQuery );
diff --git a/wp-includes/js/plupload/wp-plupload.js b/wp-includes/js/plupload/wp-plupload.js
new file mode 100644 (file)
index 0000000..9aa355a
--- /dev/null
@@ -0,0 +1 @@
+if(typeof wp==="undefined"){var wp={}}(function(a,b){var c;if(typeof _wpPluploadSettings==="undefined"){return}c=function(e){var d=this,g={container:"container",browser:"browse_button",dropzone:"drop_element"},f;this.supports={upload:c.browser.supported};this.supported=this.supports.upload;if(!this.supported){return}this.plupload=b.extend(true,{multipart_params:{}},c.defaults);this.container=document.body;b.extend(true,this,e);for(f in this){if(b.isFunction(this[f])){this[f]=b.proxy(this[f],this)}}for(f in g){if(!this[f]){continue}this[f]=b(this[f]).first();if(!this[f].length){delete this[f];continue}if(!this[f].prop("id")){this[f].prop("id","__wp-uploader-id-"+c.uuid++)}this.plupload[g[f]]=this[f].prop("id")}this.uploader=new plupload.Uploader(this.plupload);delete this.plupload;this.param(this.params||{});delete this.params;this.uploader.init();this.supports.dragdrop=this.uploader.features.dragdrop&&!c.browser.mobile;(function(j,h){var i=50,k;if(!j){return}j.toggleClass("supports-drag-drop",!!h);if(!h){return j.unbind(".wp-uploader")}j.bind("dragover.wp-uploader",function(){if(k){return}j.addClass("drag-over");k=true});j.bind("dragleave.wp-uploader, drop.wp-uploader",function(){k=false;j.removeClass("drag-over")})}(this.dropzone,this.supports.dragdrop));this.browser.on("mouseenter",this.refresh);this.uploader.bind("UploadProgress",this.progress);this.uploader.bind("FileUploaded",function(h,j,i){try{i=JSON.parse(i.response)}catch(k){return d.error(pluploadL10n.default_error,k)}if(!i||!i.type||!i.data){return d.error(pluploadL10n.default_error)}if("error"===i.type){return d.error(i.data.message,i.data)}if("success"===i.type){return d.success(i.data)}});this.uploader.bind("Error",function(h,i){var k=pluploadL10n.default_error,j;for(j in c.errorMap){if(i.code===plupload[j]){k=c.errorMap[j];break}}d.error(k,i);h.refresh()});this.uploader.bind("FilesAdded",function(h,i){b.each(i,function(){d.added(this)});h.refresh();h.start()});this.init()};b.extend(c,_wpPluploadSettings);c.uuid=0;c.errorMap={FAILED:pluploadL10n.upload_failed,FILE_EXTENSION_ERROR:pluploadL10n.invalid_filetype,IMAGE_FORMAT_ERROR:pluploadL10n.not_an_image,IMAGE_MEMORY_ERROR:pluploadL10n.image_memory_exceeded,IMAGE_DIMENSIONS_ERROR:pluploadL10n.image_dimensions_exceeded,GENERIC_ERROR:pluploadL10n.upload_failed,IO_ERROR:pluploadL10n.io_error,HTTP_ERROR:pluploadL10n.http_error,SECURITY_ERROR:pluploadL10n.security_error};b.extend(c.prototype,{param:function(d,e){if(arguments.length===1&&typeof d==="string"){return this.uploader.settings.multipart_params[d]}if(arguments.length>1){this.uploader.settings.multipart_params[d]=e}else{b.extend(this.uploader.settings.multipart_params,d)}},init:function(){},error:function(){},success:function(){},added:function(){},progress:function(){},complete:function(){},refresh:function(){this.uploader.refresh()}});a.Uploader=c})(wp,jQuery);
\ No newline at end of file
index 903f320994b4dc5f3c6dcb821b835d7d13312c9a..3759c90c19a3ee280cd9e54add1d51720ff59d3d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Quicktags
 /*
  * Quicktags
- * 
+ *
  * This is the HTML editor in WordPress. It can be attached to any textarea and will
  * append a toolbar above it. This script is self-contained (does not require external libraries).
  *
  * This is the HTML editor in WordPress. It can be attached to any textarea and will
  * append a toolbar above it. This script is self-contained (does not require external libraries).
  *
@@ -51,7 +51,7 @@ function quicktags(settings) {
 
 /**
  * Inserts content at the caret in the active editor (textarea)
 
 /**
  * Inserts content at the caret in the active editor (textarea)
- * 
+ *
  * Added for back compatibility
  * @see QTags.insertContent()
  */
  * Added for back compatibility
  * @see QTags.insertContent()
  */
@@ -61,12 +61,12 @@ function edInsertContent(bah, txt) {
 
 /**
  * Adds a button to all instances of the editor
 
 /**
  * Adds a button to all instances of the editor
- * 
+ *
  * Added for back compatibility, use QTags.addButton() as it gives more flexibility like type of button, button placement, etc.
  * @see QTags.addButton()
  */
 function edButton(id, display, tagStart, tagEnd, access, open) {
  * Added for back compatibility, use QTags.addButton() as it gives more flexibility like type of button, button placement, etc.
  * @see QTags.addButton()
  */
 function edButton(id, display, tagStart, tagEnd, access, open) {
-       return QTags.addButton( id, display, tagStart, tagEnd, access, '', -1 );        
+       return QTags.addButton( id, display, tagStart, tagEnd, access, '', -1 );
 }
 
 (function(){
 }
 
 (function(){
@@ -264,6 +264,12 @@ function edButton(id, display, tagStart, tagEnd, access, open) {
                                html += theButtons['fullscreen'].html(name + '_');
                        }
 
                                html += theButtons['fullscreen'].html(name + '_');
                        }
 
+
+                       if ( 'rtl' == document.getElementsByTagName('html')[0].dir ) {
+                               theButtons['textdirection'] = new qt.TextDirectionButton();
+                               html += theButtons['textdirection'].html(name + '_');
+                       }
+
                        ed.toolbar.innerHTML = html;
                        ed.theButtons = theButtons;
                }
                        ed.toolbar.innerHTML = html;
                        ed.theButtons = theButtons;
                }
@@ -272,7 +278,7 @@ function edButton(id, display, tagStart, tagEnd, access, open) {
 
        /**
         * Main API function for adding a button to Quicktags
 
        /**
         * Main API function for adding a button to Quicktags
-        * 
+        *
         * Adds qt.Button or qt.TagButton depending on the args. The first three args are always required.
         * To be able to add button(s) to Quicktags, your script should be enqueued as dependent
         * on "quicktags" and outputted in the footer. If you are echoing JS directly from PHP,
         * Adds qt.Button or qt.TagButton depending on the args. The first three args are always required.
         * To be able to add button(s) to Quicktags, your script should be enqueued as dependent
         * on "quicktags" and outputted in the footer. If you are echoing JS directly from PHP,
@@ -291,14 +297,14 @@ function edButton(id, display, tagStart, tagEnd, access, open) {
         * @param arg1 string || function required Either a starting tag to be inserted like "<span>" or a callback that is executed when the button is clicked.
         * @param arg2 string optional Ending tag like "</span>"
         * @param access_key string optional Access key for the button.
         * @param arg1 string || function required Either a starting tag to be inserted like "<span>" or a callback that is executed when the button is clicked.
         * @param arg2 string optional Ending tag like "</span>"
         * @param access_key string optional Access key for the button.
-        * @param title string optional Button's title="..." 
+        * @param title string optional Button's title="..."
         * @param priority int optional Number representing the desired position of the button in the toolbar. 1 - 9 = first, 11 - 19 = second, 21 - 29 = third, etc.
         * @param instance string optional Limit the button to a specifric instance of Quicktags, add to all instances if not present.
         * @return mixed null or the button object that is needed for back-compat.
         * @param priority int optional Number representing the desired position of the button in the toolbar. 1 - 9 = first, 11 - 19 = second, 21 - 29 = third, etc.
         * @param instance string optional Limit the button to a specifric instance of Quicktags, add to all instances if not present.
         * @return mixed null or the button object that is needed for back-compat.
-        */                             
+        */
        qt.addButton = function( id, display, arg1, arg2, access_key, title, priority, instance ) {
                var btn;
        qt.addButton = function( id, display, arg1, arg2, access_key, title, priority, instance ) {
                var btn;
-               
+
                if ( !id || !display )
                        return;
 
                if ( !id || !display )
                        return;
 
@@ -599,12 +605,27 @@ function edButton(id, display, tagStart, tagEnd, access, open) {
        };
        qt.FullscreenButton.prototype = new qt.Button();
        qt.FullscreenButton.prototype.callback = function(e, c) {
        };
        qt.FullscreenButton.prototype = new qt.Button();
        qt.FullscreenButton.prototype.callback = function(e, c) {
-               if ( c.id != 'content' || typeof(fullscreen) == 'undefined' )
+               if ( !c.id || typeof(fullscreen) == 'undefined' )
                        return;
 
                fullscreen.on();
        };
 
                        return;
 
                fullscreen.on();
        };
 
+       qt.TextDirectionButton = function() {
+               qt.Button.call(this, 'textdirection', quicktagsL10n.textdirection, '', quicktagsL10n.toggleTextdirection)
+       };
+       qt.TextDirectionButton.prototype = new qt.Button();
+       qt.TextDirectionButton.prototype.callback = function(e, c) {
+               var isRTL = ( 'rtl' == document.getElementsByTagName('html')[0].dir ),
+                       currentDirection = c.style.direction;
+
+               if ( ! currentDirection )
+                       currentDirection = ( isRTL ) ? 'rtl' : 'ltr';
+
+               c.style.direction = ( 'rtl' == currentDirection ) ? 'ltr' : 'rtl';
+               c.focus();
+       }
+
        // ensure backward compatibility
        edButtons[10] = new qt.TagButton('strong','b','<strong>','</strong>','b');
        edButtons[20] = new qt.TagButton('em','i','<em>','</em>','i'),
        // ensure backward compatibility
        edButtons[10] = new qt.TagButton('strong','b','<strong>','</strong>','b');
        edButtons[20] = new qt.TagButton('em','i','<em>','</em>','i'),
index fb2ed4fef57126c6df7c1d1dd186af85c2ddabd1..d66d123d1a54ec390b253971f0ec26579e1e159b 100644 (file)
@@ -1 +1 @@
-var QTags,edButtons=[],edCanvas,edAddTag=function(){},edCheckOpenTags=function(){},edCloseAllTags=function(){},edInsertImage=function(){},edInsertLink=function(){},edInsertTag=function(){},edLink=function(){},edQuickLink=function(){},edRemoveTag=function(){},edShowButton=function(){},edShowLinks=function(){},edSpell=function(){},edToolbar=function(){};function quicktags(a){return new QTags(a)}function edInsertContent(b,a){return QTags.insertContent(a)}function edButton(f,e,c,b,a,d){return QTags.addButton(f,e,c,b,a,"",-1)}(function(){var b=function(g){var f,e,d;if(typeof jQuery!="undefined"){jQuery(document).ready(g)}else{f=b;f.funcs=[];f.ready=function(){if(!f.isReady){f.isReady=true;for(e=0;e<f.funcs.length;e++){f.funcs[e]()}}};if(f.isReady){g()}else{f.funcs.push(g)}if(!f.eventAttached){if(document.addEventListener){d=function(){document.removeEventListener("DOMContentLoaded",d,false);f.ready()};document.addEventListener("DOMContentLoaded",d,false);window.addEventListener("load",f.ready,false)}else{if(document.attachEvent){d=function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",d);f.ready()}};document.attachEvent("onreadystatechange",d);window.attachEvent("onload",f.ready);(function(){try{document.documentElement.doScroll("left")}catch(h){setTimeout(arguments.callee,50);return}f.ready()})()}}f.eventAttached=true}}},a=(function(){var d=new Date(),e;e=function(f){var g=f.toString();if(g.length<2){g="0"+g}return g};return d.getUTCFullYear()+"-"+e(d.getUTCMonth()+1)+"-"+e(d.getUTCDate())+"T"+e(d.getUTCHours())+":"+e(d.getUTCMinutes())+":"+e(d.getUTCSeconds())+"+00:00"})(),c;c=QTags=function(j){if(typeof(j)=="string"){j={id:j}}else{if(typeof(j)!="object"){return false}}var i=this,k=j.id,h=document.getElementById(k),g="qt_"+k,d,f,e;if(!k||!h){return false}i.name=g;i.id=k;i.canvas=h;i.settings=j;if(k=="content"&&typeof(adminpage)=="string"&&(adminpage=="post-new-php"||adminpage=="post-php")){edCanvas=h;e="ed_toolbar"}else{e=g+"_toolbar"}d=document.createElement("div");d.id=e;d.className="quicktags-toolbar";h.parentNode.insertBefore(d,h);i.toolbar=d;f=function(n){n=n||window.event;var m=n.target||n.srcElement,l;if(/ ed_button /.test(" "+m.className+" ")){i.canvas=h=document.getElementById(k);l=m.id.replace(g+"_","");if(i.theButtons[l]){i.theButtons[l].callback.call(i.theButtons[l],m,h,i)}}};if(d.addEventListener){d.addEventListener("click",f,false)}else{if(d.attachEvent){d.attachEvent("onclick",f)}}i.getButton=function(l){return i.theButtons[l]};i.getButtonElement=function(l){return document.getElementById(g+"_"+l)};c.instances[k]=i;if(!c.instances[0]){c.instances[0]=c.instances[k];b(function(){c._buttonsInit()})}};c.instances={};c.getInstance=function(d){return c.instances[d]};c._buttonsInit=function(){var p=this,g,e,h,o,m,l,n,f,k,d,j=",strong,em,link,block,del,ins,img,ul,ol,li,code,more,spell,close,";for(l in p.instances){if(l==0){continue}n=p.instances[l];g=n.canvas;e=n.name;h=n.settings;m="";o={};d="";if(h.buttons){d=","+h.buttons+","}for(k in edButtons){if(!edButtons[k]){continue}f=edButtons[k].id;if(d&&j.indexOf(","+f+",")!=-1&&d.indexOf(","+f+",")==-1){continue}if(!edButtons[k].instance||edButtons[k].instance==l){o[f]=edButtons[k];if(edButtons[k].html){m+=edButtons[k].html(e+"_")}}}if(d&&d.indexOf(",fullscreen,")!=-1){o.fullscreen=new c.FullscreenButton();m+=o.fullscreen.html(e+"_")}n.toolbar.innerHTML=m;n.theButtons=o}p.buttonsInitDone=true};c.addButton=function(e,i,h,g,d,j,k,l){var f;if(!e||!i){return}k=k||0;g=g||"";if(typeof(h)==="function"){f=new c.Button(e,i,d,j,l);f.callback=h}else{if(typeof(h)==="string"){f=new c.TagButton(e,i,h,g,d,j,l)}else{return}}if(k==-1){return f}if(k>0){while(typeof(edButtons[k])!="undefined"){k++}edButtons[k]=f}else{edButtons[edButtons.length]=f}if(this.buttonsInitDone){this._buttonsInit()}};c.insertContent=function(g){var h,f,e,i,j,d=document.getElementById(wpActiveEditor);if(!d){return false}if(document.selection){d.focus();h=document.selection.createRange();h.text=g;d.focus()}else{if(d.selectionStart||d.selectionStart=="0"){j=d.value;f=d.selectionStart;e=d.selectionEnd;i=d.scrollTop;d.value=j.substring(0,f)+g+j.substring(e,j.length);d.focus();d.selectionStart=f+g.length;d.selectionEnd=f+g.length;d.scrollTop=i}else{d.value+=g;d.focus()}}return true};c.Button=function(i,g,e,h,d){var f=this;f.id=i;f.display=g;f.access=e;f.title=h||"";f.instance=d||""};c.Button.prototype.html=function(e){var d=this.access?' accesskey="'+this.access+'"':"";return'<input type="button" id="'+e+this.id+'"'+d+' class="ed_button" title="'+this.title+'" value="'+this.display+'" />'};c.Button.prototype.callback=function(){};c.TagButton=function(k,i,g,f,e,j,d){var h=this;c.Button.call(h,k,i,e,j,d);h.tagStart=g;h.tagEnd=f};c.TagButton.prototype=new c.Button();c.TagButton.prototype.openTag=function(g,d){var f=this;if(!d.openTags){d.openTags=[]}if(f.tagEnd){d.openTags.push(f.id);g.value="/"+g.value}};c.TagButton.prototype.closeTag=function(h,d){var g=this,f=g.isOpen(d);if(f!==false){d.openTags.splice(f,1)}h.value=g.display};c.TagButton.prototype.isOpen=function(d){var g=this,f=0,e=false;if(d.openTags){while(e===false&&f<d.openTags.length){e=d.openTags[f]==g.id?f:false;f++}}else{e=false}return e};c.TagButton.prototype.callback=function(o,h,p){var u=this,q,e,m,g,s=h.value,j,d,n,f,k=s?u.tagEnd:"";if(document.selection){h.focus();f=document.selection.createRange();if(f.text.length>0){if(!u.tagEnd){f.text=f.text+u.tagStart}else{f.text=u.tagStart+f.text+k}}else{if(!u.tagEnd){f.text=u.tagStart}else{if(u.isOpen(p)===false){f.text=u.tagStart;u.openTag(o,p)}else{f.text=k;u.closeTag(o,p)}}}h.focus()}else{if(h.selectionStart||h.selectionStart=="0"){q=h.selectionStart;e=h.selectionEnd;m=e;g=h.scrollTop;j=s.substring(0,q);d=s.substring(e,s.length);n=s.substring(q,e);if(q!=e){if(!u.tagEnd){h.value=j+n+u.tagStart+d;m+=u.tagStart.length}else{h.value=j+u.tagStart+n+k+d;m+=u.tagStart.length+k.length}}else{if(!u.tagEnd){h.value=j+u.tagStart+d;m=q+u.tagStart.length}else{if(u.isOpen(p)===false){h.value=j+u.tagStart+d;u.openTag(o,p);m=q+u.tagStart.length}else{h.value=j+k+d;m=q+k.length;u.closeTag(o,p)}}}h.focus();h.selectionStart=m;h.selectionEnd=m;h.scrollTop=g}else{if(!k){h.value+=u.tagStart}else{if(u.isOpen(p)!==false){h.value+=u.tagStart;u.openTag(o,p)}else{h.value+=k;u.closeTag(o,p)}}h.focus()}}};c.SpellButton=function(){c.Button.call(this,"spell",quicktagsL10n.lookup,"",quicktagsL10n.dictionaryLookup)};c.SpellButton.prototype=new c.Button();c.SpellButton.prototype.callback=function(h,g,d){var j="",i,f,e;if(document.selection){g.focus();i=document.selection.createRange();if(i.text.length>0){j=i.text}}else{if(g.selectionStart||g.selectionStart=="0"){f=g.selectionStart;e=g.selectionEnd;if(f!=e){j=g.value.substring(f,e)}}}if(j===""){j=prompt(quicktagsL10n.wordLookup,"")}if(j!==null&&/^\w[\w ]*$/.test(j)){window.open("http://www.answers.com/"+encodeURIComponent(j))}};c.CloseButton=function(){c.Button.call(this,"close",quicktagsL10n.closeTags,"",quicktagsL10n.closeAllOpenTags)};c.CloseButton.prototype=new c.Button();c._close=function(i,j,d){var g,f,h=d.openTags;if(h){while(h.length>0){g=d.getButton(h[h.length-1]);f=document.getElementById(d.name+"_"+g.id);if(i){g.callback.call(g,f,j,d)}else{g.closeTag(f,d)}}}};c.CloseButton.prototype.callback=c._close;c.closeAllTags=function(e){var d=this.getInstance(e);c._close("",d.canvas,d)};c.LinkButton=function(){c.TagButton.call(this,"link","link","","</a>","a")};c.LinkButton.prototype=new c.TagButton();c.LinkButton.prototype.callback=function(i,j,g,f){var d,h=this;if(typeof(wpLink)!="undefined"){wpLink.open();return}if(!f){f="http://"}if(h.isOpen(g)===false){d=prompt(quicktagsL10n.enterURL,f);if(d){h.tagStart='<a href="'+d+'">';c.TagButton.prototype.callback.call(h,i,j,g)}}else{c.TagButton.prototype.callback.call(h,i,j,g)}};c.ImgButton=function(){c.TagButton.call(this,"img","img","","","m")};c.ImgButton.prototype=new c.TagButton();c.ImgButton.prototype.callback=function(h,j,f,d){if(!d){d="http://"}var i=prompt(quicktagsL10n.enterImageURL,d),g;if(i){g=prompt(quicktagsL10n.enterImageDescription,"");this.tagStart='<img src="'+i+'" alt="'+g+'" />';c.TagButton.prototype.callback.call(this,h,j,f)}};c.FullscreenButton=function(){c.Button.call(this,"fullscreen",quicktagsL10n.fullscreen,"f",quicktagsL10n.toggleFullscreen)};c.FullscreenButton.prototype=new c.Button();c.FullscreenButton.prototype.callback=function(d,f){if(f.id!="content"||typeof(fullscreen)=="undefined"){return}fullscreen.on()};edButtons[10]=new c.TagButton("strong","b","<strong>","</strong>","b");edButtons[20]=new c.TagButton("em","i","<em>","</em>","i"),edButtons[30]=new c.LinkButton(),edButtons[40]=new c.TagButton("block","b-quote","\n\n<blockquote>","</blockquote>\n\n","q"),edButtons[50]=new c.TagButton("del","del",'<del datetime="'+a+'">',"</del>","d"),edButtons[60]=new c.TagButton("ins","ins",'<ins datetime="'+a+'">',"</ins>","s"),edButtons[70]=new c.ImgButton(),edButtons[80]=new c.TagButton("ul","ul","<ul>\n","</ul>\n\n","u"),edButtons[90]=new c.TagButton("ol","ol","<ol>\n","</ol>\n\n","o"),edButtons[100]=new c.TagButton("li","li","\t<li>","</li>\n","l"),edButtons[110]=new c.TagButton("code","code","<code>","</code>","c"),edButtons[120]=new c.TagButton("more","more","<!--more-->","","t"),edButtons[130]=new c.SpellButton(),edButtons[140]=new c.CloseButton()})();
\ No newline at end of file
+var QTags,edButtons=[],edCanvas,edAddTag=function(){},edCheckOpenTags=function(){},edCloseAllTags=function(){},edInsertImage=function(){},edInsertLink=function(){},edInsertTag=function(){},edLink=function(){},edQuickLink=function(){},edRemoveTag=function(){},edShowButton=function(){},edShowLinks=function(){},edSpell=function(){},edToolbar=function(){};function quicktags(a){return new QTags(a)}function edInsertContent(b,a){return QTags.insertContent(a)}function edButton(f,e,c,b,a,d){return QTags.addButton(f,e,c,b,a,"",-1)}(function(){var b=function(g){var f,e,d;if(typeof jQuery!="undefined"){jQuery(document).ready(g)}else{f=b;f.funcs=[];f.ready=function(){if(!f.isReady){f.isReady=true;for(e=0;e<f.funcs.length;e++){f.funcs[e]()}}};if(f.isReady){g()}else{f.funcs.push(g)}if(!f.eventAttached){if(document.addEventListener){d=function(){document.removeEventListener("DOMContentLoaded",d,false);f.ready()};document.addEventListener("DOMContentLoaded",d,false);window.addEventListener("load",f.ready,false)}else{if(document.attachEvent){d=function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",d);f.ready()}};document.attachEvent("onreadystatechange",d);window.attachEvent("onload",f.ready);(function(){try{document.documentElement.doScroll("left")}catch(h){setTimeout(arguments.callee,50);return}f.ready()})()}}f.eventAttached=true}}},a=(function(){var d=new Date(),e;e=function(f){var g=f.toString();if(g.length<2){g="0"+g}return g};return d.getUTCFullYear()+"-"+e(d.getUTCMonth()+1)+"-"+e(d.getUTCDate())+"T"+e(d.getUTCHours())+":"+e(d.getUTCMinutes())+":"+e(d.getUTCSeconds())+"+00:00"})(),c;c=QTags=function(j){if(typeof(j)=="string"){j={id:j}}else{if(typeof(j)!="object"){return false}}var i=this,k=j.id,h=document.getElementById(k),g="qt_"+k,d,f,e;if(!k||!h){return false}i.name=g;i.id=k;i.canvas=h;i.settings=j;if(k=="content"&&typeof(adminpage)=="string"&&(adminpage=="post-new-php"||adminpage=="post-php")){edCanvas=h;e="ed_toolbar"}else{e=g+"_toolbar"}d=document.createElement("div");d.id=e;d.className="quicktags-toolbar";h.parentNode.insertBefore(d,h);i.toolbar=d;f=function(n){n=n||window.event;var m=n.target||n.srcElement,l;if(/ ed_button /.test(" "+m.className+" ")){i.canvas=h=document.getElementById(k);l=m.id.replace(g+"_","");if(i.theButtons[l]){i.theButtons[l].callback.call(i.theButtons[l],m,h,i)}}};if(d.addEventListener){d.addEventListener("click",f,false)}else{if(d.attachEvent){d.attachEvent("onclick",f)}}i.getButton=function(l){return i.theButtons[l]};i.getButtonElement=function(l){return document.getElementById(g+"_"+l)};c.instances[k]=i;if(!c.instances[0]){c.instances[0]=c.instances[k];b(function(){c._buttonsInit()})}};c.instances={};c.getInstance=function(d){return c.instances[d]};c._buttonsInit=function(){var p=this,g,e,h,o,m,l,n,f,k,d,j=",strong,em,link,block,del,ins,img,ul,ol,li,code,more,spell,close,";for(l in p.instances){if(l==0){continue}n=p.instances[l];g=n.canvas;e=n.name;h=n.settings;m="";o={};d="";if(h.buttons){d=","+h.buttons+","}for(k in edButtons){if(!edButtons[k]){continue}f=edButtons[k].id;if(d&&j.indexOf(","+f+",")!=-1&&d.indexOf(","+f+",")==-1){continue}if(!edButtons[k].instance||edButtons[k].instance==l){o[f]=edButtons[k];if(edButtons[k].html){m+=edButtons[k].html(e+"_")}}}if(d&&d.indexOf(",fullscreen,")!=-1){o.fullscreen=new c.FullscreenButton();m+=o.fullscreen.html(e+"_")}if("rtl"==document.getElementsByTagName("html")[0].dir){o.textdirection=new c.TextDirectionButton();m+=o.textdirection.html(e+"_")}n.toolbar.innerHTML=m;n.theButtons=o}p.buttonsInitDone=true};c.addButton=function(e,i,h,g,d,j,k,l){var f;if(!e||!i){return}k=k||0;g=g||"";if(typeof(h)==="function"){f=new c.Button(e,i,d,j,l);f.callback=h}else{if(typeof(h)==="string"){f=new c.TagButton(e,i,h,g,d,j,l)}else{return}}if(k==-1){return f}if(k>0){while(typeof(edButtons[k])!="undefined"){k++}edButtons[k]=f}else{edButtons[edButtons.length]=f}if(this.buttonsInitDone){this._buttonsInit()}};c.insertContent=function(g){var h,f,e,i,j,d=document.getElementById(wpActiveEditor);if(!d){return false}if(document.selection){d.focus();h=document.selection.createRange();h.text=g;d.focus()}else{if(d.selectionStart||d.selectionStart=="0"){j=d.value;f=d.selectionStart;e=d.selectionEnd;i=d.scrollTop;d.value=j.substring(0,f)+g+j.substring(e,j.length);d.focus();d.selectionStart=f+g.length;d.selectionEnd=f+g.length;d.scrollTop=i}else{d.value+=g;d.focus()}}return true};c.Button=function(i,g,e,h,d){var f=this;f.id=i;f.display=g;f.access=e;f.title=h||"";f.instance=d||""};c.Button.prototype.html=function(e){var d=this.access?' accesskey="'+this.access+'"':"";return'<input type="button" id="'+e+this.id+'"'+d+' class="ed_button" title="'+this.title+'" value="'+this.display+'" />'};c.Button.prototype.callback=function(){};c.TagButton=function(k,i,g,f,e,j,d){var h=this;c.Button.call(h,k,i,e,j,d);h.tagStart=g;h.tagEnd=f};c.TagButton.prototype=new c.Button();c.TagButton.prototype.openTag=function(g,d){var f=this;if(!d.openTags){d.openTags=[]}if(f.tagEnd){d.openTags.push(f.id);g.value="/"+g.value}};c.TagButton.prototype.closeTag=function(h,d){var g=this,f=g.isOpen(d);if(f!==false){d.openTags.splice(f,1)}h.value=g.display};c.TagButton.prototype.isOpen=function(d){var g=this,f=0,e=false;if(d.openTags){while(e===false&&f<d.openTags.length){e=d.openTags[f]==g.id?f:false;f++}}else{e=false}return e};c.TagButton.prototype.callback=function(o,h,p){var u=this,q,e,m,g,s=h.value,j,d,n,f,k=s?u.tagEnd:"";if(document.selection){h.focus();f=document.selection.createRange();if(f.text.length>0){if(!u.tagEnd){f.text=f.text+u.tagStart}else{f.text=u.tagStart+f.text+k}}else{if(!u.tagEnd){f.text=u.tagStart}else{if(u.isOpen(p)===false){f.text=u.tagStart;u.openTag(o,p)}else{f.text=k;u.closeTag(o,p)}}}h.focus()}else{if(h.selectionStart||h.selectionStart=="0"){q=h.selectionStart;e=h.selectionEnd;m=e;g=h.scrollTop;j=s.substring(0,q);d=s.substring(e,s.length);n=s.substring(q,e);if(q!=e){if(!u.tagEnd){h.value=j+n+u.tagStart+d;m+=u.tagStart.length}else{h.value=j+u.tagStart+n+k+d;m+=u.tagStart.length+k.length}}else{if(!u.tagEnd){h.value=j+u.tagStart+d;m=q+u.tagStart.length}else{if(u.isOpen(p)===false){h.value=j+u.tagStart+d;u.openTag(o,p);m=q+u.tagStart.length}else{h.value=j+k+d;m=q+k.length;u.closeTag(o,p)}}}h.focus();h.selectionStart=m;h.selectionEnd=m;h.scrollTop=g}else{if(!k){h.value+=u.tagStart}else{if(u.isOpen(p)!==false){h.value+=u.tagStart;u.openTag(o,p)}else{h.value+=k;u.closeTag(o,p)}}h.focus()}}};c.SpellButton=function(){c.Button.call(this,"spell",quicktagsL10n.lookup,"",quicktagsL10n.dictionaryLookup)};c.SpellButton.prototype=new c.Button();c.SpellButton.prototype.callback=function(h,g,d){var j="",i,f,e;if(document.selection){g.focus();i=document.selection.createRange();if(i.text.length>0){j=i.text}}else{if(g.selectionStart||g.selectionStart=="0"){f=g.selectionStart;e=g.selectionEnd;if(f!=e){j=g.value.substring(f,e)}}}if(j===""){j=prompt(quicktagsL10n.wordLookup,"")}if(j!==null&&/^\w[\w ]*$/.test(j)){window.open("http://www.answers.com/"+encodeURIComponent(j))}};c.CloseButton=function(){c.Button.call(this,"close",quicktagsL10n.closeTags,"",quicktagsL10n.closeAllOpenTags)};c.CloseButton.prototype=new c.Button();c._close=function(i,j,d){var g,f,h=d.openTags;if(h){while(h.length>0){g=d.getButton(h[h.length-1]);f=document.getElementById(d.name+"_"+g.id);if(i){g.callback.call(g,f,j,d)}else{g.closeTag(f,d)}}}};c.CloseButton.prototype.callback=c._close;c.closeAllTags=function(e){var d=this.getInstance(e);c._close("",d.canvas,d)};c.LinkButton=function(){c.TagButton.call(this,"link","link","","</a>","a")};c.LinkButton.prototype=new c.TagButton();c.LinkButton.prototype.callback=function(i,j,g,f){var d,h=this;if(typeof(wpLink)!="undefined"){wpLink.open();return}if(!f){f="http://"}if(h.isOpen(g)===false){d=prompt(quicktagsL10n.enterURL,f);if(d){h.tagStart='<a href="'+d+'">';c.TagButton.prototype.callback.call(h,i,j,g)}}else{c.TagButton.prototype.callback.call(h,i,j,g)}};c.ImgButton=function(){c.TagButton.call(this,"img","img","","","m")};c.ImgButton.prototype=new c.TagButton();c.ImgButton.prototype.callback=function(h,j,f,d){if(!d){d="http://"}var i=prompt(quicktagsL10n.enterImageURL,d),g;if(i){g=prompt(quicktagsL10n.enterImageDescription,"");this.tagStart='<img src="'+i+'" alt="'+g+'" />';c.TagButton.prototype.callback.call(this,h,j,f)}};c.FullscreenButton=function(){c.Button.call(this,"fullscreen",quicktagsL10n.fullscreen,"f",quicktagsL10n.toggleFullscreen)};c.FullscreenButton.prototype=new c.Button();c.FullscreenButton.prototype.callback=function(d,f){if(!f.id||typeof(fullscreen)=="undefined"){return}fullscreen.on()};c.TextDirectionButton=function(){c.Button.call(this,"textdirection",quicktagsL10n.textdirection,"",quicktagsL10n.toggleTextdirection)};c.TextDirectionButton.prototype=new c.Button();c.TextDirectionButton.prototype.callback=function(f,h){var d=("rtl"==document.getElementsByTagName("html")[0].dir),g=h.style.direction;if(!g){g=(d)?"rtl":"ltr"}h.style.direction=("rtl"==g)?"ltr":"rtl";h.focus()};edButtons[10]=new c.TagButton("strong","b","<strong>","</strong>","b");edButtons[20]=new c.TagButton("em","i","<em>","</em>","i"),edButtons[30]=new c.LinkButton(),edButtons[40]=new c.TagButton("block","b-quote","\n\n<blockquote>","</blockquote>\n\n","q"),edButtons[50]=new c.TagButton("del","del",'<del datetime="'+a+'">',"</del>","d"),edButtons[60]=new c.TagButton("ins","ins",'<ins datetime="'+a+'">',"</ins>","s"),edButtons[70]=new c.ImgButton(),edButtons[80]=new c.TagButton("ul","ul","<ul>\n","</ul>\n\n","u"),edButtons[90]=new c.TagButton("ol","ol","<ol>\n","</ol>\n\n","o"),edButtons[100]=new c.TagButton("li","li","\t<li>","</li>\n","l"),edButtons[110]=new c.TagButton("code","code","<code>","</code>","c"),edButtons[120]=new c.TagButton("more","more","<!--more-->","","t"),edButtons[130]=new c.SpellButton(),edButtons[140]=new c.CloseButton()})();
\ No newline at end of file
index e72ed69b117e3ab1fe66bc134abc3dacdb7cc4b9..7296cb6766c40e7388b2a11e97db19c94a52041d 100644 (file)
@@ -96,7 +96,7 @@ function prepareMediaItemInit(fileObj) {
        jQuery('a.delete', item).click(function(){
                // Tell the server to delete it. TODO: handle exceptions
                jQuery.ajax({
        jQuery('a.delete', item).click(function(){
                // Tell the server to delete it. TODO: handle exceptions
                jQuery.ajax({
-                       url: 'admin-ajax.php',
+                       url: ajaxurl,
                        type: 'post',
                        success: deleteSuccess,
                        error: deleteError,
                        type: 'post',
                        success: deleteSuccess,
                        error: deleteError,
@@ -114,7 +114,7 @@ function prepareMediaItemInit(fileObj) {
        jQuery('a.undo', item).click(function(){
                // Tell the server to untrash it. TODO: handle exceptions
                jQuery.ajax({
        jQuery('a.undo', item).click(function(){
                // Tell the server to untrash it. TODO: handle exceptions
                jQuery.ajax({
-                       url: 'admin-ajax.php',
+                       url: ajaxurl,
                        type: 'post',
                        id: fileObj.id,
                        data: {
                        type: 'post',
                        id: fileObj.id,
                        data: {
index ce5ff0e6da2ead686f643cdc1731dac7f8a9175a..43e82f8a6bfe97d79e91d2e2644f9665b68773eb 100644 (file)
@@ -1 +1 @@
-var topWin=window.dialogArguments||opener||parent||top;function fileDialogStart(){jQuery("#media-upload-error").empty()}function fileQueued(a){jQuery(".media-blank").remove();if(jQuery("form.type-form #media-items").children().length==1&&jQuery(".hidden","#media-items").length>0){jQuery(".describe-toggle-on").show();jQuery(".describe-toggle-off").hide();jQuery(".slidetoggle").slideUp(200).siblings().removeClass("hidden")}jQuery("#media-items").append('<div id="media-item-'+a.id+'" class="media-item child-of-'+post_id+'"><div class="progress"><div class="bar"></div></div><div class="filename original"><span class="percent"></span> '+a.name+"</div></div>");jQuery(".progress","#media-item-"+a.id).show();jQuery("#insert-gallery").prop("disabled",true);jQuery("#cancel-upload").prop("disabled",false)}function uploadStart(a){try{if(typeof topWin.tb_remove!="undefined"){topWin.jQuery("#TB_overlay").unbind("click",topWin.tb_remove)}}catch(b){}return true}function uploadProgress(e,b,d){var a=jQuery("#media-items").width()-2,c=jQuery("#media-item-"+e.id);jQuery(".bar",c).width(a*b/d);jQuery(".percent",c).html(Math.ceil(b/d*100)+"%");if(b==d){jQuery(".bar",c).html('<strong class="crunching">'+swfuploadL10n.crunching+"</strong>")}}function prepareMediaItem(c,a){var d=(typeof shortform=="undefined")?1:2,b=jQuery("#media-item-"+c.id);jQuery(".bar",b).remove();jQuery(".progress",b).hide();try{if(typeof topWin.tb_remove!="undefined"){topWin.jQuery("#TB_overlay").click(topWin.tb_remove)}}catch(g){}if(isNaN(a)||!a){b.append(a);prepareMediaItemInit(c)}else{b.load("async-upload.php",{attachment_id:a,fetch:d},function(){prepareMediaItemInit(c);updateMediaForm()})}}function prepareMediaItemInit(b){var a=jQuery("#media-item-"+b.id);jQuery(".thumbnail",a).clone().attr("class","pinkynail toggle").prependTo(a);jQuery(".filename.original",a).replaceWith(jQuery(".filename.new",a));jQuery("a.toggle",a).click(function(){jQuery(this).siblings(".slidetoggle").slideToggle(350,function(){var d=jQuery(window).height(),e=jQuery(this).offset().top,f=jQuery(this).height(),c;if(d&&e&&f){c=e+f;if(c>d&&(f+48)<d){window.scrollBy(0,c-d+13)}else{if(c>d){window.scrollTo(0,e-36)}}}});jQuery(this).siblings(".toggle").andSelf().toggle();jQuery(this).siblings("a.toggle").focus();return false});jQuery("a.delete",a).click(function(){jQuery.ajax({url:"admin-ajax.php",type:"post",success:deleteSuccess,error:deleteError,id:b.id,data:{id:this.id.replace(/[^0-9]/g,""),action:"trash-post",_ajax_nonce:this.href.replace(/^.*wpnonce=/,"")}});return false});jQuery("a.undo",a).click(function(){jQuery.ajax({url:"admin-ajax.php",type:"post",id:b.id,data:{id:this.id.replace(/[^0-9]/g,""),action:"untrash-post",_ajax_nonce:this.href.replace(/^.*wpnonce=/,"")},success:function(d,e){var c=jQuery("#media-item-"+b.id);if(type=jQuery("#type-of-"+b.id).val()){jQuery("#"+type+"-counter").text(jQuery("#"+type+"-counter").text()-0+1)}if(c.hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(jQuery("#attachments-count").text()-0+1)}jQuery(".filename .trashnotice",c).remove();jQuery(".filename .title",c).css("font-weight","normal");jQuery("a.undo",c).addClass("hidden");jQuery("a.describe-toggle-on, .menu_order_input",c).show();c.css({backgroundColor:"#ceb"}).animate({backgroundColor:"#fff"},{queue:false,duration:500,complete:function(){jQuery(this).css({backgroundColor:""})}}).removeClass("undo")}});return false});jQuery("#media-item-"+b.id+".startopen").removeClass("startopen").slideToggle(500).siblings(".toggle").toggle()}function itemAjaxError(d,b){var c=jQuery("#media-item-"+d);var a=jQuery(".filename",c).text();c.html('<div class="error-div"><a class="dismiss" href="#">'+swfuploadL10n.dismiss+"</a><strong>"+swfuploadL10n.error_uploading.replace("%s",a)+"</strong><br />"+b+"</div>");c.find("a.dismiss").click(function(){jQuery(this).parents(".media-item").slideUp(200,function(){jQuery(this).remove()})})}function deleteSuccess(b,d){if(b=="-1"){return itemAjaxError(this.id,"You do not have permission. Has your session expired?")}if(b=="0"){return itemAjaxError(this.id,"Could not be deleted. Has it been deleted already?")}var c=this.id,a=jQuery("#media-item-"+c);if(type=jQuery("#type-of-"+c).val()){jQuery("#"+type+"-counter").text(jQuery("#"+type+"-counter").text()-1)}if(a.hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(jQuery("#attachments-count").text()-1)}if(jQuery("form.type-form #media-items").children().length==1&&jQuery(".hidden","#media-items").length>0){jQuery(".toggle").toggle();jQuery(".slidetoggle").slideUp(200).siblings().removeClass("hidden")}jQuery(".toggle",a).toggle();jQuery(".slidetoggle",a).slideUp(200).siblings().removeClass("hidden");a.css({backgroundColor:"#faa"}).animate({backgroundColor:"#f4f4f4"},{queue:false,duration:500}).addClass("undo");jQuery(".filename:empty",a).remove();jQuery(".filename .title",a).css("font-weight","bold");jQuery(".filename",a).append('<span class="trashnotice"> '+swfuploadL10n.deleted+" </span>").siblings("a.toggle").hide();jQuery(".filename",a).append(jQuery("a.undo",a).removeClass("hidden"));jQuery(".menu_order_input",a).hide();return}function deleteError(c,b,a){}function updateMediaForm(){var b=jQuery("form.type-form #media-items").children(),a=jQuery("#media-items").children();if(b.length==1){jQuery(".slidetoggle",b).slideDown(500).siblings().addClass("hidden").filter(".toggle").toggle()}if(a.not(".media-blank").length>0){jQuery(".savebutton").show()}else{jQuery(".savebutton").hide()}if(a.length>1){jQuery(".insert-gallery").show()}else{jQuery(".insert-gallery").hide()}}function uploadSuccess(b,a){if(a.match("media-upload-error")){jQuery("#media-item-"+b.id).html(a);return}prepareMediaItem(b,a);updateMediaForm();if(jQuery("#media-item-"+b.id).hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(1*jQuery("#attachments-count").text()+1)}}function uploadComplete(a){if(swfu.getStats().files_queued==0){jQuery("#cancel-upload").prop("disabled",true);jQuery("#insert-gallery").prop("disabled",false)}}function wpQueueError(a){jQuery("#media-upload-error").show().text(a)}function wpFileError(d,c){var b=jQuery("#media-item-"+d.id);var a=jQuery(".filename",b).text();b.html('<div class="error-div"><a class="dismiss" href="#">'+swfuploadL10n.dismiss+"</a><strong>"+swfuploadL10n.error_uploading.replace("%s",a)+"</strong><br />"+c+"</div>");b.find("a.dismiss").click(function(){jQuery(this).parents(".media-item").slideUp(200,function(){jQuery(this).remove()})})}function fileQueueError(c,a,b){if(a==SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED){wpQueueError(swfuploadL10n.queue_limit_exceeded)}else{if(a==SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT){fileQueued(c);wpFileError(c,swfuploadL10n.file_exceeds_size_limit)}else{if(a==SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE){fileQueued(c);wpFileError(c,swfuploadL10n.zero_byte_file)}else{if(a==SWFUpload.QUEUE_ERROR.INVALID_FILETYPE){fileQueued(c);wpFileError(c,swfuploadL10n.invalid_filetype)}else{wpQueueError(swfuploadL10n.default_error)}}}}}function fileDialogComplete(b){try{if(b>0){this.startUpload()}}catch(a){this.debug(a)}}function switchUploader(b){var c=document.getElementById(swfu.customSettings.swfupload_element_id),a=document.getElementById(swfu.customSettings.degraded_element_id);if(b){c.style.display="block";a.style.display="none"}else{c.style.display="none";a.style.display="block"}}function swfuploadPreLoad(){if(!uploaderMode){switchUploader(1)}else{switchUploader(0)}}function swfuploadLoadFailed(){switchUploader(0);jQuery(".upload-html-bypass").hide()}function uploadError(b,c,a){switch(c){case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:wpFileError(b,swfuploadL10n.missing_upload_url);break;case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:wpFileError(b,swfuploadL10n.upload_limit_exceeded);break;case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:wpQueueError(swfuploadL10n.http_error);break;case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:wpQueueError(swfuploadL10n.upload_failed);break;case SWFUpload.UPLOAD_ERROR.IO_ERROR:wpQueueError(swfuploadL10n.io_error);break;case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:wpQueueError(swfuploadL10n.security_error);break;case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:jQuery("#media-item-"+b.id).remove();break;default:wpFileError(b,swfuploadL10n.default_error)}}function cancelUpload(){swfu.cancelQueue()}jQuery(document).ready(function(a){a('input[type="radio"]',"#media-items").live("click",function(){var b=a(this).closest("tr");if(a(b).hasClass("align")){setUserSetting("align",a(this).val())}else{if(a(b).hasClass("image-size")){setUserSetting("imgsize",a(this).val())}}});a("button.button","#media-items").live("click",function(){var b=this.className||"";b=b.match(/url([^ '"]+)/);if(b&&b[1]){setUserSetting("urlbutton",b[1]);a(this).siblings(".urlfield").val(a(this).attr("title"))}})});
\ No newline at end of file
+var topWin=window.dialogArguments||opener||parent||top;function fileDialogStart(){jQuery("#media-upload-error").empty()}function fileQueued(a){jQuery(".media-blank").remove();if(jQuery("form.type-form #media-items").children().length==1&&jQuery(".hidden","#media-items").length>0){jQuery(".describe-toggle-on").show();jQuery(".describe-toggle-off").hide();jQuery(".slidetoggle").slideUp(200).siblings().removeClass("hidden")}jQuery("#media-items").append('<div id="media-item-'+a.id+'" class="media-item child-of-'+post_id+'"><div class="progress"><div class="bar"></div></div><div class="filename original"><span class="percent"></span> '+a.name+"</div></div>");jQuery(".progress","#media-item-"+a.id).show();jQuery("#insert-gallery").prop("disabled",true);jQuery("#cancel-upload").prop("disabled",false)}function uploadStart(a){try{if(typeof topWin.tb_remove!="undefined"){topWin.jQuery("#TB_overlay").unbind("click",topWin.tb_remove)}}catch(b){}return true}function uploadProgress(e,b,d){var a=jQuery("#media-items").width()-2,c=jQuery("#media-item-"+e.id);jQuery(".bar",c).width(a*b/d);jQuery(".percent",c).html(Math.ceil(b/d*100)+"%");if(b==d){jQuery(".bar",c).html('<strong class="crunching">'+swfuploadL10n.crunching+"</strong>")}}function prepareMediaItem(c,a){var d=(typeof shortform=="undefined")?1:2,b=jQuery("#media-item-"+c.id);jQuery(".bar",b).remove();jQuery(".progress",b).hide();try{if(typeof topWin.tb_remove!="undefined"){topWin.jQuery("#TB_overlay").click(topWin.tb_remove)}}catch(g){}if(isNaN(a)||!a){b.append(a);prepareMediaItemInit(c)}else{b.load("async-upload.php",{attachment_id:a,fetch:d},function(){prepareMediaItemInit(c);updateMediaForm()})}}function prepareMediaItemInit(b){var a=jQuery("#media-item-"+b.id);jQuery(".thumbnail",a).clone().attr("class","pinkynail toggle").prependTo(a);jQuery(".filename.original",a).replaceWith(jQuery(".filename.new",a));jQuery("a.toggle",a).click(function(){jQuery(this).siblings(".slidetoggle").slideToggle(350,function(){var d=jQuery(window).height(),e=jQuery(this).offset().top,f=jQuery(this).height(),c;if(d&&e&&f){c=e+f;if(c>d&&(f+48)<d){window.scrollBy(0,c-d+13)}else{if(c>d){window.scrollTo(0,e-36)}}}});jQuery(this).siblings(".toggle").andSelf().toggle();jQuery(this).siblings("a.toggle").focus();return false});jQuery("a.delete",a).click(function(){jQuery.ajax({url:ajaxurl,type:"post",success:deleteSuccess,error:deleteError,id:b.id,data:{id:this.id.replace(/[^0-9]/g,""),action:"trash-post",_ajax_nonce:this.href.replace(/^.*wpnonce=/,"")}});return false});jQuery("a.undo",a).click(function(){jQuery.ajax({url:ajaxurl,type:"post",id:b.id,data:{id:this.id.replace(/[^0-9]/g,""),action:"untrash-post",_ajax_nonce:this.href.replace(/^.*wpnonce=/,"")},success:function(d,e){var c=jQuery("#media-item-"+b.id);if(type=jQuery("#type-of-"+b.id).val()){jQuery("#"+type+"-counter").text(jQuery("#"+type+"-counter").text()-0+1)}if(c.hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(jQuery("#attachments-count").text()-0+1)}jQuery(".filename .trashnotice",c).remove();jQuery(".filename .title",c).css("font-weight","normal");jQuery("a.undo",c).addClass("hidden");jQuery("a.describe-toggle-on, .menu_order_input",c).show();c.css({backgroundColor:"#ceb"}).animate({backgroundColor:"#fff"},{queue:false,duration:500,complete:function(){jQuery(this).css({backgroundColor:""})}}).removeClass("undo")}});return false});jQuery("#media-item-"+b.id+".startopen").removeClass("startopen").slideToggle(500).siblings(".toggle").toggle()}function itemAjaxError(d,b){var c=jQuery("#media-item-"+d);var a=jQuery(".filename",c).text();c.html('<div class="error-div"><a class="dismiss" href="#">'+swfuploadL10n.dismiss+"</a><strong>"+swfuploadL10n.error_uploading.replace("%s",a)+"</strong><br />"+b+"</div>");c.find("a.dismiss").click(function(){jQuery(this).parents(".media-item").slideUp(200,function(){jQuery(this).remove()})})}function deleteSuccess(b,d){if(b=="-1"){return itemAjaxError(this.id,"You do not have permission. Has your session expired?")}if(b=="0"){return itemAjaxError(this.id,"Could not be deleted. Has it been deleted already?")}var c=this.id,a=jQuery("#media-item-"+c);if(type=jQuery("#type-of-"+c).val()){jQuery("#"+type+"-counter").text(jQuery("#"+type+"-counter").text()-1)}if(a.hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(jQuery("#attachments-count").text()-1)}if(jQuery("form.type-form #media-items").children().length==1&&jQuery(".hidden","#media-items").length>0){jQuery(".toggle").toggle();jQuery(".slidetoggle").slideUp(200).siblings().removeClass("hidden")}jQuery(".toggle",a).toggle();jQuery(".slidetoggle",a).slideUp(200).siblings().removeClass("hidden");a.css({backgroundColor:"#faa"}).animate({backgroundColor:"#f4f4f4"},{queue:false,duration:500}).addClass("undo");jQuery(".filename:empty",a).remove();jQuery(".filename .title",a).css("font-weight","bold");jQuery(".filename",a).append('<span class="trashnotice"> '+swfuploadL10n.deleted+" </span>").siblings("a.toggle").hide();jQuery(".filename",a).append(jQuery("a.undo",a).removeClass("hidden"));jQuery(".menu_order_input",a).hide();return}function deleteError(c,b,a){}function updateMediaForm(){var b=jQuery("form.type-form #media-items").children(),a=jQuery("#media-items").children();if(b.length==1){jQuery(".slidetoggle",b).slideDown(500).siblings().addClass("hidden").filter(".toggle").toggle()}if(a.not(".media-blank").length>0){jQuery(".savebutton").show()}else{jQuery(".savebutton").hide()}if(a.length>1){jQuery(".insert-gallery").show()}else{jQuery(".insert-gallery").hide()}}function uploadSuccess(b,a){if(a.match("media-upload-error")){jQuery("#media-item-"+b.id).html(a);return}prepareMediaItem(b,a);updateMediaForm();if(jQuery("#media-item-"+b.id).hasClass("child-of-"+post_id)){jQuery("#attachments-count").text(1*jQuery("#attachments-count").text()+1)}}function uploadComplete(a){if(swfu.getStats().files_queued==0){jQuery("#cancel-upload").prop("disabled",true);jQuery("#insert-gallery").prop("disabled",false)}}function wpQueueError(a){jQuery("#media-upload-error").show().text(a)}function wpFileError(d,c){var b=jQuery("#media-item-"+d.id);var a=jQuery(".filename",b).text();b.html('<div class="error-div"><a class="dismiss" href="#">'+swfuploadL10n.dismiss+"</a><strong>"+swfuploadL10n.error_uploading.replace("%s",a)+"</strong><br />"+c+"</div>");b.find("a.dismiss").click(function(){jQuery(this).parents(".media-item").slideUp(200,function(){jQuery(this).remove()})})}function fileQueueError(c,a,b){if(a==SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED){wpQueueError(swfuploadL10n.queue_limit_exceeded)}else{if(a==SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT){fileQueued(c);wpFileError(c,swfuploadL10n.file_exceeds_size_limit)}else{if(a==SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE){fileQueued(c);wpFileError(c,swfuploadL10n.zero_byte_file)}else{if(a==SWFUpload.QUEUE_ERROR.INVALID_FILETYPE){fileQueued(c);wpFileError(c,swfuploadL10n.invalid_filetype)}else{wpQueueError(swfuploadL10n.default_error)}}}}}function fileDialogComplete(b){try{if(b>0){this.startUpload()}}catch(a){this.debug(a)}}function switchUploader(b){var c=document.getElementById(swfu.customSettings.swfupload_element_id),a=document.getElementById(swfu.customSettings.degraded_element_id);if(b){c.style.display="block";a.style.display="none"}else{c.style.display="none";a.style.display="block"}}function swfuploadPreLoad(){if(!uploaderMode){switchUploader(1)}else{switchUploader(0)}}function swfuploadLoadFailed(){switchUploader(0);jQuery(".upload-html-bypass").hide()}function uploadError(b,c,a){switch(c){case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:wpFileError(b,swfuploadL10n.missing_upload_url);break;case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:wpFileError(b,swfuploadL10n.upload_limit_exceeded);break;case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:wpQueueError(swfuploadL10n.http_error);break;case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:wpQueueError(swfuploadL10n.upload_failed);break;case SWFUpload.UPLOAD_ERROR.IO_ERROR:wpQueueError(swfuploadL10n.io_error);break;case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:wpQueueError(swfuploadL10n.security_error);break;case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:jQuery("#media-item-"+b.id).remove();break;default:wpFileError(b,swfuploadL10n.default_error)}}function cancelUpload(){swfu.cancelQueue()}jQuery(document).ready(function(a){a('input[type="radio"]',"#media-items").live("click",function(){var b=a(this).closest("tr");if(a(b).hasClass("align")){setUserSetting("align",a(this).val())}else{if(a(b).hasClass("image-size")){setUserSetting("imgsize",a(this).val())}}});a("button.button","#media-items").live("click",function(){var b=this.className||"";b=b.match(/url([^ '"]+)/);if(b&&b[1]){setUserSetting("urlbutton",b[1]);a(this).siblings(".urlfield").val(a(this).attr("title"))}})});
\ No newline at end of file
index 7909082a1d8451666245dc8aa04f1ec94a3f5727..53d784a28a4fcafaf2eae96b0040a0342ee33047 100644 (file)
@@ -12,7 +12,7 @@ not_set:"-- Not set --",
 clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.",
 clipboard_no_support:"Currently not supported by your browser, use keyboard shortcuts instead.",
 popup_blocked:"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.",
 clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.",
 clipboard_no_support:"Currently not supported by your browser, use keyboard shortcuts instead.",
 popup_blocked:"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.",
-invalid_data:"Error: Invalid values entered, these are marked in red.",
+invalid_data:"ERROR: Invalid values entered, these are marked in red.",
 invalid_data_number:"{#field} must be a number",
 invalid_data_min:"{#field} must be a number greater than {#min}",
 invalid_data_size:"{#field} must be a number or percentage",
 invalid_data_number:"{#field} must be a number",
 invalid_data_min:"{#field} must be a number greater than {#min}",
 invalid_data_size:"{#field} must be a number or percentage",
@@ -240,8 +240,8 @@ code:"Code",
 samp:"Code sample",
 dt:"Definition term ",
 dd:"Definition description",
 samp:"Code sample",
 dt:"Definition term ",
 dd:"Definition description",
-bold_desc:"Bold (Ctrl / Alt + Shift + B)",
-italic_desc:"Italic (Ctrl / Alt + Shift + I)",
+bold_desc:"Bold (Ctrl + B)",
+italic_desc:"Italic (Ctrl + I)",
 underline_desc:"Underline",
 striketrough_desc:"Strikethrough (Alt + Shift + D)",
 justifyleft_desc:"Align Left (Alt + Shift + L)",
 underline_desc:"Underline",
 striketrough_desc:"Strikethrough (Alt + Shift + D)",
 justifyleft_desc:"Align Left (Alt + Shift + L)",
@@ -310,6 +310,7 @@ colorpicker_named_title:"Named colors",
 colorpicker_color:"Color:",
 colorpicker_name:"Name:",
 charmap_title:"Select custom character",
 colorpicker_color:"Color:",
 colorpicker_name:"Name:",
 charmap_title:"Select custom character",
+charmap_usage:"Use left and right arrows to navigate.",
 image_title:"Insert/edit image",
 image_src:"Image URL",
 image_alt:"Image description",
 image_title:"Insert/edit image",
 image_src:"Image URL",
 image_alt:"Image description",
index f9299fb157b8d57f5f082058f594f8fb1abff9d2..04dfa0f596804575ebf5e94fba0a1c275e670961 100644 (file)
 <?php
 
 <?php
 
+if ( ! defined( 'ABSPATH' ) )
+       exit;
+
+// deprecated, not used
 function mce_escape($text) {
        return esc_js($text);
 }
 
 function mce_escape($text) {
        return esc_js($text);
 }
 
-if ( ! class_exists( '_WP_Editors' ) )
-       require( ABSPATH . WPINC . '/class-wp-editor.php' );
-
-$lang = 'tinyMCE.addI18n({' . _WP_Editors::$mce_locale . ':{
-common:{
-edit_confirm:"' . mce_escape( __('Do you want to use the WYSIWYG mode for this textarea?') ) . '",
-apply:"' . mce_escape( __('Apply') ) . '",
-insert:"' . mce_escape( __('Insert') ) . '",
-update:"' . mce_escape( __('Update') ) . '",
-cancel:"' . mce_escape( __('Cancel') ) . '",
-close:"' . mce_escape( __('Close') ) . '",
-browse:"' . mce_escape( __('Browse') ) . '",
-class_name:"' . mce_escape( __('Class') ) . '",
-not_set:"' . mce_escape( __('-- Not set --') ) . '",
-clipboard_msg:"' . mce_escape( __('Copy/Cut/Paste is not available in Mozilla and Firefox.') ) . '",
-clipboard_no_support:"' . mce_escape( __('Currently not supported by your browser, use keyboard shortcuts instead.') ) . '",
-popup_blocked:"' . mce_escape( __('Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.') ) . '",
-invalid_data:"' . mce_escape( __('ERROR: Invalid values entered, these are marked in red.') ) . '",
-invalid_data_number:"' . mce_escape( __('{#field} must be a number') ) . '",
-invalid_data_min:"' . mce_escape( __('{#field} must be a number greater than {#min}') ) . '",
-invalid_data_size:"' . mce_escape( __('{#field} must be a number or percentage') ) . '",
-more_colors:"' . mce_escape( __('More colors') ) . '"
-},
-colors:{
-"000000":"' . mce_escape( __('Black') ) . '",
-"993300":"' . mce_escape( __('Burnt orange') ) . '",
-"333300":"' . mce_escape( __('Dark olive') ) . '",
-"003300":"' . mce_escape( __('Dark green') ) . '",
-"003366":"' . mce_escape( __('Dark azure') ) . '",
-"000080":"' . mce_escape( __('Navy Blue') ) . '",
-"333399":"' . mce_escape( __('Indigo') ) . '",
-"333333":"' . mce_escape( __('Very dark gray') ) . '",
-"800000":"' . mce_escape( __('Maroon') ) . '",
-"FF6600":"' . mce_escape( __('Orange') ) . '",
-"808000":"' . mce_escape( __('Olive') ) . '",
-"008000":"' . mce_escape( __('Green') ) . '",
-"008080":"' . mce_escape( __('Teal') ) . '",
-"0000FF":"' . mce_escape( __('Blue') ) . '",
-"666699":"' . mce_escape( __('Grayish blue') ) . '",
-"808080":"' . mce_escape( __('Gray') ) . '",
-"FF0000":"' . mce_escape( __('Red') ) . '",
-"FF9900":"' . mce_escape( __('Amber') ) . '",
-"99CC00":"' . mce_escape( __('Yellow green') ) . '",
-"339966":"' . mce_escape( __('Sea green') ) . '",
-"33CCCC":"' . mce_escape( __('Turquoise') ) . '",
-"3366FF":"' . mce_escape( __('Royal blue') ) . '",
-"800080":"' . mce_escape( __('Purple') ) . '",
-"999999":"' . mce_escape( __('Medium gray') ) . '",
-"FF00FF":"' . mce_escape( __('Magenta') ) . '",
-"FFCC00":"' . mce_escape( __('Gold') ) . '",
-"FFFF00":"' . mce_escape( __('Yellow') ) . '",
-"00FF00":"' . mce_escape( __('Lime') ) . '",
-"00FFFF":"' . mce_escape( __('Aqua') ) . '",
-"00CCFF":"' . mce_escape( __('Sky blue') ) . '",
-"993366":"' . mce_escape( __('Brown') ) . '",
-"C0C0C0":"' . mce_escape( __('Silver') ) . '",
-"FF99CC":"' . mce_escape( __('Pink') ) . '",
-"FFCC99":"' . mce_escape( __('Peach') ) . '",
-"FFFF99":"' . mce_escape( __('Light yellow') ) . '",
-"CCFFCC":"' . mce_escape( __('Pale green') ) . '",
-"CCFFFF":"' . mce_escape( __('Pale cyan') ) . '",
-"99CCFF":"' . mce_escape( __('Light sky blue') ) . '",
-"CC99FF":"' . mce_escape( __('Plum') ) . '",
-"FFFFFF":"' . mce_escape( __('White') ) . '"
-},
-contextmenu:{
-align:"' . mce_escape( /* translators: alignment */ __('Alignment') ) . '",
-left:"' . mce_escape( /* translators: alignment */ __('Left') ) . '",
-center:"' . mce_escape( /* translators: alignment */ __('Center') ) . '",
-right:"' . mce_escape( /* translators: alignment */ __('Right') ) . '",
-full:"' . mce_escape( /* translators: alignment */ __('Full') ) . '"
-},
-insertdatetime:{
-date_fmt:"' . mce_escape( /* translators: year, month, date */ __('%Y-%m-%d') ) . '",
-time_fmt:"' . mce_escape( /* translators: hours, minutes, seconds */ __('%H:%M:%S') ) . '",
-insertdate_desc:"' . mce_escape( __('Insert date') ) . '",
-inserttime_desc:"' . mce_escape( __('Insert time') ) . '",
-months_long:"' . mce_escape( __('January').','.__('February').','.__('March').','.__('April').','.__('May').','.__('June').','.__('July').','.__('August').','.__('September').','.__('October').','.__('November').','.__('December') ) . '",
-months_short:"' . mce_escape( __('Jan_January_abbreviation').','.__('Feb_February_abbreviation').','.__('Mar_March_abbreviation').','.__('Apr_April_abbreviation').','.__('May_May_abbreviation').','.__('Jun_June_abbreviation').','.__('Jul_July_abbreviation').','.__('Aug_August_abbreviation').','.__('Sep_September_abbreviation').','.__('Oct_October_abbreviation').','.__('Nov_November_abbreviation').','.__('Dec_December_abbreviation') ) . '",
-day_long:"' . mce_escape( __('Sunday').','.__('Monday').','.__('Tuesday').','.__('Wednesday').','.__('Thursday').','.__('Friday').','.__('Saturday') ) . '",
-day_short:"' . mce_escape( __('Sun').','.__('Mon').','.__('Tue').','.__('Wed').','.__('Thu').','.__('Fri').','.__('Sat') ) . '"
-},
-print:{
-print_desc:"' . mce_escape( __('Print') ) . '"
-},
-preview:{
-preview_desc:"' . mce_escape( __('Preview') ) . '"
-},
-directionality:{
-ltr_desc:"' . mce_escape( __('Direction left to right') ) . '",
-rtl_desc:"' . mce_escape( __('Direction right to left') ) . '"
-},
-layer:{
-insertlayer_desc:"' . mce_escape( __('Insert new layer') ) . '",
-forward_desc:"' . mce_escape( __('Move forward') ) . '",
-backward_desc:"' . mce_escape( __('Move backward') ) . '",
-absolute_desc:"' . mce_escape( __('Toggle absolute positioning') ) . '",
-content:"' . mce_escape( __('New layer...') ) . '"
-},
-save:{
-save_desc:"' . mce_escape( __('Save') ) . '",
-cancel_desc:"' . mce_escape( __('Cancel all changes') ) . '"
-},
-nonbreaking:{
-nonbreaking_desc:"' . mce_escape( __('Insert non-breaking space character') ) . '"
-},
-iespell:{
-iespell_desc:"' . mce_escape( __('Run spell checking') ) . '",
-download:"' . mce_escape( __('ieSpell not detected. Do you want to install it now?') ) . '"
-},
-advhr:{
-advhr_desc:"' . mce_escape( __('Horizontale rule') ) . '"
-},
-emotions:{
-emotions_desc:"' . mce_escape( __('Emotions') ) . '"
-},
-searchreplace:{
-search_desc:"' . mce_escape( __('Find') ) . '",
-replace_desc:"' . mce_escape( __('Find/Replace') ) . '"
-},
-advimage:{
-image_desc:"' . mce_escape( __('Insert/edit image') ) . '"
-},
-advlink:{
-link_desc:"' . mce_escape( __('Insert/edit link') ) . '"
-},
-xhtmlxtras:{
-cite_desc:"' . mce_escape( __('Citation') ) . '",
-abbr_desc:"' . mce_escape( __('Abbreviation') ) . '",
-acronym_desc:"' . mce_escape( __('Acronym') ) . '",
-del_desc:"' . mce_escape( __('Deletion') ) . '",
-ins_desc:"' . mce_escape( __('Insertion') ) . '",
-attribs_desc:"' . mce_escape( __('Insert/Edit Attributes') ) . '"
-},
-style:{
-desc:"' . mce_escape( __('Edit CSS Style') ) . '"
-},
-paste:{
-paste_text_desc:"' . mce_escape( __('Paste as Plain Text') ) . '",
-paste_word_desc:"' . mce_escape( __('Paste from Word') ) . '",
-selectall_desc:"' . mce_escape( __('Select All') ) . '",
-plaintext_mode_sticky:"' . mce_escape( __('Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.') ) . '",
-plaintext_mode:"' . mce_escape( __('Paste is now in plain text mode. Click again to toggle back to regular paste mode.') ) . '"
-},
-paste_dlg:{
-text_title:"' . mce_escape( __('Use CTRL+V on your keyboard to paste the text into the window.') ) . '",
-text_linebreaks:"' . mce_escape( __('Keep linebreaks') ) . '",
-word_title:"' . mce_escape( __('Use CTRL+V on your keyboard to paste the text into the window.') ) . '"
-},
-table:{
-desc:"' . mce_escape( __('Inserts a new table') ) . '",
-row_before_desc:"' . mce_escape( __('Insert row before') ) . '",
-row_after_desc:"' . mce_escape( __('Insert row after') ) . '",
-delete_row_desc:"' . mce_escape( __('Delete row') ) . '",
-col_before_desc:"' . mce_escape( __('Insert column before') ) . '",
-col_after_desc:"' . mce_escape( __('Insert column after') ) . '",
-delete_col_desc:"' . mce_escape( __('Remove column') ) . '",
-split_cells_desc:"' . mce_escape( __('Split merged table cells') ) . '",
-merge_cells_desc:"' . mce_escape( __('Merge table cells') ) . '",
-row_desc:"' . mce_escape( __('Table row properties') ) . '",
-cell_desc:"' . mce_escape( __('Table cell properties') ) . '",
-props_desc:"' . mce_escape( __('Table properties') ) . '",
-paste_row_before_desc:"' . mce_escape( __('Paste table row before') ) . '",
-paste_row_after_desc:"' . mce_escape( __('Paste table row after') ) . '",
-cut_row_desc:"' . mce_escape( __('Cut table row') ) . '",
-copy_row_desc:"' . mce_escape( __('Copy table row') ) . '",
-del:"' . mce_escape( __('Delete table') ) . '",
-row:"' . mce_escape( __('Row') ) . '",
-col:"' . mce_escape( __('Column') ) . '",
-cell:"' . mce_escape( __('Cell') ) . '"
-},
-autosave:{
-unload_msg:"' . mce_escape( __('The changes you made will be lost if you navigate away from this page.') ) . '"
-},
-fullscreen:{
-desc:"' . mce_escape( __('Toggle fullscreen mode (Alt + Shift + G)') ) . '"
-},
-media:{
-desc:"' . mce_escape( __('Insert / edit embedded media') ) . '",
-edit:"' . mce_escape( __('Edit embedded media') ) . '"
-},
-fullpage:{
-desc:"' . mce_escape( __('Document properties') ) . '"
-},
-template:{
-desc:"' . mce_escape( __('Insert predefined template content') ) . '"
-},
-visualchars:{
-desc:"' . mce_escape( __('Visual control characters on/off.') ) . '"
-},
-spellchecker:{
-desc:"' . mce_escape( __('Toggle spellchecker (Alt + Shift + N)') ) . '",
-menu:"' . mce_escape( __('Spellchecker settings') ) . '",
-ignore_word:"' . mce_escape( __('Ignore word') ) . '",
-ignore_words:"' . mce_escape( __('Ignore all') ) . '",
-langs:"' . mce_escape( __('Languages') ) . '",
-wait:"' . mce_escape( __('Please wait...') ) . '",
-sug:"' . mce_escape( __('Suggestions') ) . '",
-no_sug:"' . mce_escape( __('No suggestions') ) . '",
-no_mpell:"' . mce_escape( __('No misspellings found.') ) . '",
-learn_word:"' . mce_escape( __('Learn word') ) . '" 
-},
-pagebreak:{
-desc:"' . mce_escape( __('Insert Page Break') ) . '"
-},
-advlist:{
-types:"' . mce_escape( __('Types') ) . '",
-def:"' . mce_escape( __('Default') ) . '",
-lower_alpha:"' . mce_escape( __('Lower alpha') ) . '",
-lower_greek:"' . mce_escape( __('Lower greek') ) . '",
-lower_roman:"' . mce_escape( __('Lower roman') ) . '",
-upper_alpha:"' . mce_escape( __('Upper alpha') ) . '",
-upper_roman:"' . mce_escape( __('Upper roman') ) . '",
-circle:"' . mce_escape( __('Circle') ) . '",
-disc:"' . mce_escape( __('Disc') ) . '",
-square:"' . mce_escape( __('Square') ) . '"
-},
-aria:{
-rich_text_area:"' . mce_escape( __('Rich Text Area') ) . '"
-},
-wordcount:{
-words:"' . mce_escape( __('Words:') ) . ' "
+function wp_mce_translation() {
+
+       $default = array(
+               'common' => array(
+                       'edit_confirm' => __('Do you want to use the WYSIWYG mode for this textarea?'),
+                       'apply' => __('Apply'),
+                       'insert' => __('Insert'),
+                       'update' => __('Update'),
+                       'cancel' => __('Cancel'),
+                       'close' => __('Close'),
+                       'browse' => __('Browse'),
+                       'class_name' => __('Class'),
+                       'not_set' => __('-- Not set --'),
+                       'clipboard_msg' => __('Copy/Cut/Paste is not available in Mozilla and Firefox.'),
+                       'clipboard_no_support' => __('Currently not supported by your browser, use keyboard shortcuts instead.'),
+                       'popup_blocked' => __('Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.'),
+                       'invalid_data' => __('ERROR: Invalid values entered, these are marked in red.'),
+                       'invalid_data_number' => __('{#field} must be a number'),
+                       'invalid_data_min' => __('{#field} must be a number greater than {#min}'),
+                       'invalid_data_size' => __('{#field} must be a number or percentage'),
+                       'more_colors' => __('More colors')
+               ),
+
+               'colors' => array(
+                       '000000' => __('Black'),
+                       '993300' => __('Burnt orange'),
+                       '333300' => __('Dark olive'),
+                       '003300' => __('Dark green'),
+                       '003366' => __('Dark azure'),
+                       '000080' => __('Navy Blue'),
+                       '333399' => __('Indigo'),
+                       '333333' => __('Very dark gray'),
+                       '800000' => __('Maroon'),
+                       'FF6600' => __('Orange'),
+                       '808000' => __('Olive'),
+                       '008000' => __('Green'),
+                       '008080' => __('Teal'),
+                       '0000FF' => __('Blue'),
+                       '666699' => __('Grayish blue'),
+                       '808080' => __('Gray'),
+                       'FF0000' => __('Red'),
+                       'FF9900' => __('Amber'),
+                       '99CC00' => __('Yellow green'),
+                       '339966' => __('Sea green'),
+                       '33CCCC' => __('Turquoise'),
+                       '3366FF' => __('Royal blue'),
+                       '800080' => __('Purple'),
+                       '999999' => __('Medium gray'),
+                       'FF00FF' => __('Magenta'),
+                       'FFCC00' => __('Gold'),
+                       'FFFF00' => __('Yellow'),
+                       '00FF00' => __('Lime'),
+                       '00FFFF' => __('Aqua'),
+                       '00CCFF' => __('Sky blue'),
+                       '993366' => __('Brown'),
+                       'C0C0C0' => __('Silver'),
+                       'FF99CC' => __('Pink'),
+                       'FFCC99' => __('Peach'),
+                       'FFFF99' => __('Light yellow'),
+                       'CCFFCC' => __('Pale green'),
+                       'CCFFFF' => __('Pale cyan'),
+                       '99CCFF' => __('Light sky blue'),
+                       'CC99FF' => __('Plum'),
+                       'FFFFFF' => __('White')
+               ),
+
+               'contextmenu' => array(
+                       'align' => __('Alignment'), /* translators: alignment */
+                       'left' => __('Left'), /* translators: alignment */
+                       'center' => __('Center'), /* translators: alignment */
+                       'right' => __('Right'), /* translators: alignment */
+                       'full' => __('Full') /* translators: alignment */
+               ),
+
+               'insertdatetime' => array(
+                       'date_fmt' => __('%Y-%m-%d'), /* translators: year, month, date */
+                       'time_fmt' => __('%H:%M:%S'), /* translators: hours, minutes, seconds */
+                       'insertdate_desc' => __('Insert date'),
+                       'inserttime_desc' => __('Insert time'),
+                       'months_long' => __('January').','.__('February').','.__('March').','.__('April').','.__('May').','.__('June').','.__('July').','.__('August').','.__('September').','.__('October').','.__('November').','.__('December'),
+                       'months_short' => __('Jan_January_abbreviation').','.__('Feb_February_abbreviation').','.__('Mar_March_abbreviation').','.__('Apr_April_abbreviation').','.__('May_May_abbreviation').','.__('Jun_June_abbreviation').','.__('Jul_July_abbreviation').','.__('Aug_August_abbreviation').','.__('Sep_September_abbreviation').','.__('Oct_October_abbreviation').','.__('Nov_November_abbreviation').','.__('Dec_December_abbreviation'),
+                       'day_long' => __('Sunday').','.__('Monday').','.__('Tuesday').','.__('Wednesday').','.__('Thursday').','.__('Friday').','.__('Saturday'),
+                       'day_short' => __('Sun').','.__('Mon').','.__('Tue').','.__('Wed').','.__('Thu').','.__('Fri').','.__('Sat')
+               ),
+
+               'print' => array(
+                       'print_desc' => __('Print')
+               ),
+
+               'preview' => array(
+                       'preview_desc' => __('Preview')
+               ),
+
+               'directionality' => array(
+                       'ltr_desc' => __('Direction left to right'),
+                       'rtl_desc' => __('Direction right to left')
+               ),
+
+               'layer' => array(
+                       'insertlayer_desc' => __('Insert new layer'),
+                       'forward_desc' => __('Move forward'),
+                       'backward_desc' => __('Move backward'),
+                       'absolute_desc' => __('Toggle absolute positioning'),
+                       'content' => __('New layer...')
+               ),
+
+               'save' => array(
+                       'save_desc' => __('Save'),
+                       'cancel_desc' => __('Cancel all changes')
+               ),
+
+               'nonbreaking' => array(
+                       'nonbreaking_desc' => __('Insert non-breaking space character')
+               ),
+
+               'iespell' => array(
+                       'iespell_desc' => __('Run spell checking'),
+                       'download' => __('ieSpell not detected. Do you want to install it now?')
+               ),
+
+               'advhr' => array(
+                       'advhr_desc' => __('Horizontale rule')
+               ),
+
+               'emotions' => array(
+                       'emotions_desc' => __('Emotions')
+               ),
+
+               'searchreplace' => array(
+                       'search_desc' => __('Find'),
+                       'replace_desc' => __('Find/Replace')
+               ),
+
+               'advimage' => array(
+                       'image_desc' => __('Insert/edit image')
+               ),
+
+               'advlink' => array(
+                       'link_desc' => __('Insert/edit link')
+               ),
+
+               'xhtmlxtras' => array(
+                       'cite_desc' => __('Citation'),
+                       'abbr_desc' => __('Abbreviation'),
+                       'acronym_desc' => __('Acronym'),
+                       'del_desc' => __('Deletion'),
+                       'ins_desc' => __('Insertion'),
+                       'attribs_desc' => __('Insert/Edit Attributes')
+               ),
+
+               'style' => array(
+                       'desc' => __('Edit CSS Style')
+               ),
+
+               'paste' => array(
+                       'paste_text_desc' => __('Paste as Plain Text'),
+                       'paste_word_desc' => __('Paste from Word'),
+                       'selectall_desc' => __('Select All'),
+                       'plaintext_mode_sticky' => __('Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.'),
+                       'plaintext_mode' => __('Paste is now in plain text mode. Click again to toggle back to regular paste mode.')
+               ),
+
+               'paste_dlg' => array(
+                       'text_title' => __('Use CTRL+V on your keyboard to paste the text into the window.'),
+                       'text_linebreaks' => __('Keep linebreaks'),
+                       'word_title' => __('Use CTRL+V on your keyboard to paste the text into the window.')
+               ),
+
+               'table' => array(
+                       'desc' => __('Inserts a new table'),
+                       'row_before_desc' => __('Insert row before'),
+                       'row_after_desc' => __('Insert row after'),
+                       'delete_row_desc' => __('Delete row'),
+                       'col_before_desc' => __('Insert column before'),
+                       'col_after_desc' => __('Insert column after'),
+                       'delete_col_desc' => __('Remove column'),
+                       'split_cells_desc' => __('Split merged table cells'),
+                       'merge_cells_desc' => __('Merge table cells'),
+                       'row_desc' => __('Table row properties'),
+                       'cell_desc' => __('Table cell properties'),
+                       'props_desc' => __('Table properties'),
+                       'paste_row_before_desc' => __('Paste table row before'),
+                       'paste_row_after_desc' => __('Paste table row after'),
+                       'cut_row_desc' => __('Cut table row'),
+                       'copy_row_desc' => __('Copy table row'),
+                       'del' => __('Delete table'),
+                       'row' => __('Row'),
+                       'col' => __('Column'),
+                       'cell' => __('Cell')
+               ),
+
+               'autosave' => array(
+                       'unload_msg' => __('The changes you made will be lost if you navigate away from this page.')
+               ),
+
+               'fullscreen' => array(
+                       'desc' => __('Toggle fullscreen mode (Alt + Shift + G)')
+               ),
+
+               'media' => array(
+                       'desc' => __('Insert / edit embedded media'),
+                       'edit' => __('Edit embedded media')
+               ),
+
+               'fullpage' => array(
+                       'desc' => __('Document properties')
+               ),
+
+               'template' => array(
+                       'desc' => __('Insert predefined template content')
+               ),
+
+               'visualchars' => array(
+                       'desc' => __('Visual control characters on/off.')
+               ),
+
+               'spellchecker' => array(
+                       'desc' => __('Toggle spellchecker (Alt + Shift + N)'),
+                       'menu' => __('Spellchecker settings'),
+                       'ignore_word' => __('Ignore word'),
+                       'ignore_words' => __('Ignore all'),
+                       'langs' => __('Languages'),
+                       'wait' => __('Please wait...'),
+                       'sug' => __('Suggestions'),
+                       'no_sug' => __('No suggestions'),
+                       'no_mpell' => __('No misspellings found.'),
+                       'learn_word' => __('Learn word')
+               ),
+
+               'pagebreak' => array(
+                       'desc' => __('Insert Page Break')
+               ),
+
+               'advlist' => array(
+                       'types' => __('Types'),
+                       'def' => __('Default'),
+                       'lower_alpha' => __('Lower alpha'),
+                       'lower_greek' => __('Lower greek'),
+                       'lower_roman' => __('Lower roman'),
+                       'upper_alpha' => __('Upper alpha'),
+                       'upper_roman' => __('Upper roman'),
+                       'circle' => __('Circle'),
+                       'disc' => __('Disc'),
+                       'square' => __('Square')
+               ),
+
+               'aria' => array(
+                       'rich_text_area' => __('Rich Text Area')
+               ),
+
+               'wordcount' => array(
+                       'words' => __('Words:')
+               )
+       );
+
+       $advanced = array(
+               'style_select' => __('Styles'), /* translators: TinyMCE inline styles */
+               'font_size' => __('Font size'),
+               'fontdefault' => __('Font family'),
+               'block' => __('Format'),
+               'paragraph' => __('Paragraph'),
+               'div' => __('Div'),
+               'address' => __('Address'),
+               'pre' => __('Preformatted'),
+               'h1' => __('Heading 1'),
+               'h2' => __('Heading 2'),
+               'h3' => __('Heading 3'),
+               'h4' => __('Heading 4'),
+               'h5' => __('Heading 5'),
+               'h6' => __('Heading 6'),
+               'blockquote' => __('Blockquote'),
+               'code' => __('Code'),
+               'samp' => __('Code sample'),
+               'dt' => __('Definition term '),
+               'dd' => __('Definition description'),
+               'bold_desc' => __('Bold (Ctrl + B)'),
+               'italic_desc' => __('Italic (Ctrl + I)'),
+               'underline_desc' => __('Underline'),
+               'striketrough_desc' => __('Strikethrough (Alt + Shift + D)'),
+               'justifyleft_desc' => __('Align Left (Alt + Shift + L)'),
+               'justifycenter_desc' => __('Align Center (Alt + Shift + C)'),
+               'justifyright_desc' => __('Align Right (Alt + Shift + R)'),
+               'justifyfull_desc' => __('Align Full (Alt + Shift + J)'),
+               'bullist_desc' => __('Unordered list (Alt + Shift + U)'),
+               'numlist_desc' => __('Ordered list (Alt + Shift + O)'),
+               'outdent_desc' => __('Outdent'),
+               'indent_desc' => __('Indent'),
+               'undo_desc' => __('Undo (Ctrl + Z)'),
+               'redo_desc' => __('Redo (Ctrl + Y)'),
+               'link_desc' => __('Insert/edit link (Alt + Shift + A)'),
+               'unlink_desc' => __('Unlink (Alt + Shift + S)'),
+               'image_desc' => __('Insert/edit image (Alt + Shift + M)'),
+               'cleanup_desc' => __('Cleanup messy code'),
+               'code_desc' => __('Edit HTML Source'),
+               'sub_desc' => __('Subscript'),
+               'sup_desc' => __('Superscript'),
+               'hr_desc' => __('Insert horizontal ruler'),
+               'removeformat_desc' => __('Remove formatting'),
+               'forecolor_desc' => __('Select text color'),
+               'backcolor_desc' => __('Select background color'),
+               'charmap_desc' => __('Insert custom character'),
+               'visualaid_desc' => __('Toggle guidelines/invisible elements'),
+               'anchor_desc' => __('Insert/edit anchor'),
+               'cut_desc' => __('Cut'),
+               'copy_desc' => __('Copy'),
+               'paste_desc' => __('Paste'),
+               'image_props_desc' => __('Image properties'),
+               'newdocument_desc' => __('New document'),
+               'help_desc' => __('Help'),
+               'blockquote_desc' => __('Blockquote (Alt + Shift + Q)'),
+               'clipboard_msg' => __('Copy/Cut/Paste is not available in Mozilla and Firefox.'),
+               'path' => __('Path'),
+               'newdocument' => __('Are you sure you want to clear all contents?'),
+               'toolbar_focus' => __('Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X'),
+               'more_colors' => __('More colors'),
+               'shortcuts_desc' => __('Accessibility Help'),
+               'help_shortcut' => __('Press ALT F10 for toolbar. Press ALT 0 for help.'),
+               'rich_text_area' => __('Rich Text Area'),
+               'toolbar' => __('Toolbar')
+       );
+
+       $advanced_dlg = array(
+               'about_title' => __('About TinyMCE'),
+               'about_general' => __('About'),
+               'about_help' => __('Help'),
+               'about_license' => __('License'),
+               'about_plugins' => __('Plugins'),
+               'about_plugin' => __('Plugin'),
+               'about_author' => __('Author'),
+               'about_version' => __('Version'),
+               'about_loaded' => __('Loaded plugins'),
+               'anchor_title' => __('Insert/edit anchor'),
+               'anchor_name' => __('Anchor name'),
+               'code_title' => __('HTML Source Editor'),
+               'code_wordwrap' => __('Word wrap'),
+               'colorpicker_title' => __('Select a color'),
+               'colorpicker_picker_tab' => __('Picker'),
+               'colorpicker_picker_title' => __('Color picker'),
+               'colorpicker_palette_tab' => __('Palette'),
+               'colorpicker_palette_title' => __('Palette colors'),
+               'colorpicker_named_tab' => __('Named'),
+               'colorpicker_named_title' => __('Named colors'),
+               'colorpicker_color' => __('Color:'),
+               'colorpicker_name' => _x('Name:', 'html attribute'),
+               'charmap_title' => __('Select custom character'),
+               'charmap_usage' => __('Use left and right arrows to navigate.'),
+               'image_title' => __('Insert/edit image'),
+               'image_src' => __('Image URL'),
+               'image_alt' => __('Image description'),
+               'image_list' => __('Image list'),
+               'image_border' => __('Border'),
+               'image_dimensions' => __('Dimensions'),
+               'image_vspace' => __('Vertical space'),
+               'image_hspace' => __('Horizontal space'),
+               'image_align' => __('Alignment'),
+               'image_align_baseline' => __('Baseline'),
+               'image_align_top' => __('Top'),
+               'image_align_middle' => __('Middle'),
+               'image_align_bottom' => __('Bottom'),
+               'image_align_texttop' => __('Text top'),
+               'image_align_textbottom' => __('Text bottom'),
+               'image_align_left' => __('Left'),
+               'image_align_right' => __('Right'),
+               'link_title' => __('Insert/edit link'),
+               'link_url' => __('Link URL'),
+               'link_target' => __('Target'),
+               'link_target_same' => __('Open link in the same window'),
+               'link_target_blank' => __('Open link in a new window'),
+               'link_titlefield' => __('Title'),
+               'link_is_email' => __('The URL you entered seems to be an email address, do you want to add the required mailto: prefix?'),
+               'link_is_external' => __('The URL you entered seems to external link, do you want to add the required http:// prefix?'),
+               'link_list' => __('Link list'),
+               'accessibility_help' => __('Accessibility Help'),
+               'accessibility_usage_title' => __('General Usage')
+       );
+
+       $media_dlg = array(
+               'title' => __('Insert / edit embedded media'),
+               'general' => __('General'),
+               'advanced' => __('Advanced'),
+               'file' => __('File/URL'),
+               'list' => __('List'),
+               'size' => __('Dimensions'),
+               'preview' => __('Preview'),
+               'constrain_proportions' => __('Constrain proportions'),
+               'type' => __('Type'),
+               'id' => __('Id'),
+               'name' => _x('Name', 'html attribute'),
+               'class_name' => __('Class'),
+               'vspace' => __('V-Space'),
+               'hspace' => __('H-Space'),
+               'play' => __('Auto play'),
+               'loop' => __('Loop'),
+               'menu' => __('Show menu'),
+               'quality' => __('Quality'),
+               'scale' => __('Scale'),
+               'align' => __('Align'),
+               'salign' => __('SAlign'),
+               'wmode' => __('WMode'),
+               'bgcolor' => __('Background'),
+               'base' => __('Base'),
+               'flashvars' => __('Flashvars'),
+               'liveconnect' => __('SWLiveConnect'),
+               'autohref' => __('AutoHREF'),
+               'cache' => __('Cache'),
+               'hidden' => __('Hidden'),
+               'controller' => __('Controller'),
+               'kioskmode' => __('Kiosk mode'),
+               'playeveryframe' => __('Play every frame'),
+               'targetcache' => __('Target cache'),
+               'correction' => __('No correction'),
+               'enablejavascript' => __('Enable JavaScript'),
+               'starttime' => __('Start time'),
+               'endtime' => __('End time'),
+               'href' => __('href'),
+               'qtsrcchokespeed' => __('Choke speed'),
+               'target' => __('Target'),
+               'volume' => __('Volume'),
+               'autostart' => __('Auto start'),
+               'enabled' => __('Enabled'),
+               'fullscreen' => __('Fullscreen'),
+               'invokeurls' => __('Invoke URLs'),
+               'mute' => __('Mute'),
+               'stretchtofit' => __('Stretch to fit'),
+               'windowlessvideo' => __('Windowless video'),
+               'balance' => __('Balance'),
+               'baseurl' => __('Base URL'),
+               'captioningid' => __('Captioning id'),
+               'currentmarker' => __('Current marker'),
+               'currentposition' => __('Current position'),
+               'defaultframe' => __('Default frame'),
+               'playcount' => __('Play count'),
+               'rate' => __('Rate'),
+               'uimode' => __('UI Mode'),
+               'flash_options' => __('Flash options'),
+               'qt_options' => __('Quicktime options'),
+               'wmp_options' => __('Windows media player options'),
+               'rmp_options' => __('Real media player options'),
+               'shockwave_options' => __('Shockwave options'),
+               'autogotourl' => __('Auto goto URL'),
+               'center' => __('Center'),
+               'imagestatus' => __('Image status'),
+               'maintainaspect' => __('Maintain aspect'),
+               'nojava' => __('No java'),
+               'prefetch' => __('Prefetch'),
+               'shuffle' => __('Shuffle'),
+               'console' => __('Console'),
+               'numloop' => __('Num loops'),
+               'controls' => __('Controls'),
+               'scriptcallbacks' => __('Script callbacks'),
+               'swstretchstyle' => __('Stretch style'),
+               'swstretchhalign' => __('Stretch H-Align'),
+               'swstretchvalign' => __('Stretch V-Align'),
+               'sound' => __('Sound'),
+               'progress' => __('Progress'),
+               'qtsrc' => __('QT Src'),
+               'qt_stream_warn' => __('Streamed rtsp resources should be added to the QT Src field under the advanced tab.'),
+               'align_top' => __('Top'),
+               'align_right' => __('Right'),
+               'align_bottom' => __('Bottom'),
+               'align_left' => __('Left'),
+               'align_center' => __('Center'),
+               'align_top_left' => __('Top left'),
+               'align_top_right' => __('Top right'),
+               'align_bottom_left' => __('Bottom left'),
+               'align_bottom_right' => __('Bottom right'),
+               'flv_options' => __('Flash video options'),
+               'flv_scalemode' => __('Scale mode'),
+               'flv_buffer' => __('Buffer'),
+               'flv_startimage' => __('Start image'),
+               'flv_starttime' => __('Start time'),
+               'flv_defaultvolume' => __('Default volume'),
+               'flv_hiddengui' => __('Hidden GUI'),
+               'flv_autostart' => __('Auto start'),
+               'flv_loop' => __('Loop'),
+               'flv_showscalemodes' => __('Show scale modes'),
+               'flv_smoothvideo' => __('Smooth video'),
+               'flv_jscallback' => __('JS Callback'),
+               'html5_video_options' => __('HTML5 Video Options'),
+               'altsource1' => __('Alternative source 1'),
+               'altsource2' => __('Alternative source 2'),
+               'preload' => __('Preload'),
+               'poster' => __('Poster'),
+               'source' => __('Source')
+       );
+
+       $wordpress = array(
+               'wp_adv_desc' => __('Show/Hide Kitchen Sink (Alt + Shift + Z)'),
+               'wp_more_desc' => __('Insert More Tag (Alt + Shift + T)'),
+               'wp_page_desc' => __('Insert Page break (Alt + Shift + P)'),
+               'wp_help_desc' => __('Help (Alt + Shift + H)'),
+               'wp_more_alt' => __('More...'),
+               'wp_page_alt' => __('Next page...'),
+               'add_media' => __('Add Media'),
+               'add_image' => __('Add an Image'),
+               'add_video' => __('Add Video'),
+               'add_audio' => __('Add Audio'),
+               'editgallery' => __('Edit Gallery'),
+               'delgallery' => __('Delete Gallery')
+       );
+
+       $wpeditimage = array(
+               'edit_img' => __('Edit Image'),
+               'del_img' => __('Delete Image'),
+               'adv_settings' => __('Advanced Settings'),
+               'none' => __('None'),
+               'size' => __('Size'),
+               'thumbnail' => __('Thumbnail'),
+               'medium' => __('Medium'),
+               'full_size' => __('Full Size'),
+               'current_link' => __('Current Link'),
+               'link_to_img' => __('Link to Image'),
+               'link_help' => __('Enter a link URL or click above for presets.'),
+               'adv_img_settings' => __('Advanced Image Settings'),
+               'source' => __('Source'),
+               'width' => __('Width'),
+               'height' => __('Height'),
+               'orig_size' => __('Original Size'),
+               'css' => __('CSS Class'),
+               'adv_link_settings' => __('Advanced Link Settings'),
+               'link_rel' => __('Link Rel'),
+               'height' => __('Height'),
+               'orig_size' => __('Original Size'),
+               'css' => __('CSS Class'),
+               's60' => __('60%'),
+               's70' => __('70%'),
+               's80' => __('80%'),
+               's90' => __('90%'),
+               's100' => __('100%'),
+               's110' => __('110%'),
+               's120' => __('120%'),
+               's130' => __('130%'),
+               'img_title' => __('Title'),
+               'caption' => __('Caption'),
+               'alt' => __('Alternate Text')
+       );
+
+       $locale = _WP_Editors::$mce_locale;
+
+       $translated = 'tinyMCE.addI18n({' . $locale . ':' . json_encode( $default ) . "});\n";
+       $translated .= 'tinyMCE.addI18n("' . $locale . '.advanced", ' . json_encode( $advanced ) . ");\n";
+       $translated .= 'tinyMCE.addI18n("' . $locale . '.advanced_dlg", ' . json_encode( $advanced_dlg ) . ");\n";
+       $translated .= 'tinyMCE.addI18n("' . $locale . '.media_dlg", ' . json_encode( $media_dlg ) . ");\n";
+       $translated .= 'tinyMCE.addI18n("' . $locale . '.wordpress", ' . json_encode( $wordpress ) . ");\n";
+       $translated .= 'tinyMCE.addI18n("' . $locale . '.wpeditimage", ' . json_encode( $wpeditimage ) . ');';
+
+       return $translated;
 }
 }
-}});
-
-tinyMCE.addI18n("' . _WP_Editors::$mce_locale . '.advanced",{
-style_select:"' . mce_escape( /* translators: TinyMCE font styles */ _x('Styles', 'TinyMCE font styles') ) . '",
-font_size:"' . mce_escape( __('Font size') ) . '",
-fontdefault:"' . mce_escape( __('Font family') ) . '",
-block:"' . mce_escape( __('Format') ) . '",
-paragraph:"' . mce_escape( __('Paragraph') ) . '",
-div:"' . mce_escape( __('Div') ) . '",
-address:"' . mce_escape( __('Address') ) . '",
-pre:"' . mce_escape( __('Preformatted') ) . '",
-h1:"' . mce_escape( __('Heading 1') ) . '",
-h2:"' . mce_escape( __('Heading 2') ) . '",
-h3:"' . mce_escape( __('Heading 3') ) . '",
-h4:"' . mce_escape( __('Heading 4') ) . '",
-h5:"' . mce_escape( __('Heading 5') ) . '",
-h6:"' . mce_escape( __('Heading 6') ) . '",
-blockquote:"' . mce_escape( __('Blockquote') ) . '",
-code:"' . mce_escape( __('Code') ) . '",
-samp:"' . mce_escape( __('Code sample') ) . '",
-dt:"' . mce_escape( __('Definition term ') ) . '",
-dd:"' . mce_escape( __('Definition description') ) . '",
-bold_desc:"' . mce_escape( __('Bold (Ctrl + B)') ) . '",
-italic_desc:"' . mce_escape( __('Italic (Ctrl + I)') ) . '",
-underline_desc:"' . mce_escape( __('Underline') ) . '",
-striketrough_desc:"' . mce_escape( __('Strikethrough (Alt + Shift + D)') ) . '",
-justifyleft_desc:"' . mce_escape( __('Align Left (Alt + Shift + L)') ) . '",
-justifycenter_desc:"' . mce_escape( __('Align Center (Alt + Shift + C)') ) . '",
-justifyright_desc:"' . mce_escape( __('Align Right (Alt + Shift + R)') ) . '",
-justifyfull_desc:"' . mce_escape( __('Align Full (Alt + Shift + J)') ) . '",
-bullist_desc:"' . mce_escape( __('Unordered list (Alt + Shift + U)') ) . '",
-numlist_desc:"' . mce_escape( __('Ordered list (Alt + Shift + O)') ) . '",
-outdent_desc:"' . mce_escape( __('Outdent') ) . '",
-indent_desc:"' . mce_escape( __('Indent') ) . '",
-undo_desc:"' . mce_escape( __('Undo (Ctrl + Z)') ) . '",
-redo_desc:"' . mce_escape( __('Redo (Ctrl + Y)') ) . '",
-link_desc:"' . mce_escape( __('Insert/edit link (Alt + Shift + A)') ) . '",
-unlink_desc:"' . mce_escape( __('Unlink (Alt + Shift + S)') ) . '",
-image_desc:"' . mce_escape( __('Insert/edit image (Alt + Shift + M)') ) . '",
-cleanup_desc:"' . mce_escape( __('Cleanup messy code') ) . '",
-code_desc:"' . mce_escape( __('Edit HTML Source') ) . '",
-sub_desc:"' . mce_escape( __('Subscript') ) . '",
-sup_desc:"' . mce_escape( __('Superscript') ) . '",
-hr_desc:"' . mce_escape( __('Insert horizontal ruler') ) . '",
-removeformat_desc:"' . mce_escape( __('Remove formatting') ) . '",
-forecolor_desc:"' . mce_escape( __('Select text color') ) . '",
-backcolor_desc:"' . mce_escape( __('Select background color') ) . '",
-charmap_desc:"' . mce_escape( __('Insert custom character') ) . '",
-visualaid_desc:"' . mce_escape( __('Toggle guidelines/invisible elements') ) . '",
-anchor_desc:"' . mce_escape( __('Insert/edit anchor') ) . '",
-cut_desc:"' . mce_escape( __('Cut') ) . '",
-copy_desc:"' . mce_escape( __('Copy') ) . '",
-paste_desc:"' . mce_escape( __('Paste') ) . '",
-image_props_desc:"' . mce_escape( __('Image properties') ) . '",
-newdocument_desc:"' . mce_escape( __('New document') ) . '",
-help_desc:"' . mce_escape( __('Help') ) . '",
-blockquote_desc:"' . mce_escape( __('Blockquote (Alt + Shift + Q)') ) . '",
-clipboard_msg:"' . mce_escape( __('Copy/Cut/Paste is not available in Mozilla and Firefox.') ) . '",
-path:"' . mce_escape( __('Path') ) . '",
-newdocument:"' . mce_escape( __('Are you sure you want to clear all contents?') ) . '",
-toolbar_focus:"' . mce_escape( __('Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X') ) . '",
-more_colors:"' . mce_escape( __('More colors') ) . '",
-shortcuts_desc:"' . mce_escape( __('Accessibility Help') ) . '",
-help_shortcut:" ' . mce_escape( __('Press ALT F10 for toolbar. Press ALT 0 for help.') ) . '",
-rich_text_area:"' . mce_escape( __('Rich Text Area') ) . '",
-toolbar:"' . mce_escape( __('Toolbar') ) . '"
-});
-
-tinyMCE.addI18n("' . _WP_Editors::$mce_locale . '.advanced_dlg",{
-about_title:"' . mce_escape( __('About TinyMCE') ) . '",
-about_general:"' . mce_escape( __('About') ) . '",
-about_help:"' . mce_escape( __('Help') ) . '",
-about_license:"' . mce_escape( __('License') ) . '",
-about_plugins:"' . mce_escape( __('Plugins') ) . '",
-about_plugin:"' . mce_escape( __('Plugin') ) . '",
-about_author:"' . mce_escape( __('Author') ) . '",
-about_version:"' . mce_escape( __('Version') ) . '",
-about_loaded:"' . mce_escape( __('Loaded plugins') ) . '",
-anchor_title:"' . mce_escape( __('Insert/edit anchor') ) . '",
-anchor_name:"' . mce_escape( __('Anchor name') ) . '",
-code_title:"' . mce_escape( __('HTML Source Editor') ) . '",
-code_wordwrap:"' . mce_escape( __('Word wrap') ) . '",
-colorpicker_title:"' . mce_escape( __('Select a color') ) . '",
-colorpicker_picker_tab:"' . mce_escape( __('Picker') ) . '",
-colorpicker_picker_title:"' . mce_escape( __('Color picker') ) . '",
-colorpicker_palette_tab:"' . mce_escape( __('Palette') ) . '",
-colorpicker_palette_title:"' . mce_escape( __('Palette colors') ) . '",
-colorpicker_named_tab:"' . mce_escape( __('Named') ) . '",
-colorpicker_named_title:"' . mce_escape( __('Named colors') ) . '",
-colorpicker_color:"' . mce_escape( __('Color:') ) . '",
-colorpicker_name:"' . mce_escape( _x('Name:', 'html attribute') ) . '",
-charmap_title:"' . mce_escape( __('Select custom character') ) . '",
-image_title:"' . mce_escape( __('Insert/edit image') ) . '",
-image_src:"' . mce_escape( __('Image URL') ) . '",
-image_alt:"' . mce_escape( __('Image description') ) . '",
-image_list:"' . mce_escape( __('Image list') ) . '",
-image_border:"' . mce_escape( __('Border') ) . '",
-image_dimensions:"' . mce_escape( __('Dimensions') ) . '",
-image_vspace:"' . mce_escape( __('Vertical space') ) . '",
-image_hspace:"' . mce_escape( __('Horizontal space') ) . '",
-image_align:"' . mce_escape( __('Alignment') ) . '",
-image_align_baseline:"' . mce_escape( __('Baseline') ) . '",
-image_align_top:"' . mce_escape( __('Top') ) . '",
-image_align_middle:"' . mce_escape( __('Middle') ) . '",
-image_align_bottom:"' . mce_escape( __('Bottom') ) . '",
-image_align_texttop:"' . mce_escape( __('Text top') ) . '",
-image_align_textbottom:"' . mce_escape( __('Text bottom') ) . '",
-image_align_left:"' . mce_escape( __('Left') ) . '",
-image_align_right:"' . mce_escape( __('Right') ) . '",
-link_title:"' . mce_escape( __('Insert/edit link') ) . '",
-link_url:"' . mce_escape( __('Link URL') ) . '",
-link_target:"' . mce_escape( __('Target') ) . '",
-link_target_same:"' . mce_escape( __('Open link in the same window') ) . '",
-link_target_blank:"' . mce_escape( __('Open link in a new window') ) . '",
-link_titlefield:"' . mce_escape( __('Title') ) . '",
-link_is_email:"' . mce_escape( __('The URL you entered seems to be an email address, do you want to add the required mailto: prefix?') ) . '",
-link_is_external:"' . mce_escape( __('The URL you entered seems to external link, do you want to add the required http:// prefix?') ) . '",
-link_list:"' . mce_escape( __('Link list') ) . '",
-accessibility_help:"' . mce_escape( __('Accessibility Help') ) . '",
-accessibility_usage_title:"' . mce_escape( __('General Usage') ) . '"
-});
-
-tinyMCE.addI18n("' . _WP_Editors::$mce_locale . '.media_dlg",{
-title:"' . mce_escape( __('Insert / edit embedded media') ) . '",
-general:"' . mce_escape( __('General') ) . '",
-advanced:"' . mce_escape( __('Advanced') ) . '",
-file:"' . mce_escape( __('File/URL') ) . '",
-list:"' . mce_escape( __('List') ) . '",
-size:"' . mce_escape( __('Dimensions') ) . '",
-preview:"' . mce_escape( __('Preview') ) . '",
-constrain_proportions:"' . mce_escape( __('Constrain proportions') ) . '",
-type:"' . mce_escape( __('Type') ) . '",
-id:"' . mce_escape( __('Id') ) . '",
-name:"' . mce_escape( _x('Name', 'html attribute') ) . '",
-class_name:"' . mce_escape( __('Class') ) . '",
-vspace:"' . mce_escape( __('V-Space') ) . '",
-hspace:"' . mce_escape( __('H-Space') ) . '",
-play:"' . mce_escape( __('Auto play') ) . '",
-loop:"' . mce_escape( __('Loop') ) . '",
-menu:"' . mce_escape( __('Show menu') ) . '",
-quality:"' . mce_escape( __('Quality') ) . '",
-scale:"' . mce_escape( __('Scale') ) . '",
-align:"' . mce_escape( __('Align') ) . '",
-salign:"' . mce_escape( __('SAlign') ) . '",
-wmode:"' . mce_escape( __('WMode') ) . '",
-bgcolor:"' . mce_escape( __('Background') ) . '",
-base:"' . mce_escape( __('Base') ) . '",
-flashvars:"' . mce_escape( __('Flashvars') ) . '",
-liveconnect:"' . mce_escape( __('SWLiveConnect') ) . '",
-autohref:"' . mce_escape( __('AutoHREF') ) . '",
-cache:"' . mce_escape( __('Cache') ) . '",
-hidden:"' . mce_escape( __('Hidden') ) . '",
-controller:"' . mce_escape( __('Controller') ) . '",
-kioskmode:"' . mce_escape( __('Kiosk mode') ) . '",
-playeveryframe:"' . mce_escape( __('Play every frame') ) . '",
-targetcache:"' . mce_escape( __('Target cache') ) . '",
-correction:"' . mce_escape( __('No correction') ) . '",
-enablejavascript:"' . mce_escape( __('Enable JavaScript') ) . '",
-starttime:"' . mce_escape( __('Start time') ) . '",
-endtime:"' . mce_escape( __('End time') ) . '",
-href:"' . mce_escape( __('href') ) . '",
-qtsrcchokespeed:"' . mce_escape( __('Choke speed') ) . '",
-target:"' . mce_escape( __('Target') ) . '",
-volume:"' . mce_escape( __('Volume') ) . '",
-autostart:"' . mce_escape( __('Auto start') ) . '",
-enabled:"' . mce_escape( __('Enabled') ) . '",
-fullscreen:"' . mce_escape( __('Fullscreen') ) . '",
-invokeurls:"' . mce_escape( __('Invoke URLs') ) . '",
-mute:"' . mce_escape( __('Mute') ) . '",
-stretchtofit:"' . mce_escape( __('Stretch to fit') ) . '",
-windowlessvideo:"' . mce_escape( __('Windowless video') ) . '",
-balance:"' . mce_escape( __('Balance') ) . '",
-baseurl:"' . mce_escape( __('Base URL') ) . '",
-captioningid:"' . mce_escape( __('Captioning id') ) . '",
-currentmarker:"' . mce_escape( __('Current marker') ) . '",
-currentposition:"' . mce_escape( __('Current position') ) . '",
-defaultframe:"' . mce_escape( __('Default frame') ) . '",
-playcount:"' . mce_escape( __('Play count') ) . '",
-rate:"' . mce_escape( __('Rate') ) . '",
-uimode:"' . mce_escape( __('UI Mode') ) . '",
-flash_options:"' . mce_escape( __('Flash options') ) . '",
-qt_options:"' . mce_escape( __('Quicktime options') ) . '",
-wmp_options:"' . mce_escape( __('Windows media player options') ) . '",
-rmp_options:"' . mce_escape( __('Real media player options') ) . '",
-shockwave_options:"' . mce_escape( __('Shockwave options') ) . '",
-autogotourl:"' . mce_escape( __('Auto goto URL') ) . '",
-center:"' . mce_escape( __('Center') ) . '",
-imagestatus:"' . mce_escape( __('Image status') ) . '",
-maintainaspect:"' . mce_escape( __('Maintain aspect') ) . '",
-nojava:"' . mce_escape( __('No java') ) . '",
-prefetch:"' . mce_escape( __('Prefetch') ) . '",
-shuffle:"' . mce_escape( __('Shuffle') ) . '",
-console:"' . mce_escape( __('Console') ) . '",
-numloop:"' . mce_escape( __('Num loops') ) . '",
-controls:"' . mce_escape( __('Controls') ) . '",
-scriptcallbacks:"' . mce_escape( __('Script callbacks') ) . '",
-swstretchstyle:"' . mce_escape( __('Stretch style') ) . '",
-swstretchhalign:"' . mce_escape( __('Stretch H-Align') ) . '",
-swstretchvalign:"' . mce_escape( __('Stretch V-Align') ) . '",
-sound:"' . mce_escape( __('Sound') ) . '",
-progress:"' . mce_escape( __('Progress') ) . '",
-qtsrc:"' . mce_escape( __('QT Src') ) . '",
-qt_stream_warn:"' . mce_escape( __('Streamed rtsp resources should be added to the QT Src field under the advanced tab.') ) . '",
-align_top:"' . mce_escape( __('Top') ) . '",
-align_right:"' . mce_escape( __('Right') ) . '",
-align_bottom:"' . mce_escape( __('Bottom') ) . '",
-align_left:"' . mce_escape( __('Left') ) . '",
-align_center:"' . mce_escape( __('Center') ) . '",
-align_top_left:"' . mce_escape( __('Top left') ) . '",
-align_top_right:"' . mce_escape( __('Top right') ) . '",
-align_bottom_left:"' . mce_escape( __('Bottom left') ) . '",
-align_bottom_right:"' . mce_escape( __('Bottom right') ) . '",
-flv_options:"' . mce_escape( __('Flash video options') ) . '",
-flv_scalemode:"' . mce_escape( __('Scale mode') ) . '",
-flv_buffer:"' . mce_escape( __('Buffer') ) . '",
-flv_startimage:"' . mce_escape( __('Start image') ) . '",
-flv_starttime:"' . mce_escape( __('Start time') ) . '",
-flv_defaultvolume:"' . mce_escape( __('Default volume') ) . '",
-flv_hiddengui:"' . mce_escape( __('Hidden GUI') ) . '",
-flv_autostart:"' . mce_escape( __('Auto start') ) . '",
-flv_loop:"' . mce_escape( __('Loop') ) . '",
-flv_showscalemodes:"' . mce_escape( __('Show scale modes') ) . '",
-flv_smoothvideo:"' . mce_escape( __('Smooth video') ) . '",
-flv_jscallback:"' . mce_escape( __('JS Callback') ) . '",
-html5_video_options:"' . mce_escape( __('HTML5 Video Options') ) . '",
-altsource1:"' . mce_escape( __('Alternative source 1') ) . '",
-altsource2:"' . mce_escape( __('Alternative source 2') ) . '",
-preload:"' . mce_escape( __('Preload') ) . '",
-poster:"' . mce_escape( __('Poster') ) . '",
-source:"' . mce_escape( __('Source') ) . '"
-});
-
-tinyMCE.addI18n("' . _WP_Editors::$mce_locale . '.wordpress",{
-wp_adv_desc:"' . mce_escape( __('Show/Hide Kitchen Sink (Alt + Shift + Z)') )  . '",
-wp_more_desc:"' . mce_escape( __('Insert More Tag (Alt + Shift + T)') ) . '",
-wp_page_desc:"' . mce_escape( __('Insert Page break (Alt + Shift + P)') ) . '",
-wp_help_desc:"' . mce_escape( __('Help (Alt + Shift + H)') ) . '",
-wp_more_alt:"' . mce_escape( __('More...') ) . '",
-wp_page_alt:"' . mce_escape( __('Next page...') ) . '",
-add_media:"' . mce_escape( __('Add Media') ) . '",
-add_image:"' . mce_escape( __('Add an Image') ) . '",
-add_video:"' . mce_escape( __('Add Video') ) . '",
-add_audio:"' . mce_escape( __('Add Audio') ) . '",
-editgallery:"' . mce_escape( __('Edit Gallery') ) . '",
-delgallery:"' . mce_escape( __('Delete Gallery') ) . '"
-});
-
-tinyMCE.addI18n("' . _WP_Editors::$mce_locale . '.wpeditimage",{
-edit_img:"' . mce_escape( __('Edit Image') )  . '",
-del_img:"' . mce_escape( __('Delete Image') )  . '",
-adv_settings:"' . mce_escape( __('Advanced Settings') )  . '",
-none:"' . mce_escape( __('None') )  . '",
-size:"' . mce_escape( __('Size') ) . '",
-thumbnail:"' . mce_escape( __('Thumbnail') ) . '",
-medium:"' . mce_escape( __('Medium') ) . '",
-full_size:"' . mce_escape( __('Full Size') ) . '",
-current_link:"' . mce_escape( __('Current Link') ) . '",
-link_to_img:"' . mce_escape( __('Link to Image') ) . '",
-link_help:"' . mce_escape( __('Enter a link URL or click above for presets.') ) . '",
-adv_img_settings:"' . mce_escape( __('Advanced Image Settings') ) . '",
-source:"' . mce_escape( __('Source') )  . '",
-width:"' . mce_escape( __('Width') ) . '",
-height:"' . mce_escape( __('Height') ) . '",
-orig_size:"' . mce_escape( __('Original Size') ) . '",
-css:"' . mce_escape( __('CSS Class') ) . '",
-adv_link_settings:"' . mce_escape( __('Advanced Link Settings') )  . '",
-link_rel:"' . mce_escape( __('Link Rel') ) . '",
-height:"' . mce_escape( __('Height') ) . '",
-orig_size:"' . mce_escape( __('Original Size') ) . '",
-css:"' . mce_escape( __('CSS Class') ) . '",
-s60:"' . mce_escape( __('60%') ) . '",
-s70:"' . mce_escape( __('70%') ) . '",
-s80:"' . mce_escape( __('80%') ) . '",
-s90:"' . mce_escape( __('90%') ) . '",
-s100:"' . mce_escape( __('100%') ) . '",
-s110:"' . mce_escape( __('110%') ) . '",
-s120:"' . mce_escape( __('120%') ) . '",
-s130:"' . mce_escape( __('130%') ) . '",
-img_title:"' . mce_escape( __('Title') ) . '",
-caption:"' . mce_escape( __('Caption') ) . '",
-alt:"' . mce_escape( __('Alternate Text') ) . '"
-});
-';
+
+$lang = wp_mce_translation();
+
diff --git a/wp-includes/js/tinymce/mark_loaded_src.js b/wp-includes/js/tinymce/mark_loaded_src.js
new file mode 100644 (file)
index 0000000..2b53192
--- /dev/null
@@ -0,0 +1,20 @@
+(function(){
+       if ( typeof tinyMCEPreInit === 'undefined' )
+               return;
+
+       var t = tinyMCEPreInit, baseurl = t.base, markDone = tinymce.ScriptLoader.markDone, lang = t.ref.language,
+               theme = t.ref.theme, plugins = t.ref.plugins, suffix = t.suffix;
+
+       markDone( baseurl+'/langs/'+lang+'.js' );
+       markDone( baseurl+'/themes/'+theme+'/editor_template'+suffix+'.js' );
+       markDone( baseurl+'/themes/'+theme+'/langs/'+lang+'.js' );
+       markDone( baseurl+'/themes/'+theme+'/langs/'+lang+'_dlg.js' );
+
+       tinymce.each( plugins.split(','), function(plugin){
+               if ( plugin && plugin.charAt(0) != '-' ) {
+                       markDone( baseurl+'/plugins/'+plugin+'/editor_plugin'+suffix+'.js' );
+                       markDone( baseurl+'/plugins/'+plugin+'/langs/'+lang+'.js' );
+                       markDone( baseurl+'/plugins/'+plugin+'/langs/'+lang+'_dlg.js' )
+               }
+       });
+})();
diff --git a/wp-includes/js/tinymce/plugins/directionality/editor_plugin_src.js b/wp-includes/js/tinymce/plugins/directionality/editor_plugin_src.js
new file mode 100644 (file)
index 0000000..205d02c
--- /dev/null
@@ -0,0 +1,82 @@
+/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+       tinymce.create('tinymce.plugins.Directionality', {
+               init : function(ed, url) {
+                       var t = this;
+
+                       t.editor = ed;
+
+                       ed.addCommand('mceDirectionLTR', function() {
+                               var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock);
+
+                               if (e) {
+                                       if (ed.dom.getAttrib(e, "dir") != "ltr")
+                                               ed.dom.setAttrib(e, "dir", "ltr");
+                                       else
+                                               ed.dom.setAttrib(e, "dir", "");
+                               }
+
+                               ed.nodeChanged();
+                       });
+
+                       ed.addCommand('mceDirectionRTL', function() {
+                               var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock);
+
+                               if (e) {
+                                       if (ed.dom.getAttrib(e, "dir") != "rtl")
+                                               ed.dom.setAttrib(e, "dir", "rtl");
+                                       else
+                                               ed.dom.setAttrib(e, "dir", "");
+                               }
+
+                               ed.nodeChanged();
+                       });
+
+                       ed.addButton('ltr', {title : 'directionality.ltr_desc', cmd : 'mceDirectionLTR'});
+                       ed.addButton('rtl', {title : 'directionality.rtl_desc', cmd : 'mceDirectionRTL'});
+
+                       ed.onNodeChange.add(t._nodeChange, t);
+               },
+
+               getInfo : function() {
+                       return {
+                               longname : 'Directionality',
+                               author : 'Moxiecode Systems AB',
+                               authorurl : 'http://tinymce.moxiecode.com',
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality',
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion
+                       };
+               },
+
+               // Private methods
+
+               _nodeChange : function(ed, cm, n) {
+                       var dom = ed.dom, dir;
+
+                       n = dom.getParent(n, dom.isBlock);
+                       if (!n) {
+                               cm.setDisabled('ltr', 1);
+                               cm.setDisabled('rtl', 1);
+                               return;
+                       }
+
+                       dir = dom.getAttrib(n, 'dir');
+                       cm.setActive('ltr', dir == "ltr");
+                       cm.setDisabled('ltr', 0);
+                       cm.setActive('rtl', dir == "rtl");
+                       cm.setDisabled('rtl', 0);
+               }
+       });
+
+       // Register plugin
+       tinymce.PluginManager.add('directionality', tinymce.plugins.Directionality);
+})();
\ No newline at end of file
diff --git a/wp-includes/js/tinymce/plugins/fullscreen/editor_plugin_src.js b/wp-includes/js/tinymce/plugins/fullscreen/editor_plugin_src.js
new file mode 100644 (file)
index 0000000..42af070
--- /dev/null
@@ -0,0 +1,159 @@
+/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+       var DOM = tinymce.DOM;
+
+       tinymce.create('tinymce.plugins.FullScreenPlugin', {
+               init : function(ed, url) {
+                       var t = this, s = {}, vp, posCss;
+
+                       t.editor = ed;
+
+                       // Register commands
+                       ed.addCommand('mceFullScreen', function() {
+                               var win, de = DOM.doc.documentElement;
+
+                               if (ed.getParam('fullscreen_is_enabled')) {
+                                       if (ed.getParam('fullscreen_new_window'))
+                                               closeFullscreen(); // Call to close in new window
+                                       else {
+                                               DOM.win.setTimeout(function() {
+                                                       tinymce.dom.Event.remove(DOM.win, 'resize', t.resizeFunc);
+                                                       tinyMCE.get(ed.getParam('fullscreen_editor_id')).setContent(ed.getContent());
+                                                       tinyMCE.remove(ed);
+                                                       DOM.remove('mce_fullscreen_container');
+                                                       de.style.overflow = ed.getParam('fullscreen_html_overflow');
+                                                       DOM.setStyle(DOM.doc.body, 'overflow', ed.getParam('fullscreen_overflow'));
+                                                       DOM.win.scrollTo(ed.getParam('fullscreen_scrollx'), ed.getParam('fullscreen_scrolly'));
+                                                       tinyMCE.settings = tinyMCE.oldSettings; // Restore old settings
+                                               }, 10);
+                                       }
+
+                                       return;
+                               }
+
+                               if (ed.getParam('fullscreen_new_window')) {
+                                       win = DOM.win.open(url + "/fullscreen.htm", "mceFullScreenPopup", "fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width=" + screen.availWidth + ",height=" + screen.availHeight);
+                                       try {
+                                               win.resizeTo(screen.availWidth, screen.availHeight);
+                                       } catch (e) {
+                                               // Ignore
+                                       }
+                               } else {
+                                       tinyMCE.oldSettings = tinyMCE.settings; // Store old settings
+                                       s.fullscreen_overflow = DOM.getStyle(DOM.doc.body, 'overflow', 1) || 'auto';
+                                       s.fullscreen_html_overflow = DOM.getStyle(de, 'overflow', 1);
+                                       vp = DOM.getViewPort();
+                                       s.fullscreen_scrollx = vp.x;
+                                       s.fullscreen_scrolly = vp.y;
+
+                                       // Fixes an Opera bug where the scrollbars doesn't reappear
+                                       if (tinymce.isOpera && s.fullscreen_overflow == 'visible')
+                                               s.fullscreen_overflow = 'auto';
+
+                                       // Fixes an IE bug where horizontal scrollbars would appear
+                                       if (tinymce.isIE && s.fullscreen_overflow == 'scroll')
+                                               s.fullscreen_overflow = 'auto';
+
+                                       // Fixes an IE bug where the scrollbars doesn't reappear
+                                       if (tinymce.isIE && (s.fullscreen_html_overflow == 'visible' || s.fullscreen_html_overflow == 'scroll'))
+                                               s.fullscreen_html_overflow = 'auto'; 
+
+                                       if (s.fullscreen_overflow == '0px')
+                                               s.fullscreen_overflow = '';
+
+                                       DOM.setStyle(DOM.doc.body, 'overflow', 'hidden');
+                                       de.style.overflow = 'hidden'; //Fix for IE6/7
+                                       vp = DOM.getViewPort();
+                                       DOM.win.scrollTo(0, 0);
+
+                                       if (tinymce.isIE)
+                                               vp.h -= 1;
+
+                                       // Use fixed position if it exists
+                                       if (tinymce.isIE6)
+                                               posCss = 'absolute;top:' + vp.y;
+                                       else
+                                               posCss = 'fixed;top:0';
+
+                                       n = DOM.add(DOM.doc.body, 'div', {
+                                               id : 'mce_fullscreen_container', 
+                                               style : 'position:' + posCss + ';left:0;width:' + vp.w + 'px;height:' + vp.h + 'px;z-index:200000;'});
+                                       DOM.add(n, 'div', {id : 'mce_fullscreen'});
+
+                                       tinymce.each(ed.settings, function(v, n) {
+                                               s[n] = v;
+                                       });
+
+                                       s.id = 'mce_fullscreen';
+                                       s.width = n.clientWidth;
+                                       s.height = n.clientHeight - 15;
+                                       s.fullscreen_is_enabled = true;
+                                       s.fullscreen_editor_id = ed.id;
+                                       s.theme_advanced_resizing = false;
+                                       s.save_onsavecallback = function() {
+                                               ed.setContent(tinyMCE.get(s.id).getContent());
+                                               ed.execCommand('mceSave');
+                                       };
+
+                                       tinymce.each(ed.getParam('fullscreen_settings'), function(v, k) {
+                                               s[k] = v;
+                                       });
+
+                                       if (s.theme_advanced_toolbar_location === 'external')
+                                               s.theme_advanced_toolbar_location = 'top';
+
+                                       t.fullscreenEditor = new tinymce.Editor('mce_fullscreen', s);
+                                       t.fullscreenEditor.onInit.add(function() {
+                                               t.fullscreenEditor.setContent(ed.getContent());
+                                               t.fullscreenEditor.focus();
+                                       });
+
+                                       t.fullscreenEditor.render();
+
+                                       t.fullscreenElement = new tinymce.dom.Element('mce_fullscreen_container');
+                                       t.fullscreenElement.update();
+                                       //document.body.overflow = 'hidden';
+
+                                       t.resizeFunc = tinymce.dom.Event.add(DOM.win, 'resize', function() {
+                                               var vp = tinymce.DOM.getViewPort(), fed = t.fullscreenEditor, outerSize, innerSize;
+
+                                               // Get outer/inner size to get a delta size that can be used to calc the new iframe size
+                                               outerSize = fed.dom.getSize(fed.getContainer().firstChild);
+                                               innerSize = fed.dom.getSize(fed.getContainer().getElementsByTagName('iframe')[0]);
+
+                                               fed.theme.resizeTo(vp.w - outerSize.w + innerSize.w, vp.h - outerSize.h + innerSize.h);
+                                       });
+                               }
+                       });
+
+                       // Register buttons
+                       ed.addButton('fullscreen', {title : 'fullscreen.desc', cmd : 'mceFullScreen'});
+
+                       ed.onNodeChange.add(function(ed, cm) {
+                               cm.setActive('fullscreen', ed.getParam('fullscreen_is_enabled'));
+                       });
+               },
+
+               getInfo : function() {
+                       return {
+                               longname : 'Fullscreen',
+                               author : 'Moxiecode Systems AB',
+                               authorurl : 'http://tinymce.moxiecode.com',
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen',
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion
+                       };
+               }
+       });
+
+       // Register plugin
+       tinymce.PluginManager.add('fullscreen', tinymce.plugins.FullScreenPlugin);
+})();
\ No newline at end of file
index fe49d3b6a55a87a40f1224a3a1068d7c85e216ce..48744fab7c46dd89f3c30c68018e467939c9be5e 100644 (file)
@@ -3,7 +3,7 @@
 <head>
        <title></title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
 <head>
        <title></title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
-       <script type="text/javascript" src="../../tiny_mce.js?ver=345-20110908"></script>
+       <script type="text/javascript" src="../../tiny_mce.js?ver=349-20120314"></script>
        <script type="text/javascript">
                function patchCallback(settings, key) {
                        if (settings[key])
        <script type="text/javascript">
                function patchCallback(settings, key) {
                        if (settings[key])
diff --git a/wp-includes/js/tinymce/plugins/inlinepopups/editor_plugin_src.js b/wp-includes/js/tinymce/plugins/inlinepopups/editor_plugin_src.js
new file mode 100644 (file)
index 0000000..2a6f3ad
--- /dev/null
@@ -0,0 +1,699 @@
+/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+       var DOM = tinymce.DOM, Element = tinymce.dom.Element, Event = tinymce.dom.Event, each = tinymce.each, is = tinymce.is;
+
+       tinymce.create('tinymce.plugins.InlinePopups', {
+               init : function(ed, url) {
+                       // Replace window manager
+                       ed.onBeforeRenderUI.add(function() {
+                               ed.windowManager = new tinymce.InlineWindowManager(ed);
+                               DOM.loadCSS(url + '/skins/' + (ed.settings.inlinepopups_skin || 'clearlooks2') + "/window.css");
+                       });
+               },
+
+               getInfo : function() {
+                       return {
+                               longname : 'InlinePopups',
+                               author : 'Moxiecode Systems AB',
+                               authorurl : 'http://tinymce.moxiecode.com',
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion
+                       };
+               }
+       });
+
+       tinymce.create('tinymce.InlineWindowManager:tinymce.WindowManager', {
+               InlineWindowManager : function(ed) {
+                       var t = this;
+
+                       t.parent(ed);
+                       t.zIndex = 300000;
+                       t.count = 0;
+                       t.windows = {};
+               },
+
+               open : function(f, p) {
+                       var t = this, id, opt = '', ed = t.editor, dw = 0, dh = 0, vp, po, mdf, clf, we, w, u, parentWindow;
+
+                       f = f || {};
+                       p = p || {};
+
+                       // Run native windows
+                       if (!f.inline)
+                               return t.parent(f, p);
+
+                       parentWindow = t._frontWindow();
+                       if (parentWindow && DOM.get(parentWindow.id + '_ifr')) {
+                               parentWindow.focussedElement = DOM.get(parentWindow.id + '_ifr').contentWindow.document.activeElement;
+                       }
+                       
+                       // Only store selection if the type is a normal window
+                       if (!f.type)
+                               t.bookmark = ed.selection.getBookmark(1);
+
+                       id = DOM.uniqueId();
+                       vp = DOM.getViewPort();
+                       f.width = parseInt(f.width || 320);
+                       f.height = parseInt(f.height || 240) + (tinymce.isIE ? 8 : 0);
+                       f.min_width = parseInt(f.min_width || 150);
+                       f.min_height = parseInt(f.min_height || 100);
+                       f.max_width = parseInt(f.max_width || 2000);
+                       f.max_height = parseInt(f.max_height || 2000);
+                       f.left = f.left || Math.round(Math.max(vp.x, vp.x + (vp.w / 2.0) - (f.width / 2.0)));
+                       f.top = f.top || Math.round(Math.max(vp.y, vp.y + (vp.h / 2.0) - (f.height / 2.0)));
+                       f.movable = f.resizable = true;
+                       p.mce_width = f.width;
+                       p.mce_height = f.height;
+                       p.mce_inline = true;
+                       p.mce_window_id = id;
+                       p.mce_auto_focus = f.auto_focus;
+
+                       // Transpose
+//                     po = DOM.getPos(ed.getContainer());
+//                     f.left -= po.x;
+//                     f.top -= po.y;
+
+                       t.features = f;
+                       t.params = p;
+                       t.onOpen.dispatch(t, f, p);
+
+                       if (f.type) {
+                               opt += ' mceModal';
+
+                               if (f.type)
+                                       opt += ' mce' + f.type.substring(0, 1).toUpperCase() + f.type.substring(1);
+
+                               f.resizable = false;
+                       }
+
+                       if (f.statusbar)
+                               opt += ' mceStatusbar';
+
+                       if (f.resizable)
+                               opt += ' mceResizable';
+
+                       if (f.minimizable)
+                               opt += ' mceMinimizable';
+
+                       if (f.maximizable)
+                               opt += ' mceMaximizable';
+
+                       if (f.movable)
+                               opt += ' mceMovable';
+
+                       // Create DOM objects
+                       t._addAll(DOM.doc.body, 
+                               ['div', {id : id, role : 'dialog', 'aria-labelledby': f.type ? id + '_content' : id + '_title', 'class' : (ed.settings.inlinepopups_skin || 'clearlooks2') + (tinymce.isIE && window.getSelection ? ' ie9' : ''), style : 'width:100px;height:100px'}, 
+                                       ['div', {id : id + '_wrapper', 'class' : 'mceWrapper' + opt},
+                                               ['div', {id : id + '_top', 'class' : 'mceTop'}, 
+                                                       ['div', {'class' : 'mceLeft'}],
+                                                       ['div', {'class' : 'mceCenter'}],
+                                                       ['div', {'class' : 'mceRight'}],
+                                                       ['span', {id : id + '_title'}, f.title || '']
+                                               ],
+
+                                               ['div', {id : id + '_middle', 'class' : 'mceMiddle'}, 
+                                                       ['div', {id : id + '_left', 'class' : 'mceLeft', tabindex : '0'}],
+                                                       ['span', {id : id + '_content'}],
+                                                       ['div', {id : id + '_right', 'class' : 'mceRight', tabindex : '0'}]
+                                               ],
+
+                                               ['div', {id : id + '_bottom', 'class' : 'mceBottom'},
+                                                       ['div', {'class' : 'mceLeft'}],
+                                                       ['div', {'class' : 'mceCenter'}],
+                                                       ['div', {'class' : 'mceRight'}],
+                                                       ['span', {id : id + '_status'}, 'Content']
+                                               ],
+
+                                               ['a', {'class' : 'mceMove', tabindex : '-1', href : 'javascript:;'}],
+                                               ['a', {'class' : 'mceMin', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
+                                               ['a', {'class' : 'mceMax', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
+                                               ['a', {'class' : 'mceMed', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
+                                               ['a', {'class' : 'mceClose', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
+                                               ['a', {id : id + '_resize_n', 'class' : 'mceResize mceResizeN', tabindex : '-1', href : 'javascript:;'}],
+                                               ['a', {id : id + '_resize_s', 'class' : 'mceResize mceResizeS', tabindex : '-1', href : 'javascript:;'}],
+                                               ['a', {id : id + '_resize_w', 'class' : 'mceResize mceResizeW', tabindex : '-1', href : 'javascript:;'}],
+                                               ['a', {id : id + '_resize_e', 'class' : 'mceResize mceResizeE', tabindex : '-1', href : 'javascript:;'}],
+                                               ['a', {id : id + '_resize_nw', 'class' : 'mceResize mceResizeNW', tabindex : '-1', href : 'javascript:;'}],
+                                               ['a', {id : id + '_resize_ne', 'class' : 'mceResize mceResizeNE', tabindex : '-1', href : 'javascript:;'}],
+                                               ['a', {id : id + '_resize_sw', 'class' : 'mceResize mceResizeSW', tabindex : '-1', href : 'javascript:;'}],
+                                               ['a', {id : id + '_resize_se', 'class' : 'mceResize mceResizeSE', tabindex : '-1', href : 'javascript:;'}]
+                                       ]
+                               ]
+                       );
+
+                       DOM.setStyles(id, {top : -10000, left : -10000});
+
+                       // Fix gecko rendering bug, where the editors iframe messed with window contents
+                       if (tinymce.isGecko)
+                               DOM.setStyle(id, 'overflow', 'auto');
+
+                       // Measure borders
+                       if (!f.type) {
+                               dw += DOM.get(id + '_left').clientWidth;
+                               dw += DOM.get(id + '_right').clientWidth;
+                               dh += DOM.get(id + '_top').clientHeight;
+                               dh += DOM.get(id + '_bottom').clientHeight;
+                       }
+
+                       // Resize window
+                       DOM.setStyles(id, {top : f.top, left : f.left, width : f.width + dw, height : f.height + dh});
+
+                       u = f.url || f.file;
+                       if (u) {
+                               if (tinymce.relaxedDomain)
+                                       u += (u.indexOf('?') == -1 ? '?' : '&') + 'mce_rdomain=' + tinymce.relaxedDomain;
+
+                               u = tinymce._addVer(u);
+                       }
+
+                       if (!f.type) {
+                               DOM.add(id + '_content', 'iframe', {id : id + '_ifr', src : 'javascript:""', frameBorder : 0, style : 'border:0;width:10px;height:10px'});
+                               DOM.setStyles(id + '_ifr', {width : f.width, height : f.height});
+                               DOM.setAttrib(id + '_ifr', 'src', u);
+                       } else {
+                               DOM.add(id + '_wrapper', 'a', {id : id + '_ok', 'class' : 'mceButton mceOk', href : 'javascript:;', onmousedown : 'return false;'}, 'Ok');
+
+                               if (f.type == 'confirm')
+                                       DOM.add(id + '_wrapper', 'a', {'class' : 'mceButton mceCancel', href : 'javascript:;', onmousedown : 'return false;'}, 'Cancel');
+
+                               DOM.add(id + '_middle', 'div', {'class' : 'mceIcon'});
+                               DOM.setHTML(id + '_content', f.content.replace('\n', '<br />'));
+                               
+                               Event.add(id, 'keyup', function(evt) {
+                                       var VK_ESCAPE = 27;
+                                       if (evt.keyCode === VK_ESCAPE) {
+                                               f.button_func(false);
+                                               return Event.cancel(evt);
+                                       }
+                               });
+
+                               Event.add(id, 'keydown', function(evt) {
+                                       var cancelButton, VK_TAB = 9;
+                                       if (evt.keyCode === VK_TAB) {
+                                               cancelButton = DOM.select('a.mceCancel', id + '_wrapper')[0];
+                                               if (cancelButton && cancelButton !== evt.target) {
+                                                       cancelButton.focus();
+                                               } else {
+                                                       DOM.get(id + '_ok').focus();
+                                               }
+                                               return Event.cancel(evt);
+                                       }
+                               });
+                       }
+
+                       // Register events
+                       mdf = Event.add(id, 'mousedown', function(e) {
+                               var n = e.target, w, vp;
+
+                               w = t.windows[id];
+                               t.focus(id);
+
+                               if (n.nodeName == 'A' || n.nodeName == 'a') {
+                                       if (n.className == 'mceClose') {
+                                               t.close(null, id);
+                                               return Event.cancel(e);
+                                       } else if (n.className == 'mceMax') {
+                                               w.oldPos = w.element.getXY();
+                                               w.oldSize = w.element.getSize();
+
+                                               vp = DOM.getViewPort();
+
+                                               // Reduce viewport size to avoid scrollbars
+                                               vp.w -= 2;
+                                               vp.h -= 2;
+
+                                               w.element.moveTo(vp.x, vp.y);
+                                               w.element.resizeTo(vp.w, vp.h);
+                                               DOM.setStyles(id + '_ifr', {width : vp.w - w.deltaWidth, height : vp.h - w.deltaHeight});
+                                               DOM.addClass(id + '_wrapper', 'mceMaximized');
+                                       } else if (n.className == 'mceMed') {
+                                               // Reset to old size
+                                               w.element.moveTo(w.oldPos.x, w.oldPos.y);
+                                               w.element.resizeTo(w.oldSize.w, w.oldSize.h);
+                                               w.iframeElement.resizeTo(w.oldSize.w - w.deltaWidth, w.oldSize.h - w.deltaHeight);
+
+                                               DOM.removeClass(id + '_wrapper', 'mceMaximized');
+                                       } else if (n.className == 'mceMove')
+                                               return t._startDrag(id, e, n.className);
+                                       else if (DOM.hasClass(n, 'mceResize'))
+                                               return t._startDrag(id, e, n.className.substring(13));
+                               }
+                       });
+
+                       clf = Event.add(id, 'click', function(e) {
+                               var n = e.target;
+
+                               t.focus(id);
+
+                               if (n.nodeName == 'A' || n.nodeName == 'a') {
+                                       switch (n.className) {
+                                               case 'mceClose':
+                                                       t.close(null, id);
+                                                       return Event.cancel(e);
+
+                                               case 'mceButton mceOk':
+                                               case 'mceButton mceCancel':
+                                                       f.button_func(n.className == 'mceButton mceOk');
+                                                       return Event.cancel(e);
+                                       }
+                               }
+                       });
+                       
+                       // Make sure the tab order loops within the dialog.
+                       Event.add([id + '_left', id + '_right'], 'focus', function(evt) {
+                               var iframe = DOM.get(id + '_ifr');
+                               if (iframe) {
+                                       var body = iframe.contentWindow.document.body;
+                                       var focusable = DOM.select(':input:enabled,*[tabindex=0]', body);
+                                       if (evt.target.id === (id + '_left')) {
+                                               focusable[focusable.length - 1].focus();
+                                       } else {
+                                               focusable[0].focus();
+                                       }
+                               } else {
+                                       DOM.get(id + '_ok').focus();
+                               }
+                       });
+                       
+                       // Add window
+                       w = t.windows[id] = {
+                               id : id,
+                               mousedown_func : mdf,
+                               click_func : clf,
+                               element : new Element(id, {blocker : 1, container : ed.getContainer()}),
+                               iframeElement : new Element(id + '_ifr'),
+                               features : f,
+                               deltaWidth : dw,
+                               deltaHeight : dh
+                       };
+
+                       w.iframeElement.on('focus', function() {
+                               t.focus(id);
+                       });
+
+                       // Setup blocker
+                       if (t.count == 0 && t.editor.getParam('dialog_type', 'modal') == 'modal') {
+                               DOM.add(DOM.doc.body, 'div', {
+                                       id : 'mceModalBlocker',
+                                       'class' : (t.editor.settings.inlinepopups_skin || 'clearlooks2') + '_modalBlocker',
+                                       style : {zIndex : t.zIndex - 1}
+                               });
+
+                               DOM.show('mceModalBlocker'); // Reduces flicker in IE
+                               DOM.setAttrib(DOM.doc.body, 'aria-hidden', 'true');
+                       } else
+                               DOM.setStyle('mceModalBlocker', 'z-index', t.zIndex - 1);
+
+                       if (tinymce.isIE6 || /Firefox\/2\./.test(navigator.userAgent) || (tinymce.isIE && !DOM.boxModel))
+                               DOM.setStyles('mceModalBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2});
+
+                       DOM.setAttrib(id, 'aria-hidden', 'false');
+                       t.focus(id);
+                       t._fixIELayout(id, 1);
+
+                       // Focus ok button
+                       if (DOM.get(id + '_ok'))
+                               DOM.get(id + '_ok').focus();
+                       t.count++;
+
+                       return w;
+               },
+
+               focus : function(id) {
+                       var t = this, w;
+
+                       if (w = t.windows[id]) {
+                               w.zIndex = this.zIndex++;
+                               w.element.setStyle('zIndex', w.zIndex);
+                               w.element.update();
+
+                               id = id + '_wrapper';
+                               DOM.removeClass(t.lastId, 'mceFocus');
+                               DOM.addClass(id, 'mceFocus');
+                               t.lastId = id;
+                               
+                               if (w.focussedElement) {
+                                       w.focussedElement.focus();
+                               } else if (DOM.get(id + '_ok')) {
+                                       DOM.get(w.id + '_ok').focus();
+                               } else if (DOM.get(w.id + '_ifr')) {
+                                       DOM.get(w.id + '_ifr').focus();
+                               }
+                       }
+               },
+
+               _addAll : function(te, ne) {
+                       var i, n, t = this, dom = tinymce.DOM;
+
+                       if (is(ne, 'string'))
+                               te.appendChild(dom.doc.createTextNode(ne));
+                       else if (ne.length) {
+                               te = te.appendChild(dom.create(ne[0], ne[1]));
+
+                               for (i=2; i<ne.length; i++)
+                                       t._addAll(te, ne[i]);
+                       }
+               },
+
+               _startDrag : function(id, se, ac) {
+                       var t = this, mu, mm, d = DOM.doc, eb, w = t.windows[id], we = w.element, sp = we.getXY(), p, sz, ph, cp, vp, sx, sy, sex, sey, dx, dy, dw, dh;
+
+                       // Get positons and sizes
+//                     cp = DOM.getPos(t.editor.getContainer());
+                       cp = {x : 0, y : 0};
+                       vp = DOM.getViewPort();
+
+                       // Reduce viewport size to avoid scrollbars while dragging
+                       vp.w -= 2;
+                       vp.h -= 2;
+
+                       sex = se.screenX;
+                       sey = se.screenY;
+                       dx = dy = dw = dh = 0;
+
+                       // Handle mouse up
+                       mu = Event.add(d, 'mouseup', function(e) {
+                               Event.remove(d, 'mouseup', mu);
+                               Event.remove(d, 'mousemove', mm);
+
+                               if (eb)
+                                       eb.remove();
+
+                               we.moveBy(dx, dy);
+                               we.resizeBy(dw, dh);
+                               sz = we.getSize();
+                               DOM.setStyles(id + '_ifr', {width : sz.w - w.deltaWidth, height : sz.h - w.deltaHeight});
+                               t._fixIELayout(id, 1);
+
+                               return Event.cancel(e);
+                       });
+
+                       if (ac != 'Move')
+                               startMove();
+
+                       function startMove() {
+                               if (eb)
+                                       return;
+
+                               t._fixIELayout(id, 0);
+
+                               // Setup event blocker
+                               DOM.add(d.body, 'div', {
+                                       id : 'mceEventBlocker',
+                                       'class' : 'mceEventBlocker ' + (t.editor.settings.inlinepopups_skin || 'clearlooks2'),
+                                       style : {zIndex : t.zIndex + 1}
+                               });
+
+                               if (tinymce.isIE6 || (tinymce.isIE && !DOM.boxModel))
+                                       DOM.setStyles('mceEventBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2});
+
+                               eb = new Element('mceEventBlocker');
+                               eb.update();
+
+                               // Setup placeholder
+                               p = we.getXY();
+                               sz = we.getSize();
+                               sx = cp.x + p.x - vp.x;
+                               sy = cp.y + p.y - vp.y;
+                               DOM.add(eb.get(), 'div', {id : 'mcePlaceHolder', 'class' : 'mcePlaceHolder', style : {left : sx, top : sy, width : sz.w, height : sz.h}});
+                               ph = new Element('mcePlaceHolder');
+                       };
+
+                       // Handle mouse move/drag
+                       mm = Event.add(d, 'mousemove', function(e) {
+                               var x, y, v;
+
+                               startMove();
+
+                               x = e.screenX - sex;
+                               y = e.screenY - sey;
+
+                               switch (ac) {
+                                       case 'ResizeW':
+                                               dx = x;
+                                               dw = 0 - x;
+                                               break;
+
+                                       case 'ResizeE':
+                                               dw = x;
+                                               break;
+
+                                       case 'ResizeN':
+                                       case 'ResizeNW':
+                                       case 'ResizeNE':
+                                               if (ac == "ResizeNW") {
+                                                       dx = x;
+                                                       dw = 0 - x;
+                                               } else if (ac == "ResizeNE")
+                                                       dw = x;
+
+                                               dy = y;
+                                               dh = 0 - y;
+                                               break;
+
+                                       case 'ResizeS':
+                                       case 'ResizeSW':
+                                       case 'ResizeSE':
+                                               if (ac == "ResizeSW") {
+                                                       dx = x;
+                                                       dw = 0 - x;
+                                               } else if (ac == "ResizeSE")
+                                                       dw = x;
+
+                                               dh = y;
+                                               break;
+
+                                       case 'mceMove':
+                                               dx = x;
+                                               dy = y;
+                                               break;
+                               }
+
+                               // Boundary check
+                               if (dw < (v = w.features.min_width - sz.w)) {
+                                       if (dx !== 0)
+                                               dx += dw - v;
+
+                                       dw = v;
+                               }
+       
+                               if (dh < (v = w.features.min_height - sz.h)) {
+                                       if (dy !== 0)
+                                               dy += dh - v;
+
+                                       dh = v;
+                               }
+
+                               dw = Math.min(dw, w.features.max_width - sz.w);
+                               dh = Math.min(dh, w.features.max_height - sz.h);
+                               dx = Math.max(dx, vp.x - (sx + vp.x));
+                               dy = Math.max(dy, vp.y - (sy + vp.y));
+                               dx = Math.min(dx, (vp.w + vp.x) - (sx + sz.w + vp.x));
+                               dy = Math.min(dy, (vp.h + vp.y) - (sy + sz.h + vp.y));
+
+                               // Move if needed
+                               if (dx + dy !== 0) {
+                                       if (sx + dx < 0)
+                                               dx = 0;
+       
+                                       if (sy + dy < 0)
+                                               dy = 0;
+
+                                       ph.moveTo(sx + dx, sy + dy);
+                               }
+
+                               // Resize if needed
+                               if (dw + dh !== 0)
+                                       ph.resizeTo(sz.w + dw, sz.h + dh);
+
+                               return Event.cancel(e);
+                       });
+
+                       return Event.cancel(se);
+               },
+
+               resizeBy : function(dw, dh, id) {
+                       var w = this.windows[id];
+
+                       if (w) {
+                               w.element.resizeBy(dw, dh);
+                               w.iframeElement.resizeBy(dw, dh);
+                       }
+               },
+
+               close : function(win, id) {
+                       var t = this, w, d = DOM.doc, fw, id;
+
+                       id = t._findId(id || win);
+
+                       // Probably not inline
+                       if (!t.windows[id]) {
+                               t.parent(win);
+                               return;
+                       }
+
+                       t.count--;
+
+                       if (t.count == 0) {
+                               DOM.remove('mceModalBlocker');
+                               DOM.setAttrib(DOM.doc.body, 'aria-hidden', 'false');
+                               t.editor.focus();
+                       }
+
+                       if (w = t.windows[id]) {
+                               t.onClose.dispatch(t);
+                               Event.remove(d, 'mousedown', w.mousedownFunc);
+                               Event.remove(d, 'click', w.clickFunc);
+                               Event.clear(id);
+                               Event.clear(id + '_ifr');
+
+                               DOM.setAttrib(id + '_ifr', 'src', 'javascript:""'); // Prevent leak
+                               w.element.remove();
+                               delete t.windows[id];
+
+                               fw = t._frontWindow();
+
+                               if (fw)
+                                       t.focus(fw.id);
+                       }
+               },
+               
+               // Find front most window
+               _frontWindow : function() {
+                       var fw, ix = 0;
+                       // Find front most window and focus that
+                       each (this.windows, function(w) {
+                               if (w.zIndex > ix) {
+                                       fw = w;
+                                       ix = w.zIndex;
+                               }
+                       });
+                       return fw;
+               },
+
+               setTitle : function(w, ti) {
+                       var e;
+
+                       w = this._findId(w);
+
+                       if (e = DOM.get(w + '_title'))
+                               e.innerHTML = DOM.encode(ti);
+               },
+
+               alert : function(txt, cb, s) {
+                       var t = this, w;
+
+                       w = t.open({
+                               title : t,
+                               type : 'alert',
+                               button_func : function(s) {
+                                       if (cb)
+                                               cb.call(s || t, s);
+
+                                       t.close(null, w.id);
+                               },
+                               content : DOM.encode(t.editor.getLang(txt, txt)),
+                               inline : 1,
+                               width : 400,
+                               height : 130
+                       });
+               },
+
+               confirm : function(txt, cb, s) {
+                       var t = this, w;
+
+                       w = t.open({
+                               title : t,
+                               type : 'confirm',
+                               button_func : function(s) {
+                                       if (cb)
+                                               cb.call(s || t, s);
+
+                                       t.close(null, w.id);
+                               },
+                               content : DOM.encode(t.editor.getLang(txt, txt)),
+                               inline : 1,
+                               width : 400,
+                               height : 130
+                       });
+               },
+
+               // Internal functions
+
+               _findId : function(w) {
+                       var t = this;
+
+                       if (typeof(w) == 'string')
+                               return w;
+
+                       each(t.windows, function(wo) {
+                               var ifr = DOM.get(wo.id + '_ifr');
+
+                               if (ifr && w == ifr.contentWindow) {
+                                       w = wo.id;
+                                       return false;
+                               }
+                       });
+
+                       return w;
+               },
+
+               _fixIELayout : function(id, s) {
+                       var w, img;
+
+                       if (!tinymce.isIE6)
+                               return;
+
+                       // Fixes the bug where hover flickers and does odd things in IE6
+                       each(['n','s','w','e','nw','ne','sw','se'], function(v) {
+                               var e = DOM.get(id + '_resize_' + v);
+
+                               DOM.setStyles(e, {
+                                       width : s ? e.clientWidth : '',
+                                       height : s ? e.clientHeight : '',
+                                       cursor : DOM.getStyle(e, 'cursor', 1)
+                               });
+
+                               DOM.setStyle(id + "_bottom", 'bottom', '-1px');
+
+                               e = 0;
+                       });
+
+                       // Fixes graphics glitch
+                       if (w = this.windows[id]) {
+                               // Fixes rendering bug after resize
+                               w.element.hide();
+                               w.element.show();
+
+                               // Forced a repaint of the window
+                               //DOM.get(id).style.filter = '';
+
+                               // IE has a bug where images used in CSS won't get loaded
+                               // sometimes when the cache in the browser is disabled
+                               // This fix tries to solve it by loading the images using the image object
+                               each(DOM.select('div,a', id), function(e, i) {
+                                       if (e.currentStyle.backgroundImage != 'none') {
+                                               img = new Image();
+                                               img.src = e.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/, '$1');
+                                       }
+                               });
+
+                               DOM.get(id).style.filter = '';
+                       }
+               }
+       });
+
+       // Register plugin
+       tinymce.PluginManager.add('inlinepopups', tinymce.plugins.InlinePopups);
+})();
+
index a4d9873c8afaa2803c197f554fee87978576baed..d31ebb0c966d3c4a1cff8a4ee37263cdee5f96f1 100644 (file)
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <title>Template for dialogs</title>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <title>Template for dialogs</title>
-<link rel="stylesheet" type="text/css" href="skins/clearlooks2/window.css?ver=345-20110908" />
+<link rel="stylesheet" type="text/css" href="skins/clearlooks2/window.css?ver=349-20120314" />
 </head>
 <body>
 
 </head>
 <body>
 
index f89959e2e25831233a6b272f93a13b5bfc922284..37b4320bd9faaafecacd72709810bff010f4e9e4 100644 (file)
@@ -1 +1 @@
-(function(){var d=tinymce.explode("id,name,width,height,style,align,class,hspace,vspace,bgcolor,type"),h=tinymce.makeMap(d.join(",")),b=tinymce.html.Node,f,a,g=tinymce.util.JSON,e;f=[["Flash","d27cdb6e-ae6d-11cf-96b8-444553540000","application/x-shockwave-flash","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],["ShockWave","166b1bca-3f9c-11cf-8075-444553540000","application/x-director","http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0"],["WindowsMedia","6bf52a52-394a-11d3-b153-00c04f79faa6,22d6f312-b0f6-11d0-94ab-0080c74c7e95,05589fa1-c356-11ce-bf01-00aa0055595a","application/x-mplayer2","http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"],["QuickTime","02bf25d5-8c17-4b23-bc80-d3488abddc6b","video/quicktime","http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"],["RealMedia","cfcdaa03-8be4-11cf-b84b-0020afbbccfa","audio/x-pn-realaudio-plugin","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],["Java","8ad9c840-044e-11d1-b3e9-00805f499d93","application/x-java-applet","http://java.sun.com/products/plugin/autodl/jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0"],["Silverlight","dfeaf541-f3e1-4c24-acac-99c30715084a","application/x-silverlight-2"],["Iframe"],["Video"],["Audio"]];function c(m){var l,j,k;if(m&&!m.splice){j=[];for(k=0;true;k++){if(m[k]){j[k]=m[k]}else{break}}return j}return m}tinymce.create("tinymce.plugins.MediaPlugin",{init:function(n,j){var r=this,l={},m,p,q,k;function o(i){return i&&i.nodeName==="IMG"&&n.dom.hasClass(i,"mceItemMedia")}r.editor=n;r.url=j;a="";for(m=0;m<f.length;m++){k=f[m][0];q={name:k,clsids:tinymce.explode(f[m][1]||""),mimes:tinymce.explode(f[m][2]||""),codebase:f[m][3]};for(p=0;p<q.clsids.length;p++){l["clsid:"+q.clsids[p]]=q}for(p=0;p<q.mimes.length;p++){l[q.mimes[p]]=q}l["mceItem"+k]=q;l[k.toLowerCase()]=q;a+=(a?"|":"")+k}tinymce.each(n.getParam("media_types","video=mp4,m4v,ogv,webm;silverlight=xap;flash=swf,flv;shockwave=dcr;quicktime=mov,qt,mpg,mpeg;shockwave=dcr;windowsmedia=avi,wmv,wm,asf,asx,wmx,wvx;realmedia=rm,ra,ram;java=jar;audio=mp3,ogg").split(";"),function(v){var s,u,t;v=v.split(/=/);u=tinymce.explode(v[1].toLowerCase());for(s=0;s<u.length;s++){t=l[v[0].toLowerCase()];if(t){l[u[s]]=t}}});a=new RegExp("write("+a+")\\(([^)]+)\\)");r.lookup=l;n.onPreInit.add(function(){n.schema.addValidElements("object[id|style|width|height|classid|codebase|*],param[name|value],embed[id|style|width|height|type|src|*],video[*],audio[*],source[*]");n.parser.addNodeFilter("object,embed,video,audio,script,iframe",function(s){var t=s.length;while(t--){r.objectToImg(s[t])}});n.serializer.addNodeFilter("img",function(s,u,t){var v=s.length,w;while(v--){w=s[v];if((w.attr("class")||"").indexOf("mceItemMedia")!==-1){r.imgToObject(w,t)}}})});n.onInit.add(function(){if(n.theme&&n.theme.onResolveName){n.theme.onResolveName.add(function(i,s){if(s.name==="img"&&n.dom.hasClass(s.node,"mceItemMedia")){s.name="media"}})}if(n&&n.plugins.contextmenu){n.plugins.contextmenu.onContextMenu.add(function(s,t,i){if(i.nodeName==="IMG"&&i.className.indexOf("mceItemMedia")!==-1){t.add({title:"media.edit",icon:"media",cmd:"mceMedia"})}})}});n.addCommand("mceMedia",function(){var s,i;i=n.selection.getNode();if(o(i)){s=n.dom.getAttrib(i,"data-mce-json");if(s){s=g.parse(s);tinymce.each(d,function(t){var u=n.dom.getAttrib(i,t);if(u){s[t]=u}});s.type=r.getType(i.className).name.toLowerCase()}}if(!s){s={type:"flash",video:{sources:[]},params:{}}}n.windowManager.open({file:j+"/media.htm",width:430+parseInt(n.getLang("media.delta_width",0)),height:500+parseInt(n.getLang("media.delta_height",0)),inline:1},{plugin_url:j,data:s})});n.addButton("media",{title:"media.desc",cmd:"mceMedia"});n.onNodeChange.add(function(s,i,t){i.setActive("media",o(t))})},convertUrl:function(k,n){var j=this,m=j.editor,l=m.settings,o=l.url_converter,i=l.url_converter_scope||j;if(!k){return k}if(n){return m.documentBaseURI.toAbsolute(k)}return o.call(i,k,"src","object")},getInfo:function(){return{longname:"Media",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media",version:tinymce.majorVersion+"."+tinymce.minorVersion}},dataToImg:function(m,k){var r=this,o=r.editor,p=o.documentBaseURI,j,q,n,l;m.params.src=r.convertUrl(m.params.src,k);q=m.video.attrs;if(q){q.src=r.convertUrl(q.src,k)}if(q){q.poster=r.convertUrl(q.poster,k)}j=c(m.video.sources);if(j){for(l=0;l<j.length;l++){j[l].src=r.convertUrl(j[l].src,k)}}n=r.editor.dom.create("img",{id:m.id,style:m.style,align:m.align,src:r.editor.theme.url+"/img/trans.gif","class":"mceItemMedia mceItem"+r.getType(m.type).name,"data-mce-json":g.serialize(m,"'")});n.width=m.width||(m.type=="audio"?"300":"320");n.height=m.height||(m.type=="audio"?"32":"240");return n},dataToHtml:function(i,j){return this.editor.serializer.serialize(this.dataToImg(i,j),{forced_root_block:"",force_absolute:j})},htmlToData:function(k){var j,i,l;l={type:"flash",video:{sources:[]},params:{}};j=this.editor.parser.parse(k);i=j.getAll("img")[0];if(i){l=g.parse(i.attr("data-mce-json"));l.type=this.getType(i.attr("class")).name.toLowerCase();tinymce.each(d,function(m){var n=i.attr(m);if(n){l[m]=n}})}return l},getType:function(m){var k,j,l;j=tinymce.explode(m," ");for(k=0;k<j.length;k++){l=this.lookup[j[k]];if(l){return l}}},imgToObject:function(x,n){var t=this,o=t.editor,A,F,j,s,G,w,E,u,k,C,r,p,y,B,m,v,l,z,D;function q(i,H){var L,K,M,J,I;I=o.getParam("flash_video_player_url",t.convertUrl(t.url+"/moxieplayer.swf"));if(I){L=o.documentBaseURI;E.params.src=I;if(o.getParam("flash_video_player_absvideourl",true)){i=L.toAbsolute(i||"",true);H=L.toAbsolute(H||"",true)}M="";K=o.getParam("flash_video_player_flashvars",{url:"$url",poster:"$poster"});tinymce.each(K,function(O,N){O=O.replace(/\$url/,i||"");O=O.replace(/\$poster/,H||"");if(O.length>0){M+=(M?"&":"")+N+"="+escape(O)}});if(M.length){E.params.flashvars=M}J=o.getParam("flash_video_player_params",{allowfullscreen:true,allowscriptaccess:true});tinymce.each(J,function(O,N){E.params[N]=""+O})}}E=x.attr("data-mce-json");if(!E){return}E=g.parse(E);p=this.getType(x.attr("class"));z=x.attr("data-mce-style");if(!z){z=x.attr("style");if(z){z=o.dom.serializeStyle(o.dom.parseStyle(z,"img"))}}if(p.name==="Iframe"){v=new b("iframe",1);tinymce.each(d,function(i){var H=x.attr(i);if(i=="class"&&H){H=H.replace(/mceItem.+ ?/g,"")}if(H&&H.length>0){v.attr(i,H)}});for(G in E.params){v.attr(G,E.params[G])}v.attr({style:z,src:E.params.src});x.replace(v);return}if(this.editor.settings.media_use_script){v=new b("script",1).attr("type","text/javascript");w=new b("#text",3);w.value="write"+p.name+"("+g.serialize(tinymce.extend(E.params,{width:x.attr("width"),height:x.attr("height")}))+");";v.append(w);x.replace(v);return}if(p.name==="Video"&&E.video.sources[0]){A=new b("video",1).attr(tinymce.extend({id:x.attr("id"),width:x.attr("width"),height:x.attr("height"),style:z},E.video.attrs));if(E.video.attrs){l=E.video.attrs.poster}k=E.video.sources=c(E.video.sources);for(y=0;y<k.length;y++){if(/\.mp4$/.test(k[y].src)){m=k[y].src}}if(!k[0].type){A.attr("src",k[0].src);k.splice(0,1)}for(y=0;y<k.length;y++){u=new b("source",1).attr(k[y]);u.shortEnded=true;A.append(u)}if(m){q(m,l);p=t.getType("flash")}else{E.params.src=""}}if(p.name==="Audio"&&E.video.sources[0]){D=new b("audio",1).attr(tinymce.extend({id:x.attr("id"),width:x.attr("width"),height:x.attr("height"),style:z},E.video.attrs));if(E.video.attrs){l=E.video.attrs.poster}k=E.video.sources=c(E.video.sources);if(!k[0].type){D.attr("src",k[0].src);k.splice(0,1)}for(y=0;y<k.length;y++){u=new b("source",1).attr(k[y]);u.shortEnded=true;D.append(u)}E.params.src=""}if(E.params.src){if(/\.flv$/i.test(E.params.src)){q(E.params.src,"")}if(n&&n.force_absolute){E.params.src=o.documentBaseURI.toAbsolute(E.params.src)}F=new b("object",1).attr({id:x.attr("id"),width:x.attr("width"),height:x.attr("height"),style:z});tinymce.each(d,function(i){if(E[i]&&i!="type"){F.attr(i,E[i])}});for(G in E.params){r=new b("param",1);r.shortEnded=true;w=E.params[G];if(G==="src"&&p.name==="WindowsMedia"){G="url"}r.attr({name:G,value:w});F.append(r)}if(this.editor.getParam("media_strict",true)){F.attr({data:E.params.src,type:p.mimes[0]})}else{F.attr({classid:"clsid:"+p.clsids[0],codebase:p.codebase});j=new b("embed",1);j.shortEnded=true;j.attr({id:x.attr("id"),width:x.attr("width"),height:x.attr("height"),style:z,type:p.mimes[0]});for(G in E.params){j.attr(G,E.params[G])}tinymce.each(d,function(i){if(E[i]&&i!="type"){j.attr(i,E[i])}});F.append(j)}if(E.object_html){w=new b("#text",3);w.raw=true;w.value=E.object_html;F.append(w)}if(A){A.append(F)}}if(A){if(E.video_html){w=new b("#text",3);w.raw=true;w.value=E.video_html;A.append(w)}}if(D){if(E.video_html){w=new b("#text",3);w.raw=true;w.value=E.video_html;D.append(w)}}if(A||D||F){x.replace(A||D||F)}else{x.remove()}},objectToImg:function(y){var F,j,A,p,G,H,u,w,t,B,z,q,o,D,x,k,E,n,C=this.lookup,l,v,s=this.editor.settings.url_converter,m=this.editor.settings.url_converter_scope;function r(i){return new tinymce.html.Serializer({inner:true,validate:false}).serialize(i)}if(!y.parent){return}if(y.name==="script"){if(y.firstChild){l=a.exec(y.firstChild.value)}if(!l){return}n=l[1];E={video:{},params:g.parse(l[2])};w=E.params.width;t=E.params.height}E=E||{video:{},params:{}};G=new b("img",1);G.attr({src:this.editor.theme.url+"/img/trans.gif"});H=y.name;if(H==="video"||H=="audio"){A=y;F=y.getAll("object")[0];j=y.getAll("embed")[0];w=A.attr("width");t=A.attr("height");u=A.attr("id");E.video={attrs:{},sources:[]};v=E.video.attrs;for(H in A.attributes.map){v[H]=A.attributes.map[H]}x=y.attr("src");if(x){E.video.sources.push({src:s.call(m,x,"src",y.name)})}k=A.getAll("source");for(z=0;z<k.length;z++){x=k[z].remove();E.video.sources.push({src:s.call(m,x.attr("src"),"src","source"),type:x.attr("type"),media:x.attr("media")})}if(v.poster){v.poster=s.call(m,v.poster,"poster",y.name)}}if(y.name==="object"){F=y;j=y.getAll("embed")[0]}if(y.name==="embed"){j=y}if(y.name==="iframe"){p=y;n="Iframe"}if(F){w=w||F.attr("width");t=t||F.attr("height");B=B||F.attr("style");u=u||F.attr("id");D=F.getAll("param");for(z=0;z<D.length;z++){o=D[z];H=o.remove().attr("name");if(!h[H]){E.params[H]=o.attr("value")}}E.params.src=E.params.src||F.attr("data")}if(j){w=w||j.attr("width");t=t||j.attr("height");B=B||j.attr("style");u=u||j.attr("id");for(H in j.attributes.map){if(!h[H]&&!E.params[H]){E.params[H]=j.attributes.map[H]}}}if(p){w=p.attr("width");t=p.attr("height");B=B||p.attr("style");u=p.attr("id");tinymce.each(d,function(i){G.attr(i,p.attr(i))});for(H in p.attributes.map){if(!h[H]&&!E.params[H]){E.params[H]=p.attributes.map[H]}}}if(E.params.movie){E.params.src=E.params.src||E.params.movie;delete E.params.movie}if(E.params.src){E.params.src=s.call(m,E.params.src,"src","object")}if(A){if(y.name==="video"){n=C.video.name}else{if(y.name==="audio"){n=C.audio.name}}}if(F&&!n){n=(C[(F.attr("clsid")||"").toLowerCase()]||C[(F.attr("type")||"").toLowerCase()]||{}).name}if(j&&!n){n=(C[(j.attr("type")||"").toLowerCase()]||{}).name}y.replace(G);if(j){j.remove()}if(F){q=r(F.remove());if(q){E.object_html=q}}if(A){q=r(A.remove());if(q){E.video_html=q}}G.attr({id:u,"class":"mceItemMedia mceItem"+(n||"Flash"),style:B,width:w||(y.name=="audio"?"300":"320"),height:t||(y.name=="audio"?"32":"240"),"data-mce-json":g.serialize(E,"'")})}});tinymce.PluginManager.add("media",tinymce.plugins.MediaPlugin)})();
\ No newline at end of file
+(function(){var d=tinymce.explode("id,name,width,height,style,align,class,hspace,vspace,bgcolor,type"),h=tinymce.makeMap(d.join(",")),b=tinymce.html.Node,f,a,g=tinymce.util.JSON,e;f=[["Flash","d27cdb6e-ae6d-11cf-96b8-444553540000","application/x-shockwave-flash","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],["ShockWave","166b1bca-3f9c-11cf-8075-444553540000","application/x-director","http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0"],["WindowsMedia","6bf52a52-394a-11d3-b153-00c04f79faa6,22d6f312-b0f6-11d0-94ab-0080c74c7e95,05589fa1-c356-11ce-bf01-00aa0055595a","application/x-mplayer2","http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"],["QuickTime","02bf25d5-8c17-4b23-bc80-d3488abddc6b","video/quicktime","http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"],["RealMedia","cfcdaa03-8be4-11cf-b84b-0020afbbccfa","audio/x-pn-realaudio-plugin","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],["Java","8ad9c840-044e-11d1-b3e9-00805f499d93","application/x-java-applet","http://java.sun.com/products/plugin/autodl/jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0"],["Silverlight","dfeaf541-f3e1-4c24-acac-99c30715084a","application/x-silverlight-2"],["Iframe"],["Video"],["EmbeddedAudio"],["Audio"]];function c(m){var l,j,k;if(m&&!m.splice){j=[];for(k=0;true;k++){if(m[k]){j[k]=m[k]}else{break}}return j}return m}tinymce.create("tinymce.plugins.MediaPlugin",{init:function(n,j){var r=this,l={},m,p,q,k;function o(i){return i&&i.nodeName==="IMG"&&n.dom.hasClass(i,"mceItemMedia")}r.editor=n;r.url=j;a="";for(m=0;m<f.length;m++){k=f[m][0];q={name:k,clsids:tinymce.explode(f[m][1]||""),mimes:tinymce.explode(f[m][2]||""),codebase:f[m][3]};for(p=0;p<q.clsids.length;p++){l["clsid:"+q.clsids[p]]=q}for(p=0;p<q.mimes.length;p++){l[q.mimes[p]]=q}l["mceItem"+k]=q;l[k.toLowerCase()]=q;a+=(a?"|":"")+k}tinymce.each(n.getParam("media_types","video=mp4,m4v,ogv,webm;silverlight=xap;flash=swf,flv;shockwave=dcr;quicktime=mov,qt,mpg,mpeg;shockwave=dcr;windowsmedia=avi,wmv,wm,asf,asx,wmx,wvx;realmedia=rm,ra,ram;java=jar;audio=mp3,ogg").split(";"),function(v){var s,u,t;v=v.split(/=/);u=tinymce.explode(v[1].toLowerCase());for(s=0;s<u.length;s++){t=l[v[0].toLowerCase()];if(t){l[u[s]]=t}}});a=new RegExp("write("+a+")\\(([^)]+)\\)");r.lookup=l;n.onPreInit.add(function(){n.schema.addValidElements("object[id|style|width|height|classid|codebase|*],param[name|value],embed[id|style|width|height|type|src|*],video[*],audio[*],source[*]");n.parser.addNodeFilter("object,embed,video,audio,script,iframe",function(s){var t=s.length;while(t--){r.objectToImg(s[t])}});n.serializer.addNodeFilter("img",function(s,u,t){var v=s.length,w;while(v--){w=s[v];if((w.attr("class")||"").indexOf("mceItemMedia")!==-1){r.imgToObject(w,t)}}})});n.onInit.add(function(){if(n.theme&&n.theme.onResolveName){n.theme.onResolveName.add(function(i,s){if(s.name==="img"&&n.dom.hasClass(s.node,"mceItemMedia")){s.name="media"}})}if(n&&n.plugins.contextmenu){n.plugins.contextmenu.onContextMenu.add(function(s,t,i){if(i.nodeName==="IMG"&&i.className.indexOf("mceItemMedia")!==-1){t.add({title:"media.edit",icon:"media",cmd:"mceMedia"})}})}});n.addCommand("mceMedia",function(){var s,i;i=n.selection.getNode();if(o(i)){s=n.dom.getAttrib(i,"data-mce-json");if(s){s=g.parse(s);tinymce.each(d,function(t){var u=n.dom.getAttrib(i,t);if(u){s[t]=u}});s.type=r.getType(i.className).name.toLowerCase()}}if(!s){s={type:"flash",video:{sources:[]},params:{}}}n.windowManager.open({file:j+"/media.htm",width:430+parseInt(n.getLang("media.delta_width",0)),height:500+parseInt(n.getLang("media.delta_height",0)),inline:1},{plugin_url:j,data:s})});n.addButton("media",{title:"media.desc",cmd:"mceMedia"});n.onNodeChange.add(function(s,i,t){i.setActive("media",o(t))})},convertUrl:function(k,n){var j=this,m=j.editor,l=m.settings,o=l.url_converter,i=l.url_converter_scope||j;if(!k){return k}if(n){return m.documentBaseURI.toAbsolute(k)}return o.call(i,k,"src","object")},getInfo:function(){return{longname:"Media",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media",version:tinymce.majorVersion+"."+tinymce.minorVersion}},dataToImg:function(m,k){var r=this,o=r.editor,p=o.documentBaseURI,j,q,n,l;m.params.src=r.convertUrl(m.params.src,k);q=m.video.attrs;if(q){q.src=r.convertUrl(q.src,k)}if(q){q.poster=r.convertUrl(q.poster,k)}j=c(m.video.sources);if(j){for(l=0;l<j.length;l++){j[l].src=r.convertUrl(j[l].src,k)}}n=r.editor.dom.create("img",{id:m.id,style:m.style,align:m.align,hspace:m.hspace,vspace:m.vspace,src:r.editor.theme.url+"/img/trans.gif","class":"mceItemMedia mceItem"+r.getType(m.type).name,"data-mce-json":g.serialize(m,"'")});n.width=m.width||(m.type=="audio"?"300":"320");n.height=m.height||(m.type=="audio"?"32":"240");return n},dataToHtml:function(i,j){return this.editor.serializer.serialize(this.dataToImg(i,j),{forced_root_block:"",force_absolute:j})},htmlToData:function(k){var j,i,l;l={type:"flash",video:{sources:[]},params:{}};j=this.editor.parser.parse(k);i=j.getAll("img")[0];if(i){l=g.parse(i.attr("data-mce-json"));l.type=this.getType(i.attr("class")).name.toLowerCase();tinymce.each(d,function(m){var n=i.attr(m);if(n){l[m]=n}})}return l},getType:function(m){var k,j,l;j=tinymce.explode(m," ");for(k=0;k<j.length;k++){l=this.lookup[j[k]];if(l){return l}}},imgToObject:function(z,o){var u=this,p=u.editor,C,H,j,t,I,y,G,w,k,E,s,q,A,D,m,x,l,B,F;function r(i,n){var M,L,N,K,J;J=p.getParam("flash_video_player_url",u.convertUrl(u.url+"/moxieplayer.swf"));if(J){M=p.documentBaseURI;G.params.src=J;if(p.getParam("flash_video_player_absvideourl",true)){i=M.toAbsolute(i||"",true);n=M.toAbsolute(n||"",true)}N="";L=p.getParam("flash_video_player_flashvars",{url:"$url",poster:"$poster"});tinymce.each(L,function(P,O){P=P.replace(/\$url/,i||"");P=P.replace(/\$poster/,n||"");if(P.length>0){N+=(N?"&":"")+O+"="+escape(P)}});if(N.length){G.params.flashvars=N}K=p.getParam("flash_video_player_params",{allowfullscreen:true,allowscriptaccess:true});tinymce.each(K,function(P,O){G.params[O]=""+P})}}G=z.attr("data-mce-json");if(!G){return}G=g.parse(G);q=this.getType(z.attr("class"));B=z.attr("data-mce-style");if(!B){B=z.attr("style");if(B){B=p.dom.serializeStyle(p.dom.parseStyle(B,"img"))}}if(q.name==="Iframe"){x=new b("iframe",1);tinymce.each(d,function(i){var n=z.attr(i);if(i=="class"&&n){n=n.replace(/mceItem.+ ?/g,"")}if(n&&n.length>0){x.attr(i,n)}});for(I in G.params){x.attr(I,G.params[I])}x.attr({style:B,src:G.params.src});z.replace(x);return}if(this.editor.settings.media_use_script){x=new b("script",1).attr("type","text/javascript");y=new b("#text",3);y.value="write"+q.name+"("+g.serialize(tinymce.extend(G.params,{width:z.attr("width"),height:z.attr("height")}))+");";x.append(y);z.replace(x);return}if(q.name==="Video"&&G.video.sources[0]){C=new b("video",1).attr(tinymce.extend({id:z.attr("id"),width:z.attr("width"),height:z.attr("height"),style:B},G.video.attrs));if(G.video.attrs){l=G.video.attrs.poster}k=G.video.sources=c(G.video.sources);for(A=0;A<k.length;A++){if(/\.mp4$/.test(k[A].src)){m=k[A].src}}if(!k[0].type){C.attr("src",k[0].src);k.splice(0,1)}for(A=0;A<k.length;A++){w=new b("source",1).attr(k[A]);w.shortEnded=true;C.append(w)}if(m){r(m,l);q=u.getType("flash")}else{G.params.src=""}}if(q.name==="Audio"&&G.video.sources[0]){F=new b("audio",1).attr(tinymce.extend({id:z.attr("id"),width:z.attr("width"),height:z.attr("height"),style:B},G.video.attrs));if(G.video.attrs){l=G.video.attrs.poster}k=G.video.sources=c(G.video.sources);if(!k[0].type){F.attr("src",k[0].src);k.splice(0,1)}for(A=0;A<k.length;A++){w=new b("source",1).attr(k[A]);w.shortEnded=true;F.append(w)}G.params.src=""}if(q.name==="EmbeddedAudio"){j=new b("embed",1);j.shortEnded=true;j.attr({id:z.attr("id"),width:z.attr("width"),height:z.attr("height"),style:B,type:z.attr("type")});for(I in G.params){j.attr(I,G.params[I])}tinymce.each(d,function(i){if(G[i]&&i!="type"){j.attr(i,G[i])}});G.params.src=""}if(G.params.src){if(/\.flv$/i.test(G.params.src)){r(G.params.src,"")}if(o&&o.force_absolute){G.params.src=p.documentBaseURI.toAbsolute(G.params.src)}H=new b("object",1).attr({id:z.attr("id"),width:z.attr("width"),height:z.attr("height"),style:B});tinymce.each(d,function(i){var n=G[i];if(i=="class"&&n){n=n.replace(/mceItem.+ ?/g,"")}if(n&&i!="type"){H.attr(i,n)}});for(I in G.params){s=new b("param",1);s.shortEnded=true;y=G.params[I];if(I==="src"&&q.name==="WindowsMedia"){I="url"}s.attr({name:I,value:y});H.append(s)}if(this.editor.getParam("media_strict",true)){H.attr({data:G.params.src,type:q.mimes[0]})}else{H.attr({classid:"clsid:"+q.clsids[0],codebase:q.codebase});j=new b("embed",1);j.shortEnded=true;j.attr({id:z.attr("id"),width:z.attr("width"),height:z.attr("height"),style:B,type:q.mimes[0]});for(I in G.params){j.attr(I,G.params[I])}tinymce.each(d,function(i){if(G[i]&&i!="type"){j.attr(i,G[i])}});H.append(j)}if(G.object_html){y=new b("#text",3);y.raw=true;y.value=G.object_html;H.append(y)}if(C){C.append(H)}}if(C){if(G.video_html){y=new b("#text",3);y.raw=true;y.value=G.video_html;C.append(y)}}if(F){if(G.video_html){y=new b("#text",3);y.raw=true;y.value=G.video_html;F.append(y)}}var v=C||F||H||j;if(v){z.replace(v)}else{z.remove()}},objectToImg:function(C){var L,k,F,s,M,N,y,A,x,G,E,t,q,I,B,l,K,o,H=this.lookup,m,z,v=this.editor.settings.url_converter,n=this.editor.settings.url_converter_scope,w,r,D,j;function u(i){return new tinymce.html.Serializer({inner:true,validate:false}).serialize(i)}function J(O,i){return H[(O.attr(i)||"").toLowerCase()]}function p(O){var i=O.replace(/^.*\.([^.]+)$/,"$1");return H[i.toLowerCase()||""]}if(!C.parent){return}if(C.name==="script"){if(C.firstChild){m=a.exec(C.firstChild.value)}if(!m){return}o=m[1];K={video:{},params:g.parse(m[2])};A=K.params.width;x=K.params.height}K=K||{video:{},params:{}};M=new b("img",1);M.attr({src:this.editor.theme.url+"/img/trans.gif"});N=C.name;if(N==="video"||N=="audio"){F=C;L=C.getAll("object")[0];k=C.getAll("embed")[0];A=F.attr("width");x=F.attr("height");y=F.attr("id");K.video={attrs:{},sources:[]};z=K.video.attrs;for(N in F.attributes.map){z[N]=F.attributes.map[N]}B=C.attr("src");if(B){K.video.sources.push({src:v.call(n,B,"src",C.name)})}l=F.getAll("source");for(E=0;E<l.length;E++){B=l[E].remove();K.video.sources.push({src:v.call(n,B.attr("src"),"src","source"),type:B.attr("type"),media:B.attr("media")})}if(z.poster){z.poster=v.call(n,z.poster,"poster",C.name)}}if(C.name==="object"){L=C;k=C.getAll("embed")[0]}if(C.name==="embed"){k=C}if(C.name==="iframe"){s=C;o="Iframe"}if(L){A=A||L.attr("width");x=x||L.attr("height");G=G||L.attr("style");y=y||L.attr("id");w=w||L.attr("hspace");r=r||L.attr("vspace");D=D||L.attr("align");j=j||L.attr("bgcolor");K.name=L.attr("name");I=L.getAll("param");for(E=0;E<I.length;E++){q=I[E];N=q.remove().attr("name");if(!h[N]){K.params[N]=q.attr("value")}}K.params.src=K.params.src||L.attr("data")}if(k){A=A||k.attr("width");x=x||k.attr("height");G=G||k.attr("style");y=y||k.attr("id");w=w||k.attr("hspace");r=r||k.attr("vspace");D=D||k.attr("align");j=j||k.attr("bgcolor");for(N in k.attributes.map){if(!h[N]&&!K.params[N]){K.params[N]=k.attributes.map[N]}}}if(s){A=s.attr("width");x=s.attr("height");G=G||s.attr("style");y=s.attr("id");w=s.attr("hspace");r=s.attr("vspace");D=s.attr("align");j=s.attr("bgcolor");tinymce.each(d,function(i){M.attr(i,s.attr(i))});for(N in s.attributes.map){if(!h[N]&&!K.params[N]){K.params[N]=s.attributes.map[N]}}}if(K.params.movie){K.params.src=K.params.src||K.params.movie;delete K.params.movie}if(K.params.src){K.params.src=v.call(n,K.params.src,"src","object")}if(F){if(C.name==="video"){o=H.video.name}else{if(C.name==="audio"){o=H.audio.name}}}if(L&&!o){o=(J(L,"clsid")||J(L,"classid")||J(L,"type")||{}).name}if(k&&!o){o=(J(k,"type")||p(K.params.src)||{}).name}if(k&&o=="EmbeddedAudio"){K.params.type=k.attr("type")}C.replace(M);if(k){k.remove()}if(L){t=u(L.remove());if(t){K.object_html=t}}if(F){t=u(F.remove());if(t){K.video_html=t}}K.hspace=w;K.vspace=r;K.align=D;K.bgcolor=j;M.attr({id:y,"class":"mceItemMedia mceItem"+(o||"Flash"),style:G,width:A||(C.name=="audio"?"300":"320"),height:x||(C.name=="audio"?"32":"240"),hspace:w,vspace:r,align:D,bgcolor:j,"data-mce-json":g.serialize(K,"'")})}});tinymce.PluginManager.add("media",tinymce.plugins.MediaPlugin)})();
\ No newline at end of file
diff --git a/wp-includes/js/tinymce/plugins/media/editor_plugin_src.js b/wp-includes/js/tinymce/plugins/media/editor_plugin_src.js
new file mode 100644 (file)
index 0000000..a0d4ef2
--- /dev/null
@@ -0,0 +1,890 @@
+/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+       var rootAttributes = tinymce.explode('id,name,width,height,style,align,class,hspace,vspace,bgcolor,type'), excludedAttrs = tinymce.makeMap(rootAttributes.join(',')), Node = tinymce.html.Node,
+               mediaTypes, scriptRegExp, JSON = tinymce.util.JSON, mimeTypes;
+
+       // Media types supported by this plugin
+       mediaTypes = [
+               // Type, clsid:s, mime types, codebase
+               ["Flash", "d27cdb6e-ae6d-11cf-96b8-444553540000", "application/x-shockwave-flash", "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],
+               ["ShockWave", "166b1bca-3f9c-11cf-8075-444553540000", "application/x-director", "http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0"],
+               ["WindowsMedia", "6bf52a52-394a-11d3-b153-00c04f79faa6,22d6f312-b0f6-11d0-94ab-0080c74c7e95,05589fa1-c356-11ce-bf01-00aa0055595a", "application/x-mplayer2", "http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"],
+               ["QuickTime", "02bf25d5-8c17-4b23-bc80-d3488abddc6b", "video/quicktime", "http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"],
+               ["RealMedia", "cfcdaa03-8be4-11cf-b84b-0020afbbccfa", "audio/x-pn-realaudio-plugin", "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],
+               ["Java", "8ad9c840-044e-11d1-b3e9-00805f499d93", "application/x-java-applet", "http://java.sun.com/products/plugin/autodl/jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0"],
+               ["Silverlight", "dfeaf541-f3e1-4c24-acac-99c30715084a", "application/x-silverlight-2"],
+               ["Iframe"],
+               ["Video"],
+               ["EmbeddedAudio"],
+               ["Audio"]
+       ];
+
+       function toArray(obj) {
+               var undef, out, i;
+
+               if (obj && !obj.splice) {
+                       out = [];
+
+                       for (i = 0; true; i++) {
+                               if (obj[i])
+                                       out[i] = obj[i];
+                               else
+                                       break;
+                       }
+
+                       return out;
+               }
+
+               return obj;
+       };
+
+       tinymce.create('tinymce.plugins.MediaPlugin', {
+               init : function(ed, url) {
+                       var self = this, lookup = {}, i, y, item, name;
+
+                       function isMediaImg(node) {
+                               return node && node.nodeName === 'IMG' && ed.dom.hasClass(node, 'mceItemMedia');
+                       };
+
+                       self.editor = ed;
+                       self.url = url;
+
+                       // Parse media types into a lookup table
+                       scriptRegExp = '';
+                       for (i = 0; i < mediaTypes.length; i++) {
+                               name = mediaTypes[i][0];
+
+                               item = {
+                                       name : name,
+                                       clsids : tinymce.explode(mediaTypes[i][1] || ''),
+                                       mimes : tinymce.explode(mediaTypes[i][2] || ''),
+                                       codebase : mediaTypes[i][3]
+                               };
+
+                               for (y = 0; y < item.clsids.length; y++)
+                                       lookup['clsid:' + item.clsids[y]] = item;
+
+                               for (y = 0; y < item.mimes.length; y++)
+                                       lookup[item.mimes[y]] = item;
+
+                               lookup['mceItem' + name] = item;
+                               lookup[name.toLowerCase()] = item;
+
+                               scriptRegExp += (scriptRegExp ? '|' : '') + name;
+                       }
+
+                       // Handle the media_types setting
+                       tinymce.each(ed.getParam("media_types",
+                               "video=mp4,m4v,ogv,webm;" +
+                               "silverlight=xap;" +
+                               "flash=swf,flv;" +
+                               "shockwave=dcr;" +
+                               "quicktime=mov,qt,mpg,mpeg;" +
+                               "shockwave=dcr;" +
+                               "windowsmedia=avi,wmv,wm,asf,asx,wmx,wvx;" +
+                               "realmedia=rm,ra,ram;" +
+                               "java=jar;" +
+                               "audio=mp3,ogg"
+                       ).split(';'), function(item) {
+                               var i, extensions, type;
+
+                               item = item.split(/=/);
+                               extensions = tinymce.explode(item[1].toLowerCase());
+                               for (i = 0; i < extensions.length; i++) {
+                                       type = lookup[item[0].toLowerCase()];
+
+                                       if (type)
+                                               lookup[extensions[i]] = type;
+                               }
+                       });
+
+                       scriptRegExp = new RegExp('write(' + scriptRegExp + ')\\(([^)]+)\\)');
+                       self.lookup = lookup;
+
+                       ed.onPreInit.add(function() {
+                               // Allow video elements
+                               ed.schema.addValidElements('object[id|style|width|height|classid|codebase|*],param[name|value],embed[id|style|width|height|type|src|*],video[*],audio[*],source[*]');
+
+                               // Convert video elements to image placeholder
+                               ed.parser.addNodeFilter('object,embed,video,audio,script,iframe', function(nodes) {
+                                       var i = nodes.length;
+
+                                       while (i--)
+                                               self.objectToImg(nodes[i]);
+                               });
+
+                               // Convert image placeholders to video elements
+                               ed.serializer.addNodeFilter('img', function(nodes, name, args) {
+                                       var i = nodes.length, node;
+
+                                       while (i--) {
+                                               node = nodes[i];
+                                               if ((node.attr('class') || '').indexOf('mceItemMedia') !== -1)
+                                                       self.imgToObject(node, args);
+                                       }
+                               });
+                       });
+
+                       ed.onInit.add(function() {
+                               // Display "media" instead of "img" in element path
+                               if (ed.theme && ed.theme.onResolveName) {
+                                       ed.theme.onResolveName.add(function(theme, path_object) {
+                                               if (path_object.name === 'img' && ed.dom.hasClass(path_object.node, 'mceItemMedia'))
+                                                       path_object.name = 'media';
+                                       });
+                               }
+
+                               // Add contect menu if it's loaded
+                               if (ed && ed.plugins.contextmenu) {
+                                       ed.plugins.contextmenu.onContextMenu.add(function(plugin, menu, element) {
+                                               if (element.nodeName === 'IMG' && element.className.indexOf('mceItemMedia') !== -1)
+                                                       menu.add({title : 'media.edit', icon : 'media', cmd : 'mceMedia'});
+                                       });
+                               }
+                       });
+
+                       // Register commands
+                       ed.addCommand('mceMedia', function() {
+                               var data, img;
+
+                               img = ed.selection.getNode();
+                               if (isMediaImg(img)) {
+                                       data = ed.dom.getAttrib(img, 'data-mce-json');
+                                       if (data) {
+                                               data = JSON.parse(data);
+
+                                               // Add some extra properties to the data object
+                                               tinymce.each(rootAttributes, function(name) {
+                                                       var value = ed.dom.getAttrib(img, name);
+
+                                                       if (value)
+                                                               data[name] = value;
+                                               });
+
+                                               data.type = self.getType(img.className).name.toLowerCase();
+                                       }
+                               }
+
+                               if (!data) {
+                                       data = {
+                                               type : 'flash',
+                                               video: {sources:[]},
+                                               params: {}
+                                       };
+                               }
+
+                               ed.windowManager.open({
+                                       file : url + '/media.htm',
+                                       width : 430 + parseInt(ed.getLang('media.delta_width', 0)),
+                                       height : 500 + parseInt(ed.getLang('media.delta_height', 0)),
+                                       inline : 1
+                               }, {
+                                       plugin_url : url,
+                                       data : data
+                               });
+                       });
+
+                       // Register buttons
+                       ed.addButton('media', {title : 'media.desc', cmd : 'mceMedia'});
+
+                       // Update media selection status
+                       ed.onNodeChange.add(function(ed, cm, node) {
+                               cm.setActive('media', isMediaImg(node));
+                       });
+               },
+
+               convertUrl : function(url, force_absolute) {
+                       var self = this, editor = self.editor, settings = editor.settings,
+                               urlConverter = settings.url_converter,
+                               urlConverterScope = settings.url_converter_scope || self;
+
+                       if (!url)
+                               return url;
+
+                       if (force_absolute)
+                               return editor.documentBaseURI.toAbsolute(url);
+
+                       return urlConverter.call(urlConverterScope, url, 'src', 'object');
+               },
+
+               getInfo : function() {
+                       return {
+                               longname : 'Media',
+                               author : 'Moxiecode Systems AB',
+                               authorurl : 'http://tinymce.moxiecode.com',
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media',
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion
+                       };
+               },
+
+               /**
+                * Converts the JSON data object to an img node.
+                */
+               dataToImg : function(data, force_absolute) {
+                       var self = this, editor = self.editor, baseUri = editor.documentBaseURI, sources, attrs, img, i;
+
+                       data.params.src = self.convertUrl(data.params.src, force_absolute);
+
+                       attrs = data.video.attrs;
+                       if (attrs)
+                               attrs.src = self.convertUrl(attrs.src, force_absolute);
+
+                       if (attrs)
+                               attrs.poster = self.convertUrl(attrs.poster, force_absolute);
+
+                       sources = toArray(data.video.sources);
+                       if (sources) {
+                               for (i = 0; i < sources.length; i++)
+                                       sources[i].src = self.convertUrl(sources[i].src, force_absolute);
+                       }
+
+                       img = self.editor.dom.create('img', {
+                               id : data.id,
+                               style : data.style,
+                               align : data.align,
+                               hspace : data.hspace,
+                               vspace : data.vspace,
+                               src : self.editor.theme.url + '/img/trans.gif',
+                               'class' : 'mceItemMedia mceItem' + self.getType(data.type).name,
+                               'data-mce-json' : JSON.serialize(data, "'")
+                       });
+
+                       img.width = data.width || (data.type == 'audio' ? "300" : "320");
+                       img.height = data.height || (data.type == 'audio' ? "32" : "240");
+
+                       return img;
+               },
+
+               /**
+                * Converts the JSON data object to a HTML string.
+                */
+               dataToHtml : function(data, force_absolute) {
+                       return this.editor.serializer.serialize(this.dataToImg(data, force_absolute), {forced_root_block : '', force_absolute : force_absolute});
+               },
+
+               /**
+                * Converts the JSON data object to a HTML string.
+                */
+               htmlToData : function(html) {
+                       var fragment, img, data;
+
+                       data = {
+                               type : 'flash',
+                               video: {sources:[]},
+                               params: {}
+                       };
+
+                       fragment = this.editor.parser.parse(html);
+                       img = fragment.getAll('img')[0];
+
+                       if (img) {
+                               data = JSON.parse(img.attr('data-mce-json'));
+                               data.type = this.getType(img.attr('class')).name.toLowerCase();
+
+                               // Add some extra properties to the data object
+                               tinymce.each(rootAttributes, function(name) {
+                                       var value = img.attr(name);
+
+                                       if (value)
+                                               data[name] = value;
+                               });
+                       }
+
+                       return data;
+               },
+
+               /**
+                * Get type item by extension, class, clsid or mime type.
+                *
+                * @method getType
+                * @param {String} value Value to get type item by.
+                * @return {Object} Type item object or undefined.
+                */
+               getType : function(value) {
+                       var i, values, typeItem;
+
+                       // Find type by checking the classes
+                       values = tinymce.explode(value, ' ');
+                       for (i = 0; i < values.length; i++) {
+                               typeItem = this.lookup[values[i]];
+
+                               if (typeItem)
+                                       return typeItem;
+                       }
+               },
+
+               /**
+                * Converts a tinymce.html.Node image element to video/object/embed.
+                */
+               imgToObject : function(node, args) {
+                       var self = this, editor = self.editor, video, object, embed, iframe, name, value, data,
+                               source, sources, params, param, typeItem, i, item, mp4Source, replacement,
+                               posterSrc, style, audio;
+
+                       // Adds the flash player
+                       function addPlayer(video_src, poster_src) {
+                               var baseUri, flashVars, flashVarsOutput, params, flashPlayer;
+
+                               flashPlayer = editor.getParam('flash_video_player_url', self.convertUrl(self.url + '/moxieplayer.swf'));
+                               if (flashPlayer) {
+                                       baseUri = editor.documentBaseURI;
+                                       data.params.src = flashPlayer;
+
+                                       // Convert the movie url to absolute urls
+                                       if (editor.getParam('flash_video_player_absvideourl', true)) {
+                                               video_src = baseUri.toAbsolute(video_src || '', true);
+                                               poster_src = baseUri.toAbsolute(poster_src || '', true);
+                                       }
+
+                                       // Generate flash vars
+                                       flashVarsOutput = '';
+                                       flashVars = editor.getParam('flash_video_player_flashvars', {url : '$url', poster : '$poster'});
+                                       tinymce.each(flashVars, function(value, name) {
+                                               // Replace $url and $poster variables in flashvars value
+                                               value = value.replace(/\$url/, video_src || '');
+                                               value = value.replace(/\$poster/, poster_src || '');
+
+                                               if (value.length > 0)
+                                                       flashVarsOutput += (flashVarsOutput ? '&' : '') + name + '=' + escape(value);
+                                       });
+
+                                       if (flashVarsOutput.length)
+                                               data.params.flashvars = flashVarsOutput;
+
+                                       params = editor.getParam('flash_video_player_params', {
+                                               allowfullscreen: true,
+                                               allowscriptaccess: true
+                                       });
+
+                                       tinymce.each(params, function(value, name) {
+                                               data.params[name] = "" + value;
+                                       });
+                               }
+                       };
+
+                       data = node.attr('data-mce-json');
+                       if (!data)
+                               return;
+
+                       data = JSON.parse(data);
+                       typeItem = this.getType(node.attr('class'));
+
+                       style = node.attr('data-mce-style')
+                       if (!style) {
+                               style = node.attr('style');
+
+                               if (style)
+                                       style = editor.dom.serializeStyle(editor.dom.parseStyle(style, 'img'));
+                       }
+
+                       // Handle iframe
+                       if (typeItem.name === 'Iframe') {
+                               replacement = new Node('iframe', 1);
+
+                               tinymce.each(rootAttributes, function(name) {
+                                       var value = node.attr(name);
+
+                                       if (name == 'class' && value)
+                                               value = value.replace(/mceItem.+ ?/g, '');
+
+                                       if (value && value.length > 0)
+                                               replacement.attr(name, value);
+                               });
+
+                               for (name in data.params)
+                                       replacement.attr(name, data.params[name]);
+
+                               replacement.attr({
+                                       style: style,
+                                       src: data.params.src
+                               });
+
+                               node.replace(replacement);
+
+                               return;
+                       }
+
+                       // Handle scripts
+                       if (this.editor.settings.media_use_script) {
+                               replacement = new Node('script', 1).attr('type', 'text/javascript');
+
+                               value = new Node('#text', 3);
+                               value.value = 'write' + typeItem.name + '(' + JSON.serialize(tinymce.extend(data.params, {
+                                       width: node.attr('width'),
+                                       height: node.attr('height')
+                               })) + ');';
+
+                               replacement.append(value);
+                               node.replace(replacement);
+
+                               return;
+                       }
+
+                       // Add HTML5 video element
+                       if (typeItem.name === 'Video' && data.video.sources[0]) {
+                               // Create new object element
+                               video = new Node('video', 1).attr(tinymce.extend({
+                                       id : node.attr('id'),
+                                       width: node.attr('width'),
+                                       height: node.attr('height'),
+                                       style : style
+                               }, data.video.attrs));
+
+                               // Get poster source and use that for flash fallback
+                               if (data.video.attrs)
+                                       posterSrc = data.video.attrs.poster;
+
+                               sources = data.video.sources = toArray(data.video.sources);
+                               for (i = 0; i < sources.length; i++) {
+                                       if (/\.mp4$/.test(sources[i].src))
+                                               mp4Source = sources[i].src;
+                               }
+
+                               if (!sources[0].type) {
+                                       video.attr('src', sources[0].src);
+                                       sources.splice(0, 1);
+                               }
+
+                               for (i = 0; i < sources.length; i++) {
+                                       source = new Node('source', 1).attr(sources[i]);
+                                       source.shortEnded = true;
+                                       video.append(source);
+                               }
+
+                               // Create flash fallback for video if we have a mp4 source
+                               if (mp4Source) {
+                                       addPlayer(mp4Source, posterSrc);
+                                       typeItem = self.getType('flash');
+                               } else
+                                       data.params.src = '';
+                       }
+
+                       // Add HTML5 audio element
+                       if (typeItem.name === 'Audio' && data.video.sources[0]) {
+                               // Create new object element
+                               audio = new Node('audio', 1).attr(tinymce.extend({
+                                       id : node.attr('id'),
+                                       width: node.attr('width'),
+                                       height: node.attr('height'),
+                                       style : style
+                               }, data.video.attrs));
+
+                               // Get poster source and use that for flash fallback
+                               if (data.video.attrs)
+                                       posterSrc = data.video.attrs.poster;
+
+                               sources = data.video.sources = toArray(data.video.sources);
+                               if (!sources[0].type) {
+                                       audio.attr('src', sources[0].src);
+                                       sources.splice(0, 1);
+                               }
+
+                               for (i = 0; i < sources.length; i++) {
+                                       source = new Node('source', 1).attr(sources[i]);
+                                       source.shortEnded = true;
+                                       audio.append(source);
+                               }
+
+                               data.params.src = '';
+                       }
+
+                       if (typeItem.name === 'EmbeddedAudio') {
+                               embed = new Node('embed', 1);
+                               embed.shortEnded = true;
+                               embed.attr({
+                                       id: node.attr('id'),
+                                       width: node.attr('width'),
+                                       height: node.attr('height'),
+                                       style : style,
+                                       type: node.attr('type')
+                               });
+
+                               for (name in data.params)
+                                       embed.attr(name, data.params[name]);
+
+                               tinymce.each(rootAttributes, function(name) {
+                                       if (data[name] && name != 'type')
+                                               embed.attr(name, data[name]);
+                               });
+
+                               data.params.src = '';
+                       }
+
+                       // Do we have a params src then we can generate object
+                       if (data.params.src) {
+                               // Is flv movie add player for it
+                               if (/\.flv$/i.test(data.params.src))
+                                       addPlayer(data.params.src, '');
+
+                               if (args && args.force_absolute)
+                                       data.params.src = editor.documentBaseURI.toAbsolute(data.params.src);
+
+                               // Create new object element
+                               object = new Node('object', 1).attr({
+                                       id : node.attr('id'),
+                                       width: node.attr('width'),
+                                       height: node.attr('height'),
+                                       style : style
+                               });
+
+                               tinymce.each(rootAttributes, function(name) {
+                                       var value = data[name];
+
+                                       if (name == 'class' && value)
+                                               value = value.replace(/mceItem.+ ?/g, '');
+
+                                       if (value && name != 'type')
+                                               object.attr(name, value);
+                               });
+
+                               // Add params
+                               for (name in data.params) {
+                                       param = new Node('param', 1);
+                                       param.shortEnded = true;
+                                       value = data.params[name];
+
+                                       // Windows media needs to use url instead of src for the media URL
+                                       if (name === 'src' && typeItem.name === 'WindowsMedia')
+                                               name = 'url';
+
+                                       param.attr({name: name, value: value});
+                                       object.append(param);
+                               }
+
+                               // Setup add type and classid if strict is disabled
+                               if (this.editor.getParam('media_strict', true)) {
+                                       object.attr({
+                                               data: data.params.src,
+                                               type: typeItem.mimes[0]
+                                       });
+                               } else {
+                                       object.attr({
+                                               classid: "clsid:" + typeItem.clsids[0],
+                                               codebase: typeItem.codebase
+                                       });
+
+                                       embed = new Node('embed', 1);
+                                       embed.shortEnded = true;
+                                       embed.attr({
+                                               id: node.attr('id'),
+                                               width: node.attr('width'),
+                                               height: node.attr('height'),
+                                               style : style,
+                                               type: typeItem.mimes[0]
+                                       });
+
+                                       for (name in data.params)
+                                               embed.attr(name, data.params[name]);
+
+                                       tinymce.each(rootAttributes, function(name) {
+                                               if (data[name] && name != 'type')
+                                                       embed.attr(name, data[name]);
+                                       });
+
+                                       object.append(embed);
+                               }
+
+                               // Insert raw HTML
+                               if (data.object_html) {
+                                       value = new Node('#text', 3);
+                                       value.raw = true;
+                                       value.value = data.object_html;
+                                       object.append(value);
+                               }
+
+                               // Append object to video element if it exists
+                               if (video)
+                                       video.append(object);
+                       }
+
+                       if (video) {
+                               // Insert raw HTML
+                               if (data.video_html) {
+                                       value = new Node('#text', 3);
+                                       value.raw = true;
+                                       value.value = data.video_html;
+                                       video.append(value);
+                               }
+                       }
+
+                       if (audio) {
+                               // Insert raw HTML
+                               if (data.video_html) {
+                                       value = new Node('#text', 3);
+                                       value.raw = true;
+                                       value.value = data.video_html;
+                                       audio.append(value);
+                               }
+                       }
+
+                       var n = video || audio || object || embed;
+                       if (n)
+                               node.replace(n);
+                       else
+                               node.remove();
+               },
+
+               /**
+                * Converts a tinymce.html.Node video/object/embed to an img element.
+                *
+                * The video/object/embed will be converted into an image placeholder with a JSON data attribute like this:
+                * <img class="mceItemMedia mceItemFlash" width="100" height="100" data-mce-json="{..}" />
+                *
+                * The JSON structure will be like this:
+                * {'params':{'flashvars':'something','quality':'high','src':'someurl'}, 'video':{'sources':[{src: 'someurl', type: 'video/mp4'}]}}
+                */
+               objectToImg : function(node) {
+                       var object, embed, video, iframe, img, name, id, width, height, style, i, html,
+                               param, params, source, sources, data, type, lookup = this.lookup,
+                               matches, attrs, urlConverter = this.editor.settings.url_converter,
+                               urlConverterScope = this.editor.settings.url_converter_scope,
+                               hspace, vspace, align, bgcolor;
+
+                       function getInnerHTML(node) {
+                               return new tinymce.html.Serializer({
+                                       inner: true,
+                                       validate: false
+                               }).serialize(node);
+                       };
+
+                       function lookupAttribute(o, attr) {
+                               return lookup[(o.attr(attr) || '').toLowerCase()];
+                       }
+
+                       function lookupExtension(src) {
+                               var ext = src.replace(/^.*\.([^.]+)$/, '$1');
+                               return lookup[ext.toLowerCase() || ''];
+                       }
+
+                       // If node isn't in document
+                       if (!node.parent)
+                               return;
+
+                       // Handle media scripts
+                       if (node.name === 'script') {
+                               if (node.firstChild)
+                                       matches = scriptRegExp.exec(node.firstChild.value);
+
+                               if (!matches)
+                                       return;
+
+                               type = matches[1];
+                               data = {video : {}, params : JSON.parse(matches[2])};
+                               width = data.params.width;
+                               height = data.params.height;
+                       }
+
+                       // Setup data objects
+                       data = data || {
+                               video : {},
+                               params : {}
+                       };
+
+                       // Setup new image object
+                       img = new Node('img', 1);
+                       img.attr({
+                               src : this.editor.theme.url + '/img/trans.gif'
+                       });
+
+                       // Video element
+                       name = node.name;
+                       if (name === 'video' || name == 'audio') {
+                               video = node;
+                               object = node.getAll('object')[0];
+                               embed = node.getAll('embed')[0];
+                               width = video.attr('width');
+                               height = video.attr('height');
+                               id = video.attr('id');
+                               data.video = {attrs : {}, sources : []};
+
+                               // Get all video attributes
+                               attrs = data.video.attrs;
+                               for (name in video.attributes.map)
+                                       attrs[name] = video.attributes.map[name];
+
+                               source = node.attr('src');
+                               if (source)
+                                       data.video.sources.push({src : urlConverter.call(urlConverterScope, source, 'src', node.name)});
+
+                               // Get all sources
+                               sources = video.getAll("source");
+                               for (i = 0; i < sources.length; i++) {
+                                       source = sources[i].remove();
+
+                                       data.video.sources.push({
+                                               src: urlConverter.call(urlConverterScope, source.attr('src'), 'src', 'source'),
+                                               type: source.attr('type'),
+                                               media: source.attr('media')
+                                       });
+                               }
+
+                               // Convert the poster URL
+                               if (attrs.poster)
+                                       attrs.poster = urlConverter.call(urlConverterScope, attrs.poster, 'poster', node.name);
+                       }
+
+                       // Object element
+                       if (node.name === 'object') {
+                               object = node;
+                               embed = node.getAll('embed')[0];
+                       }
+
+                       // Embed element
+                       if (node.name === 'embed')
+                               embed = node;
+
+                       // Iframe element
+                       if (node.name === 'iframe') {
+                               iframe = node;
+                               type = 'Iframe';
+                       }
+
+                       if (object) {
+                               // Get width/height
+                               width = width || object.attr('width');
+                               height = height || object.attr('height');
+                               style = style || object.attr('style');
+                               id = id || object.attr('id');
+                               hspace = hspace || object.attr('hspace');
+                               vspace = vspace || object.attr('vspace');
+                               align = align || object.attr('align');
+                               bgcolor = bgcolor || object.attr('bgcolor');
+                               data.name = object.attr('name');
+
+                               // Get all object params
+                               params = object.getAll("param");
+                               for (i = 0; i < params.length; i++) {
+                                       param = params[i];
+                                       name = param.remove().attr('name');
+
+                                       if (!excludedAttrs[name])
+                                               data.params[name] = param.attr('value');
+                               }
+
+                               data.params.src = data.params.src || object.attr('data');
+                       }
+
+                       if (embed) {
+                               // Get width/height
+                               width = width || embed.attr('width');
+                               height = height || embed.attr('height');
+                               style = style || embed.attr('style');
+                               id = id || embed.attr('id');
+                               hspace = hspace || embed.attr('hspace');
+                               vspace = vspace || embed.attr('vspace');
+                               align = align || embed.attr('align');
+                               bgcolor = bgcolor || embed.attr('bgcolor');
+
+                               // Get all embed attributes
+                               for (name in embed.attributes.map) {
+                                       if (!excludedAttrs[name] && !data.params[name])
+                                               data.params[name] = embed.attributes.map[name];
+                               }
+                       }
+
+                       if (iframe) {
+                               // Get width/height
+                               width = iframe.attr('width');
+                               height = iframe.attr('height');
+                               style = style || iframe.attr('style');
+                               id = iframe.attr('id');
+                               hspace = iframe.attr('hspace');
+                               vspace = iframe.attr('vspace');
+                               align = iframe.attr('align');
+                               bgcolor = iframe.attr('bgcolor');
+
+                               tinymce.each(rootAttributes, function(name) {
+                                       img.attr(name, iframe.attr(name));
+                               });
+
+                               // Get all iframe attributes
+                               for (name in iframe.attributes.map) {
+                                       if (!excludedAttrs[name] && !data.params[name])
+                                               data.params[name] = iframe.attributes.map[name];
+                               }
+                       }
+
+                       // Use src not movie
+                       if (data.params.movie) {
+                               data.params.src = data.params.src || data.params.movie;
+                               delete data.params.movie;
+                       }
+
+                       // Convert the URL to relative/absolute depending on configuration
+                       if (data.params.src)
+                               data.params.src = urlConverter.call(urlConverterScope, data.params.src, 'src', 'object');
+
+                       if (video) {
+                               if (node.name === 'video')
+                                       type = lookup.video.name;
+                               else if (node.name === 'audio')
+                                       type = lookup.audio.name;
+                       }
+
+                       if (object && !type)
+                               type = (lookupAttribute(object, 'clsid') || lookupAttribute(object, 'classid') || lookupAttribute(object, 'type') || {}).name;
+
+                       if (embed && !type)
+                               type = (lookupAttribute(embed, 'type') || lookupExtension(data.params.src) || {}).name;
+
+                       // for embedded audio we preserve the original specified type
+                       if (embed && type == 'EmbeddedAudio') {
+                               data.params.type = embed.attr('type');
+                       }
+
+                       // Replace the video/object/embed element with a placeholder image containing the data
+                       node.replace(img);
+
+                       // Remove embed
+                       if (embed)
+                               embed.remove();
+
+                       // Serialize the inner HTML of the object element
+                       if (object) {
+                               html = getInnerHTML(object.remove());
+
+                               if (html)
+                                       data.object_html = html;
+                       }
+
+                       // Serialize the inner HTML of the video element
+                       if (video) {
+                               html = getInnerHTML(video.remove());
+
+                               if (html)
+                                       data.video_html = html;
+                       }
+
+                       data.hspace = hspace;
+                       data.vspace = vspace;
+                       data.align = align;
+                       data.bgcolor = bgcolor;
+
+                       // Set width/height of placeholder
+                       img.attr({
+                               id : id,
+                               'class' : 'mceItemMedia mceItem' + (type || 'Flash'),
+                               style : style,
+                               width : width || (node.name == 'audio' ? "300" : "320"),
+                               height : height || (node.name == 'audio' ? "32" : "240"),
+                               hspace : hspace,
+                               vspace : vspace,
+                               align : align,
+                               bgcolor : bgcolor,
+                               "data-mce-json" : JSON.serialize(data, "'")
+                       });
+               }
+       });
+
+       // Register plugin
+       tinymce.PluginManager.add('media', tinymce.plugins.MediaPlugin);
+})();
index c96fc4fc7ea86ce88d54af8282caf4306ab5dff5..43e9ac409938e6fa19d813a445ff5d707d416d69 100644 (file)
@@ -8,6 +8,33 @@
                return document.getElementById(id);
        }
 
                return document.getElementById(id);
        }
 
+       function clone(obj) {
+               var i, len, copy, attr;
+
+               if (null == obj || "object" != typeof obj)
+                       return obj;
+
+               // Handle Array
+               if ('length' in obj) {
+                       copy = [];
+
+                       for (i = 0, len = obj.length; i < len; ++i) {
+                               copy[i] = clone(obj[i]);
+                       }
+
+                       return copy;
+               }
+
+               // Handle Object
+               copy = {};
+               for (attr in obj) {
+                       if (obj.hasOwnProperty(attr))
+                               copy[attr] = clone(obj[attr]);
+               }
+
+               return copy;
+       }
+
        function getVal(id) {
                var elm = get(id);
 
        function getVal(id) {
                var elm = get(id);
 
@@ -21,7 +48,7 @@
        }
 
        function setVal(id, value, name) {
        }
 
        function setVal(id, value, name) {
-               if (typeof(value) != 'undefined') {
+               if (typeof(value) != 'undefined' && value != null) {
                        var elm = get(id);
 
                        if (elm.nodeName == "SELECT")
                        var elm = get(id);
 
                        if (elm.nodeName == "SELECT")
@@ -39,9 +66,9 @@
 
        window.Media = {
                init : function() {
 
        window.Media = {
                init : function() {
-                       var html, editor;
+                       var html, editor, self = this;
 
 
-                       this.editor = editor = tinyMCEPopup.editor;
+                       self.editor = editor = tinyMCEPopup.editor;
 
                        // Setup file browsers and color pickers
                        get('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media');
 
                        // Setup file browsers and color pickers
                        get('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media');
@@ -53,7 +80,7 @@
                        get('audio_altsource2_filebrowser').innerHTML = getBrowserHTML('audio_filebrowser_altsource2','audio_altsource2','media','media');
                        get('video_poster_filebrowser').innerHTML = getBrowserHTML('filebrowser_poster','video_poster','media','image');
 
                        get('audio_altsource2_filebrowser').innerHTML = getBrowserHTML('audio_filebrowser_altsource2','audio_altsource2','media','media');
                        get('video_poster_filebrowser').innerHTML = getBrowserHTML('filebrowser_poster','video_poster','media','image');
 
-                       html = this.getMediaListHTML('medialist', 'src', 'media', 'media');
+                       html = self.getMediaListHTML('medialist', 'src', 'media', 'media');
                        if (html == "")
                                get("linklistrow").style.display = 'none';
                        else
                        if (html == "")
                                get("linklistrow").style.display = 'none';
                        else
                        if (isVisible('filebrowser_poster'))
                                get('video_poster').style.width = '220px';
 
                        if (isVisible('filebrowser_poster'))
                                get('video_poster').style.width = '220px';
 
-                       this.data = tinyMCEPopup.getWindowArg('data');
-                       this.dataToForm();
-                       this.preview();
+                       editor.dom.setOuterHTML(get('media_type'), self.getMediaTypeHTML(editor));
+
+                       self.setDefaultDialogSettings(editor);
+                       self.data = clone(tinyMCEPopup.getWindowArg('data'));
+                       self.dataToForm();
+                       self.preview();
+
+                       updateColor('bgcolor_pick', 'bgcolor');
                },
 
                insert : function() {
                },
 
                insert : function() {
                },
 
                moveStates : function(to_form, field) {
                },
 
                moveStates : function(to_form, field) {
-                       var data = this.data, editor = this.editor, data = this.data,
+                       var data = this.data, editor = this.editor,
                                mediaPlugin = editor.plugins.media, ext, src, typeInfo, defaultStates, src;
 
                        defaultStates = {
                                mediaPlugin = editor.plugins.media, ext, src, typeInfo, defaultStates, src;
 
                        defaultStates = {
                                                formItemName = type == 'global' ? name : type + '_' + name;
 
                                                if (type == 'global')
                                                formItemName = type == 'global' ? name : type + '_' + name;
 
                                                if (type == 'global')
-                                                       list = data;
-                                               else if (type == 'video' || type == 'audio') {
+                                               list = data;
+                                       else if (type == 'video' || type == 'audio') {
                                                        list = data.video.attrs;
 
                                                        if (!list && !to_form)
                                                        list = data.video.attrs;
 
                                                        if (!list && !to_form)
-                                                               data.video.attrs = list = {};
+                                                       data.video.attrs = list = {};
                                                } else
                                                } else
-                                                       list = data.params;
+                                               list = data.params;
 
                                                if (list) {
                                                        if (to_form) {
 
                                                if (list) {
                                                        if (to_form) {
                        get('shockwave_options').style.display = 'none';
                        get('windowsmedia_options').style.display = 'none';
                        get('realmedia_options').style.display = 'none';
                        get('shockwave_options').style.display = 'none';
                        get('windowsmedia_options').style.display = 'none';
                        get('realmedia_options').style.display = 'none';
+                       get('embeddedaudio_options').style.display = 'none';
 
                        if (get(data.type + '_options'))
                                get(data.type + '_options').style.display = 'block';
 
                        if (get(data.type + '_options'))
                                get(data.type + '_options').style.display = 'block';
                        setOptions('realmedia', 'autostart,loop,autogotourl,center,imagestatus,maintainaspect,nojava,prefetch,shuffle,console,controls,numloop,scriptcallbacks');
                        setOptions('video', 'poster,autoplay,loop,muted,preload,controls');
                        setOptions('audio', 'autoplay,loop,preload,controls');
                        setOptions('realmedia', 'autostart,loop,autogotourl,center,imagestatus,maintainaspect,nojava,prefetch,shuffle,console,controls,numloop,scriptcallbacks');
                        setOptions('video', 'poster,autoplay,loop,muted,preload,controls');
                        setOptions('audio', 'autoplay,loop,preload,controls');
+                       setOptions('embeddedaudio', 'autoplay,loop,controls');
                        setOptions('global', 'id,name,vspace,hspace,bgcolor,align,width,height');
 
                        if (to_form) {
                        setOptions('global', 'id,name,vspace,hspace,bgcolor,align,width,height');
 
                        if (to_form) {
                                        if (data.type == 'flash') {
                                                tinymce.each(editor.getParam('flash_video_player_flashvars', {url : '$url', poster : '$poster'}), function(value, name) {
                                                        if (value == '$url')
                                        if (data.type == 'flash') {
                                                tinymce.each(editor.getParam('flash_video_player_flashvars', {url : '$url', poster : '$poster'}), function(value, name) {
                                                        if (value == '$url')
-                                                               data.params.src = parseQueryParams(data.params.flashvars)[name] || data.params.src;
+                                                               data.params.src = parseQueryParams(data.params.flashvars)[name] || data.params.src || '';
                                                });
                                        }
 
                                                });
                                        }
 
                                }
                        } else {
                                src = getVal("src");
                                }
                        } else {
                                src = getVal("src");
-       
+
+                               // YouTube *NEW*
+                               if (src.match(/youtu.be\/[a-z1-9.-_]+/)) {
+                                       data.width = 425;
+                                       data.height = 350;
+                                       data.params.frameborder = '0';
+                                       data.type = 'iframe';
+                                       src = 'http://www.youtube.com/embed/' + src.match(/youtu.be\/([a-z1-9.-_]+)/)[1];
+                                       setVal('src', src);
+                                       setVal('media_type', data.type);
+                               }
+
                                // YouTube
                                if (src.match(/youtube.com(.+)v=([^&]+)/)) {
                                        data.width = 425;
                                // YouTube
                                if (src.match(/youtube.com(.+)v=([^&]+)/)) {
                                        data.width = 425;
                                this.panel = 'source';
                        } else {
                                if (this.panel == 'source') {
                                this.panel = 'source';
                        } else {
                                if (this.panel == 'source') {
-                                       this.data = this.editor.plugins.media.htmlToData(getVal('source'));
+                                       this.data = clone(this.editor.plugins.media.htmlToData(getVal('source')));
                                        this.dataToForm();
                                        this.panel = '';
                                }
                                        this.dataToForm();
                                        this.panel = '';
                                }
                        }
 
                        return "";
                        }
 
                        return "";
+               },
+
+               getMediaTypeHTML : function(editor) {
+                       function option(media_type, element) {
+                               if (!editor.schema.getElementRule(element || media_type)) {
+                                       return '';
+                               }
+
+                               return '<option value="'+media_type+'">'+tinyMCEPopup.editor.translate("media_dlg."+media_type)+'</option>'
+                       }
+
+                       var html = "";
+
+                       html += '<select id="media_type" name="media_type" onchange="Media.formToData(\'type\');">';
+                       html += option("video");
+                       html += option("audio");
+                       html += option("flash", "object");
+                       html += option("quicktime", "object");
+                       html += option("shockwave", "object");
+                       html += option("windowsmedia", "object");
+                       html += option("realmedia", "object");
+                       html += option("iframe");
+
+                       if (editor.getParam('media_embedded_audio', false)) {
+                               html += option('embeddedaudio', "object");
+                       }
+
+                       html += '</select>';
+                       return html;
+               },
+
+               setDefaultDialogSettings : function(editor) {
+                       var defaultDialogSettings = editor.getParam("media_dialog_defaults", {});
+                       tinymce.each(defaultDialogSettings, function(v, k) {
+                               setVal(k, v);
+                       });
                }
        };
 
                }
        };
 
        tinyMCEPopup.onInit.add(function() {
                Media.init();
        });
        tinyMCEPopup.onInit.add(function() {
                Media.init();
        });
-})();
\ No newline at end of file
+})();
index dc4354d1b910197820915843261296bbade73bd9..44d96a0426f50503b73355d834a5ef70b72c8c7a 100644 (file)
@@ -2,13 +2,13 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#media_dlg.title}</title>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#media_dlg.title}</title>
-       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=345-20110908"></script>
-       <script type="text/javascript" src="js/media.js?ver=345-20110908"></script>
-       <script type="text/javascript" src="../../utils/mctabs.js?ver=345-20110908"></script>
-       <script type="text/javascript" src="../../utils/validate.js?ver=345-20110908"></script>
-       <script type="text/javascript" src="../../utils/form_utils.js?ver=345-20110908"></script>
-       <script type="text/javascript" src="../../utils/editable_selects.js?ver=345-20110908"></script>
-       <link href="css/media.css?ver=345-20110908" rel="stylesheet" type="text/css" />
+       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="js/media.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="../../utils/mctabs.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="../../utils/validate.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="../../utils/form_utils.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="../../utils/editable_selects.js?ver=349-20120314"></script>
+       <link href="css/media.css?ver=349-20120314" rel="stylesheet" type="text/css" />
 </head>
 <body style="display: none" role="application">
 <form onsubmit="Media.insert();return false;" action="#">
 </head>
 <body style="display: none" role="application">
 <form onsubmit="Media.insert();return false;" action="#">
                                                        <tr>
                                                                <td><label for="media_type">{#media_dlg.type}</label></td>
                                                                <td>
                                                        <tr>
                                                                <td><label for="media_type">{#media_dlg.type}</label></td>
                                                                <td>
-                                                                       <select id="media_type" name="media_type" onchange="Media.formToData('type');">
-                                                                               <option value="video">HTML5 Video</option>
-                                                                               <option value="audio">HTML5 Audio</option>
-                                                                               <option value="flash">Flash</option>
-                                                                               <option value="quicktime">QuickTime</option>
-                                                                               <option value="shockwave">Shockwave</option>
-                                                                               <option value="windowsmedia">Windows Media</option>
-                                                                               <option value="realmedia">Real Media</option>
-                                                                               <option value="iframe">Iframe</option>
-                                                                       </select>
+                                                                       <select id="media_type"></select>
                                                                </td>
                                                        </tr>
                                                        <tr>
                                                                </td>
                                                        </tr>
                                                        <tr>
                                        </table>
                                </fieldset>
 
                                        </table>
                                </fieldset>
 
+                               <fieldset id="embeddedaudio_options">
+                                       <legend>{#media_dlg.embedded_audio_options}</legend>
+
+                                       <table role="presentation" border="0" cellpadding="4" cellspacing="0">
+                                               <tr>
+                                                       <td>
+                                                               <table role="presentation" border="0" cellpadding="0" cellspacing="0">
+                                                                       <tr>
+                                                                               <td><input type="checkbox" class="checkbox" id="embeddedaudio_autoplay" name="audio_autoplay" onchange="Media.formToData();" /></td>
+                                                                               <td><label for="audio_autoplay">{#media_dlg.play}</label></td>
+                                                                       </tr>
+                                                               </table>
+                                                       </td>
+
+                                                       <td>
+                                                               <table role="presentation" border="0" cellpadding="0" cellspacing="0">
+                                                                       <tr>
+                                                                               <td><input type="checkbox" class="checkbox" id="embeddedaudio_loop" name="audio_loop" onchange="Media.formToData();" /></td>
+                                                                               <td><label for="audio_loop">{#media_dlg.loop}</label></td>
+                                                                       </tr>
+                                                               </table>
+                                                       </td>
+
+                                                       <td>
+                                                               <table role="presentation" border="0" cellpadding="0" cellspacing="0">
+                                                                       <tr>
+                                                                               <td><input type="checkbox" class="checkbox" id="embeddedaudio_controls" name="audio_controls" onchange="Media.formToData();" /></td>
+                                                                               <td><label for="audio_controls">{#media_dlg.controls}</label></td>
+                                                                       </tr>
+                                                               </table>
+                                                       </td>
+                                               </tr>
+                                       </table>
+                               </fieldset>
+
                                <fieldset id="audio_options">
                                        <legend>{#media_dlg.html5_audio_options}</legend>
 
                                <fieldset id="audio_options">
                                        <legend>{#media_dlg.html5_audio_options}</legend>
 
                                                        <td><label for="audio_preload">{#media_dlg.preload}</label></td>
                                                        <td>
                                                                <select id="audio_preload" name="audio_preload" onchange="Media.formToData();">
                                                        <td><label for="audio_preload">{#media_dlg.preload}</label></td>
                                                        <td>
                                                                <select id="audio_preload" name="audio_preload" onchange="Media.formToData();">
-                                                                       <option value="none">{#media_dlg.preload_none}</option> 
+                                                                       <option value="none">{#media_dlg.preload_none}</option>
                                                                        <option value="metadata">{#media_dlg.preload_metadata}</option>
                                                                        <option value="auto">{#media_dlg.preload_auto}</option>
                                                                </select>
                                                                        <option value="metadata">{#media_dlg.preload_metadata}</option>
                                                                        <option value="auto">{#media_dlg.preload_auto}</option>
                                                                </select>
                                        </table>
                                </fieldset>
 
                                        </table>
                                </fieldset>
 
-
                                <fieldset id="flash_options">
                                        <legend>{#media_dlg.flash_options}</legend>
 
                                <fieldset id="flash_options">
                                        <legend>{#media_dlg.flash_options}</legend>
 
index 2a040358df0d1f8eb784d2ec0919626198d6eb47..585d772d6d3c23626fddfa58c4220b056783e148 100644 (file)
Binary files a/wp-includes/js/tinymce/plugins/media/moxieplayer.swf and b/wp-includes/js/tinymce/plugins/media/moxieplayer.swf differ
diff --git a/wp-includes/js/tinymce/plugins/paste/blank.htm b/wp-includes/js/tinymce/plugins/paste/blank.htm
deleted file mode 100644 (file)
index 4382a11..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>blank_page</title>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-<link href="css/blank.css?ver=3223_1087" rel="stylesheet" type="text/css" />
-<script type="text/javascript">
-function init() {
-       if (parent.tinymce.isIE)
-               document.body.contentEditable = true;
-       else
-               document.designMode = 'on';
-
-       parent.initIframe(document);
-       window.focus();
-}
-</script>
-</head>
-<body onload="init();">
-
-</body>
-</html>
index 4de97103a0d267e4815ac2006d6d4e68bd59a8d1..e47a5c630afdf30eb9e8d0cb1b1ebb0024e09288 100644 (file)
@@ -1 +1 @@
-(function(){var c=tinymce.each,a={paste_auto_cleanup_on_paste:true,paste_enable_default_filters:true,paste_block_drop:false,paste_retain_style_properties:"none",paste_strip_class_attributes:"mso",paste_remove_spans:false,paste_remove_styles:false,paste_remove_styles_if_webkit:true,paste_convert_middot_lists:true,paste_convert_headers_to_strong:false,paste_dialog_width:"450",paste_dialog_height:"400",paste_text_use_dialog:false,paste_text_sticky:false,paste_text_sticky_default:false,paste_text_notifyalways:false,paste_text_linebreaktype:"p",paste_text_replacements:[[/\u2026/g,"..."],[/[\x93\x94\u201c\u201d]/g,'"'],[/[\x60\x91\x92\u2018\u2019]/g,"'"]]};function b(d,e){return d.getParam(e,a[e])}tinymce.create("tinymce.plugins.PastePlugin",{init:function(d,e){var f=this;f.editor=d;f.url=e;f.onPreProcess=new tinymce.util.Dispatcher(f);f.onPostProcess=new tinymce.util.Dispatcher(f);f.onPreProcess.add(f._preProcess);f.onPostProcess.add(f._postProcess);f.onPreProcess.add(function(i,j){d.execCallback("paste_preprocess",i,j)});f.onPostProcess.add(function(i,j){d.execCallback("paste_postprocess",i,j)});d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){return false}});d.pasteAsPlainText=b(d,"paste_text_sticky_default");function h(l,j){var k=d.dom,i;f.onPreProcess.dispatch(f,l);l.node=k.create("div",0,l.content);if(tinymce.isGecko){i=d.selection.getRng(true);if(i.startContainer==i.endContainer&&i.startContainer.nodeType==3){if(l.node.childNodes.length===1&&/^(p|h[1-6]|pre)$/i.test(l.node.firstChild.nodeName)&&l.content.indexOf("__MCE_ITEM__")===-1){k.remove(l.node.firstChild,true)}}}f.onPostProcess.dispatch(f,l);l.content=d.serializer.serialize(l.node,{getInner:1,forced_root_block:""});if((!j)&&(d.pasteAsPlainText)){f._insertPlainText(l.content);if(!b(d,"paste_text_sticky")){d.pasteAsPlainText=false;d.controlManager.setActive("pastetext",false)}}else{f._insert(l.content)}}d.addCommand("mceInsertClipboardContent",function(i,j){h(j,true)});if(!b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(j,i){var k=tinymce.util.Cookie;d.pasteAsPlainText=!d.pasteAsPlainText;d.controlManager.setActive("pastetext",d.pasteAsPlainText);if((d.pasteAsPlainText)&&(!k.get("tinymcePasteText"))){if(b(d,"paste_text_sticky")){d.windowManager.alert(d.translate("paste.plaintext_mode_sticky"))}else{d.windowManager.alert(d.translate("paste.plaintext_mode"))}if(!b(d,"paste_text_notifyalways")){k.set("tinymcePasteText","1",new Date(new Date().getFullYear()+1,12,31))}}})}d.addButton("pastetext",{title:"paste.paste_text_desc",cmd:"mcePasteText"});d.addButton("selectall",{title:"paste.selectall_desc",cmd:"selectall"});function g(s){var l,p,j,t,k=d.selection,o=d.dom,q=d.getBody(),i,r;if(s.clipboardData||o.doc.dataTransfer){r=(s.clipboardData||o.doc.dataTransfer).getData("Text");if(d.pasteAsPlainText){s.preventDefault();h({content:o.encode(r).replace(/\r?\n/g,"<br />")});return}}if(o.get("_mcePaste")){return}l=o.add(q,"div",{id:"_mcePaste","class":"mcePaste","data-mce-bogus":"1"},"\uFEFF\uFEFF");if(q!=d.getDoc().body){i=o.getPos(d.selection.getStart(),q).y}else{i=q.scrollTop+o.getViewPort(d.getWin()).y}o.setStyles(l,{position:"absolute",left:tinymce.isGecko?-40:0,top:i-25,width:1,height:1,overflow:"hidden"});if(tinymce.isIE){t=k.getRng();j=o.doc.body.createTextRange();j.moveToElementText(l);j.execCommand("Paste");o.remove(l);if(l.innerHTML==="\uFEFF\uFEFF"){d.execCommand("mcePasteWord");s.preventDefault();return}k.setRng(t);k.setContent("");setTimeout(function(){h({content:l.innerHTML})},0);return tinymce.dom.Event.cancel(s)}else{function m(n){n.preventDefault()}o.bind(d.getDoc(),"mousedown",m);o.bind(d.getDoc(),"keydown",m);p=d.selection.getRng();l=l.firstChild;j=d.getDoc().createRange();j.setStart(l,0);j.setEnd(l,2);k.setRng(j);window.setTimeout(function(){var u="",n;if(!o.select("div.mcePaste > div.mcePaste").length){n=o.select("div.mcePaste");c(n,function(w){var v=w.firstChild;if(v&&v.nodeName=="DIV"&&v.style.marginTop&&v.style.backgroundColor){o.remove(v,1)}c(o.select("span.Apple-style-span",w),function(x){o.remove(x,1)});c(o.select("br[data-mce-bogus]",w),function(x){o.remove(x)});if(w.parentNode.className!="mcePaste"){u+=w.innerHTML}})}else{u="<p>"+o.encode(r).replace(/\r?\n\r?\n/g,"</p><p>").replace(/\r?\n/g,"<br />")+"</p>"}c(o.select("div.mcePaste"),function(v){o.remove(v)});if(p){k.setRng(p)}h({content:u});o.unbind(d.getDoc(),"mousedown",m);o.unbind(d.getDoc(),"keydown",m)},0)}}if(b(d,"paste_auto_cleanup_on_paste")){if(tinymce.isOpera||/Firefox\/2/.test(navigator.userAgent)){d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){g(j)}})}else{d.onPaste.addToTop(function(i,j){return g(j)})}}d.onInit.add(function(){d.controlManager.setActive("pastetext",d.pasteAsPlainText);if(b(d,"paste_block_drop")){d.dom.bind(d.getBody(),["dragend","dragover","draggesture","dragdrop","drop","drag"],function(i){i.preventDefault();i.stopPropagation();return false})}});f._legacySupport()},getInfo:function(){return{longname:"Paste text/word",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_preProcess:function(g,e){var k=this.editor,j=e.content,p=tinymce.grep,n=tinymce.explode,f=tinymce.trim,l,i;function d(h){c(h,function(o){if(o.constructor==RegExp){j=j.replace(o,"")}else{j=j.replace(o[0],o[1])}})}if(k.settings.paste_enable_default_filters==false){return}if(tinymce.isIE&&document.documentMode>=9){d([[/(?:<br>&nbsp;[\s\r\n]+|<br>)*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:<br>&nbsp;[\s\r\n]+|<br>)*/g,"$1"]]);d([[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}if(/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(j)||e.wordContent){e.wordContent=true;d([/^\s*(&nbsp;)+/gi,/(&nbsp;|<br[^>]*>)+\s*$/gi]);if(b(k,"paste_convert_headers_to_strong")){j=j.replace(/<p [^>]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi,"<p><strong>$1</strong></p>")}if(b(k,"paste_convert_middot_lists")){d([[/<!--\[if !supportLists\]-->/gi,"$&__MCE_ITEM__"],[/(<span[^>]+(?:mso-list:|:\s*symbol)[^>]+>)/gi,"$1__MCE_ITEM__"],[/(<p[^>]+(?:MsoListParagraph)[^>]+>)/gi,"$1__MCE_ITEM__"]])}d([/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\u00a0"]]);do{l=j.length;j=j.replace(/(<[a-z][^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi,"$1")}while(l!=j.length);if(b(k,"paste_retain_style_properties").replace(/^none$/i,"").length==0){j=j.replace(/<\/?span[^>]*>/gi,"")}else{d([[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(o,h){return(h.length>0)?h.replace(/./," ").slice(Math.floor(h.length/2)).split("").join("\u00a0"):""}],[/(<[a-z][^>]*)\sstyle="([^"]*)"/gi,function(t,h,r){var u=[],o=0,q=n(f(r).replace(/&quot;/gi,"'"),";");c(q,function(s){var w,y,z=n(s,":");function x(A){return A+((A!=="0")&&(/\d$/.test(A)))?"px":""}if(z.length==2){w=z[0].toLowerCase();y=z[1].toLowerCase();switch(w){case"mso-padding-alt":case"mso-padding-top-alt":case"mso-padding-right-alt":case"mso-padding-bottom-alt":case"mso-padding-left-alt":case"mso-margin-alt":case"mso-margin-top-alt":case"mso-margin-right-alt":case"mso-margin-bottom-alt":case"mso-margin-left-alt":case"mso-table-layout-alt":case"mso-height":case"mso-width":case"mso-vertical-align-alt":u[o++]=w.replace(/^mso-|-alt$/g,"")+":"+x(y);return;case"horiz-align":u[o++]="text-align:"+y;return;case"vert-align":u[o++]="vertical-align:"+y;return;case"font-color":case"mso-foreground":u[o++]="color:"+y;return;case"mso-background":case"mso-highlight":u[o++]="background:"+y;return;case"mso-default-height":u[o++]="min-height:"+x(y);return;case"mso-default-width":u[o++]="min-width:"+x(y);return;case"mso-padding-between-alt":u[o++]="border-collapse:separate;border-spacing:"+x(y);return;case"text-line-through":if((y=="single")||(y=="double")){u[o++]="text-decoration:line-through"}return;case"mso-zero-height":if(y=="yes"){u[o++]="display:none"}return}if(/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(w)){return}u[o++]=w+":"+z[1]}});if(o>0){return h+' style="'+u.join(";")+'"'}else{return h}}]])}}if(b(k,"paste_convert_headers_to_strong")){d([[/<h[1-6][^>]*>/gi,"<p><strong>"],[/<\/h[1-6][^>]*>/gi,"</strong></p>"]])}d([[/Version:[\d.]+\nStartHTML:\d+\nEndHTML:\d+\nStartFragment:\d+\nEndFragment:\d+/gi,""]]);i=b(k,"paste_strip_class_attributes");if(i!=="none"){function m(q,o){if(i==="all"){return""}var h=p(n(o.replace(/^(["'])(.*)\1$/,"$2")," "),function(r){return(/^(?!mso)/i.test(r))});return h.length?' class="'+h.join(" ")+'"':""}j=j.replace(/ class="([^"]+)"/gi,m);j=j.replace(/ class=([\-\w]+)/gi,m)}if(b(k,"paste_remove_spans")){j=j.replace(/<\/?span[^>]*>/gi,"")}e.content=j},_postProcess:function(g,i){var f=this,e=f.editor,h=e.dom,d;if(e.settings.paste_enable_default_filters==false){return}if(i.wordContent){c(h.select("a",i.node),function(j){if(!j.href||j.href.indexOf("#_Toc")!=-1){h.remove(j,1)}});if(b(e,"paste_convert_middot_lists")){f._convertLists(g,i)}d=b(e,"paste_retain_style_properties");if((tinymce.is(d,"string"))&&(d!=="all")&&(d!=="*")){d=tinymce.explode(d.replace(/^none$/i,""));c(h.select("*",i.node),function(m){var n={},k=0,l,o,j;if(d){for(l=0;l<d.length;l++){o=d[l];j=h.getStyle(m,o);if(j){n[o]=j;k++}}}h.setAttrib(m,"style","");if(d&&k>0){h.setStyles(m,n)}else{if(m.nodeName=="SPAN"&&!m.className){h.remove(m,true)}}})}}if(b(e,"paste_remove_styles")||(b(e,"paste_remove_styles_if_webkit")&&tinymce.isWebKit)){c(h.select("*[style]",i.node),function(j){j.removeAttribute("style");j.removeAttribute("data-mce-style")})}else{if(tinymce.isWebKit){c(h.select("*",i.node),function(j){j.removeAttribute("data-mce-style")})}}},_convertLists:function(g,e){var i=g.editor.dom,h,l,d=-1,f,m=[],k,j;c(i.select("p",e.node),function(t){var q,u="",s,r,n,o;for(q=t.firstChild;q&&q.nodeType==3;q=q.nextSibling){u+=q.nodeValue}u=t.innerHTML.replace(/<\/?\w+[^>]*>/gi,"").replace(/&nbsp;/g,"\u00a0");if(/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*\u00a0*/.test(u)){s="ul"}if(/^__MCE_ITEM__\s*\w+\.\s*\u00a0+/.test(u)){s="ol"}if(s){f=parseFloat(t.style.marginLeft||0);if(f>d){m.push(f)}if(!h||s!=k){h=i.create(s);i.insertAfter(h,t)}else{if(f>d){h=l.appendChild(i.create(s))}else{if(f<d){n=tinymce.inArray(m,f);o=i.getParents(h.parentNode,s);h=o[o.length-1-n]||h}}}c(i.select("span",t),function(v){var p=v.innerHTML.replace(/<\/?\w+[^>]*>/gi,"");if(s=="ul"&&/^__MCE_ITEM__[\u2022\u00b7\u00a7\u00d8o\u25CF]/.test(p)){i.remove(v)}else{if(/^__MCE_ITEM__[\s\S]*\w+\.(&nbsp;|\u00a0)*\s*/.test(p)){i.remove(v)}}});r=t.innerHTML;if(s=="ul"){r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*(&nbsp;|\u00a0)+\s*/,"")}else{r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^\s*\w+\.(&nbsp;|\u00a0)+\s*/,"")}l=h.appendChild(i.create("li",0,r));i.remove(t);d=f;k=s}else{h=d=0}});j=e.node.innerHTML;if(j.indexOf("__MCE_ITEM__")!=-1){e.node.innerHTML=j.replace(/__MCE_ITEM__/g,"")}},_insert:function(f,d){var e=this.editor,g=e.selection.getRng();if(!e.selection.isCollapsed()&&g.startContainer!=g.endContainer){e.getDoc().execCommand("Delete",false,null)}e.execCommand("mceInsertContent",false,f,{skip_undo:d})},_insertPlainText:function(g){var d=this.editor,e=b(d,"paste_text_linebreaktype"),i=b(d,"paste_text_replacements"),f=tinymce.is;function h(j){c(j,function(k){if(k.constructor==RegExp){g=g.replace(k,"")}else{g=g.replace(k[0],k[1])}})}if((typeof(g)==="string")&&(g.length>0)){if(/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(g)){h([/[\n\r]+/g])}else{h([/\r+/g])}h([[/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi,"\n\n"],[/<br[^>]*>|<\/tr>/gi,"\n"],[/<\/t[dh]>\s*<t[dh][^>]*>/gi,"\t"],/<[a-z!\/?][^>]*>/gi,[/&nbsp;/gi," "],[/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi,"$1"],[/\n{3,}/g,"\n\n"]]);g=d.dom.decode(tinymce.html.Entities.encodeRaw(g));if(f(i,"array")){h(i)}else{if(f(i,"string")){h(new RegExp(i,"gi"))}}if(e=="none"){h([[/\n+/g," "]])}else{if(e=="br"){h([[/\n/g,"<br />"]])}else{h([[/\n\n/g,"</p><p>"],[/^(.*<\/p>)(<p>)$/,"<p>$1"],[/\n/g,"<br />"]])}}d.execCommand("mceInsertContent",false,g)}},_legacySupport:function(){var e=this,d=e.editor;d.addCommand("mcePasteWord",function(){d.windowManager.open({file:e.url+"/pasteword.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})});if(b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(){d.windowManager.open({file:e.url+"/pastetext.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})})}d.addButton("pasteword",{title:"paste.paste_word_desc",cmd:"mcePasteWord"})}});tinymce.PluginManager.add("paste",tinymce.plugins.PastePlugin)})();
\ No newline at end of file
+(function(){var c=tinymce.each,a={paste_auto_cleanup_on_paste:true,paste_enable_default_filters:true,paste_block_drop:false,paste_retain_style_properties:"none",paste_strip_class_attributes:"mso",paste_remove_spans:false,paste_remove_styles:false,paste_remove_styles_if_webkit:true,paste_convert_middot_lists:true,paste_convert_headers_to_strong:false,paste_dialog_width:"450",paste_dialog_height:"400",paste_text_use_dialog:false,paste_text_sticky:false,paste_text_sticky_default:false,paste_text_notifyalways:false,paste_text_linebreaktype:"combined",paste_text_replacements:[[/\u2026/g,"..."],[/[\x93\x94\u201c\u201d]/g,'"'],[/[\x60\x91\x92\u2018\u2019]/g,"'"]]};function b(d,e){return d.getParam(e,a[e])}tinymce.create("tinymce.plugins.PastePlugin",{init:function(d,e){var f=this;f.editor=d;f.url=e;f.onPreProcess=new tinymce.util.Dispatcher(f);f.onPostProcess=new tinymce.util.Dispatcher(f);f.onPreProcess.add(f._preProcess);f.onPostProcess.add(f._postProcess);f.onPreProcess.add(function(i,j){d.execCallback("paste_preprocess",i,j)});f.onPostProcess.add(function(i,j){d.execCallback("paste_postprocess",i,j)});d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){return false}});d.pasteAsPlainText=b(d,"paste_text_sticky_default");function h(l,j){var k=d.dom,i;f.onPreProcess.dispatch(f,l);l.node=k.create("div",0,l.content);if(tinymce.isGecko){i=d.selection.getRng(true);if(i.startContainer==i.endContainer&&i.startContainer.nodeType==3){if(l.node.childNodes.length===1&&/^(p|h[1-6]|pre)$/i.test(l.node.firstChild.nodeName)&&l.content.indexOf("__MCE_ITEM__")===-1){k.remove(l.node.firstChild,true)}}}f.onPostProcess.dispatch(f,l);l.content=d.serializer.serialize(l.node,{getInner:1,forced_root_block:""});if((!j)&&(d.pasteAsPlainText)){f._insertPlainText(l.content);if(!b(d,"paste_text_sticky")){d.pasteAsPlainText=false;d.controlManager.setActive("pastetext",false)}}else{f._insert(l.content)}}d.addCommand("mceInsertClipboardContent",function(i,j){h(j,true)});if(!b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(j,i){var k=tinymce.util.Cookie;d.pasteAsPlainText=!d.pasteAsPlainText;d.controlManager.setActive("pastetext",d.pasteAsPlainText);if((d.pasteAsPlainText)&&(!k.get("tinymcePasteText"))){if(b(d,"paste_text_sticky")){d.windowManager.alert(d.translate("paste.plaintext_mode_sticky"))}else{d.windowManager.alert(d.translate("paste.plaintext_mode"))}if(!b(d,"paste_text_notifyalways")){k.set("tinymcePasteText","1",new Date(new Date().getFullYear()+1,12,31))}}})}d.addButton("pastetext",{title:"paste.paste_text_desc",cmd:"mcePasteText"});d.addButton("selectall",{title:"paste.selectall_desc",cmd:"selectall"});function g(s){var l,p,j,t,k=d.selection,o=d.dom,q=d.getBody(),i,r;if(s.clipboardData||o.doc.dataTransfer){r=(s.clipboardData||o.doc.dataTransfer).getData("Text");if(d.pasteAsPlainText){s.preventDefault();h({content:o.encode(r).replace(/\r?\n/g,"<br />")});return}}if(o.get("_mcePaste")){return}l=o.add(q,"div",{id:"_mcePaste","class":"mcePaste","data-mce-bogus":"1"},"\uFEFF\uFEFF");if(q!=d.getDoc().body){i=o.getPos(d.selection.getStart(),q).y}else{i=q.scrollTop+o.getViewPort(d.getWin()).y}o.setStyles(l,{position:"absolute",left:tinymce.isGecko?-40:0,top:i-25,width:1,height:1,overflow:"hidden"});if(tinymce.isIE){t=k.getRng();j=o.doc.body.createTextRange();j.moveToElementText(l);j.execCommand("Paste");o.remove(l);if(l.innerHTML==="\uFEFF\uFEFF"){d.execCommand("mcePasteWord");s.preventDefault();return}k.setRng(t);k.setContent("");setTimeout(function(){h({content:l.innerHTML})},0);return tinymce.dom.Event.cancel(s)}else{function m(n){n.preventDefault()}o.bind(d.getDoc(),"mousedown",m);o.bind(d.getDoc(),"keydown",m);p=d.selection.getRng();l=l.firstChild;j=d.getDoc().createRange();j.setStart(l,0);j.setEnd(l,2);k.setRng(j);window.setTimeout(function(){var u="",n;if(!o.select("div.mcePaste > div.mcePaste").length){n=o.select("div.mcePaste");c(n,function(w){var v=w.firstChild;if(v&&v.nodeName=="DIV"&&v.style.marginTop&&v.style.backgroundColor){o.remove(v,1)}c(o.select("span.Apple-style-span",w),function(x){o.remove(x,1)});c(o.select("br[data-mce-bogus]",w),function(x){o.remove(x)});if(w.parentNode.className!="mcePaste"){u+=w.innerHTML}})}else{u="<p>"+o.encode(r).replace(/\r?\n\r?\n/g,"</p><p>").replace(/\r?\n/g,"<br />")+"</p>"}c(o.select("div.mcePaste"),function(v){o.remove(v)});if(p){k.setRng(p)}h({content:u});o.unbind(d.getDoc(),"mousedown",m);o.unbind(d.getDoc(),"keydown",m)},0)}}if(b(d,"paste_auto_cleanup_on_paste")){if(tinymce.isOpera||/Firefox\/2/.test(navigator.userAgent)){d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){g(j)}})}else{d.onPaste.addToTop(function(i,j){return g(j)})}}d.onInit.add(function(){d.controlManager.setActive("pastetext",d.pasteAsPlainText);if(b(d,"paste_block_drop")){d.dom.bind(d.getBody(),["dragend","dragover","draggesture","dragdrop","drop","drag"],function(i){i.preventDefault();i.stopPropagation();return false})}});f._legacySupport()},getInfo:function(){return{longname:"Paste text/word",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_preProcess:function(g,e){var k=this.editor,j=e.content,p=tinymce.grep,n=tinymce.explode,f=tinymce.trim,l,i;function d(h){c(h,function(o){if(o.constructor==RegExp){j=j.replace(o,"")}else{j=j.replace(o[0],o[1])}})}if(k.settings.paste_enable_default_filters==false){return}if(tinymce.isIE&&document.documentMode>=9){d([[/(?:<br>&nbsp;[\s\r\n]+|<br>)*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:<br>&nbsp;[\s\r\n]+|<br>)*/g,"$1"]]);d([[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}if(/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(j)||e.wordContent){e.wordContent=true;d([/^\s*(&nbsp;)+/gi,/(&nbsp;|<br[^>]*>)+\s*$/gi]);if(b(k,"paste_convert_headers_to_strong")){j=j.replace(/<p [^>]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi,"<p><strong>$1</strong></p>")}if(b(k,"paste_convert_middot_lists")){d([[/<!--\[if !supportLists\]-->/gi,"$&__MCE_ITEM__"],[/(<span[^>]+(?:mso-list:|:\s*symbol)[^>]+>)/gi,"$1__MCE_ITEM__"],[/(<p[^>]+(?:MsoListParagraph)[^>]+>)/gi,"$1__MCE_ITEM__"]])}d([/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\u00a0"]]);do{l=j.length;j=j.replace(/(<[a-z][^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi,"$1")}while(l!=j.length);if(b(k,"paste_retain_style_properties").replace(/^none$/i,"").length==0){j=j.replace(/<\/?span[^>]*>/gi,"")}else{d([[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(o,h){return(h.length>0)?h.replace(/./," ").slice(Math.floor(h.length/2)).split("").join("\u00a0"):""}],[/(<[a-z][^>]*)\sstyle="([^"]*)"/gi,function(t,h,r){var u=[],o=0,q=n(f(r).replace(/&quot;/gi,"'"),";");c(q,function(s){var w,y,z=n(s,":");function x(A){return A+((A!=="0")&&(/\d$/.test(A)))?"px":""}if(z.length==2){w=z[0].toLowerCase();y=z[1].toLowerCase();switch(w){case"mso-padding-alt":case"mso-padding-top-alt":case"mso-padding-right-alt":case"mso-padding-bottom-alt":case"mso-padding-left-alt":case"mso-margin-alt":case"mso-margin-top-alt":case"mso-margin-right-alt":case"mso-margin-bottom-alt":case"mso-margin-left-alt":case"mso-table-layout-alt":case"mso-height":case"mso-width":case"mso-vertical-align-alt":u[o++]=w.replace(/^mso-|-alt$/g,"")+":"+x(y);return;case"horiz-align":u[o++]="text-align:"+y;return;case"vert-align":u[o++]="vertical-align:"+y;return;case"font-color":case"mso-foreground":u[o++]="color:"+y;return;case"mso-background":case"mso-highlight":u[o++]="background:"+y;return;case"mso-default-height":u[o++]="min-height:"+x(y);return;case"mso-default-width":u[o++]="min-width:"+x(y);return;case"mso-padding-between-alt":u[o++]="border-collapse:separate;border-spacing:"+x(y);return;case"text-line-through":if((y=="single")||(y=="double")){u[o++]="text-decoration:line-through"}return;case"mso-zero-height":if(y=="yes"){u[o++]="display:none"}return}if(/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(w)){return}u[o++]=w+":"+z[1]}});if(o>0){return h+' style="'+u.join(";")+'"'}else{return h}}]])}}if(b(k,"paste_convert_headers_to_strong")){d([[/<h[1-6][^>]*>/gi,"<p><strong>"],[/<\/h[1-6][^>]*>/gi,"</strong></p>"]])}d([[/Version:[\d.]+\nStartHTML:\d+\nEndHTML:\d+\nStartFragment:\d+\nEndFragment:\d+/gi,""]]);i=b(k,"paste_strip_class_attributes");if(i!=="none"){function m(q,o){if(i==="all"){return""}var h=p(n(o.replace(/^(["'])(.*)\1$/,"$2")," "),function(r){return(/^(?!mso)/i.test(r))});return h.length?' class="'+h.join(" ")+'"':""}j=j.replace(/ class="([^"]+)"/gi,m);j=j.replace(/ class=([\-\w]+)/gi,m)}if(b(k,"paste_remove_spans")){j=j.replace(/<\/?span[^>]*>/gi,"")}e.content=j},_postProcess:function(g,i){var f=this,e=f.editor,h=e.dom,d;if(e.settings.paste_enable_default_filters==false){return}if(i.wordContent){c(h.select("a",i.node),function(j){if(!j.href||j.href.indexOf("#_Toc")!=-1){h.remove(j,1)}});if(b(e,"paste_convert_middot_lists")){f._convertLists(g,i)}d=b(e,"paste_retain_style_properties");if((tinymce.is(d,"string"))&&(d!=="all")&&(d!=="*")){d=tinymce.explode(d.replace(/^none$/i,""));c(h.select("*",i.node),function(m){var n={},k=0,l,o,j;if(d){for(l=0;l<d.length;l++){o=d[l];j=h.getStyle(m,o);if(j){n[o]=j;k++}}}h.setAttrib(m,"style","");if(d&&k>0){h.setStyles(m,n)}else{if(m.nodeName=="SPAN"&&!m.className){h.remove(m,true)}}})}}if(b(e,"paste_remove_styles")||(b(e,"paste_remove_styles_if_webkit")&&tinymce.isWebKit)){c(h.select("*[style]",i.node),function(j){j.removeAttribute("style");j.removeAttribute("data-mce-style")})}else{if(tinymce.isWebKit){c(h.select("*",i.node),function(j){j.removeAttribute("data-mce-style")})}}},_convertLists:function(g,e){var i=g.editor.dom,h,l,d=-1,f,m=[],k,j;c(i.select("p",e.node),function(t){var q,u="",s,r,n,o;for(q=t.firstChild;q&&q.nodeType==3;q=q.nextSibling){u+=q.nodeValue}u=t.innerHTML.replace(/<\/?\w+[^>]*>/gi,"").replace(/&nbsp;/g,"\u00a0");if(/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*\u00a0*/.test(u)){s="ul"}if(/^__MCE_ITEM__\s*\w+\.\s*\u00a0+/.test(u)){s="ol"}if(s){f=parseFloat(t.style.marginLeft||0);if(f>d){m.push(f)}if(!h||s!=k){h=i.create(s);i.insertAfter(h,t)}else{if(f>d){h=l.appendChild(i.create(s))}else{if(f<d){n=tinymce.inArray(m,f);o=i.getParents(h.parentNode,s);h=o[o.length-1-n]||h}}}c(i.select("span",t),function(v){var p=v.innerHTML.replace(/<\/?\w+[^>]*>/gi,"");if(s=="ul"&&/^__MCE_ITEM__[\u2022\u00b7\u00a7\u00d8o\u25CF]/.test(p)){i.remove(v)}else{if(/^__MCE_ITEM__[\s\S]*\w+\.(&nbsp;|\u00a0)*\s*/.test(p)){i.remove(v)}}});r=t.innerHTML;if(s=="ul"){r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*(&nbsp;|\u00a0)+\s*/,"")}else{r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^\s*\w+\.(&nbsp;|\u00a0)+\s*/,"")}l=h.appendChild(i.create("li",0,r));i.remove(t);d=f;k=s}else{h=d=0}});j=e.node.innerHTML;if(j.indexOf("__MCE_ITEM__")!=-1){e.node.innerHTML=j.replace(/__MCE_ITEM__/g,"")}},_insert:function(f,d){var e=this.editor,g=e.selection.getRng();if(!e.selection.isCollapsed()&&g.startContainer!=g.endContainer){e.getDoc().execCommand("Delete",false,null)}e.execCommand("mceInsertContent",false,f,{skip_undo:d})},_insertPlainText:function(g){var d=this.editor,e=b(d,"paste_text_linebreaktype"),i=b(d,"paste_text_replacements"),f=tinymce.is;function h(j){c(j,function(k){if(k.constructor==RegExp){g=g.replace(k,"")}else{g=g.replace(k[0],k[1])}})}if((typeof(g)==="string")&&(g.length>0)){if(/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(g)){h([/[\n\r]+/g])}else{h([/\r+/g])}h([[/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi,"\n\n"],[/<br[^>]*>|<\/tr>/gi,"\n"],[/<\/t[dh]>\s*<t[dh][^>]*>/gi,"\t"],/<[a-z!\/?][^>]*>/gi,[/&nbsp;/gi," "],[/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi,"$1"],[/\n{3,}/g,"\n\n"]]);g=d.dom.decode(tinymce.html.Entities.encodeRaw(g));if(f(i,"array")){h(i)}else{if(f(i,"string")){h(new RegExp(i,"gi"))}}if(e=="none"){h([[/\n+/g," "]])}else{if(e=="br"){h([[/\n/g,"<br />"]])}else{if(e=="p"){h([[/\n+/g,"</p><p>"],[/^(.*<\/p>)(<p>)$/,"<p>$1"]])}else{h([[/\n\n/g,"</p><p>"],[/^(.*<\/p>)(<p>)$/,"<p>$1"],[/\n/g,"<br />"]])}}}d.execCommand("mceInsertContent",false,g)}},_legacySupport:function(){var e=this,d=e.editor;d.addCommand("mcePasteWord",function(){d.windowManager.open({file:e.url+"/pasteword.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})});if(b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(){d.windowManager.open({file:e.url+"/pastetext.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})})}d.addButton("pasteword",{title:"paste.paste_word_desc",cmd:"mcePasteWord"})}});tinymce.PluginManager.add("paste",tinymce.plugins.PastePlugin)})();
\ No newline at end of file
diff --git a/wp-includes/js/tinymce/plugins/paste/editor_plugin_src.js b/wp-includes/js/tinymce/plugins/paste/editor_plugin_src.js
new file mode 100644 (file)
index 0000000..cec4abf
--- /dev/null
@@ -0,0 +1,871 @@
+/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+       var each = tinymce.each,
+               defs = {
+                       paste_auto_cleanup_on_paste : true,
+                       paste_enable_default_filters : true,
+                       paste_block_drop : false,
+                       paste_retain_style_properties : "none",
+                       paste_strip_class_attributes : "mso",
+                       paste_remove_spans : false,
+                       paste_remove_styles : false,
+                       paste_remove_styles_if_webkit : true,
+                       paste_convert_middot_lists : true,
+                       paste_convert_headers_to_strong : false,
+                       paste_dialog_width : "450",
+                       paste_dialog_height : "400",
+                       paste_text_use_dialog : false,
+                       paste_text_sticky : false,
+                       paste_text_sticky_default : false,
+                       paste_text_notifyalways : false,
+                       paste_text_linebreaktype : "combined",
+                       paste_text_replacements : [
+                               [/\u2026/g, "..."],
+                               [/[\x93\x94\u201c\u201d]/g, '"'],
+                               [/[\x60\x91\x92\u2018\u2019]/g, "'"]
+                       ]
+               };
+
+       function getParam(ed, name) {
+               return ed.getParam(name, defs[name]);
+       }
+
+       tinymce.create('tinymce.plugins.PastePlugin', {
+               init : function(ed, url) {
+                       var t = this;
+
+                       t.editor = ed;
+                       t.url = url;
+
+                       // Setup plugin events
+                       t.onPreProcess = new tinymce.util.Dispatcher(t);
+                       t.onPostProcess = new tinymce.util.Dispatcher(t);
+
+                       // Register default handlers
+                       t.onPreProcess.add(t._preProcess);
+                       t.onPostProcess.add(t._postProcess);
+
+                       // Register optional preprocess handler
+                       t.onPreProcess.add(function(pl, o) {
+                               ed.execCallback('paste_preprocess', pl, o);
+                       });
+
+                       // Register optional postprocess
+                       t.onPostProcess.add(function(pl, o) {
+                               ed.execCallback('paste_postprocess', pl, o);
+                       });
+
+                       ed.onKeyDown.addToTop(function(ed, e) {
+                               // Block ctrl+v from adding an undo level since the default logic in tinymce.Editor will add that
+                               if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45))
+                                       return false; // Stop other listeners
+                       });
+
+                       // Initialize plain text flag
+                       ed.pasteAsPlainText = getParam(ed, 'paste_text_sticky_default');
+
+                       // This function executes the process handlers and inserts the contents
+                       // force_rich overrides plain text mode set by user, important for pasting with execCommand
+                       function process(o, force_rich) {
+                               var dom = ed.dom, rng;
+
+                               // Execute pre process handlers
+                               t.onPreProcess.dispatch(t, o);
+
+                               // Create DOM structure
+                               o.node = dom.create('div', 0, o.content);
+
+                               // If pasting inside the same element and the contents is only one block
+                               // remove the block and keep the text since Firefox will copy parts of pre and h1-h6 as a pre element
+                               if (tinymce.isGecko) {
+                                       rng = ed.selection.getRng(true);
+                                       if (rng.startContainer == rng.endContainer && rng.startContainer.nodeType == 3) {
+                                               // Is only one block node and it doesn't contain word stuff
+                                               if (o.node.childNodes.length === 1 && /^(p|h[1-6]|pre)$/i.test(o.node.firstChild.nodeName) && o.content.indexOf('__MCE_ITEM__') === -1)
+                                                       dom.remove(o.node.firstChild, true);
+                                       }
+                               }
+
+                               // Execute post process handlers
+                               t.onPostProcess.dispatch(t, o);
+
+                               // Serialize content
+                               o.content = ed.serializer.serialize(o.node, {getInner : 1, forced_root_block : ''});
+
+                               // Plain text option active?
+                               if ((!force_rich) && (ed.pasteAsPlainText)) {
+                                       t._insertPlainText(o.content);
+
+                                       if (!getParam(ed, "paste_text_sticky")) {
+                                               ed.pasteAsPlainText = false;
+                                               ed.controlManager.setActive("pastetext", false);
+                                       }
+                               } else {
+                                       t._insert(o.content);
+                               }
+                       }
+
+                       // Add command for external usage
+                       ed.addCommand('mceInsertClipboardContent', function(u, o) {
+                               process(o, true);
+                       });
+
+                       if (!getParam(ed, "paste_text_use_dialog")) {
+                               ed.addCommand('mcePasteText', function(u, v) {
+                                       var cookie = tinymce.util.Cookie;
+
+                                       ed.pasteAsPlainText = !ed.pasteAsPlainText;
+                                       ed.controlManager.setActive('pastetext', ed.pasteAsPlainText);
+
+                                       if ((ed.pasteAsPlainText) && (!cookie.get("tinymcePasteText"))) {
+                                               if (getParam(ed, "paste_text_sticky")) {
+                                                       ed.windowManager.alert(ed.translate('paste.plaintext_mode_sticky'));
+                                               } else {
+                                                       ed.windowManager.alert(ed.translate('paste.plaintext_mode'));
+                                               }
+
+                                               if (!getParam(ed, "paste_text_notifyalways")) {
+                                                       cookie.set("tinymcePasteText", "1", new Date(new Date().getFullYear() + 1, 12, 31))
+                                               }
+                                       }
+                               });
+                       }
+
+                       ed.addButton('pastetext', {title: 'paste.paste_text_desc', cmd: 'mcePasteText'});
+                       ed.addButton('selectall', {title: 'paste.selectall_desc', cmd: 'selectall'});
+
+                       // This function grabs the contents from the clipboard by adding a
+                       // hidden div and placing the caret inside it and after the browser paste
+                       // is done it grabs that contents and processes that
+                       function grabContent(e) {
+                               var n, or, rng, oldRng, sel = ed.selection, dom = ed.dom, body = ed.getBody(), posY, textContent;
+
+                               // Check if browser supports direct plaintext access
+                               if (e.clipboardData || dom.doc.dataTransfer) {
+                                       textContent = (e.clipboardData || dom.doc.dataTransfer).getData('Text');
+
+                                       if (ed.pasteAsPlainText) {
+                                               e.preventDefault();
+                                               process({content : dom.encode(textContent).replace(/\r?\n/g, '<br />')});
+                                               return;
+                                       }
+                               }
+
+                               if (dom.get('_mcePaste'))
+                                       return;
+
+                               // Create container to paste into
+                               n = dom.add(body, 'div', {id : '_mcePaste', 'class' : 'mcePaste', 'data-mce-bogus' : '1'}, '\uFEFF\uFEFF');
+
+                               // If contentEditable mode we need to find out the position of the closest element
+                               if (body != ed.getDoc().body)
+                                       posY = dom.getPos(ed.selection.getStart(), body).y;
+                               else
+                                       posY = body.scrollTop + dom.getViewPort(ed.getWin()).y;
+
+                               // Styles needs to be applied after the element is added to the document since WebKit will otherwise remove all styles
+                               // If also needs to be in view on IE or the paste would fail
+                               dom.setStyles(n, {
+                                       position : 'absolute',
+                                       left : tinymce.isGecko ? -40 : 0, // Need to move it out of site on Gecko since it will othewise display a ghost resize rect for the div
+                                       top : posY - 25,
+                                       width : 1,
+                                       height : 1,
+                                       overflow : 'hidden'
+                               });
+
+                               if (tinymce.isIE) {
+                                       // Store away the old range
+                                       oldRng = sel.getRng();
+
+                                       // Select the container
+                                       rng = dom.doc.body.createTextRange();
+                                       rng.moveToElementText(n);
+                                       rng.execCommand('Paste');
+
+                                       // Remove container
+                                       dom.remove(n);
+
+                                       // Check if the contents was changed, if it wasn't then clipboard extraction failed probably due
+                                       // to IE security settings so we pass the junk though better than nothing right
+                                       if (n.innerHTML === '\uFEFF\uFEFF') {
+                                               ed.execCommand('mcePasteWord');
+                                               e.preventDefault();
+                                               return;
+                                       }
+
+                                       // Restore the old range and clear the contents before pasting
+                                       sel.setRng(oldRng);
+                                       sel.setContent('');
+
+                                       // For some odd reason we need to detach the the mceInsertContent call from the paste event
+                                       // It's like IE has a reference to the parent element that you paste in and the selection gets messed up
+                                       // when it tries to restore the selection
+                                       setTimeout(function() {
+                                               // Process contents
+                                               process({content : n.innerHTML});
+                                       }, 0);
+
+                                       // Block the real paste event
+                                       return tinymce.dom.Event.cancel(e);
+                               } else {
+                                       function block(e) {
+                                               e.preventDefault();
+                                       };
+
+                                       // Block mousedown and click to prevent selection change
+                                       dom.bind(ed.getDoc(), 'mousedown', block);
+                                       dom.bind(ed.getDoc(), 'keydown', block);
+
+                                       or = ed.selection.getRng();
+
+                                       // Move select contents inside DIV
+                                       n = n.firstChild;
+                                       rng = ed.getDoc().createRange();
+                                       rng.setStart(n, 0);
+                                       rng.setEnd(n, 2);
+                                       sel.setRng(rng);
+
+                                       // Wait a while and grab the pasted contents
+                                       window.setTimeout(function() {
+                                               var h = '', nl;
+
+                                               // Paste divs duplicated in paste divs seems to happen when you paste plain text so lets first look for that broken behavior in WebKit
+                                               if (!dom.select('div.mcePaste > div.mcePaste').length) {
+                                                       nl = dom.select('div.mcePaste');
+
+                                                       // WebKit will split the div into multiple ones so this will loop through then all and join them to get the whole HTML string
+                                                       each(nl, function(n) {
+                                                               var child = n.firstChild;
+
+                                                               // WebKit inserts a DIV container with lots of odd styles
+                                                               if (child && child.nodeName == 'DIV' && child.style.marginTop && child.style.backgroundColor) {
+                                                                       dom.remove(child, 1);
+                                                               }
+
+                                                               // Remove apply style spans
+                                                               each(dom.select('span.Apple-style-span', n), function(n) {
+                                                                       dom.remove(n, 1);
+                                                               });
+
+                                                               // Remove bogus br elements
+                                                               each(dom.select('br[data-mce-bogus]', n), function(n) {
+                                                                       dom.remove(n);
+                                                               });
+
+                                                               // WebKit will make a copy of the DIV for each line of plain text pasted and insert them into the DIV
+                                                               if (n.parentNode.className != 'mcePaste')
+                                                                       h += n.innerHTML;
+                                                       });
+                                               } else {
+                                                       // Found WebKit weirdness so force the content into paragraphs this seems to happen when you paste plain text from Nodepad etc
+                                                       // So this logic will replace double enter with paragraphs and single enter with br so it kind of looks the same
+                                                       h = '<p>' + dom.encode(textContent).replace(/\r?\n\r?\n/g, '</p><p>').replace(/\r?\n/g, '<br />') + '</p>';
+                                               }
+
+                                               // Remove the nodes
+                                               each(dom.select('div.mcePaste'), function(n) {
+                                                       dom.remove(n);
+                                               });
+
+                                               // Restore the old selection
+                                               if (or)
+                                                       sel.setRng(or);
+
+                                               process({content : h});
+
+                                               // Unblock events ones we got the contents
+                                               dom.unbind(ed.getDoc(), 'mousedown', block);
+                                               dom.unbind(ed.getDoc(), 'keydown', block);
+                                       }, 0);
+                               }
+                       }
+
+                       // Check if we should use the new auto process method                   
+                       if (getParam(ed, "paste_auto_cleanup_on_paste")) {
+                               // Is it's Opera or older FF use key handler
+                               if (tinymce.isOpera || /Firefox\/2/.test(navigator.userAgent)) {
+                                       ed.onKeyDown.addToTop(function(ed, e) {
+                                               if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45))
+                                                       grabContent(e);
+                                       });
+                               } else {
+                                       // Grab contents on paste event on Gecko and WebKit
+                                       ed.onPaste.addToTop(function(ed, e) {
+                                               return grabContent(e);
+                                       });
+                               }
+                       }
+
+                       ed.onInit.add(function() {
+                               ed.controlManager.setActive("pastetext", ed.pasteAsPlainText);
+
+                               // Block all drag/drop events
+                               if (getParam(ed, "paste_block_drop")) {
+                                       ed.dom.bind(ed.getBody(), ['dragend', 'dragover', 'draggesture', 'dragdrop', 'drop', 'drag'], function(e) {
+                                               e.preventDefault();
+                                               e.stopPropagation();
+
+                                               return false;
+                                       });
+                               }
+                       });
+
+                       // Add legacy support
+                       t._legacySupport();
+               },
+
+               getInfo : function() {
+                       return {
+                               longname : 'Paste text/word',
+                               author : 'Moxiecode Systems AB',
+                               authorurl : 'http://tinymce.moxiecode.com',
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste',
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion
+                       };
+               },
+
+               _preProcess : function(pl, o) {
+                       var ed = this.editor,
+                               h = o.content,
+                               grep = tinymce.grep,
+                               explode = tinymce.explode,
+                               trim = tinymce.trim,
+                               len, stripClass;
+
+                       //console.log('Before preprocess:' + o.content);
+
+                       function process(items) {
+                               each(items, function(v) {
+                                       // Remove or replace
+                                       if (v.constructor == RegExp)
+                                               h = h.replace(v, '');
+                                       else
+                                               h = h.replace(v[0], v[1]);
+                               });
+                       }
+                       
+                       if (ed.settings.paste_enable_default_filters == false) {
+                               return;
+                       }
+
+                       // IE9 adds BRs before/after block elements when contents is pasted from word or for example another browser
+                       if (tinymce.isIE && document.documentMode >= 9) {
+                               // IE9 adds BRs before/after block elements when contents is pasted from word or for example another browser
+                               process([[/(?:<br>&nbsp;[\s\r\n]+|<br>)*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:<br>&nbsp;[\s\r\n]+|<br>)*/g, '$1']]);
+
+                               // IE9 also adds an extra BR element for each soft-linefeed and it also adds a BR for each word wrap break
+                               process([
+                                       [/<br><br>/g, '<BR><BR>'], // Replace multiple BR elements with uppercase BR to keep them intact
+                                       [/<br>/g, ' '], // Replace single br elements with space since they are word wrap BR:s
+                                       [/<BR><BR>/g, '<br>'] // Replace back the double brs but into a single BR
+                               ]);
+                       }
+
+                       // Detect Word content and process it more aggressive
+                       if (/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(h) || o.wordContent) {
+                               o.wordContent = true;                   // Mark the pasted contents as word specific content
+                               //console.log('Word contents detected.');
+
+                               // Process away some basic content
+                               process([
+                                       /^\s*(&nbsp;)+/gi,                              // &nbsp; entities at the start of contents
+                                       /(&nbsp;|<br[^>]*>)+\s*$/gi             // &nbsp; entities at the end of contents
+                               ]);
+
+                               if (getParam(ed, "paste_convert_headers_to_strong")) {
+                                       h = h.replace(/<p [^>]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi, "<p><strong>$1</strong></p>");
+                               }
+
+                               if (getParam(ed, "paste_convert_middot_lists")) {
+                                       process([
+                                               [/<!--\[if !supportLists\]-->/gi, '$&__MCE_ITEM__'],                                    // Convert supportLists to a list item marker
+                                               [/(<span[^>]+(?:mso-list:|:\s*symbol)[^>]+>)/gi, '$1__MCE_ITEM__'],             // Convert mso-list and symbol spans to item markers
+                                               [/(<p[^>]+(?:MsoListParagraph)[^>]+>)/gi, '$1__MCE_ITEM__']                             // Convert mso-list and symbol paragraphs to item markers (FF)
+                                       ]);
+                               }
+
+                               process([
+                                       // Word comments like conditional comments etc
+                                       /<!--[\s\S]+?-->/gi,
+
+                                       // Remove comments, scripts (e.g., msoShowComment), XML tag, VML content, MS Office namespaced tags, and a few other tags
+                                       /<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,
+
+                                       // Convert <s> into <strike> for line-though
+                                       [/<(\/?)s>/gi, "<$1strike>"],
+
+                                       // Replace nsbp entites to char since it's easier to handle
+                                       [/&nbsp;/gi, "\u00a0"]
+                               ]);
+
+                               // Remove bad attributes, with or without quotes, ensuring that attribute text is really inside a tag.
+                               // If JavaScript had a RegExp look-behind, we could have integrated this with the last process() array and got rid of the loop. But alas, it does not, so we cannot.
+                               do {
+                                       len = h.length;
+                                       h = h.replace(/(<[a-z][^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi, "$1");
+                               } while (len != h.length);
+
+                               // Remove all spans if no styles is to be retained
+                               if (getParam(ed, "paste_retain_style_properties").replace(/^none$/i, "").length == 0) {
+                                       h = h.replace(/<\/?span[^>]*>/gi, "");
+                               } else {
+                                       // We're keeping styles, so at least clean them up.
+                                       // CSS Reference: http://msdn.microsoft.com/en-us/library/aa155477.aspx
+
+                                       process([
+                                               // Convert <span style="mso-spacerun:yes">___</span> to string of alternating breaking/non-breaking spaces of same length
+                                               [/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,
+                                                       function(str, spaces) {
+                                                               return (spaces.length > 0)? spaces.replace(/./, " ").slice(Math.floor(spaces.length/2)).split("").join("\u00a0") : "";
+                                                       }
+                                               ],
+
+                                               // Examine all styles: delete junk, transform some, and keep the rest
+                                               [/(<[a-z][^>]*)\sstyle="([^"]*)"/gi,
+                                                       function(str, tag, style) {
+                                                               var n = [],
+                                                                       i = 0,
+                                                                       s = explode(trim(style).replace(/&quot;/gi, "'"), ";");
+
+                                                               // Examine each style definition within the tag's style attribute
+                                                               each(s, function(v) {
+                                                                       var name, value,
+                                                                               parts = explode(v, ":");
+
+                                                                       function ensureUnits(v) {
+                                                                               return v + ((v !== "0") && (/\d$/.test(v)))? "px" : "";
+                                                                       }
+
+                                                                       if (parts.length == 2) {
+                                                                               name = parts[0].toLowerCase();
+                                                                               value = parts[1].toLowerCase();
+
+                                                                               // Translate certain MS Office styles into their CSS equivalents
+                                                                               switch (name) {
+                                                                                       case "mso-padding-alt":
+                                                                                       case "mso-padding-top-alt":
+                                                                                       case "mso-padding-right-alt":
+                                                                                       case "mso-padding-bottom-alt":
+                                                                                       case "mso-padding-left-alt":
+                                                                                       case "mso-margin-alt":
+                                                                                       case "mso-margin-top-alt":
+                                                                                       case "mso-margin-right-alt":
+                                                                                       case "mso-margin-bottom-alt":
+                                                                                       case "mso-margin-left-alt":
+                                                                                       case "mso-table-layout-alt":
+                                                                                       case "mso-height":
+                                                                                       case "mso-width":
+                                                                                       case "mso-vertical-align-alt":
+                                                                                               n[i++] = name.replace(/^mso-|-alt$/g, "") + ":" + ensureUnits(value);
+                                                                                               return;
+
+                                                                                       case "horiz-align":
+                                                                                               n[i++] = "text-align:" + value;
+                                                                                               return;
+
+                                                                                       case "vert-align":
+                                                                                               n[i++] = "vertical-align:" + value;
+                                                                                               return;
+
+                                                                                       case "font-color":
+                                                                                       case "mso-foreground":
+                                                                                               n[i++] = "color:" + value;
+                                                                                               return;
+
+                                                                                       case "mso-background":
+                                                                                       case "mso-highlight":
+                                                                                               n[i++] = "background:" + value;
+                                                                                               return;
+
+                                                                                       case "mso-default-height":
+                                                                                               n[i++] = "min-height:" + ensureUnits(value);
+                                                                                               return;
+
+                                                                                       case "mso-default-width":
+                                                                                               n[i++] = "min-width:" + ensureUnits(value);
+                                                                                               return;
+
+                                                                                       case "mso-padding-between-alt":
+                                                                                               n[i++] = "border-collapse:separate;border-spacing:" + ensureUnits(value);
+                                                                                               return;
+
+                                                                                       case "text-line-through":
+                                                                                               if ((value == "single") || (value == "double")) {
+                                                                                                       n[i++] = "text-decoration:line-through";
+                                                                                               }
+                                                                                               return;
+
+                                                                                       case "mso-zero-height":
+                                                                                               if (value == "yes") {
+                                                                                                       n[i++] = "display:none";
+                                                                                               }
+                                                                                               return;
+                                                                               }
+
+                                                                               // Eliminate all MS Office style definitions that have no CSS equivalent by examining the first characters in the name
+                                                                               if (/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(name)) {
+                                                                                       return;
+                                                                               }
+
+                                                                               // If it reached this point, it must be a valid CSS style
+                                                                               n[i++] = name + ":" + parts[1];         // Lower-case name, but keep value case
+                                                                       }
+                                                               });
+
+                                                               // If style attribute contained any valid styles the re-write it; otherwise delete style attribute.
+                                                               if (i > 0) {
+                                                                       return tag + ' style="' + n.join(';') + '"';
+                                                               } else {
+                                                                       return tag;
+                                                               }
+                                                       }
+                                               ]
+                                       ]);
+                               }
+                       }
+
+                       // Replace headers with <strong>
+                       if (getParam(ed, "paste_convert_headers_to_strong")) {
+                               process([
+                                       [/<h[1-6][^>]*>/gi, "<p><strong>"],
+                                       [/<\/h[1-6][^>]*>/gi, "</strong></p>"]
+                               ]);
+                       }
+
+                       process([
+                               // Copy paste from Java like Open Office will produce this junk on FF
+                               [/Version:[\d.]+\nStartHTML:\d+\nEndHTML:\d+\nStartFragment:\d+\nEndFragment:\d+/gi, '']
+                       ]);
+
+                       // Class attribute options are: leave all as-is ("none"), remove all ("all"), or remove only those starting with mso ("mso").
+                       // Note:-  paste_strip_class_attributes: "none", verify_css_classes: true is also a good variation.
+                       stripClass = getParam(ed, "paste_strip_class_attributes");
+
+                       if (stripClass !== "none") {
+                               function removeClasses(match, g1) {
+                                               if (stripClass === "all")
+                                                       return '';
+
+                                               var cls = grep(explode(g1.replace(/^(["'])(.*)\1$/, "$2"), " "),
+                                                       function(v) {
+                                                               return (/^(?!mso)/i.test(v));
+                                                       }
+                                               );
+
+                                               return cls.length ? ' class="' + cls.join(" ") + '"' : '';
+                               };
+
+                               h = h.replace(/ class="([^"]+)"/gi, removeClasses);
+                               h = h.replace(/ class=([\-\w]+)/gi, removeClasses);
+                       }
+
+                       // Remove spans option
+                       if (getParam(ed, "paste_remove_spans")) {
+                               h = h.replace(/<\/?span[^>]*>/gi, "");
+                       }
+
+                       //console.log('After preprocess:' + h);
+
+                       o.content = h;
+               },
+
+               /**
+                * Various post process items.
+                */
+               _postProcess : function(pl, o) {
+                       var t = this, ed = t.editor, dom = ed.dom, styleProps;
+
+                       if (ed.settings.paste_enable_default_filters == false) {
+                               return;
+                       }
+                       
+                       if (o.wordContent) {
+                               // Remove named anchors or TOC links
+                               each(dom.select('a', o.node), function(a) {
+                                       if (!a.href || a.href.indexOf('#_Toc') != -1)
+                                               dom.remove(a, 1);
+                               });
+
+                               if (getParam(ed, "paste_convert_middot_lists")) {
+                                       t._convertLists(pl, o);
+                               }
+
+                               // Process styles
+                               styleProps = getParam(ed, "paste_retain_style_properties"); // retained properties
+
+                               // Process only if a string was specified and not equal to "all" or "*"
+                               if ((tinymce.is(styleProps, "string")) && (styleProps !== "all") && (styleProps !== "*")) {
+                                       styleProps = tinymce.explode(styleProps.replace(/^none$/i, ""));
+
+                                       // Retains some style properties
+                                       each(dom.select('*', o.node), function(el) {
+                                               var newStyle = {}, npc = 0, i, sp, sv;
+
+                                               // Store a subset of the existing styles
+                                               if (styleProps) {
+                                                       for (i = 0; i < styleProps.length; i++) {
+                                                               sp = styleProps[i];
+                                                               sv = dom.getStyle(el, sp);
+
+                                                               if (sv) {
+                                                                       newStyle[sp] = sv;
+                                                                       npc++;
+                                                               }
+                                                       }
+                                               }
+
+                                               // Remove all of the existing styles
+                                               dom.setAttrib(el, 'style', '');
+
+                                               if (styleProps && npc > 0)
+                                                       dom.setStyles(el, newStyle); // Add back the stored subset of styles
+                                               else // Remove empty span tags that do not have class attributes
+                                                       if (el.nodeName == 'SPAN' && !el.className)
+                                                               dom.remove(el, true);
+                                       });
+                               }
+                       }
+
+                       // Remove all style information or only specifically on WebKit to avoid the style bug on that browser
+                       if (getParam(ed, "paste_remove_styles") || (getParam(ed, "paste_remove_styles_if_webkit") && tinymce.isWebKit)) {
+                               each(dom.select('*[style]', o.node), function(el) {
+                                       el.removeAttribute('style');
+                                       el.removeAttribute('data-mce-style');
+                               });
+                       } else {
+                               if (tinymce.isWebKit) {
+                                       // We need to compress the styles on WebKit since if you paste <img border="0" /> it will become <img border="0" style="... lots of junk ..." />
+                                       // Removing the mce_style that contains the real value will force the Serializer engine to compress the styles
+                                       each(dom.select('*', o.node), function(el) {
+                                               el.removeAttribute('data-mce-style');
+                                       });
+                               }
+                       }
+               },
+
+               /**
+                * Converts the most common bullet and number formats in Office into a real semantic UL/LI list.
+                */
+               _convertLists : function(pl, o) {
+                       var dom = pl.editor.dom, listElm, li, lastMargin = -1, margin, levels = [], lastType, html;
+
+                       // Convert middot lists into real semantic lists
+                       each(dom.select('p', o.node), function(p) {
+                               var sib, val = '', type, html, idx, parents;
+
+                               // Get text node value at beginning of paragraph
+                               for (sib = p.firstChild; sib && sib.nodeType == 3; sib = sib.nextSibling)
+                                       val += sib.nodeValue;
+
+                               val = p.innerHTML.replace(/<\/?\w+[^>]*>/gi, '').replace(/&nbsp;/g, '\u00a0');
+
+                               // Detect unordered lists look for bullets
+                               if (/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*\u00a0*/.test(val))
+                                       type = 'ul';
+
+                               // Detect ordered lists 1., a. or ixv.
+                               if (/^__MCE_ITEM__\s*\w+\.\s*\u00a0+/.test(val))
+                                       type = 'ol';
+
+                               // Check if node value matches the list pattern: o&nbsp;&nbsp;
+                               if (type) {
+                                       margin = parseFloat(p.style.marginLeft || 0);
+
+                                       if (margin > lastMargin)
+                                               levels.push(margin);
+
+                                       if (!listElm || type != lastType) {
+                                               listElm = dom.create(type);
+                                               dom.insertAfter(listElm, p);
+                                       } else {
+                                               // Nested list element
+                                               if (margin > lastMargin) {
+                                                       listElm = li.appendChild(dom.create(type));
+                                               } else if (margin < lastMargin) {
+                                                       // Find parent level based on margin value
+                                                       idx = tinymce.inArray(levels, margin);
+                                                       parents = dom.getParents(listElm.parentNode, type);
+                                                       listElm = parents[parents.length - 1 - idx] || listElm;
+                                               }
+                                       }
+
+                                       // Remove middot or number spans if they exists
+                                       each(dom.select('span', p), function(span) {
+                                               var html = span.innerHTML.replace(/<\/?\w+[^>]*>/gi, '');
+
+                                               // Remove span with the middot or the number
+                                               if (type == 'ul' && /^__MCE_ITEM__[\u2022\u00b7\u00a7\u00d8o\u25CF]/.test(html))
+                                                       dom.remove(span);
+                                               else if (/^__MCE_ITEM__[\s\S]*\w+\.(&nbsp;|\u00a0)*\s*/.test(html))
+                                                       dom.remove(span);
+                                       });
+
+                                       html = p.innerHTML;
+
+                                       // Remove middot/list items
+                                       if (type == 'ul')
+                                               html = p.innerHTML.replace(/__MCE_ITEM__/g, '').replace(/^[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*(&nbsp;|\u00a0)+\s*/, '');
+                                       else
+                                               html = p.innerHTML.replace(/__MCE_ITEM__/g, '').replace(/^\s*\w+\.(&nbsp;|\u00a0)+\s*/, '');
+
+                                       // Create li and add paragraph data into the new li
+                                       li = listElm.appendChild(dom.create('li', 0, html));
+                                       dom.remove(p);
+
+                                       lastMargin = margin;
+                                       lastType = type;
+                               } else
+                                       listElm = lastMargin = 0; // End list element
+                       });
+
+                       // Remove any left over makers
+                       html = o.node.innerHTML;
+                       if (html.indexOf('__MCE_ITEM__') != -1)
+                               o.node.innerHTML = html.replace(/__MCE_ITEM__/g, '');
+               },
+
+               /**
+                * Inserts the specified contents at the caret position.
+                */
+               _insert : function(h, skip_undo) {
+                       var ed = this.editor, r = ed.selection.getRng();
+
+                       // First delete the contents seems to work better on WebKit when the selection spans multiple list items or multiple table cells.
+                       if (!ed.selection.isCollapsed() && r.startContainer != r.endContainer)
+                               ed.getDoc().execCommand('Delete', false, null);
+
+                       ed.execCommand('mceInsertContent', false, h, {skip_undo : skip_undo});
+               },
+
+               /**
+                * Instead of the old plain text method which tried to re-create a paste operation, the
+                * new approach adds a plain text mode toggle switch that changes the behavior of paste.
+                * This function is passed the same input that the regular paste plugin produces.
+                * It performs additional scrubbing and produces (and inserts) the plain text.
+                * This approach leverages all of the great existing functionality in the paste
+                * plugin, and requires minimal changes to add the new functionality.
+                * Speednet - June 2009
+                */
+               _insertPlainText : function(content) {
+                       var ed = this.editor,
+                               linebr = getParam(ed, "paste_text_linebreaktype"),
+                               rl = getParam(ed, "paste_text_replacements"),
+                               is = tinymce.is;
+
+                       function process(items) {
+                               each(items, function(v) {
+                                       if (v.constructor == RegExp)
+                                               content = content.replace(v, "");
+                                       else
+                                               content = content.replace(v[0], v[1]);
+                               });
+                       };
+
+                       if ((typeof(content) === "string") && (content.length > 0)) {
+                               // If HTML content with line-breaking tags, then remove all cr/lf chars because only tags will break a line
+                               if (/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(content)) {
+                                       process([
+                                               /[\n\r]+/g
+                                       ]);
+                               } else {
+                                       // Otherwise just get rid of carriage returns (only need linefeeds)
+                                       process([
+                                               /\r+/g
+                                       ]);
+                               }
+
+                               process([
+                                       [/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi, "\n\n"],               // Block tags get a blank line after them
+                                       [/<br[^>]*>|<\/tr>/gi, "\n"],                           // Single linebreak for <br /> tags and table rows
+                                       [/<\/t[dh]>\s*<t[dh][^>]*>/gi, "\t"],           // Table cells get tabs betweem them
+                                       /<[a-z!\/?][^>]*>/gi,                                           // Delete all remaining tags
+                                       [/&nbsp;/gi, " "],                                                      // Convert non-break spaces to regular spaces (remember, *plain text*)
+                                       [/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi, "$1"],// Cool little RegExp deletes whitespace around linebreak chars.
+                                       [/\n{3,}/g, "\n\n"]                                                     // Max. 2 consecutive linebreaks
+                               ]);
+
+                               content = ed.dom.decode(tinymce.html.Entities.encodeRaw(content));
+
+                               // Perform default or custom replacements
+                               if (is(rl, "array")) {
+                                       process(rl);
+                               } else if (is(rl, "string")) {
+                                       process(new RegExp(rl, "gi"));
+                               }
+
+                               // Treat paragraphs as specified in the config
+                               if (linebr == "none") {
+                                       // Convert all line breaks to space
+                                       process([
+                                               [/\n+/g, " "]
+                                       ]);
+                               } else if (linebr == "br") {
+                                       // Convert all line breaks to <br />
+                                       process([
+                                               [/\n/g, "<br />"]
+                                       ]);
+                               } else if (linebr == "p") {
+                                       // Convert all line breaks to <p>...</p>
+                                       process([
+                                               [/\n+/g, "</p><p>"],
+                                               [/^(.*<\/p>)(<p>)$/, '<p>$1']
+                                       ]);
+                               } else {
+                                       // defaults to "combined"
+                                       // Convert single line breaks to <br /> and double line breaks to <p>...</p>
+                                       process([
+                                               [/\n\n/g, "</p><p>"],
+                                               [/^(.*<\/p>)(<p>)$/, '<p>$1'],
+                                               [/\n/g, "<br />"]
+                                       ]);
+                               }
+
+                               ed.execCommand('mceInsertContent', false, content);
+                       }
+               },
+
+               /**
+                * This method will open the old style paste dialogs. Some users might want the old behavior but still use the new cleanup engine.
+                */
+               _legacySupport : function() {
+                       var t = this, ed = t.editor;
+
+                       // Register command(s) for backwards compatibility
+                       ed.addCommand("mcePasteWord", function() {
+                               ed.windowManager.open({
+                                       file: t.url + "/pasteword.htm",
+                                       width: parseInt(getParam(ed, "paste_dialog_width")),
+                                       height: parseInt(getParam(ed, "paste_dialog_height")),
+                                       inline: 1
+                               });
+                       });
+
+                       if (getParam(ed, "paste_text_use_dialog")) {
+                               ed.addCommand("mcePasteText", function() {
+                                       ed.windowManager.open({
+                                               file : t.url + "/pastetext.htm",
+                                               width: parseInt(getParam(ed, "paste_dialog_width")),
+                                               height: parseInt(getParam(ed, "paste_dialog_height")),
+                                               inline : 1
+                                       });
+                               });
+                       }
+
+                       // Register button for backwards compatibility
+                       ed.addButton("pasteword", {title : "paste.paste_word_desc", cmd : "mcePasteWord"});
+               }
+       });
+
+       // Register plugin
+       tinymce.PluginManager.add("paste", tinymce.plugins.PastePlugin);
+})();
index dcf1a4b401fbcffa558aeefaa4295226ec6222a9..eb352ef371d4d4207fc7d3be9ef43cfc65674c0c 100644 (file)
@@ -1,8 +1,8 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#paste.paste_text_desc}</title>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#paste.paste_text_desc}</title>
-       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=345-20110908"></script>
-       <script type="text/javascript" src="js/pastetext.js?ver=345-20110908"></script>
+       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="js/pastetext.js?ver=349-20120314"></script>
 </head>
 <body onresize="PasteTextDialog.resize();" style="display:none; overflow:hidden;">
        <form name="source" onsubmit="return PasteTextDialog.insert();" action="#">
 </head>
 <body onresize="PasteTextDialog.resize();" style="display:none; overflow:hidden;">
        <form name="source" onsubmit="return PasteTextDialog.insert();" action="#">
index 31583e3f4b6d044dd9f05c5be1537f67f27a7ac3..ee9b9e8feca78f8a4bb0d90369eefd29e1dee642 100644 (file)
@@ -1,8 +1,8 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#paste.paste_word_desc}</title>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#paste.paste_word_desc}</title>
-       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=345-20110908"></script>
-       <script type="text/javascript" src="js/pasteword.js?ver=345-20110908"></script>
+       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="js/pasteword.js?ver=349-20120314"></script>
 </head>
 <body onresize="PasteWordDialog.resize();" style="display:none; overflow:hidden;">
        <form name="source" onsubmit="return PasteWordDialog.insert();" action="#">
 </head>
 <body onresize="PasteWordDialog.resize();" style="display:none; overflow:hidden;">
        <form name="source" onsubmit="return PasteWordDialog.insert();" action="#">
index f7cadd6e7f4811f56023bf8660b3f482a504848c..71fbb68a644154a18bd6cd0fc3099e751f6cf42f 100644 (file)
@@ -1 +1 @@
-(function(){var a=tinymce.util.JSONRequest,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.SpellcheckerPlugin",{getInfo:function(){return{longname:"Spellchecker",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker",version:tinymce.majorVersion+"."+tinymce.minorVersion}},init:function(e,f){var g=this,d;g.url=f;g.editor=e;g.rpcUrl=e.getParam("spellchecker_rpc_url",this.url+'/rpc.php');if(g.rpcUrl=="{backend}"){if(tinymce.isIE){return}g.hasSupport=true;e.onContextMenu.addToTop(function(h,i){if(g.active){return false}})}e.addCommand("mceSpellCheck",function(){if(g.rpcUrl=="{backend}"){g.editor.getBody().spellcheck=g.active=!g.active;return}if(!g.active){e.setProgressState(1);g._sendRPC("checkWords",[g.selectedLang,g._getWords()],function(h){if(h.length>0){g.active=1;g._markWords(h);e.setProgressState(0);e.nodeChanged()}else{e.setProgressState(0);if(e.getParam("spellchecker_report_no_misspellings",true)){e.windowManager.alert("spellchecker.no_mpell")}}})}else{g._done()}});if(e.settings.content_css!==false){e.contentCSS.push(f+"/css/content.css")}e.onClick.add(g._showMenu,g);e.onContextMenu.add(g._showMenu,g);e.onBeforeGetContent.add(function(){if(g.active){g._removeWords()}});e.onNodeChange.add(function(i,h){h.setActive("spellchecker",g.active)});e.onSetContent.add(function(){g._done()});e.onBeforeGetContent.add(function(){g._done()});e.onBeforeExecCommand.add(function(h,i){if(i=="mceFullScreen"){g._done()}});g.languages={};c(e.getParam("spellchecker_languages","+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv","hash"),function(i,h){if(h.indexOf("+")===0){h=h.substring(1);g.selectedLang=i}g.languages[h]=i})},createControl:function(h,d){var f=this,g,e=f.editor;if(h=="spellchecker"){if(f.rpcUrl=="{backend}"){if(f.hasSupport){g=d.createButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f})}return g}g=d.createSplitButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f});g.onRenderMenu.add(function(j,i){i.add({title:"spellchecker.langs","class":"mceMenuItemTitle"}).setDisabled(1);c(f.languages,function(n,m){var p={icon:1},l;p.onclick=function(){if(n==f.selectedLang){return}l.setSelected(1);f.selectedItem.setSelected(0);f.selectedItem=l;f.selectedLang=n};p.title=m;l=i.add(p);l.setSelected(n==f.selectedLang);if(n==f.selectedLang){f.selectedItem=l}})});return g}},_walk:function(i,g){var h=this.editor.getDoc(),e;if(h.createTreeWalker){e=h.createTreeWalker(i,NodeFilter.SHOW_TEXT,null,false);while((i=e.nextNode())!=null){g.call(this,i)}}else{tinymce.walk(i,g,"childNodes")}},_getSeparators:function(){var e="",d,f=this.editor.getParam("spellchecker_word_separator_chars",'\\s!"#$%&()*+,-./:;<=>?@[]^_{|}§©«®±¶·¸»¼½¾¿×÷¤\u201d\u201c');for(d=0;d<f.length;d++){e+="\\"+f.charAt(d)}return e},_getWords:function(){var e=this.editor,g=[],d="",f={},h=[];this._walk(e.getBody(),function(i){if(i.nodeType==3){d+=i.nodeValue+" "}});if(e.getParam("spellchecker_word_pattern")){h=d.match("("+e.getParam("spellchecker_word_pattern")+")","gi")}else{d=d.replace(new RegExp("([0-9]|["+this._getSeparators()+"])","g")," ");d=tinymce.trim(d.replace(/(\s+)/g," "));h=d.split(" ")}c(h,function(i){if(!f[i]){g.push(i);f[i]=1}});return g},_removeWords:function(e){var f=this.editor,h=f.dom,g=f.selection,d=g.getBookmark();c(h.select("span").reverse(),function(i){if(i&&(h.hasClass(i,"mceItemHiddenSpellWord")||h.hasClass(i,"mceItemHidden"))){if(!e||h.decode(i.innerHTML)==e){h.remove(i,1)}}});g.moveToBookmark(d)},_markWords:function(l){var g=this.editor,f=g.dom,j=g.getDoc(),h=g.selection,i=h.getBookmark(),d=[],k=l.join("|"),m=this._getSeparators(),e=new RegExp("(^|["+m+"])("+k+")(?=["+m+"]|$)","g");this._walk(g.getBody(),function(o){if(o.nodeType==3){d.push(o)}});c(d,function(t){var r,q,o,s,p=t.nodeValue;if(e.test(p)){p=f.encode(p);q=f.create("span",{"class":"mceItemHidden"});if(tinymce.isIE){p=p.replace(e,"$1<mcespell>$2</mcespell>");while((s=p.indexOf("<mcespell>"))!=-1){o=p.substring(0,s);if(o.length){r=j.createTextNode(f.decode(o));q.appendChild(r)}p=p.substring(s+10);s=p.indexOf("</mcespell>");o=p.substring(0,s);p=p.substring(s+11);q.appendChild(f.create("span",{"class":"mceItemHiddenSpellWord"},o))}if(p.length){r=j.createTextNode(f.decode(p));q.appendChild(r)}}else{q.innerHTML=p.replace(e,'$1<span class="mceItemHiddenSpellWord">$2</span>')}f.replace(q,t)}});h.moveToBookmark(i)},_showMenu:function(h,j){var i=this,h=i.editor,d=i._menu,l,k=h.dom,g=k.getViewPort(h.getWin()),f=j.target;j=0;if(!d){d=h.controlManager.createDropMenu("spellcheckermenu",{"class":"mceNoIcons"});i._menu=d}if(k.hasClass(f,"mceItemHiddenSpellWord")){d.removeAll();d.add({title:"spellchecker.wait","class":"mceMenuItemTitle"}).setDisabled(1);i._sendRPC("getSuggestions",[i.selectedLang,k.decode(f.innerHTML)],function(m){var e;d.removeAll();if(m.length>0){d.add({title:"spellchecker.sug","class":"mceMenuItemTitle"}).setDisabled(1);c(m,function(n){d.add({title:n,onclick:function(){k.replace(h.getDoc().createTextNode(n),f);i._checkDone()}})});d.addSeparator()}else{d.add({title:"spellchecker.no_sug","class":"mceMenuItemTitle"}).setDisabled(1)}if(h.getParam("show_ignore_words",true)){e=i.editor.getParam("spellchecker_enable_ignore_rpc","");d.add({title:"spellchecker.ignore_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}}});d.add({title:"spellchecker.ignore_words",onclick:function(){var n=f.innerHTML;i._removeWords(k.decode(n));i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWords",[i.selectedLang,n],function(o){h.setProgressState(0)})}}})}if(i.editor.getParam("spellchecker_enable_learn_rpc")){d.add({title:"spellchecker.learn_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();h.setProgressState(1);i._sendRPC("learnWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}})}d.update()});l=b.getPos(h.getContentAreaContainer());d.settings.offset_x=l.x;d.settings.offset_y=l.y;h.selection.select(f);l=k.getPos(f);d.showMenu(l.x,l.y+f.offsetHeight-g.y);return tinymce.dom.Event.cancel(j)}else{d.hideMenu()}},_checkDone:function(){var e=this,d=e.editor,g=d.dom,f;c(g.select("span"),function(h){if(h&&g.hasClass(h,"mceItemHiddenSpellWord")){f=true;return false}});if(!f){e._done()}},_done:function(){var d=this,e=d.active;if(d.active){d.active=0;d._removeWords();if(d._menu){d._menu.hideMenu()}if(e){d.editor.nodeChanged()}}},_sendRPC:function(e,g,d){var f=this;a.sendRPC({url:f.rpcUrl,method:e,params:g,success:d,error:function(i,h){f.editor.setProgressState(0);f.editor.windowManager.alert(i.errstr||("Error response: "+h.responseText))}})}});tinymce.PluginManager.add("spellchecker",tinymce.plugins.SpellcheckerPlugin)})();
\ No newline at end of file
+(function(){var a=tinymce.util.JSONRequest,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.SpellcheckerPlugin",{getInfo:function(){return{longname:"Spellchecker",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker",version:tinymce.majorVersion+"."+tinymce.minorVersion}},init:function(e,f){var g=this,d;g.url=f;g.editor=e;g.rpcUrl=e.getParam("spellchecker_rpc_url","{backend}");if(g.rpcUrl=="{backend}"){if(tinymce.isIE){return}g.hasSupport=true;e.onContextMenu.addToTop(function(h,i){if(g.active){return false}})}e.addCommand("mceSpellCheck",function(){if(g.rpcUrl=="{backend}"){g.editor.getBody().spellcheck=g.active=!g.active;return}if(!g.active){e.setProgressState(1);g._sendRPC("checkWords",[g.selectedLang,g._getWords()],function(h){if(h.length>0){g.active=1;g._markWords(h);e.setProgressState(0);e.nodeChanged()}else{e.setProgressState(0);if(e.getParam("spellchecker_report_no_misspellings",true)){e.windowManager.alert("spellchecker.no_mpell")}}})}else{g._done()}});if(e.settings.content_css!==false){e.contentCSS.push(f+"/css/content.css")}e.onClick.add(g._showMenu,g);e.onContextMenu.add(g._showMenu,g);e.onBeforeGetContent.add(function(){if(g.active){g._removeWords()}});e.onNodeChange.add(function(i,h){h.setActive("spellchecker",g.active)});e.onSetContent.add(function(){g._done()});e.onBeforeGetContent.add(function(){g._done()});e.onBeforeExecCommand.add(function(h,i){if(i=="mceFullScreen"){g._done()}});g.languages={};c(e.getParam("spellchecker_languages","+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv","hash"),function(i,h){if(h.indexOf("+")===0){h=h.substring(1);g.selectedLang=i}g.languages[h]=i})},createControl:function(h,d){var f=this,g,e=f.editor;if(h=="spellchecker"){if(f.rpcUrl=="{backend}"){if(f.hasSupport){g=d.createButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f})}return g}g=d.createSplitButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f});g.onRenderMenu.add(function(j,i){i.add({title:"spellchecker.langs","class":"mceMenuItemTitle"}).setDisabled(1);c(f.languages,function(n,m){var p={icon:1},l;p.onclick=function(){if(n==f.selectedLang){return}l.setSelected(1);f.selectedItem.setSelected(0);f.selectedItem=l;f.selectedLang=n};p.title=m;l=i.add(p);l.setSelected(n==f.selectedLang);if(n==f.selectedLang){f.selectedItem=l}})});return g}},_walk:function(i,g){var h=this.editor.getDoc(),e;if(h.createTreeWalker){e=h.createTreeWalker(i,NodeFilter.SHOW_TEXT,null,false);while((i=e.nextNode())!=null){g.call(this,i)}}else{tinymce.walk(i,g,"childNodes")}},_getSeparators:function(){var e="",d,f=this.editor.getParam("spellchecker_word_separator_chars",'\\s!"#$%&()*+,-./:;<=>?@[]^_{|}§©«®±¶·¸»¼½¾¿×÷¤\u201d\u201c');for(d=0;d<f.length;d++){e+="\\"+f.charAt(d)}return e},_getWords:function(){var e=this.editor,g=[],d="",f={},h=[];this._walk(e.getBody(),function(i){if(i.nodeType==3){d+=i.nodeValue+" "}});if(e.getParam("spellchecker_word_pattern")){h=d.match("("+e.getParam("spellchecker_word_pattern")+")","gi")}else{d=d.replace(new RegExp("([0-9]|["+this._getSeparators()+"])","g")," ");d=tinymce.trim(d.replace(/(\s+)/g," "));h=d.split(" ")}c(h,function(i){if(!f[i]){g.push(i);f[i]=1}});return g},_removeWords:function(e){var f=this.editor,h=f.dom,g=f.selection,d=g.getBookmark();c(h.select("span").reverse(),function(i){if(i&&(h.hasClass(i,"mceItemHiddenSpellWord")||h.hasClass(i,"mceItemHidden"))){if(!e||h.decode(i.innerHTML)==e){h.remove(i,1)}}});g.moveToBookmark(d)},_markWords:function(l){var g=this.editor,f=g.dom,j=g.getDoc(),h=g.selection,i=h.getBookmark(),d=[],k=l.join("|"),m=this._getSeparators(),e=new RegExp("(^|["+m+"])("+k+")(?=["+m+"]|$)","g");this._walk(g.getBody(),function(o){if(o.nodeType==3){d.push(o)}});c(d,function(t){var r,q,o,s,p=t.nodeValue;if(e.test(p)){p=f.encode(p);q=f.create("span",{"class":"mceItemHidden"});if(tinymce.isIE){p=p.replace(e,"$1<mcespell>$2</mcespell>");while((s=p.indexOf("<mcespell>"))!=-1){o=p.substring(0,s);if(o.length){r=j.createTextNode(f.decode(o));q.appendChild(r)}p=p.substring(s+10);s=p.indexOf("</mcespell>");o=p.substring(0,s);p=p.substring(s+11);q.appendChild(f.create("span",{"class":"mceItemHiddenSpellWord"},o))}if(p.length){r=j.createTextNode(f.decode(p));q.appendChild(r)}}else{q.innerHTML=p.replace(e,'$1<span class="mceItemHiddenSpellWord">$2</span>')}f.replace(q,t)}});h.moveToBookmark(i)},_showMenu:function(h,j){var i=this,h=i.editor,d=i._menu,l,k=h.dom,g=k.getViewPort(h.getWin()),f=j.target;j=0;if(!d){d=h.controlManager.createDropMenu("spellcheckermenu",{"class":"mceNoIcons"});i._menu=d}if(k.hasClass(f,"mceItemHiddenSpellWord")){d.removeAll();d.add({title:"spellchecker.wait","class":"mceMenuItemTitle"}).setDisabled(1);i._sendRPC("getSuggestions",[i.selectedLang,k.decode(f.innerHTML)],function(m){var e;d.removeAll();if(m.length>0){d.add({title:"spellchecker.sug","class":"mceMenuItemTitle"}).setDisabled(1);c(m,function(n){d.add({title:n,onclick:function(){k.replace(h.getDoc().createTextNode(n),f);i._checkDone()}})});d.addSeparator()}else{d.add({title:"spellchecker.no_sug","class":"mceMenuItemTitle"}).setDisabled(1)}if(h.getParam("show_ignore_words",true)){e=i.editor.getParam("spellchecker_enable_ignore_rpc","");d.add({title:"spellchecker.ignore_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}}});d.add({title:"spellchecker.ignore_words",onclick:function(){var n=f.innerHTML;i._removeWords(k.decode(n));i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWords",[i.selectedLang,n],function(o){h.setProgressState(0)})}}})}if(i.editor.getParam("spellchecker_enable_learn_rpc")){d.add({title:"spellchecker.learn_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();h.setProgressState(1);i._sendRPC("learnWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}})}d.update()});l=b.getPos(h.getContentAreaContainer());d.settings.offset_x=l.x;d.settings.offset_y=l.y;h.selection.select(f);l=k.getPos(f);d.showMenu(l.x,l.y+f.offsetHeight-g.y);return tinymce.dom.Event.cancel(j)}else{d.hideMenu()}},_checkDone:function(){var e=this,d=e.editor,g=d.dom,f;c(g.select("span"),function(h){if(h&&g.hasClass(h,"mceItemHiddenSpellWord")){f=true;return false}});if(!f){e._done()}},_done:function(){var d=this,e=d.active;if(d.active){d.active=0;d._removeWords();if(d._menu){d._menu.hideMenu()}if(e){d.editor.nodeChanged()}}},_sendRPC:function(e,g,d){var f=this;a.sendRPC({url:f.rpcUrl,method:e,params:g,success:d,error:function(i,h){f.editor.setProgressState(0);f.editor.windowManager.alert(i.errstr||("Error response: "+h.responseText))}})}});tinymce.PluginManager.add("spellchecker",tinymce.plugins.SpellcheckerPlugin)})();
\ No newline at end of file
diff --git a/wp-includes/js/tinymce/plugins/spellchecker/editor_plugin_src.js b/wp-includes/js/tinymce/plugins/spellchecker/editor_plugin_src.js
new file mode 100644 (file)
index 0000000..0d7cc6e
--- /dev/null
@@ -0,0 +1,436 @@
+/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+       var JSONRequest = tinymce.util.JSONRequest, each = tinymce.each, DOM = tinymce.DOM;
+
+       tinymce.create('tinymce.plugins.SpellcheckerPlugin', {
+               getInfo : function() {
+                       return {
+                               longname : 'Spellchecker',
+                               author : 'Moxiecode Systems AB',
+                               authorurl : 'http://tinymce.moxiecode.com',
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker',
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion
+                       };
+               },
+
+               init : function(ed, url) {
+                       var t = this, cm;
+
+                       t.url = url;
+                       t.editor = ed;
+                       t.rpcUrl = ed.getParam("spellchecker_rpc_url", "{backend}");
+
+                       if (t.rpcUrl == '{backend}') {
+                               // Sniff if the browser supports native spellchecking (Don't know of a better way)
+                               if (tinymce.isIE)
+                                       return;
+
+                               t.hasSupport = true;
+
+                               // Disable the context menu when spellchecking is active
+                               ed.onContextMenu.addToTop(function(ed, e) {
+                                       if (t.active)
+                                               return false;
+                               });
+                       }
+
+                       // Register commands
+                       ed.addCommand('mceSpellCheck', function() {
+                               if (t.rpcUrl == '{backend}') {
+                                       // Enable/disable native spellchecker
+                                       t.editor.getBody().spellcheck = t.active = !t.active;
+                                       return;
+                               }
+
+                               if (!t.active) {
+                                       ed.setProgressState(1);
+                                       t._sendRPC('checkWords', [t.selectedLang, t._getWords()], function(r) {
+                                               if (r.length > 0) {
+                                                       t.active = 1;
+                                                       t._markWords(r);
+                                                       ed.setProgressState(0);
+                                                       ed.nodeChanged();
+                                               } else {
+                                                       ed.setProgressState(0);
+
+                                                       if (ed.getParam('spellchecker_report_no_misspellings', true))
+                                                               ed.windowManager.alert('spellchecker.no_mpell');
+                                               }
+                                       });
+                               } else
+                                       t._done();
+                       });
+
+                       if (ed.settings.content_css !== false)
+                               ed.contentCSS.push(url + '/css/content.css');
+
+                       ed.onClick.add(t._showMenu, t);
+                       ed.onContextMenu.add(t._showMenu, t);
+                       ed.onBeforeGetContent.add(function() {
+                               if (t.active)
+                                       t._removeWords();
+                       });
+
+                       ed.onNodeChange.add(function(ed, cm) {
+                               cm.setActive('spellchecker', t.active);
+                       });
+
+                       ed.onSetContent.add(function() {
+                               t._done();
+                       });
+
+                       ed.onBeforeGetContent.add(function() {
+                               t._done();
+                       });
+
+                       ed.onBeforeExecCommand.add(function(ed, cmd) {
+                               if (cmd == 'mceFullScreen')
+                                       t._done();
+                       });
+
+                       // Find selected language
+                       t.languages = {};
+                       each(ed.getParam('spellchecker_languages', '+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv', 'hash'), function(v, k) {
+                               if (k.indexOf('+') === 0) {
+                                       k = k.substring(1);
+                                       t.selectedLang = v;
+                               }
+
+                               t.languages[k] = v;
+                       });
+               },
+
+               createControl : function(n, cm) {
+                       var t = this, c, ed = t.editor;
+
+                       if (n == 'spellchecker') {
+                               // Use basic button if we use the native spellchecker
+                               if (t.rpcUrl == '{backend}') {
+                                       // Create simple toggle button if we have native support
+                                       if (t.hasSupport)
+                                               c = cm.createButton(n, {title : 'spellchecker.desc', cmd : 'mceSpellCheck', scope : t});
+
+                                       return c;
+                               }
+
+                               c = cm.createSplitButton(n, {title : 'spellchecker.desc', cmd : 'mceSpellCheck', scope : t});
+
+                               c.onRenderMenu.add(function(c, m) {
+                                       m.add({title : 'spellchecker.langs', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
+                                       each(t.languages, function(v, k) {
+                                               var o = {icon : 1}, mi;
+
+                                               o.onclick = function() {
+                                                       if (v == t.selectedLang) {
+                                                               return;
+                                                       }
+                                                       mi.setSelected(1);
+                                                       t.selectedItem.setSelected(0);
+                                                       t.selectedItem = mi;
+                                                       t.selectedLang = v;
+                                               };
+
+                                               o.title = k;
+                                               mi = m.add(o);
+                                               mi.setSelected(v == t.selectedLang);
+
+                                               if (v == t.selectedLang)
+                                                       t.selectedItem = mi;
+                                       })
+                               });
+
+                               return c;
+                       }
+               },
+
+               // Internal functions
+
+               _walk : function(n, f) {
+                       var d = this.editor.getDoc(), w;
+
+                       if (d.createTreeWalker) {
+                               w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false);
+
+                               while ((n = w.nextNode()) != null)
+                                       f.call(this, n);
+                       } else
+                               tinymce.walk(n, f, 'childNodes');
+               },
+
+               _getSeparators : function() {
+                       var re = '', i, str = this.editor.getParam('spellchecker_word_separator_chars', '\\s!"#$%&()*+,-./:;<=>?@[\]^_{|}§©«®±¶·¸»¼½¾¿×÷¤\u201d\u201c');
+
+                       // Build word separator regexp
+                       for (i=0; i<str.length; i++)
+                               re += '\\' + str.charAt(i);
+
+                       return re;
+               },
+
+               _getWords : function() {
+                       var ed = this.editor, wl = [], tx = '', lo = {}, rawWords = [];
+
+                       // Get area text
+                       this._walk(ed.getBody(), function(n) {
+                               if (n.nodeType == 3)
+                                       tx += n.nodeValue + ' ';
+                       });
+
+                       // split the text up into individual words
+                       if (ed.getParam('spellchecker_word_pattern')) {
+                               // look for words that match the pattern
+                               rawWords = tx.match('(' + ed.getParam('spellchecker_word_pattern') + ')', 'gi');
+                       } else {
+                               // Split words by separator
+                               tx = tx.replace(new RegExp('([0-9]|[' + this._getSeparators() + '])', 'g'), ' ');
+                               tx = tinymce.trim(tx.replace(/(\s+)/g, ' '));
+                               rawWords = tx.split(' ');
+                       }
+
+                       // Build word array and remove duplicates
+                       each(rawWords, function(v) {
+                               if (!lo[v]) {
+                                       wl.push(v);
+                                       lo[v] = 1;
+                               }
+                       });
+
+                       return wl;
+               },
+
+               _removeWords : function(w) {
+                       var ed = this.editor, dom = ed.dom, se = ed.selection, b = se.getBookmark();
+
+                       each(dom.select('span').reverse(), function(n) {
+                               if (n && (dom.hasClass(n, 'mceItemHiddenSpellWord') || dom.hasClass(n, 'mceItemHidden'))) {
+                                       if (!w || dom.decode(n.innerHTML) == w)
+                                               dom.remove(n, 1);
+                               }
+                       });
+
+                       se.moveToBookmark(b);
+               },
+
+               _markWords : function(wl) {
+                       var ed = this.editor, dom = ed.dom, doc = ed.getDoc(), se = ed.selection, b = se.getBookmark(), nl = [],
+                               w = wl.join('|'), re = this._getSeparators(), rx = new RegExp('(^|[' + re + '])(' + w + ')(?=[' + re + ']|$)', 'g');
+
+                       // Collect all text nodes
+                       this._walk(ed.getBody(), function(n) {
+                               if (n.nodeType == 3) {
+                                       nl.push(n);
+                               }
+                       });
+
+                       // Wrap incorrect words in spans
+                       each(nl, function(n) {
+                               var node, elem, txt, pos, v = n.nodeValue;
+
+                               if (rx.test(v)) {
+                                       // Encode the content
+                                       v = dom.encode(v);
+                                       // Create container element
+                                       elem = dom.create('span', {'class' : 'mceItemHidden'});
+
+                                       // Following code fixes IE issues by creating text nodes
+                                       // using DOM methods instead of innerHTML.
+                                       // Bug #3124: <PRE> elements content is broken after spellchecking.
+                                       // Bug #1408: Preceding whitespace characters are removed
+                                       // @TODO: I'm not sure that both are still issues on IE9.
+                                       if (tinymce.isIE) {
+                                               // Enclose mispelled words with temporal tag
+                                               v = v.replace(rx, '$1<mcespell>$2</mcespell>');
+                                               // Loop over the content finding mispelled words
+                                               while ((pos = v.indexOf('<mcespell>')) != -1) {
+                                                       // Add text node for the content before the word
+                                                       txt = v.substring(0, pos);
+                                                       if (txt.length) {
+                                                               node = doc.createTextNode(dom.decode(txt));
+                                                               elem.appendChild(node);
+                                                       }
+                                                       v = v.substring(pos+10);
+                                                       pos = v.indexOf('</mcespell>');
+                                                       txt = v.substring(0, pos);
+                                                       v = v.substring(pos+11);
+                                                       // Add span element for the word
+                                                       elem.appendChild(dom.create('span', {'class' : 'mceItemHiddenSpellWord'}, txt));
+                                               }
+                                               // Add text node for the rest of the content
+                                               if (v.length) {
+                                                       node = doc.createTextNode(dom.decode(v));
+                                                       elem.appendChild(node);
+                                               }
+                                       } else {
+                                               // Other browsers preserve whitespace characters on innerHTML usage
+                                               elem.innerHTML = v.replace(rx, '$1<span class="mceItemHiddenSpellWord">$2</span>');
+                                       }
+
+                                       // Finally, replace the node with the container
+                                       dom.replace(elem, n);
+                               }
+                       });
+
+                       se.moveToBookmark(b);
+               },
+
+               _showMenu : function(ed, e) {
+                       var t = this, ed = t.editor, m = t._menu, p1, dom = ed.dom, vp = dom.getViewPort(ed.getWin()), wordSpan = e.target;
+
+                       e = 0; // Fixes IE memory leak
+
+                       if (!m) {
+                               m = ed.controlManager.createDropMenu('spellcheckermenu', {'class' : 'mceNoIcons'});
+                               t._menu = m;
+                       }
+
+                       if (dom.hasClass(wordSpan, 'mceItemHiddenSpellWord')) {
+                               m.removeAll();
+                               m.add({title : 'spellchecker.wait', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
+
+                               t._sendRPC('getSuggestions', [t.selectedLang, dom.decode(wordSpan.innerHTML)], function(r) {
+                                       var ignoreRpc;
+
+                                       m.removeAll();
+
+                                       if (r.length > 0) {
+                                               m.add({title : 'spellchecker.sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
+                                               each(r, function(v) {
+                                                       m.add({title : v, onclick : function() {
+                                                               dom.replace(ed.getDoc().createTextNode(v), wordSpan);
+                                                               t._checkDone();
+                                                       }});
+                                               });
+
+                                               m.addSeparator();
+                                       } else
+                                               m.add({title : 'spellchecker.no_sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
+
+                                       if (ed.getParam('show_ignore_words', true)) {
+                                               ignoreRpc = t.editor.getParam("spellchecker_enable_ignore_rpc", '');
+                                               m.add({
+                                                       title : 'spellchecker.ignore_word',
+                                                       onclick : function() {
+                                                               var word = wordSpan.innerHTML;
+
+                                                               dom.remove(wordSpan, 1);
+                                                               t._checkDone();
+
+                                                               // tell the server if we need to
+                                                               if (ignoreRpc) {
+                                                                       ed.setProgressState(1);
+                                                                       t._sendRPC('ignoreWord', [t.selectedLang, word], function(r) {
+                                                                               ed.setProgressState(0);
+                                                                       });
+                                                               }
+                                                       }
+                                               });
+
+                                               m.add({
+                                                       title : 'spellchecker.ignore_words',
+                                                       onclick : function() {
+                                                               var word = wordSpan.innerHTML;
+
+                                                               t._removeWords(dom.decode(word));
+                                                               t._checkDone();
+
+                                                               // tell the server if we need to
+                                                               if (ignoreRpc) {
+                                                                       ed.setProgressState(1);
+                                                                       t._sendRPC('ignoreWords', [t.selectedLang, word], function(r) {
+                                                                               ed.setProgressState(0);
+                                                                       });
+                                                               }
+                                                       }
+                                               });
+                                       }
+
+                                       if (t.editor.getParam("spellchecker_enable_learn_rpc")) {
+                                               m.add({
+                                                       title : 'spellchecker.learn_word',
+                                                       onclick : function() {
+                                                               var word = wordSpan.innerHTML;
+
+                                                               dom.remove(wordSpan, 1);
+                                                               t._checkDone();
+
+                                                               ed.setProgressState(1);
+                                                               t._sendRPC('learnWord', [t.selectedLang, word], function(r) {
+                                                                       ed.setProgressState(0);
+                                                               });
+                                                       }
+                                               });
+                                       }
+
+                                       m.update();
+                               });
+
+                               p1 = DOM.getPos(ed.getContentAreaContainer());
+                               m.settings.offset_x = p1.x;
+                               m.settings.offset_y = p1.y;
+
+                               ed.selection.select(wordSpan);
+                               p1 = dom.getPos(wordSpan);
+                               m.showMenu(p1.x, p1.y + wordSpan.offsetHeight - vp.y);
+
+                               return tinymce.dom.Event.cancel(e);
+                       } else
+                               m.hideMenu();
+               },
+
+               _checkDone : function() {
+                       var t = this, ed = t.editor, dom = ed.dom, o;
+
+                       each(dom.select('span'), function(n) {
+                               if (n && dom.hasClass(n, 'mceItemHiddenSpellWord')) {
+                                       o = true;
+                                       return false;
+                               }
+                       });
+
+                       if (!o)
+                               t._done();
+               },
+
+               _done : function() {
+                       var t = this, la = t.active;
+
+                       if (t.active) {
+                               t.active = 0;
+                               t._removeWords();
+
+                               if (t._menu)
+                                       t._menu.hideMenu();
+
+                               if (la)
+                                       t.editor.nodeChanged();
+                       }
+               },
+
+               _sendRPC : function(m, p, cb) {
+                       var t = this;
+
+                       JSONRequest.sendRPC({
+                               url : t.rpcUrl,
+                               method : m,
+                               params : p,
+                               success : cb,
+                               error : function(e, x) {
+                                       t.editor.setProgressState(0);
+                                       t.editor.windowManager.alert(e.errstr || ('Error response: ' + x.responseText));
+                               }
+                       });
+               }
+       });
+
+       // Register plugin
+       tinymce.PluginManager.add('spellchecker', tinymce.plugins.SpellcheckerPlugin);
+})();
diff --git a/wp-includes/js/tinymce/plugins/tabfocus/editor_plugin_src.js b/wp-includes/js/tinymce/plugins/tabfocus/editor_plugin_src.js
new file mode 100644 (file)
index 0000000..a1579c8
--- /dev/null
@@ -0,0 +1,122 @@
+/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+       var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, explode = tinymce.explode;
+
+       tinymce.create('tinymce.plugins.TabFocusPlugin', {
+               init : function(ed, url) {
+                       function tabCancel(ed, e) {
+                               if (e.keyCode === 9)
+                                       return Event.cancel(e);
+                       }
+
+                       function tabHandler(ed, e) {
+                               var x, i, f, el, v;
+
+                               function find(d) {
+                                       el = DOM.select(':input:enabled,*[tabindex]');
+
+                                       function canSelectRecursive(e) {
+                                               return e.nodeName==="BODY" || (e.type != 'hidden' &&
+                                                       !(e.style.display == "none") &&
+                                                       !(e.style.visibility == "hidden") && canSelectRecursive(e.parentNode));
+                                       }
+                                       function canSelectInOldIe(el) {
+                                               return el.attributes["tabIndex"].specified || el.nodeName == "INPUT" || el.nodeName == "TEXTAREA";
+                                       }
+                                       function isOldIe() {
+                                               return tinymce.isIE6 || tinymce.isIE7;
+                                       }
+                                       function canSelect(el) {
+                                               return ((!isOldIe() || canSelectInOldIe(el))) && el.getAttribute("tabindex") != '-1' && canSelectRecursive(el);
+                                       }
+
+                                       each(el, function(e, i) {
+                                               if (e.id == ed.id) {
+                                                       x = i;
+                                                       return false;
+                                               }
+                                       });
+                                       if (d > 0) {
+                                               for (i = x + 1; i < el.length; i++) {
+                                                       if (canSelect(el[i]))
+                                                               return el[i];
+                                               }
+                                       } else {
+                                               for (i = x - 1; i >= 0; i--) {
+                                                       if (canSelect(el[i]))
+                                                               return el[i];
+                                               }
+                                       }
+
+                                       return null;
+                               }
+
+                               if (e.keyCode === 9) {
+                                       v = explode(ed.getParam('tab_focus', ed.getParam('tabfocus_elements', ':prev,:next')));
+
+                                       if (v.length == 1) {
+                                               v[1] = v[0];
+                                               v[0] = ':prev';
+                                       }
+
+                                       // Find element to focus
+                                       if (e.shiftKey) {
+                                               if (v[0] == ':prev')
+                                                       el = find(-1);
+                                               else
+                                                       el = DOM.get(v[0]);
+                                       } else {
+                                               if (v[1] == ':next')
+                                                       el = find(1);
+                                               else
+                                                       el = DOM.get(v[1]);
+                                       }
+
+                                       if (el) {
+                                               if (el.id && (ed = tinymce.get(el.id || el.name)))
+                                                       ed.focus();
+                                               else
+                                                       window.setTimeout(function() {
+                                                               if (!tinymce.isWebKit)
+                                                                       window.focus();
+                                                               el.focus();
+                                                       }, 10);
+
+                                               return Event.cancel(e);
+                                       }
+                               }
+                       }
+
+                       ed.onKeyUp.add(tabCancel);
+
+                       if (tinymce.isGecko) {
+                               ed.onKeyPress.add(tabHandler);
+                               ed.onKeyDown.add(tabCancel);
+                       } else
+                               ed.onKeyDown.add(tabHandler);
+
+               },
+
+               getInfo : function() {
+                       return {
+                               longname : 'Tabfocus',
+                               author : 'Moxiecode Systems AB',
+                               authorurl : 'http://tinymce.moxiecode.com',
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus',
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion
+                       };
+               }
+       });
+
+       // Register plugin
+       tinymce.PluginManager.add('tabfocus', tinymce.plugins.TabFocusPlugin);
+})();
diff --git a/wp-includes/js/tinymce/plugins/wordpress/css/content.css b/wp-includes/js/tinymce/plugins/wordpress/css/content.css
deleted file mode 100644 (file)
index 8cf986c..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-
-.mceWPnextpage, .mceWPmore {
-       border: 0;
-       border-top: 1px dotted #cccccc;
-       display: block;
-       width: 95%;
-       height: 12px;
-       margin: 15px auto 0;
-}
-.mceWPmore {
-       background: transparent url(../img/more_bug.gif) no-repeat right top;
-}
-.mceWPnextpage {
-    background: transparent url(../img/page_bug.gif) no-repeat right top;
-}
-
-img.wpGallery {
-       border: 1px dashed #888;
-       background: #f2f8ff url("../../wpgallery/img/gallery.png") no-repeat scroll center center;
-       width: 99%;
-       height: 250px;
-}
-
-img.wp-oembed {
-       border: 1px dashed #888;
-       background: #f7f5f2 url("../img/embedded.png") no-repeat scroll center center;
-       width: 300px;
-       height: 250px;
-}
index 00278c85cf9b6d08485500a02d6fcf37f3e96fed..5d905efc4743758f5acbfc85d14a0e4cb46ef373 100644 (file)
@@ -1 +1 @@
-(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.WordPress",{mceTout:0,init:function(c,d){var e=this,h=c.getParam("wordpress_adv_toolbar","toolbar2"),g=0,f,b;f='<img src="'+d+'/img/trans.gif" class="mceWPmore mceItemNoResize" title="'+c.getLang("wordpress.wp_more_alt")+'" />';b='<img src="'+d+'/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+c.getLang("wordpress.wp_page_alt")+'" />';if(getUserSetting("hidetb","0")=="1"){c.settings.wordpress_adv_hidden=0}c.onPostRender.add(function(){var i=c.controlManager.get(h);if(c.getParam("wordpress_adv_hidden",1)&&i){a.hide(i.id);e._resizeIframe(c,h,28)}});c.addCommand("WP_More",function(){c.execCommand("mceInsertContent",0,f)});c.addCommand("WP_Page",function(){c.execCommand("mceInsertContent",0,b)});c.addCommand("WP_Help",function(){c.windowManager.open({url:tinymce.baseURL+"/wp-mce-help.php",width:450,height:420,inline:1})});c.addCommand("WP_Adv",function(){var i=c.controlManager,j=i.get(h).id;if("undefined"==j){return}if(a.isHidden(j)){i.setActive("wp_adv",1);a.show(j);e._resizeIframe(c,h,-28);c.settings.wordpress_adv_hidden=0;setUserSetting("hidetb","1")}else{i.setActive("wp_adv",0);a.hide(j);e._resizeIframe(c,h,28);c.settings.wordpress_adv_hidden=1;setUserSetting("hidetb","0")}});c.addCommand("WP_Medialib",function(){var j=c.getParam("wp_fullscreen_editor_id")||c.getParam("fullscreen_editor_id")||c.id,i=tinymce.DOM.select("#wp-"+j+"-media-buttons a.thickbox");if(i&&i[0]){i=i[0]}else{return}tb_show("",i.href);tinymce.DOM.setStyle(["TB_overlay","TB_window","TB_load"],"z-index","999999")});c.addButton("wp_more",{title:"wordpress.wp_more_desc",cmd:"WP_More"});c.addButton("wp_page",{title:"wordpress.wp_page_desc",image:d+"/img/page.gif",cmd:"WP_Page"});c.addButton("wp_help",{title:"wordpress.wp_help_desc",cmd:"WP_Help"});c.addButton("wp_adv",{title:"wordpress.wp_adv_desc",cmd:"WP_Adv"});c.addButton("add_media",{title:"wordpress.add_media",image:d+"/img/image.gif",cmd:"WP_Medialib"});c.onBeforeExecCommand.add(function(p,m,s,l,j){var v=tinymce.DOM,k,i,r,u,t,q;if("mceFullScreen"==m){if("mce_fullscreen"!=p.id&&v.select("a.thickbox").length){p.settings.theme_advanced_buttons1+=",|,add_media"}}if("JustifyLeft"==m||"JustifyRight"==m||"JustifyCenter"==m){k=p.selection.getNode();if(k.nodeName=="IMG"){q=m.substr(7).toLowerCase();t="align"+q;i=p.dom.getParent(k,"dl.wp-caption");r=p.dom.getParent(k,"div.mceTemp");if(i&&r){u=p.dom.hasClass(i,t)?"alignnone":t;i.className=i.className.replace(/align[^ '"]+\s?/g,"");p.dom.addClass(i,u);if(u=="aligncenter"){p.dom.addClass(r,"mceIEcenter")}else{p.dom.removeClass(r,"mceIEcenter")}j.terminate=true;p.execCommand("mceRepaint")}else{if(p.dom.hasClass(k,t)){p.dom.addClass(k,"alignnone")}else{p.dom.removeClass(k,"alignnone")}}}}});c.onInit.add(function(i){i.onNodeChange.add(function(k,j,m){var l;if(m.nodeName=="IMG"){l=k.dom.getParent(m,"dl.wp-caption")}else{if(m.nodeName=="DIV"&&k.dom.hasClass(m,"mceTemp")){l=m.firstChild;if(!k.dom.hasClass(l,"wp-caption")){l=false}}}if(l){if(k.dom.hasClass(l,"alignleft")){j.setActive("justifyleft",1)}else{if(k.dom.hasClass(l,"alignright")){j.setActive("justifyright",1)}else{if(k.dom.hasClass(l,"aligncenter")){j.setActive("justifycenter",1)}}}}});if(i.id!="wp_mce_fullscreen"&&i.id!="mce_fullscreen"){i.dom.addClass(i.getBody(),"wp-editor")}else{if(i.id=="mce_fullscreen"){i.dom.addClass(i.getBody(),"mce-fullscreen")}}i.onBeforeSetContent.add(function(j,k){if(k.content){k.content=k.content.replace(/<p>\s*<(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre|address)( [^>]*)?>/gi,"<$1$2>");k.content=k.content.replace(/<\/(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre|address)>\s*<\/p>/gi,"</$1>")}})});if("undefined"!=typeof(jQuery)){c.onKeyUp.add(function(j,l){var i=l.keyCode||l.charCode;if(i==g){return}if(13==i||8==g||46==g){jQuery(document).triggerHandler("wpcountwords",[j.getContent({format:"raw"})])}g=i})}c.onSaveContent.addToTop(function(i,j){j.content=j.content.replace(/<p>(<br ?\/?>|\u00a0|\uFEFF)?<\/p>/g,"<p>&nbsp;</p>")});c.onSaveContent.add(function(i,j){if(i.getParam("wpautop",true)&&typeof(switchEditors)=="object"){if(i.isHidden()){j.content=j.element.value}else{j.content=switchEditors.pre_wpautop(j.content)}}});e._handleMoreBreak(c,d);c.addShortcut("alt+shift+c",c.getLang("justifycenter_desc"),"JustifyCenter");c.addShortcut("alt+shift+r",c.getLang("justifyright_desc"),"JustifyRight");c.addShortcut("alt+shift+l",c.getLang("justifyleft_desc"),"JustifyLeft");c.addShortcut("alt+shift+j",c.getLang("justifyfull_desc"),"JustifyFull");c.addShortcut("alt+shift+q",c.getLang("blockquote_desc"),"mceBlockQuote");c.addShortcut("alt+shift+u",c.getLang("bullist_desc"),"InsertUnorderedList");c.addShortcut("alt+shift+o",c.getLang("numlist_desc"),"InsertOrderedList");c.addShortcut("alt+shift+d",c.getLang("striketrough_desc"),"Strikethrough");c.addShortcut("alt+shift+n",c.getLang("spellchecker.desc"),"mceSpellCheck");c.addShortcut("alt+shift+a",c.getLang("link_desc"),"mceLink");c.addShortcut("alt+shift+s",c.getLang("unlink_desc"),"unlink");c.addShortcut("alt+shift+m",c.getLang("image_desc"),"WP_Medialib");c.addShortcut("alt+shift+g",c.getLang("fullscreen.desc"),"mceFullScreen");c.addShortcut("alt+shift+z",c.getLang("wp_adv_desc"),"WP_Adv");c.addShortcut("alt+shift+h",c.getLang("help_desc"),"WP_Help");c.addShortcut("alt+shift+t",c.getLang("wp_more_desc"),"WP_More");c.addShortcut("alt+shift+p",c.getLang("wp_page_desc"),"WP_Page");c.addShortcut("ctrl+s",c.getLang("save_desc"),function(){if("function"==typeof autosave){autosave()}});if(tinymce.isWebKit){c.addShortcut("alt+shift+b",c.getLang("bold_desc"),"Bold");c.addShortcut("alt+shift+i",c.getLang("italic_desc"),"Italic")}c.onInit.add(function(i){tinymce.dom.Event.add(i.getWin(),"scroll",function(j){i.plugins.wordpress._hideButtons()});tinymce.dom.Event.add(i.getBody(),"dragstart",function(j){i.plugins.wordpress._hideButtons()})});c.onBeforeExecCommand.add(function(i,k,j,l){i.plugins.wordpress._hideButtons()});c.onSaveContent.add(function(i,j){i.plugins.wordpress._hideButtons()});c.onMouseDown.add(function(i,j){if(j.target.nodeName!="IMG"){i.plugins.wordpress._hideButtons()}})},getInfo:function(){return{longname:"WordPress Plugin",author:"WordPress",authorurl:"http://wordpress.org",infourl:"http://wordpress.org",version:"3.0"}},_setEmbed:function(b){return b.replace(/\[embed\]([\s\S]+?)\[\/embed\][\s\u00a0]*/g,function(d,c){return'<img width="300" height="200" src="'+tinymce.baseURL+'/plugins/wordpress/img/trans.gif" class="wp-oembed mceItemNoResize" alt="'+c+'" title="'+c+'" />'})},_getEmbed:function(b){return b.replace(/<img[^>]+>/g,function(c){if(c.indexOf('class="wp-oembed')!=-1){var d=c.match(/alt="([^\"]+)"/);if(d[1]){c="[embed]"+d[1]+"[/embed]"}}return c})},_showButtons:function(f,d){var g=tinyMCE.activeEditor,i,h,b,j=tinymce.DOM,e,c;b=g.dom.getViewPort(g.getWin());i=j.getPos(g.getContentAreaContainer());h=g.dom.getPos(f);e=Math.max(h.x-b.x,0)+i.x;c=Math.max(h.y-b.y,0)+i.y;j.setStyles(d,{top:c+5+"px",left:e+5+"px",display:"block"});if(this.mceTout){clearTimeout(this.mceTout)}this.mceTout=setTimeout(function(){g.plugins.wordpress._hideButtons()},5000)},_hideButtons:function(){if(!this.mceTout){return}if(document.getElementById("wp_editbtns")){tinymce.DOM.hide("wp_editbtns")}if(document.getElementById("wp_gallerybtns")){tinymce.DOM.hide("wp_gallerybtns")}clearTimeout(this.mceTout);this.mceTout=0},_resizeIframe:function(c,e,b){var d=c.getContentAreaContainer().firstChild;a.setStyle(d,"height",d.clientHeight+b);c.theme.deltaHeight+=b},_handleMoreBreak:function(c,d){var e,b;e='<img src="'+d+'/img/trans.gif" alt="$1" class="mceWPmore mceItemNoResize" title="'+c.getLang("wordpress.wp_more_alt")+'" />';b='<img src="'+d+'/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+c.getLang("wordpress.wp_page_alt")+'" />';c.onInit.add(function(){c.dom.loadCSS(d+"/css/content.css")});c.onPostRender.add(function(){if(c.theme.onResolveName){c.theme.onResolveName.add(function(f,g){if(g.node.nodeName=="IMG"){if(c.dom.hasClass(g.node,"mceWPmore")){g.name="wpmore"}if(c.dom.hasClass(g.node,"mceWPnextpage")){g.name="wppage"}}})}});c.onBeforeSetContent.add(function(f,g){if(g.content){g.content=g.content.replace(/<!--more(.*?)-->/g,e);g.content=g.content.replace(/<!--nextpage-->/g,b)}});c.onPostProcess.add(function(f,g){if(g.get){g.content=g.content.replace(/<img[^>]+>/g,function(i){if(i.indexOf('class="mceWPmore')!==-1){var h,j=(h=i.match(/alt="(.*?)"/))?h[1]:"";i="<!--more"+j+"-->"}if(i.indexOf('class="mceWPnextpage')!==-1){i="<!--nextpage-->"}return i})}});c.onNodeChange.add(function(g,f,h){f.setActive("wp_page",h.nodeName==="IMG"&&g.dom.hasClass(h,"mceWPnextpage"));f.setActive("wp_more",h.nodeName==="IMG"&&g.dom.hasClass(h,"mceWPmore"))})}});tinymce.PluginManager.add("wordpress",tinymce.plugins.WordPress)})();
\ No newline at end of file
+(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.WordPress",{mceTout:0,init:function(c,d){var e=this,h=c.getParam("wordpress_adv_toolbar","toolbar2"),g=0,f,b,i;f='<img src="'+d+'/img/trans.gif" class="mceWPmore mceItemNoResize" title="'+c.getLang("wordpress.wp_more_alt")+'" />';b='<img src="'+d+'/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+c.getLang("wordpress.wp_page_alt")+'" />';if(getUserSetting("hidetb","0")=="1"){c.settings.wordpress_adv_hidden=0}c.onPostRender.add(function(){var j=c.controlManager.get(h);if(c.getParam("wordpress_adv_hidden",1)&&j){a.hide(j.id);e._resizeIframe(c,h,28)}});c.addCommand("WP_More",function(){c.execCommand("mceInsertContent",0,f)});c.addCommand("WP_Page",function(){c.execCommand("mceInsertContent",0,b)});c.addCommand("WP_Help",function(){c.windowManager.open({url:tinymce.baseURL+"/wp-mce-help.php",width:450,height:420,inline:1})});c.addCommand("WP_Adv",function(){var j=c.controlManager,k=j.get(h).id;if("undefined"==k){return}if(a.isHidden(k)){j.setActive("wp_adv",1);a.show(k);e._resizeIframe(c,h,-28);c.settings.wordpress_adv_hidden=0;setUserSetting("hidetb","1")}else{j.setActive("wp_adv",0);a.hide(k);e._resizeIframe(c,h,28);c.settings.wordpress_adv_hidden=1;setUserSetting("hidetb","0")}});c.addCommand("WP_Medialib",function(){var k=c.getParam("wp_fullscreen_editor_id")||c.getParam("fullscreen_editor_id")||c.id,j=tinymce.DOM.select("#wp-"+k+"-media-buttons a.thickbox");if(j&&j[0]){j=j[0]}else{return}tb_show("",j.href);tinymce.DOM.setStyle(["TB_overlay","TB_window","TB_load"],"z-index","999999")});c.addButton("wp_more",{title:"wordpress.wp_more_desc",cmd:"WP_More"});c.addButton("wp_page",{title:"wordpress.wp_page_desc",image:d+"/img/page.gif",cmd:"WP_Page"});c.addButton("wp_help",{title:"wordpress.wp_help_desc",cmd:"WP_Help"});c.addButton("wp_adv",{title:"wordpress.wp_adv_desc",cmd:"WP_Adv"});c.addButton("add_media",{title:"wordpress.add_media",image:d+"/img/image.gif",cmd:"WP_Medialib"});c.onBeforeExecCommand.add(function(q,p,t,m,k){var w=tinymce.DOM,l,j,s,v,u,r;if("mceFullScreen"==p){if("mce_fullscreen"!=q.id&&w.select("a.thickbox").length){q.settings.theme_advanced_buttons1+=",|,add_media"}}if("JustifyLeft"==p||"JustifyRight"==p||"JustifyCenter"==p){l=q.selection.getNode();if(l.nodeName=="IMG"){r=p.substr(7).toLowerCase();u="align"+r;j=q.dom.getParent(l,"dl.wp-caption");s=q.dom.getParent(l,"div.mceTemp");if(j&&s){v=q.dom.hasClass(j,u)?"alignnone":u;j.className=j.className.replace(/align[^ '"]+\s?/g,"");q.dom.addClass(j,v);if(v=="aligncenter"){q.dom.addClass(s,"mceIEcenter")}else{q.dom.removeClass(s,"mceIEcenter")}k.terminate=true;q.execCommand("mceRepaint")}else{if(q.dom.hasClass(l,u)){q.dom.addClass(l,"alignnone")}else{q.dom.removeClass(l,"alignnone")}}}}});c.onInit.add(function(l){var k=l.getParam("body_class",""),j=l.getBody();if(k){k=k.split(" ")}else{k=[]}if(l.getParam("directionality","")=="rtl"){k.push("rtl")}if(tinymce.isIE9){k.push("ie9")}else{if(tinymce.isIE8){k.push("ie8")}else{if(tinymce.isIE7){k.push("ie7")}}}if(l.id!="wp_mce_fullscreen"&&l.id!="mce_fullscreen"){k.push("wp-editor")}else{if(l.id=="mce_fullscreen"){k.push("mce-fullscreen")}}tinymce.each(k,function(m){if(m){l.dom.addClass(j,m)}});l.onNodeChange.add(function(n,m,p){var o;if(p.nodeName=="IMG"){o=n.dom.getParent(p,"dl.wp-caption")}else{if(p.nodeName=="DIV"&&n.dom.hasClass(p,"mceTemp")){o=p.firstChild;if(!n.dom.hasClass(o,"wp-caption")){o=false}}}if(o){if(n.dom.hasClass(o,"alignleft")){m.setActive("justifyleft",1)}else{if(n.dom.hasClass(o,"alignright")){m.setActive("justifyright",1)}else{if(n.dom.hasClass(o,"aligncenter")){m.setActive("justifycenter",1)}}}}});l.onBeforeSetContent.add(function(m,n){if(n.content){n.content=n.content.replace(/<p>\s*<(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre|address)( [^>]*)?>/gi,"<$1$2>");n.content=n.content.replace(/<\/(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre|address)>\s*<\/p>/gi,"</$1>")}})});if("undefined"!=typeof(jQuery)){c.onKeyUp.add(function(l,m){var j=m.keyCode||m.charCode;if(j==g){return}if(13==j||8==g||46==g){jQuery(document).triggerHandler("wpcountwords",[l.getContent({format:"raw"})])}g=j})}c.onSaveContent.addToTop(function(j,k){k.content=k.content.replace(/<p>(<br ?\/?>|\u00a0|\uFEFF)?<\/p>/g,"<p>&nbsp;</p>")});c.onSaveContent.add(function(j,k){if(j.getParam("wpautop",true)&&typeof(switchEditors)=="object"){if(j.isHidden()){k.content=k.element.value}else{k.content=switchEditors.pre_wpautop(k.content)}}});e._handleMoreBreak(c,d);c.addShortcut("alt+shift+c",c.getLang("justifycenter_desc"),"JustifyCenter");c.addShortcut("alt+shift+r",c.getLang("justifyright_desc"),"JustifyRight");c.addShortcut("alt+shift+l",c.getLang("justifyleft_desc"),"JustifyLeft");c.addShortcut("alt+shift+j",c.getLang("justifyfull_desc"),"JustifyFull");c.addShortcut("alt+shift+q",c.getLang("blockquote_desc"),"mceBlockQuote");c.addShortcut("alt+shift+u",c.getLang("bullist_desc"),"InsertUnorderedList");c.addShortcut("alt+shift+o",c.getLang("numlist_desc"),"InsertOrderedList");c.addShortcut("alt+shift+d",c.getLang("striketrough_desc"),"Strikethrough");c.addShortcut("alt+shift+n",c.getLang("spellchecker.desc"),"mceSpellCheck");c.addShortcut("alt+shift+a",c.getLang("link_desc"),"mceLink");c.addShortcut("alt+shift+s",c.getLang("unlink_desc"),"unlink");c.addShortcut("alt+shift+m",c.getLang("image_desc"),"WP_Medialib");c.addShortcut("alt+shift+g",c.getLang("fullscreen.desc"),"mceFullScreen");c.addShortcut("alt+shift+z",c.getLang("wp_adv_desc"),"WP_Adv");c.addShortcut("alt+shift+h",c.getLang("help_desc"),"WP_Help");c.addShortcut("alt+shift+t",c.getLang("wp_more_desc"),"WP_More");c.addShortcut("alt+shift+p",c.getLang("wp_page_desc"),"WP_Page");c.addShortcut("ctrl+s",c.getLang("save_desc"),function(){if("function"==typeof autosave){autosave()}});if(tinymce.isWebKit){c.addShortcut("alt+shift+b",c.getLang("bold_desc"),"Bold");c.addShortcut("alt+shift+i",c.getLang("italic_desc"),"Italic")}c.onInit.add(function(j){tinymce.dom.Event.add(j.getWin(),"scroll",function(k){j.plugins.wordpress._hideButtons()});tinymce.dom.Event.add(j.getBody(),"dragstart",function(k){j.plugins.wordpress._hideButtons()})});c.onBeforeExecCommand.add(function(j,l,k,m){j.plugins.wordpress._hideButtons()});c.onSaveContent.add(function(j,k){j.plugins.wordpress._hideButtons()});c.onMouseDown.add(function(j,k){if(k.target.nodeName!="IMG"){j.plugins.wordpress._hideButtons()}});i=function(j){var k;if(j.target.id=="mceModalBlocker"||j.target.className=="ui-widget-overlay"){for(k in c.windowManager.windows){c.windowManager.close(null,k)}}};tinymce.dom.Event.remove(document.body,"click",i);tinymce.dom.Event.add(document.body,"click",i)},getInfo:function(){return{longname:"WordPress Plugin",author:"WordPress",authorurl:"http://wordpress.org",infourl:"http://wordpress.org",version:"3.0"}},_setEmbed:function(b){return b.replace(/\[embed\]([\s\S]+?)\[\/embed\][\s\u00a0]*/g,function(d,c){return'<img width="300" height="200" src="'+tinymce.baseURL+'/plugins/wordpress/img/trans.gif" class="wp-oembed mceItemNoResize" alt="'+c+'" title="'+c+'" />'})},_getEmbed:function(b){return b.replace(/<img[^>]+>/g,function(c){if(c.indexOf('class="wp-oembed')!=-1){var d=c.match(/alt="([^\"]+)"/);if(d[1]){c="[embed]"+d[1]+"[/embed]"}}return c})},_showButtons:function(f,d){var g=tinyMCE.activeEditor,i,h,b,j=tinymce.DOM,e,c;b=g.dom.getViewPort(g.getWin());i=j.getPos(g.getContentAreaContainer());h=g.dom.getPos(f);e=Math.max(h.x-b.x,0)+i.x;c=Math.max(h.y-b.y,0)+i.y;j.setStyles(d,{top:c+5+"px",left:e+5+"px",display:"block"});if(this.mceTout){clearTimeout(this.mceTout)}this.mceTout=setTimeout(function(){g.plugins.wordpress._hideButtons()},5000)},_hideButtons:function(){if(!this.mceTout){return}if(document.getElementById("wp_editbtns")){tinymce.DOM.hide("wp_editbtns")}if(document.getElementById("wp_gallerybtns")){tinymce.DOM.hide("wp_gallerybtns")}clearTimeout(this.mceTout);this.mceTout=0},_resizeIframe:function(c,e,b){var d=c.getContentAreaContainer().firstChild;a.setStyle(d,"height",d.clientHeight+b);c.theme.deltaHeight+=b},_handleMoreBreak:function(c,d){var e,b;e='<img src="'+d+'/img/trans.gif" alt="$1" class="mceWPmore mceItemNoResize" title="'+c.getLang("wordpress.wp_more_alt")+'" />';b='<img src="'+d+'/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+c.getLang("wordpress.wp_page_alt")+'" />';c.onPostRender.add(function(){if(c.theme.onResolveName){c.theme.onResolveName.add(function(f,g){if(g.node.nodeName=="IMG"){if(c.dom.hasClass(g.node,"mceWPmore")){g.name="wpmore"}if(c.dom.hasClass(g.node,"mceWPnextpage")){g.name="wppage"}}})}});c.onBeforeSetContent.add(function(f,g){if(g.content){g.content=g.content.replace(/<!--more(.*?)-->/g,e);g.content=g.content.replace(/<!--nextpage-->/g,b)}});c.onPostProcess.add(function(f,g){if(g.get){g.content=g.content.replace(/<img[^>]+>/g,function(i){if(i.indexOf('class="mceWPmore')!==-1){var h,j=(h=i.match(/alt="(.*?)"/))?h[1]:"";i="<!--more"+j+"-->"}if(i.indexOf('class="mceWPnextpage')!==-1){i="<!--nextpage-->"}return i})}});c.onNodeChange.add(function(g,f,h){f.setActive("wp_page",h.nodeName==="IMG"&&g.dom.hasClass(h,"mceWPnextpage"));f.setActive("wp_more",h.nodeName==="IMG"&&g.dom.hasClass(h,"mceWPmore"))})}});tinymce.PluginManager.add("wordpress",tinymce.plugins.WordPress)})();
\ No newline at end of file
similarity index 91%
rename from wp-includes/js/tinymce/plugins/wordpress/editor_plugin.dev.js
rename to wp-includes/js/tinymce/plugins/wordpress/editor_plugin_src.js
index c897a601c70f35f05f145adeebdcbad5b3dca5c5..40d978ff48040a251a81fcd1fd25d7e53879693e 100644 (file)
@@ -9,7 +9,7 @@
                mceTout : 0,
 
                init : function(ed, url) {
                mceTout : 0,
 
                init : function(ed, url) {
-                       var t = this, tbId = ed.getParam('wordpress_adv_toolbar', 'toolbar2'), last = 0, moreHTML, nextpageHTML;
+                       var t = this, tbId = ed.getParam('wordpress_adv_toolbar', 'toolbar2'), last = 0, moreHTML, nextpageHTML, closeOnClick;
                        moreHTML = '<img src="' + url + '/img/trans.gif" class="mceWPmore mceItemNoResize" title="'+ed.getLang('wordpress.wp_more_alt')+'" />';
                        nextpageHTML = '<img src="' + url + '/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+ed.getLang('wordpress.wp_page_alt')+'" />';
 
                        moreHTML = '<img src="' + url + '/img/trans.gif" class="mceWPmore mceItemNoResize" title="'+ed.getLang('wordpress.wp_more_alt')+'" />';
                        nextpageHTML = '<img src="' + url + '/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+ed.getLang('wordpress.wp_page_alt')+'" />';
 
@@ -63,7 +63,7 @@
                                        setUserSetting('hidetb', '0');
                                }
                        });
                                        setUserSetting('hidetb', '0');
                                }
                        });
-                       
+
                        ed.addCommand('WP_Medialib', function() {
                                var id = ed.getParam('wp_fullscreen_editor_id') || ed.getParam('fullscreen_editor_id') || ed.id,
                                        link = tinymce.DOM.select('#wp-' + id + '-media-buttons a.thickbox');
                        ed.addCommand('WP_Medialib', function() {
                                var id = ed.getParam('wp_fullscreen_editor_id') || ed.getParam('fullscreen_editor_id') || ed.id,
                                        link = tinymce.DOM.select('#wp-' + id + '-media-buttons a.thickbox');
                                        }
                                }
                        });
                                        }
                                }
                        });
-                       
+
                        ed.onInit.add(function(ed) {
                        ed.onInit.add(function(ed) {
+                               var bodyClass = ed.getParam('body_class', ''), body = ed.getBody();
+
+                               // add body classes
+                               if ( bodyClass )
+                                       bodyClass = bodyClass.split(' ');
+                               else
+                                       bodyClass = [];
+
+                               if ( ed.getParam('directionality', '') == 'rtl' )
+                                       bodyClass.push('rtl');
+
+                               if ( tinymce.isIE9 )
+                                       bodyClass.push('ie9');
+                               else if ( tinymce.isIE8 )
+                                       bodyClass.push('ie8');
+                               else if ( tinymce.isIE7 )
+                                       bodyClass.push('ie7');
+
+                               if ( ed.id != 'wp_mce_fullscreen' && ed.id != 'mce_fullscreen' )
+                                       bodyClass.push('wp-editor');
+                               else if ( ed.id == 'mce_fullscreen' )
+                                       bodyClass.push('mce-fullscreen');
+
+                               tinymce.each( bodyClass, function(cls){
+                                       if ( cls )
+                                               ed.dom.addClass(body, cls);
+                               });
+
                                // make sure these run last
                                ed.onNodeChange.add( function(ed, cm, e) {
                                        var DL;
                                // make sure these run last
                                ed.onNodeChange.add( function(ed, cm, e) {
                                        var DL;
                                        }
                                });
 
                                        }
                                });
 
-                               if ( ed.id != 'wp_mce_fullscreen' && ed.id != 'mce_fullscreen' )
-                                       ed.dom.addClass(ed.getBody(), 'wp-editor');
-                               else if ( ed.id == 'mce_fullscreen' )
-                                       ed.dom.addClass(ed.getBody(), 'mce-fullscreen');
-
                                // remove invalid parent paragraphs when pasting HTML and/or switching to the HTML editor and back
                                ed.onBeforeSetContent.add(function(ed, o) {
                                        if ( o.content ) {
                                // remove invalid parent paragraphs when pasting HTML and/or switching to the HTML editor and back
                                ed.onBeforeSetContent.add(function(ed, o) {
                                        if ( o.content ) {
                                if ( e.target.nodeName != 'IMG' )
                                        ed.plugins.wordpress._hideButtons();
                        });
                                if ( e.target.nodeName != 'IMG' )
                                        ed.plugins.wordpress._hideButtons();
                        });
+
+                       closeOnClick = function(e){
+                               var id;
+
+                               if ( e.target.id == 'mceModalBlocker' || e.target.className == 'ui-widget-overlay' ) {
+                                       for ( id in ed.windowManager.windows ) {
+                                               ed.windowManager.close(null, id);
+                                       }
+                               }
+                       }
+
+                       // close popups when clicking on the background
+                       tinymce.dom.Event.remove(document.body, 'click', closeOnClick);
+                       tinymce.dom.Event.add(document.body, 'click', closeOnClick);
                },
 
                getInfo : function() {
                },
 
                getInfo : function() {
                        moreHTML = '<img src="' + url + '/img/trans.gif" alt="$1" class="mceWPmore mceItemNoResize" title="'+ed.getLang('wordpress.wp_more_alt')+'" />';
                        nextpageHTML = '<img src="' + url + '/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+ed.getLang('wordpress.wp_page_alt')+'" />';
 
                        moreHTML = '<img src="' + url + '/img/trans.gif" alt="$1" class="mceWPmore mceItemNoResize" title="'+ed.getLang('wordpress.wp_more_alt')+'" />';
                        nextpageHTML = '<img src="' + url + '/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+ed.getLang('wordpress.wp_page_alt')+'" />';
 
-                       // Load plugin specific CSS into editor
-                       ed.onInit.add(function() {
-                               ed.dom.loadCSS(url + '/css/content.css');
-                       });
-
                        // Display morebreak instead if img in element path
                        ed.onPostRender.add(function() {
                                if (ed.theme.onResolveName) {
                        // Display morebreak instead if img in element path
                        ed.onPostRender.add(function() {
                                if (ed.theme.onResolveName) {
        // Register plugin
        tinymce.PluginManager.add('wordpress', tinymce.plugins.WordPress);
 })();
        // Register plugin
        tinymce.PluginManager.add('wordpress', tinymce.plugins.WordPress);
 })();
-
diff --git a/wp-includes/js/tinymce/plugins/wpeditimage/css/editimage-rtl.css b/wp-includes/js/tinymce/plugins/wpeditimage/css/editimage-rtl.css
deleted file mode 100644 (file)
index e78820f..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-body#media-upload ul#sidemenu {
-       left: auto;
-       right: 0;
-}
-
-#basic .align .field label {
-       display: block;
-       float: right;
-       padding: 0 24px 0 0;
-       margin: 5px 3px 5px 5px; 
-}
-
-.align .field input {
-       display: block;
-       float: right;
-       margin: 5px 15px 5px 0;
-}
-
-tr.image-size label {
-       margin: 0;
-}
-
-tr.image-size input {
-       margin: 3px 15px 0 5px;
-}
-
-.image-align-none-label,
-.image-align-left-label,
-.image-align-center-label,
-.image-align-right-label {
-       background-position: center right;
-}
-
-#media-upload .describe th.label {
-       text-align: right;
-}
-
-.show-align,
-.alignright,
-#img_size {
-       float: left;
-}
-
-tr.image-size label,
-tr.image-size input,
-#img_dim label,
-#img_dim input,
-#img_prop label,
-#img_prop input,
-#img_size_div,
-.alignleft {
-       float: right;
-}
-
-#img_dim label,
-#img_prop label {
-       margin: 5px 0pt;
-}
-
-#img_dim input,
-#img_prop input {
-       margin: 0 5px 0 10px;
-}
-
-#img_size_title {
-       text-align: left;
-}
index 323591d91d956bdd60cdc47294284d43b8d1ba61..3b7e1566edc458bc2f225e77feb6e18fb0010a87 100644 (file)
@@ -334,7 +334,7 @@ div#media-upload-header {
        position: relative;
        border-bottom-width: 1px;
        border-bottom-style: solid;
        position: relative;
        border-bottom-width: 1px;
        border-bottom-style: solid;
-       height: 2.5em;
+       height: 33px;
        background-color: #f9f9f9;
        border-bottom-color: #dfdfdf;
 }
        background-color: #f9f9f9;
        border-bottom-color: #dfdfdf;
 }
@@ -357,3 +357,75 @@ div#media-upload-error {
        color: #CFCFCF;
 }
 
        color: #CFCFCF;
 }
 
+.hidden {
+       display: none;
+}
+
+/* RTL */
+body#media-upload.rtl ul#sidemenu {
+       left: auto;
+       right: 0;
+}
+
+.rtl #basic .align .field label {
+       display: block;
+       float: right;
+       padding: 0 24px 0 0;
+       margin: 5px 3px 5px 5px; 
+}
+
+.rtl .align .field input {
+       display: block;
+       float: right;
+       margin: 5px 15px 5px 0;
+}
+
+.rtl tr.image-size label {
+       margin: 0;
+}
+
+.rtl tr.image-size input {
+       margin: 3px 15px 0 5px;
+}
+
+.rtl .image-align-none-label,
+.rtl .image-align-left-label,
+.rtl .image-align-center-label,
+.rtl .image-align-right-label {
+       background-position: center right;
+}
+
+#media-upload.rtl .describe th.label {
+       text-align: right;
+}
+
+.rtl .show-align,
+.rtl .alignright,
+.rtl #img_size {
+       float: left;
+}
+
+.rtl tr.image-size label,
+.rtl tr.image-size input,
+.rtl #img_dim label,
+.rtl #img_dim input,
+.rtl #img_prop label,
+.rtl #img_prop input,
+.rtl #img_size_div,
+.rtl .alignleft {
+       float: right;
+}
+
+.rtl #img_dim label,
+.rtl #img_prop label {
+       margin: 5px 0pt;
+}
+
+.rtl #img_dim input,
+.rtl #img_prop input {
+       margin: 0 5px 0 10px;
+}
+
+.rtl #img_size_title {
+       text-align: left;
+}
index d7ad22716838e923e8125d69d3280c93ca5776dc..b7460289d77a03df78f2e8ab01ac8d89cba6a3d1 100644 (file)
@@ -1,22 +1,20 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html>
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 <title></title>
 
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 <title></title>
 
-<script type="text/javascript" src="js/editimage.js?ver=327"></script>
-<script type="text/javascript" src="../../utils/form_utils.js?ver=3223"></script>
-
-<link rel="stylesheet" href="css/editimage.css?ver=327" type="text/css" media="all" />
-
-<script type="text/javascript">
-if ( 'rtl' == tinyMCEPopup.editor.getParam('directionality','') )
-       document.write('<link rel="stylesheet" href="css/editimage-rtl.css?ver=3223" type="text/css" media="all" />');
-</script>
+<link rel="stylesheet" href="css/editimage.css?ver=349-20679" type="text/css" media="all" />
+<script type="text/javascript" src="js/editimage.js?ver=349-20679"></script>
+<script type="text/javascript" src="../../utils/form_utils.js?ver=349-20592"></script>
 <base target="_self" />
 </head>
 
 <body id="media-upload" style="display:none;">
 <base target="_self" />
 </head>
 
 <body id="media-upload" style="display:none;">
+<script type="text/javascript">
+if ( 'rtl' == tinyMCEPopup.editor.getParam('directionality','') )
+       document.body.className += ' rtl';
+</script>
 <div id="media-upload-header">
        <ul id="sidemenu">
        <li><a href="javascript:;" id="tab_basic" class="current" onclick="wpImage.setTabs(this);">{#wpeditimage.edit_img}</a></li>
 <div id="media-upload-header">
        <ul id="sidemenu">
        <li><a href="javascript:;" id="tab_basic" class="current" onclick="wpImage.setTabs(this);">{#wpeditimage.edit_img}</a></li>
@@ -103,7 +101,7 @@ if ( 'rtl' == tinyMCEPopup.editor.getParam('directionality','') )
                                </label>
                        </th>
                        <td class="field">
                                </label>
                        </th>
                        <td class="field">
-                               <input type="text" id="img_cap" name="img_cap" value="" size="60" />
+                               <textarea id="img_cap_text"></textarea>
                        </td>
                </tr>
 
                        </td>
                </tr>
 
diff --git a/wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.dev.js b/wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.dev.js
deleted file mode 100644 (file)
index f79b625..0000000
+++ /dev/null
@@ -1,233 +0,0 @@
-
-(function() {
-       tinymce.create('tinymce.plugins.wpEditImage', {
-
-               init : function(ed, url) {
-                       var t = this, mouse = {};
-
-                       t.url = url;
-                       t._createButtons();
-
-                       // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('...');
-                       ed.addCommand('WP_EditImage', function() {
-                               var el = ed.selection.getNode(), vp = tinymce.DOM.getViewPort(), H = vp.h, W = ( 720 < vp.w ) ? 720 : vp.w, cls = ed.dom.getAttrib(el, 'class');
-
-                               if ( cls.indexOf('mceItem') != -1 || cls.indexOf('wpGallery') != -1 || el.nodeName != 'IMG' )
-                                       return;
-
-                               tb_show('', url + '/editimage.html?ver=321&TB_iframe=true');
-                               tinymce.DOM.setStyles('TB_window', {
-                                       'width':( W - 50 )+'px',
-                                       'height':( H - 45 )+'px',
-                                       'margin-left':'-'+parseInt((( W - 50 ) / 2),10) + 'px'
-                               });
-
-                               if ( ! tinymce.isIE6 ) {
-                                       tinymce.DOM.setStyles('TB_window', {
-                                               'top':'20px',
-                                               'marginTop':'0'
-                                       });
-                               }
-
-                               tinymce.DOM.setStyles('TB_iframeContent', {
-                                       'width':( W - 50 )+'px',
-                                       'height':( H - 75 )+'px'
-                               });
-                               tinymce.DOM.setStyle( ['TB_overlay','TB_window','TB_load'], 'z-index', '999999' );
-                       });
-
-                       ed.onInit.add(function(ed) {
-                               tinymce.dom.Event.add(ed.getBody(), 'dragstart', function(e) {
-                                       if ( !tinymce.isGecko && e.target.nodeName == 'IMG' && ed.dom.getParent(e.target, 'dl.wp-caption') )
-                                               return tinymce.dom.Event.cancel(e);
-                               });
-                       });
-
-                       // resize the caption <dl> when the image is soft-resized by the user (only possible in Firefox and IE)
-                       ed.onMouseUp.add(function(ed, e) {
-                               if ( tinymce.isWebKit || tinymce.isOpera )
-                                       return;
-
-                               if ( mouse.x && (e.clientX != mouse.x || e.clientY != mouse.y) ) {
-                                       var n = ed.selection.getNode();
-
-                                       if ( 'IMG' == n.nodeName ) {
-                                               window.setTimeout(function(){
-                                                       var DL, width;
-
-                                                       if ( n.width != mouse.img_w || n.height != mouse.img_h )
-                                                               n.className = n.className.replace(/size-[^ "']+/, '');
-
-                                                       if ( ed.dom.getParent(n, 'div.mceTemp') ) {
-                                                               DL = ed.dom.getParent(n, 'dl.wp-caption');
-
-                                                               if ( DL ) {
-                                                                       width = ed.dom.getAttrib(n, 'width') || n.width;
-                                                                       width = parseInt(width, 10);
-                                                                       ed.dom.setStyle(DL, 'width', 10 + width);
-                                                                       ed.execCommand('mceRepaint');
-                                                               }
-
-                                                       }
-                                               }, 100);
-                                       }
-                               }
-                               mouse = {};
-                       });
-
-                       // show editimage buttons
-                       ed.onMouseDown.add(function(ed, e) {
-
-                               if ( e.target && ( e.target.nodeName == 'IMG' || (e.target.firstChild && e.target.firstChild.nodeName == 'IMG') ) ) {
-                                       mouse = {
-                                               x: e.clientX,
-                                               y: e.clientY,
-                                               img_w: e.target.clientWidth,
-                                               img_h: e.target.clientHeight
-                                       };
-
-                                       if ( ed.dom.getAttrib(e.target, 'class').indexOf('mceItem') == -1 )
-                                               ed.plugins.wordpress._showButtons(e.target, 'wp_editbtns');
-                               }
-                       });
-
-                       // when pressing Return inside a caption move the cursor to a new parapraph under it
-                       ed.onKeyPress.add(function(ed, e) {
-                               var n, DL, DIV, P;
-
-                               if ( e.keyCode == 13 ) {
-                                       n = ed.selection.getNode();
-                                       DL = ed.dom.getParent(n, 'dl.wp-caption');
-                                       DIV = ed.dom.getParent(DL, 'div.mceTemp');
-
-                                       if ( DL && DIV ) {
-                                               P = ed.dom.create('p', {}, '&nbsp;');
-                                               ed.dom.insertAfter( P, DIV );
-                                               
-                                               if ( P.firstChild )
-                                                       ed.selection.select(P.firstChild);
-                                               else
-                                                       ed.selection.select(P);
-                                               
-                                               tinymce.dom.Event.cancel(e);
-                                               return false;
-                                       }
-                               }
-                       });
-
-                       ed.onBeforeSetContent.add(function(ed, o) {
-                               o.content = t._do_shcode(o.content);
-                       });
-
-                       ed.onPostProcess.add(function(ed, o) {
-                               if (o.get)
-                                       o.content = t._get_shcode(o.content);
-                       });
-               },
-
-               _do_shcode : function(co) {
-                       return co.replace(/(?:<p>)?\[(?:wp_)?caption([^\]]+)\]([\s\S]+?)\[\/(?:wp_)?caption\](?:<\/p>)?[\s\u00a0]*/g, function(a,b,c){
-                               var id, cls, w, cap, div_cls;
-                               
-                               b = b.replace(/\\'|\\&#39;|\\&#039;/g, '&#39;').replace(/\\"|\\&quot;/g, '&quot;');
-                               c = c.replace(/\\&#39;|\\&#039;/g, '&#39;').replace(/\\&quot;/g, '&quot;');
-                               id = b.match(/id=['"]([^'"]+)/i);
-                               cls = b.match(/align=['"]([^'"]+)/i);
-                               w = b.match(/width=['"]([0-9]+)/);
-                               cap = b.match(/caption=['"]([^'"]+)/i);
-
-                               id = ( id && id[1] ) ? id[1] : '';
-                               cls = ( cls && cls[1] ) ? cls[1] : 'alignnone';
-                               w = ( w && w[1] ) ? w[1] : '';
-                               cap = ( cap && cap[1] ) ? cap[1] : '';
-                               if ( ! w || ! cap ) return c;
-                               
-                               div_cls = (cls == 'aligncenter') ? 'mceTemp mceIEcenter' : 'mceTemp';
-
-                               return '<div class="'+div_cls+'" draggable><dl id="'+id+'" class="wp-caption '+cls+'" style="width: '+(10+parseInt(w))+
-                               'px"><dt class="wp-caption-dt">'+c+'</dt><dd class="wp-caption-dd">'+cap+'</dd></dl></div>';
-                       });
-               },
-
-               _get_shcode : function(co) {
-                       return co.replace(/<div class="mceTemp[^"]*">\s*<dl([^>]+)>\s*<dt[^>]+>([\s\S]+?)<\/dt>\s*<dd[^>]+>(.+?)<\/dd>\s*<\/dl>\s*<\/div>\s*/gi, function(a,b,c,cap){
-                               var id, cls, w;
-                               
-                               id = b.match(/id=['"]([^'"]+)/i);
-                               cls = b.match(/class=['"]([^'"]+)/i);
-                               w = c.match(/width=['"]([0-9]+)/);
-
-                               id = ( id && id[1] ) ? id[1] : '';
-                               cls = ( cls && cls[1] ) ? cls[1] : 'alignnone';
-                               w = ( w && w[1] ) ? w[1] : '';
-
-                               if ( ! w || ! cap ) return c;
-                               cls = cls.match(/align[^ '"]+/) || 'alignnone';
-                               cap = cap.replace(/<\S[^<>]*>/gi, '').replace(/'/g, '&#39;').replace(/"/g, '&quot;');
-
-                               return '[caption id="'+id+'" align="'+cls+'" width="'+w+'" caption="'+cap+'"]'+c+'[/caption]';
-                       });
-               },
-
-               _createButtons : function() {
-                       var t = this, ed = tinyMCE.activeEditor, DOM = tinymce.DOM, editButton, dellButton;
-
-                       DOM.remove('wp_editbtns');
-
-                       DOM.add(document.body, 'div', {
-                               id : 'wp_editbtns',
-                               style : 'display:none;'
-                       });
-
-                       editButton = DOM.add('wp_editbtns', 'img', {
-                               src : t.url+'/img/image.png',
-                               id : 'wp_editimgbtn',
-                               width : '24',
-                               height : '24',
-                               title : ed.getLang('wpeditimage.edit_img')
-                       });
-
-                       tinymce.dom.Event.add(editButton, 'mousedown', function(e) {
-                               var ed = tinyMCE.activeEditor;
-                               ed.windowManager.bookmark = ed.selection.getBookmark('simple');
-                               ed.execCommand("WP_EditImage");
-                       });
-
-                       dellButton = DOM.add('wp_editbtns', 'img', {
-                               src : t.url+'/img/delete.png',
-                               id : 'wp_delimgbtn',
-                               width : '24',
-                               height : '24',
-                               title : ed.getLang('wpeditimage.del_img')
-                       });
-
-                       tinymce.dom.Event.add(dellButton, 'mousedown', function(e) {
-                               var ed = tinyMCE.activeEditor, el = ed.selection.getNode(), p;
-
-                               if ( el.nodeName == 'IMG' && ed.dom.getAttrib(el, 'class').indexOf('mceItem') == -1 ) {
-                                       if ( (p = ed.dom.getParent(el, 'div')) && ed.dom.hasClass(p, 'mceTemp') )
-                                               ed.dom.remove(p);
-                                       else if ( (p = ed.dom.getParent(el, 'A')) && p.childNodes.length == 1 )
-                                               ed.dom.remove(p);
-                                       else
-                                               ed.dom.remove(el);
-
-                                       ed.execCommand('mceRepaint');
-                                       return false;
-                               }
-                       });
-               },
-
-               getInfo : function() {
-                       return {
-                               longname : 'Edit Image',
-                               author : 'WordPress',
-                               authorurl : 'http://wordpress.org',
-                               infourl : '',
-                               version : "1.0"
-                       };
-               }
-       });
-
-       tinymce.PluginManager.add('wpeditimage', tinymce.plugins.wpEditImage);
-})();
index fae5b5c985bff6ffb267c88c3fba2f2d5dce0c3f..570444350d6b2e3a9b6dcb637f7531cfd4887d72 100644 (file)
@@ -1 +1 @@
-(function(){tinymce.create("tinymce.plugins.wpEditImage",{init:function(a,c){var d=this,b={};d.url=c;d._createButtons();a.addCommand("WP_EditImage",function(){var i=a.selection.getNode(),g=tinymce.DOM.getViewPort(),h=g.h,e=(720<g.w)?720:g.w,f=a.dom.getAttrib(i,"class");if(f.indexOf("mceItem")!=-1||f.indexOf("wpGallery")!=-1||i.nodeName!="IMG"){return}tb_show("",c+"/editimage.html?ver=321&TB_iframe=true");tinymce.DOM.setStyles("TB_window",{width:(e-50)+"px",height:(h-45)+"px","margin-left":"-"+parseInt(((e-50)/2),10)+"px"});if(!tinymce.isIE6){tinymce.DOM.setStyles("TB_window",{top:"20px",marginTop:"0"})}tinymce.DOM.setStyles("TB_iframeContent",{width:(e-50)+"px",height:(h-75)+"px"});tinymce.DOM.setStyle(["TB_overlay","TB_window","TB_load"],"z-index","999999")});a.onInit.add(function(e){tinymce.dom.Event.add(e.getBody(),"dragstart",function(f){if(!tinymce.isGecko&&f.target.nodeName=="IMG"&&e.dom.getParent(f.target,"dl.wp-caption")){return tinymce.dom.Event.cancel(f)}})});a.onMouseUp.add(function(f,g){if(tinymce.isWebKit||tinymce.isOpera){return}if(b.x&&(g.clientX!=b.x||g.clientY!=b.y)){var h=f.selection.getNode();if("IMG"==h.nodeName){window.setTimeout(function(){var e,i;if(h.width!=b.img_w||h.height!=b.img_h){h.className=h.className.replace(/size-[^ "']+/,"")}if(f.dom.getParent(h,"div.mceTemp")){e=f.dom.getParent(h,"dl.wp-caption");if(e){i=f.dom.getAttrib(h,"width")||h.width;i=parseInt(i,10);f.dom.setStyle(e,"width",10+i);f.execCommand("mceRepaint")}}},100)}}b={}});a.onMouseDown.add(function(f,g){if(g.target&&(g.target.nodeName=="IMG"||(g.target.firstChild&&g.target.firstChild.nodeName=="IMG"))){b={x:g.clientX,y:g.clientY,img_w:g.target.clientWidth,img_h:g.target.clientHeight};if(f.dom.getAttrib(g.target,"class").indexOf("mceItem")==-1){f.plugins.wordpress._showButtons(g.target,"wp_editbtns")}}});a.onKeyPress.add(function(f,j){var k,g,i,h;if(j.keyCode==13){k=f.selection.getNode();g=f.dom.getParent(k,"dl.wp-caption");i=f.dom.getParent(g,"div.mceTemp");if(g&&i){h=f.dom.create("p",{},"&nbsp;");f.dom.insertAfter(h,i);if(h.firstChild){f.selection.select(h.firstChild)}else{f.selection.select(h)}tinymce.dom.Event.cancel(j);return false}}});a.onBeforeSetContent.add(function(e,f){f.content=d._do_shcode(f.content)});a.onPostProcess.add(function(e,f){if(f.get){f.content=d._get_shcode(f.content)}})},_do_shcode:function(a){return a.replace(/(?:<p>)?\[(?:wp_)?caption([^\]]+)\]([\s\S]+?)\[\/(?:wp_)?caption\](?:<\/p>)?[\s\u00a0]*/g,function(g,d,k){var j,f,e,h,i;d=d.replace(/\\'|\\&#39;|\\&#039;/g,"&#39;").replace(/\\"|\\&quot;/g,"&quot;");k=k.replace(/\\&#39;|\\&#039;/g,"&#39;").replace(/\\&quot;/g,"&quot;");j=d.match(/id=['"]([^'"]+)/i);f=d.match(/align=['"]([^'"]+)/i);e=d.match(/width=['"]([0-9]+)/);h=d.match(/caption=['"]([^'"]+)/i);j=(j&&j[1])?j[1]:"";f=(f&&f[1])?f[1]:"alignnone";e=(e&&e[1])?e[1]:"";h=(h&&h[1])?h[1]:"";if(!e||!h){return k}i=(f=="aligncenter")?"mceTemp mceIEcenter":"mceTemp";return'<div class="'+i+'" draggable><dl id="'+j+'" class="wp-caption '+f+'" style="width: '+(10+parseInt(e))+'px"><dt class="wp-caption-dt">'+k+'</dt><dd class="wp-caption-dd">'+h+"</dd></dl></div>"})},_get_shcode:function(a){return a.replace(/<div class="mceTemp[^"]*">\s*<dl([^>]+)>\s*<dt[^>]+>([\s\S]+?)<\/dt>\s*<dd[^>]+>(.+?)<\/dd>\s*<\/dl>\s*<\/div>\s*/gi,function(g,d,j,h){var i,f,e;i=d.match(/id=['"]([^'"]+)/i);f=d.match(/class=['"]([^'"]+)/i);e=j.match(/width=['"]([0-9]+)/);i=(i&&i[1])?i[1]:"";f=(f&&f[1])?f[1]:"alignnone";e=(e&&e[1])?e[1]:"";if(!e||!h){return j}f=f.match(/align[^ '"]+/)||"alignnone";h=h.replace(/<\S[^<>]*>/gi,"").replace(/'/g,"&#39;").replace(/"/g,"&quot;");return'[caption id="'+i+'" align="'+f+'" width="'+e+'" caption="'+h+'"]'+j+"[/caption]"})},_createButtons:function(){var b=this,a=tinyMCE.activeEditor,d=tinymce.DOM,e,c;d.remove("wp_editbtns");d.add(document.body,"div",{id:"wp_editbtns",style:"display:none;"});e=d.add("wp_editbtns","img",{src:b.url+"/img/image.png",id:"wp_editimgbtn",width:"24",height:"24",title:a.getLang("wpeditimage.edit_img")});tinymce.dom.Event.add(e,"mousedown",function(g){var f=tinyMCE.activeEditor;f.windowManager.bookmark=f.selection.getBookmark("simple");f.execCommand("WP_EditImage")});c=d.add("wp_editbtns","img",{src:b.url+"/img/delete.png",id:"wp_delimgbtn",width:"24",height:"24",title:a.getLang("wpeditimage.del_img")});tinymce.dom.Event.add(c,"mousedown",function(i){var f=tinyMCE.activeEditor,g=f.selection.getNode(),h;if(g.nodeName=="IMG"&&f.dom.getAttrib(g,"class").indexOf("mceItem")==-1){if((h=f.dom.getParent(g,"div"))&&f.dom.hasClass(h,"mceTemp")){f.dom.remove(h)}else{if((h=f.dom.getParent(g,"A"))&&h.childNodes.length==1){f.dom.remove(h)}else{f.dom.remove(g)}}f.execCommand("mceRepaint");return false}})},getInfo:function(){return{longname:"Edit Image",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wpeditimage",tinymce.plugins.wpEditImage)})();
\ No newline at end of file
+(function(){tinymce.create("tinymce.plugins.wpEditImage",{url:"",editor:{},init:function(a,c){var d=this,b={};d.url=c;d.editor=a;d._createButtons();a.addCommand("WP_EditImage",function(){var i=a.selection.getNode(),g,h,e,f=a.dom.getAttrib(i,"class");if(f.indexOf("mceItem")!=-1||f.indexOf("wpGallery")!=-1||i.nodeName!="IMG"){return}g=tinymce.DOM.getViewPort();h=680<(g.h-70)?680:g.h-70;e=650<g.w?650:g.w;a.windowManager.open({file:c+"/editimage.html",width:e+"px",height:h+"px",inline:true})});a.onInit.add(function(e){e.dom.events.add(e.getBody(),"dragstart",function(g){var f;if(g.target.nodeName=="IMG"&&(f=e.dom.getParent(g.target,"div.mceTemp"))){e.selection.select(f)}})});a.onMouseUp.add(function(f,g){if(tinymce.isWebKit||tinymce.isOpera){return}if(b.x&&(g.clientX!=b.x||g.clientY!=b.y)){var h=f.selection.getNode();if("IMG"==h.nodeName){window.setTimeout(function(){var e=f.dom.getParent(h,"dl.wp-caption"),i;if(h.width!=b.img_w||h.height!=b.img_h){h.className=h.className.replace(/size-[^ "']+/,"")}if(e){i=f.dom.getAttrib(h,"width")||h.width;i=parseInt(i,10);f.dom.setStyle(e,"width",10+i);f.execCommand("mceRepaint")}},100)}}b={}});a.onMouseDown.add(function(f,h){var g=h.target;if(g.nodeName!="IMG"){if(g.firstChild&&g.firstChild.nodeName=="IMG"&&g.childNodes.length==1){g=g.firstChild}else{return}}if(f.dom.getAttrib(g,"class").indexOf("mceItem")==-1){b={x:h.clientX,y:h.clientY,img_w:g.clientWidth,img_h:g.clientHeight};f.plugins.wordpress._showButtons(g,"wp_editbtns")}});a.onKeyPress.add(function(f,j){var k,g,i,h;if(j.keyCode==13){k=f.selection.getNode();g=f.dom.getParent(k,"dl.wp-caption");if(g){i=f.dom.getParent(g,"div.mceTemp")}if(i){h=f.dom.create("p",{},"<br>");f.dom.insertAfter(h,i);f.selection.select(h.firstChild);if(tinymce.isIE){f.selection.setContent("")}else{f.selection.setContent('<br _moz_dirty="">');f.selection.setCursorLocation(h,0)}f.dom.events.cancel(j);return false}}});a.onBeforeSetContent.add(function(e,f){f.content=e.wpSetImgCaption(f.content)});a.onPostProcess.add(function(e,f){if(f.get){f.content=e.wpGetImgCaption(f.content)}});a.wpSetImgCaption=function(e){return d._do_shcode(e)};a.wpGetImgCaption=function(e){return d._get_shcode(e)}},_do_shcode:function(a){return a.replace(/(?:<p>)?\[(?:wp_)?caption([^\]]+)\]([\s\S]+?)\[\/(?:wp_)?caption\](?:<\/p>)?/g,function(j,i,h){var d,m,k,l,f,g,e=tinymce.trim;d=i.match(/id=['"]([^'"]*)['"] ?/);i=i.replace(d[0],"");m=i.match(/align=['"]([^'"]*)['"] ?/);i=i.replace(m[0],"");k=i.match(/width=['"]([0-9]*)['"] ?/);i=i.replace(k[0],"");h=e(h);g=h.match(/((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)([\s\S]*)/i);if(g&&g[2]){l=e(g[2]);g=e(g[1])}else{l=e(i).replace(/caption=['"]/,"").replace(/['"]$/,"");g=h}d=(d&&d[1])?d[1]:"";m=(m&&m[1])?m[1]:"alignnone";k=(k&&k[1])?k[1]:"";if(!k||!l){return h}f="mceTemp";if(m=="aligncenter"){f+=" mceIEcenter"}return'<div class="'+f+'"><dl id="'+d+'" class="wp-caption '+m+'" style="width: '+(10+parseInt(k))+'px"><dt class="wp-caption-dt">'+g+'</dt><dd class="wp-caption-dd">'+l+"</dd></dl></div>"})},_get_shcode:function(a){return a.replace(/<div (?:id="attachment_|class="mceTemp)[^>]*>([\s\S]+?)<\/div>/g,function(d,c){var e=c.replace(/<dl ([^>]+)>\s*<dt [^>]+>([\s\S]+?)<\/dt>\s*<dd [^>]+>([\s\S]*?)<\/dd>\s*<\/dl>/gi,function(i,f,l,j){var k,h,g;g=l.match(/width="([0-9]*)"/);g=(g&&g[1])?g[1]:"";if(!g||!j){return l}k=f.match(/id="([^"]*)"/);k=(k&&k[1])?k[1]:"";h=f.match(/class="([^"]*)"/);h=(h&&h[1])?h[1]:"";h=h.match(/align[a-z]+/)||"alignnone";j=j.replace(/\r\n|\r/g,"\n").replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g,function(b){return b.replace(/[\r\n\t]+/," ")});j=j.replace(/\s*\n\s*/g,"<br />");return'[caption id="'+k+'" align="'+h+'" width="'+g+'"]'+l+" "+j+"[/caption]"});if(e.indexOf("[caption")!==0){e=c.replace(/[\s\S]*?((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)(<p>[\s\S]*<\/p>)?[\s\S]*/gi,"<p>$1</p>$2")}return e})},_createButtons:function(){var b=this,a=tinyMCE.activeEditor,d=tinymce.DOM,e,c;d.remove("wp_editbtns");d.add(document.body,"div",{id:"wp_editbtns",style:"display:none;"});e=d.add("wp_editbtns","img",{src:b.url+"/img/image.png",id:"wp_editimgbtn",width:"24",height:"24",title:a.getLang("wpeditimage.edit_img")});tinymce.dom.Event.add(e,"mousedown",function(g){var f=tinyMCE.activeEditor;f.windowManager.bookmark=f.selection.getBookmark("simple");f.execCommand("WP_EditImage")});c=d.add("wp_editbtns","img",{src:b.url+"/img/delete.png",id:"wp_delimgbtn",width:"24",height:"24",title:a.getLang("wpeditimage.del_img")});tinymce.dom.Event.add(c,"mousedown",function(i){var f=tinyMCE.activeEditor,g=f.selection.getNode(),h;if(g.nodeName=="IMG"&&f.dom.getAttrib(g,"class").indexOf("mceItem")==-1){if((h=f.dom.getParent(g,"div"))&&f.dom.hasClass(h,"mceTemp")){f.dom.remove(h)}else{if((h=f.dom.getParent(g,"A"))&&h.childNodes.length==1){f.dom.remove(h)}else{f.dom.remove(g)}}f.execCommand("mceRepaint");return false}})},getInfo:function(){return{longname:"Edit Image",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wpeditimage",tinymce.plugins.wpEditImage)})();
\ No newline at end of file
diff --git a/wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin_src.js b/wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin_src.js
new file mode 100644 (file)
index 0000000..c241158
--- /dev/null
@@ -0,0 +1,281 @@
+
+(function() {
+       tinymce.create('tinymce.plugins.wpEditImage', {
+               url: '',
+               editor: {},
+
+               init: function(ed, url) {
+                       var t = this, mouse = {};
+
+                       t.url = url;
+                       t.editor = ed;
+                       t._createButtons();
+
+                       // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('...');
+                       ed.addCommand('WP_EditImage', function() {
+                               var el = ed.selection.getNode(), vp, H, W, cls = ed.dom.getAttrib(el, 'class');
+
+                               if ( cls.indexOf('mceItem') != -1 || cls.indexOf('wpGallery') != -1 || el.nodeName != 'IMG' )
+                                       return;
+
+                               vp = tinymce.DOM.getViewPort();
+                               H = 680 < (vp.h - 70) ? 680 : vp.h - 70;
+                               W = 650 < vp.w ? 650 : vp.w;
+
+                               ed.windowManager.open({
+                                       file: url + '/editimage.html',
+                                       width: W+'px',
+                                       height: H+'px',
+                                       inline: true
+                               });
+                       });
+
+                       ed.onInit.add(function(ed) {
+                               ed.dom.events.add(ed.getBody(), 'dragstart', function(e) {
+                                       var parent;
+
+                                       if ( e.target.nodeName == 'IMG' && ( parent = ed.dom.getParent(e.target, 'div.mceTemp') ) ) {
+                                               ed.selection.select(parent);
+                                       }
+                               });
+                       });
+
+                       // resize the caption <dl> when the image is soft-resized by the user (only possible in Firefox and IE)
+                       ed.onMouseUp.add(function(ed, e) {
+                               if ( tinymce.isWebKit || tinymce.isOpera )
+                                       return;
+
+                               if ( mouse.x && (e.clientX != mouse.x || e.clientY != mouse.y) ) {
+                                       var n = ed.selection.getNode();
+
+                                       if ( 'IMG' == n.nodeName ) {
+                                               window.setTimeout(function(){
+                                                       var DL = ed.dom.getParent(n, 'dl.wp-caption'), width;
+
+                                                       if ( n.width != mouse.img_w || n.height != mouse.img_h )
+                                                               n.className = n.className.replace(/size-[^ "']+/, '');
+
+                                                       if ( DL ) {
+                                                               width = ed.dom.getAttrib(n, 'width') || n.width;
+                                                               width = parseInt(width, 10);
+                                                               ed.dom.setStyle(DL, 'width', 10 + width);
+                                                               ed.execCommand('mceRepaint');
+                                                       }
+                                               }, 100);
+                                       }
+                               }
+                               mouse = {};
+                       });
+
+                       // show editimage buttons
+                       ed.onMouseDown.add(function(ed, e) {
+                               var target = e.target;
+
+                               if ( target.nodeName != 'IMG' ) {
+                                       if ( target.firstChild && target.firstChild.nodeName == 'IMG' && target.childNodes.length == 1 )
+                                               target = target.firstChild;
+                                       else
+                                               return;
+                               }
+
+                               if ( ed.dom.getAttrib(target, 'class').indexOf('mceItem') == -1 ) {
+                                       mouse = {
+                                               x: e.clientX,
+                                               y: e.clientY,
+                                               img_w: target.clientWidth,
+                                               img_h: target.clientHeight
+                                       };
+
+                                       ed.plugins.wordpress._showButtons(target, 'wp_editbtns');
+                               }
+                       });
+
+                       // when pressing Return inside a caption move the caret to a new parapraph under it
+                       ed.onKeyPress.add(function(ed, e) {
+                               var n, DL, DIV, P;
+
+                               if ( e.keyCode == 13 ) {
+                                       n = ed.selection.getNode();
+                                       DL = ed.dom.getParent(n, 'dl.wp-caption');
+
+                                       if ( DL )
+                                               DIV = ed.dom.getParent(DL, 'div.mceTemp');
+
+                                       if ( DIV ) {
+                                               P = ed.dom.create('p', {}, '<br>');
+                                               ed.dom.insertAfter( P, DIV );
+                                               ed.selection.select(P.firstChild);
+
+                                               if ( tinymce.isIE ) {
+                                                       ed.selection.setContent('');
+                                               } else {
+                                                       ed.selection.setContent('<br _moz_dirty="">');
+                                                       ed.selection.setCursorLocation(P, 0);
+                                               }
+
+                                               ed.dom.events.cancel(e);
+                                               return false;
+                                       }
+                               }
+                       });
+
+                       ed.onBeforeSetContent.add(function(ed, o) {
+                               o.content = ed.wpSetImgCaption(o.content);
+                       });
+
+                       ed.onPostProcess.add(function(ed, o) {
+                               if (o.get)
+                                       o.content = ed.wpGetImgCaption(o.content);
+                       });
+
+                       ed.wpSetImgCaption = function(content) {
+                               return t._do_shcode(content);
+                       };
+
+                       ed.wpGetImgCaption = function(content) {
+                               return t._get_shcode(content);
+                       };
+               },
+
+               _do_shcode : function(content) {
+                       return content.replace(/(?:<p>)?\[(?:wp_)?caption([^\]]+)\]([\s\S]+?)\[\/(?:wp_)?caption\](?:<\/p>)?/g, function(a,b,c){
+                               var id, cls, w, cap, div_cls, img, trim = tinymce.trim;
+
+                               id = b.match(/id=['"]([^'"]*)['"] ?/);
+                               b = b.replace(id[0], '');
+
+                               cls = b.match(/align=['"]([^'"]*)['"] ?/);
+                               b = b.replace(cls[0], '');
+
+                               w = b.match(/width=['"]([0-9]*)['"] ?/);
+                               b = b.replace(w[0], '');
+
+                               c = trim(c);
+                               img = c.match(/((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)([\s\S]*)/i);
+
+                               if ( img && img[2] ) {
+                                       cap = trim( img[2] );
+                                       img = trim( img[1] );
+                               } else {
+                                       // old captions shortcode style
+                                       cap = trim(b).replace(/caption=['"]/, '').replace(/['"]$/, '');
+                                       img = c;
+                               }
+
+                               id = ( id && id[1] ) ? id[1] : '';
+                               cls = ( cls && cls[1] ) ? cls[1] : 'alignnone';
+                               w = ( w && w[1] ) ? w[1] : '';
+
+                               if ( !w || !cap )
+                                       return c;
+
+                               div_cls = 'mceTemp';
+                               if ( cls == 'aligncenter' )
+                                       div_cls += ' mceIEcenter';
+
+                               return '<div class="'+div_cls+'"><dl id="'+id+'" class="wp-caption '+cls+'" style="width: '+( 10 + parseInt(w) )+
+                               'px"><dt class="wp-caption-dt">'+img+'</dt><dd class="wp-caption-dd">'+cap+'</dd></dl></div>';
+                       });
+               },
+
+               _get_shcode : function(content) {
+                       return content.replace(/<div (?:id="attachment_|class="mceTemp)[^>]*>([\s\S]+?)<\/div>/g, function(a, b){
+                               var ret = b.replace(/<dl ([^>]+)>\s*<dt [^>]+>([\s\S]+?)<\/dt>\s*<dd [^>]+>([\s\S]*?)<\/dd>\s*<\/dl>/gi, function(a,b,c,cap){
+                                       var id, cls, w;
+
+                                       w = c.match(/width="([0-9]*)"/);
+                                       w = ( w && w[1] ) ? w[1] : '';
+
+                                       if ( !w || !cap )
+                                               return c;
+
+                                       id = b.match(/id="([^"]*)"/);
+                                       id = ( id && id[1] ) ? id[1] : '';
+
+                                       cls = b.match(/class="([^"]*)"/);
+                                       cls = ( cls && cls[1] ) ? cls[1] : '';
+                                       cls = cls.match(/align[a-z]+/) || 'alignnone';
+
+                                       cap = cap.replace(/\r\n|\r/g, '\n').replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g, function(a){
+                                               // no line breaks inside HTML tags
+                                               return a.replace(/[\r\n\t]+/, ' ');
+                                       });
+
+                                       // convert remaining line breaks to <br>
+                                       cap = cap.replace(/\s*\n\s*/g, '<br />');
+
+                                       return '[caption id="'+id+'" align="'+cls+'" width="'+w+'"]'+c+' '+cap+'[/caption]';
+                               });
+
+                               if ( ret.indexOf('[caption') !== 0 ) {
+                                       // the caption html seems brocken, try to find the image that may be wrapped in a link
+                                       // and may be followed by <p> with the caption text.
+                                       ret = b.replace(/[\s\S]*?((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)(<p>[\s\S]*<\/p>)?[\s\S]*/gi, '<p>$1</p>$2');
+                               }
+
+                               return ret;
+                       });
+               },
+
+               _createButtons : function() {
+                       var t = this, ed = tinyMCE.activeEditor, DOM = tinymce.DOM, editButton, dellButton;
+
+                       DOM.remove('wp_editbtns');
+
+                       DOM.add(document.body, 'div', {
+                               id : 'wp_editbtns',
+                               style : 'display:none;'
+                       });
+
+                       editButton = DOM.add('wp_editbtns', 'img', {
+                               src : t.url+'/img/image.png',
+                               id : 'wp_editimgbtn',
+                               width : '24',
+                               height : '24',
+                               title : ed.getLang('wpeditimage.edit_img')
+                       });
+
+                       tinymce.dom.Event.add(editButton, 'mousedown', function(e) {
+                               var ed = tinyMCE.activeEditor;
+                               ed.windowManager.bookmark = ed.selection.getBookmark('simple');
+                               ed.execCommand("WP_EditImage");
+                       });
+
+                       dellButton = DOM.add('wp_editbtns', 'img', {
+                               src : t.url+'/img/delete.png',
+                               id : 'wp_delimgbtn',
+                               width : '24',
+                               height : '24',
+                               title : ed.getLang('wpeditimage.del_img')
+                       });
+
+                       tinymce.dom.Event.add(dellButton, 'mousedown', function(e) {
+                               var ed = tinyMCE.activeEditor, el = ed.selection.getNode(), p;
+
+                               if ( el.nodeName == 'IMG' && ed.dom.getAttrib(el, 'class').indexOf('mceItem') == -1 ) {
+                                       if ( (p = ed.dom.getParent(el, 'div')) && ed.dom.hasClass(p, 'mceTemp') )
+                                               ed.dom.remove(p);
+                                       else if ( (p = ed.dom.getParent(el, 'A')) && p.childNodes.length == 1 )
+                                               ed.dom.remove(p);
+                                       else
+                                               ed.dom.remove(el);
+
+                                       ed.execCommand('mceRepaint');
+                                       return false;
+                               }
+                       });
+               },
+
+               getInfo : function() {
+                       return {
+                               longname : 'Edit Image',
+                               author : 'WordPress',
+                               authorurl : 'http://wordpress.org',
+                               infourl : '',
+                               version : "1.0"
+                       };
+               }
+       });
+
+       tinymce.PluginManager.add('wpeditimage', tinymce.plugins.wpEditImage);
+})();
index 2d7e38e49aaf062af424ce1425771772f6ab2b6b..18e781179f62ccbf3b30d07b2b057a472f3a9863 100644 (file)
@@ -3,17 +3,7 @@ var tinymce = null, tinyMCEPopup, tinyMCE, wpImage;
 
 tinyMCEPopup = {
        init: function() {
 
 tinyMCEPopup = {
        init: function() {
-               var t = this, w, li, q, i, it;
-
-               li = ('' + document.location.search).replace(/^\?/, '').split('&');
-               q = {};
-               for ( i = 0; i < li.length; i++ ) {
-                       it = li[i].split('=');
-                       q[unescape(it[0])] = unescape(it[1]);
-               }
-
-               if (q.mce_rdomain)
-                       document.domain = q.mce_rdomain;
+               var t = this, w, ti;
 
                // Find window & API
                w = t.getWin();
 
                // Find window & API
                w = t.getWin();
@@ -21,6 +11,7 @@ tinyMCEPopup = {
                tinyMCE = w.tinyMCE;
                t.editor = tinymce.EditorManager.activeEditor;
                t.params = t.editor.windowManager.params;
                tinyMCE = w.tinyMCE;
                t.editor = tinymce.EditorManager.activeEditor;
                t.params = t.editor.windowManager.params;
+               t.features = t.editor.windowManager.features;
 
                // Setup local DOM
                t.dom = t.editor.windowManager.createInstance('tinymce.dom.DOMUtils', document);
 
                // Setup local DOM
                t.dom = t.editor.windowManager.createInstance('tinymce.dom.DOMUtils', document);
@@ -28,7 +19,7 @@ tinyMCEPopup = {
        },
 
        getWin : function() {
        },
 
        getWin : function() {
-               return window.dialogArguments || opener || parent || top;
+               return (!window.frameElement && window.dialogArguments) || opener || parent || top;
        },
 
        getParam : function(n, dv) {
        },
 
        getParam : function(n, dv) {
@@ -36,16 +27,16 @@ tinyMCEPopup = {
        },
 
        close : function() {
        },
 
        close : function() {
-               var t = this, win = t.getWin();
+               var t = this;
 
                // To avoid domain relaxing issue in Opera
                function close() {
 
                // To avoid domain relaxing issue in Opera
                function close() {
-                       win.tb_remove();
-                       tinymce = tinyMCE = t.editor = t.dom = t.dom.doc = null; // Cleanup
+                       t.editor.windowManager.close(window);
+                       tinymce = tinyMCE = t.editor = t.params = t.dom = t.dom.doc = null; // Cleanup
                };
 
                if (tinymce.isOpera)
                };
 
                if (tinymce.isOpera)
-                       win.setTimeout(close, 0);
+                       t.getWin().setTimeout(close, 0);
                else
                        close();
        },
                else
                        close();
        },
@@ -59,13 +50,13 @@ tinyMCEPopup = {
        },
 
        storeSelection : function() {
        },
 
        storeSelection : function() {
-               this.editor.windowManager.bookmark = tinyMCEPopup.editor.selection.getBookmark('simple');
+               this.editor.windowManager.bookmark = tinyMCEPopup.editor.selection.getBookmark(1);
        },
 
        restoreSelection : function() {
                var t = tinyMCEPopup;
 
        },
 
        restoreSelection : function() {
                var t = tinyMCEPopup;
 
-               if (tinymce.isIE)
+               if ( tinymce.isIE )
                        t.editor.selection.moveToBookmark(t.editor.windowManager.bookmark);
        }
 }
                        t.editor.selection.moveToBookmark(t.editor.windowManager.bookmark);
        }
 }
@@ -74,12 +65,14 @@ tinyMCEPopup.init();
 wpImage = {
        preInit : function() {
                // import colors stylesheet from parent
 wpImage = {
        preInit : function() {
                // import colors stylesheet from parent
-               var win = tinyMCEPopup.getWin(), styles = win.document.styleSheets, url, i;
+               var ed = tinyMCEPopup.editor, win = tinyMCEPopup.getWin(), styles = win.document.styleSheets, url, i;
 
                for ( i = 0; i < styles.length; i++ ) {
                        url = styles.item(i).href;
 
                for ( i = 0; i < styles.length; i++ ) {
                        url = styles.item(i).href;
-                       if ( url && url.indexOf('colors') != -1 )
-                               document.write( '<link rel="stylesheet" href="'+url+'" type="text/css" media="all" />' );
+                       if ( url && url.indexOf('colors') != -1 ) {
+                               document.getElementsByTagName('head')[0].appendChild( ed.dom.create('link', {rel:'stylesheet', href: url}) );
+                               break;
+                       }
                }
        },
 
                }
        },
 
@@ -242,7 +235,7 @@ wpImage = {
 
        setup : function() {
                var t = this, c, el, link, fname, f = document.forms[0], ed = tinyMCEPopup.editor,
 
        setup : function() {
                var t = this, c, el, link, fname, f = document.forms[0], ed = tinyMCEPopup.editor,
-                       d = t.I('img_demo'), dom = tinyMCEPopup.dom, DL, caption = '', dlc, pa;
+                       d = t.I('img_demo'), dom = tinyMCEPopup.dom, DL, DD, caption = '', dlc, pa;
 
                document.dir = tinyMCEPopup.editor.getParam('directionality','');
 
 
                document.dir = tinyMCEPopup.editor.getParam('directionality','');
 
@@ -267,15 +260,12 @@ wpImage = {
                                tinymce.trim(c);
                        }
 
                                tinymce.trim(c);
                        }
 
-                       tinymce.each(DL.childNodes, function(e) {
-                               if ( e.nodeName == 'DD' && dom.hasClass(e, 'wp-caption-dd') ) {
-                                       caption = e.innerHTML;
-                                       return;
-                               }
-                       });
+                       DD = ed.dom.select('dd.wp-caption-dd', DL);
+                       if ( DD && DD[0] )
+                               caption = ed.serializer.serialize(DD[0]).replace(/^<p>/, '').replace(/<\/p>$/, '');
                }
 
                }
 
-               f.img_cap.value = caption;
+               f.img_cap_text.value = caption;
                f.img_title.value = ed.dom.getAttrib(el, 'title');
                f.img_alt.value = ed.dom.getAttrib(el, 'alt');
                f.border.value = ed.dom.getAttrib(el, 'border');
                f.img_title.value = ed.dom.getAttrib(el, 'title');
                f.img_alt.value = ed.dom.getAttrib(el, 'alt');
                f.border.value = ed.dom.getAttrib(el, 'border');
@@ -326,7 +316,9 @@ wpImage = {
                        d.className = t.align = "alignnone";
                }
 
                        d.className = t.align = "alignnone";
                }
 
-               if ( t.width && t.preloadImg.width ) t.showSizeSet();
+               if ( t.width && t.preloadImg.width )
+                       t.showSizeSet();
+               
                document.body.style.display = '';
        },
 
                document.body.style.display = '';
        },
 
@@ -351,7 +343,7 @@ wpImage = {
        update : function() {
                var t = this, f = document.forms[0], ed = tinyMCEPopup.editor, el, b, fixSafari = null,
                        DL, P, A, DIV, do_caption = null, img_class = f.img_classes.value, html,
        update : function() {
                var t = this, f = document.forms[0], ed = tinyMCEPopup.editor, el, b, fixSafari = null,
                        DL, P, A, DIV, do_caption = null, img_class = f.img_classes.value, html,
-                       id, cap_id = '', cap, DT, DD, cap_width, div_cls, lnk = '', pa, aa;
+                       id, cap_id = '', cap, DT, DD, cap_width, div_cls, lnk = '', pa, aa, caption;
 
                tinyMCEPopup.restoreSelection();
                el = ed.selection.getNode();
 
                tinyMCEPopup.restoreSelection();
                el = ed.selection.getNode();
@@ -362,7 +354,7 @@ wpImage = {
                        return;
                }
 
                        return;
                }
 
-               if ( f.img_cap.value != '' && f.width.value != '' ) {
+               if ( f.img_cap_text.value != '' && f.width.value != '' ) {
                        do_caption = 1;
                        img_class = img_class.replace( /align[^ "']+\s?/gi, '' );
                }
                        do_caption = 1;
                        img_class = img_class.replace( /align[^ "']+\s?/gi, '' );
                }
@@ -393,16 +385,11 @@ wpImage = {
                                if ( ! f.link_href.value.match(/https?:\/\//i) )
                                        f.link_href.value = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.link_href.value);
 
                                if ( ! f.link_href.value.match(/https?:\/\//i) )
                                        f.link_href.value = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.link_href.value);
 
-                               if ( tinymce.isWebKit && ed.dom.hasClass(el, 'aligncenter') ) {
-                                       ed.dom.removeClass(el, 'aligncenter');
-                                       fixSafari = 1;
-                               }
-
-                               tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1});
-                               if ( fixSafari ) ed.dom.addClass(el, 'aligncenter');
+                               ed.getDoc().execCommand("unlink", false, null);
+                               tinyMCEPopup.execCommand("mceInsertLink", false, "#mce_temp_url#", {skip_undo : 1});
 
                                tinymce.each(ed.dom.select("a"), function(n) {
 
                                tinymce.each(ed.dom.select("a"), function(n) {
-                                       if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') {
+                                       if ( ed.dom.getAttrib(n, 'href') == '#mce_temp_url#' ) {
 
                                                ed.dom.setAttribs(n, {
                                                        href : f.link_href.value,
 
                                                ed.dom.setAttribs(n, {
                                                        href : f.link_href.value,
@@ -429,6 +416,13 @@ wpImage = {
                if ( do_caption ) {
                        cap_width = 10 + parseInt(f.width.value);
                        div_cls = (t.align == 'aligncenter') ? 'mceTemp mceIEcenter' : 'mceTemp';
                if ( do_caption ) {
                        cap_width = 10 + parseInt(f.width.value);
                        div_cls = (t.align == 'aligncenter') ? 'mceTemp mceIEcenter' : 'mceTemp';
+                       caption = f.img_cap_text.value;
+
+                       caption = caption.replace(/\r\n|\r/g, '\n').replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g, function(a){
+                               return a.replace(/[\r\n\t]+/, ' ');
+                       });
+
+                       caption = caption.replace(/\s*\n\s*/g, '<br />');
 
                        if ( DL ) {
                                ed.dom.setAttribs(DL, {
 
                        if ( DL ) {
                                ed.dom.setAttribs(DL, {
@@ -440,24 +434,26 @@ wpImage = {
                                        ed.dom.setAttrib(DIV, 'class', div_cls);
 
                                if ( (DT = ed.dom.getParent(el, 'dt')) && (DD = DT.nextSibling) && ed.dom.hasClass(DD, 'wp-caption-dd') )
                                        ed.dom.setAttrib(DIV, 'class', div_cls);
 
                                if ( (DT = ed.dom.getParent(el, 'dt')) && (DD = DT.nextSibling) && ed.dom.hasClass(DD, 'wp-caption-dd') )
-                                       ed.dom.setHTML(DD, f.img_cap.value);
+                                       ed.dom.setHTML(DD, caption);
 
                        } else {
                                if ( (id = f.img_classes.value.match( /wp-image-([0-9]{1,6})/ )) && id[1] )
                                        cap_id = 'attachment_'+id[1];
 
                                if ( f.link_href.value && (lnk = ed.dom.getParent(el, 'a')) ) {
 
                        } else {
                                if ( (id = f.img_classes.value.match( /wp-image-([0-9]{1,6})/ )) && id[1] )
                                        cap_id = 'attachment_'+id[1];
 
                                if ( f.link_href.value && (lnk = ed.dom.getParent(el, 'a')) ) {
-                                       if ( lnk.childNodes.length == 1 )
+                                       if ( lnk.childNodes.length == 1 ) {
                                                html = ed.dom.getOuterHTML(lnk);
                                                html = ed.dom.getOuterHTML(lnk);
-                                       else {
+                                       else {
                                                html = ed.dom.getOuterHTML(lnk);
                                                html = ed.dom.getOuterHTML(lnk);
-                                               html = html.match(/<a[^>]+>/i);
+                                               html = html.match(/<a [^>]+>/i);
                                                html = html+ed.dom.getOuterHTML(el)+'</a>';
                                        }
                                                html = html+ed.dom.getOuterHTML(el)+'</a>';
                                        }
-                               } else html = ed.dom.getOuterHTML(el);
+                               } else {
+                                       html = ed.dom.getOuterHTML(el);
+                               }
 
                                html = '<dl id="'+cap_id+'" class="wp-caption '+t.align+'" style="width: '+cap_width+
 
                                html = '<dl id="'+cap_id+'" class="wp-caption '+t.align+'" style="width: '+cap_width+
-                               'px"><dt class="wp-caption-dt">'+html+'</dt><dd class="wp-caption-dd">'+f.img_cap.value+'</dd></dl>';
+                               'px"><dt class="wp-caption-dt">'+html+'</dt><dd class="wp-caption-dd">'+caption+'</dd></dl>';
 
                                cap = ed.dom.create('div', {'class': div_cls}, html);
 
 
                                cap = ed.dom.create('div', {'class': div_cls}, html);
 
@@ -614,3 +610,4 @@ wpImage = {
 
 window.onload = function(){wpImage.init();}
 wpImage.preInit();
 
 window.onload = function(){wpImage.init();}
 wpImage.preInit();
+
index ef628ed102db76487501d8fca78c6c1e5cc4527b..eebfb3d5ac589c9a6c3b50749ba7b5031d2c173e 100644 (file)
@@ -1 +1 @@
-var tinymce=null,tinyMCEPopup,tinyMCE,wpImage;tinyMCEPopup={init:function(){var d=this,b,a,f,c,e;a=(""+document.location.search).replace(/^\?/,"").split("&");f={};for(c=0;c<a.length;c++){e=a[c].split("=");f[unescape(e[0])]=unescape(e[1])}if(f.mce_rdomain){document.domain=f.mce_rdomain}b=d.getWin();tinymce=b.tinymce;tinyMCE=b.tinyMCE;d.editor=tinymce.EditorManager.activeEditor;d.params=d.editor.windowManager.params;d.dom=d.editor.windowManager.createInstance("tinymce.dom.DOMUtils",document);d.editor.windowManager.onOpen.dispatch(d.editor.windowManager,window)},getWin:function(){return window.dialogArguments||opener||parent||top},getParam:function(b,a){return this.editor.getParam(b,a)},close:function(){var a=this,b=a.getWin();function c(){b.tb_remove();tinymce=tinyMCE=a.editor=a.dom=a.dom.doc=null}if(tinymce.isOpera){b.setTimeout(c,0)}else{c()}},execCommand:function(d,c,e,b){b=b||{};b.skip_focus=1;this.restoreSelection();return this.editor.execCommand(d,c,e,b)},storeSelection:function(){this.editor.windowManager.bookmark=tinyMCEPopup.editor.selection.getBookmark("simple")},restoreSelection:function(){var a=tinyMCEPopup;if(tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}}};tinyMCEPopup.init();wpImage={preInit:function(){var d=tinyMCEPopup.getWin(),c=d.document.styleSheets,a,b;for(b=0;b<c.length;b++){a=c.item(b).href;if(a&&a.indexOf("colors")!=-1){document.write('<link rel="stylesheet" href="'+a+'" type="text/css" media="all" />')}}},I:function(a){return document.getElementById(a)},current:"",link:"",link_rel:"",target_value:"",current_size_sel:"s100",width:"",height:"",align:"",img_alt:"",setTabs:function(b){var a=this;if("current"==b.className){return false}a.I("div_advanced").style.display=("tab_advanced"==b.id)?"block":"none";a.I("div_basic").style.display=("tab_basic"==b.id)?"block":"none";a.I("tab_basic").className=a.I("tab_advanced").className="";b.className="current";return false},img_seturl:function(b){var c=this,a=c.I("link_rel").value;if("current"==b){c.I("link_href").value=c.current;c.I("link_rel").value=c.link_rel}else{c.I("link_href").value=c.link;if(a){a=a.replace(/attachment|wp-att-[0-9]+/gi,"");c.I("link_rel").value=tinymce.trim(a)}}},imgAlignCls:function(b){var c=this,a=c.I("img_classes").value;c.I("img_demo").className=c.align=b;a=a.replace(/align[^ "']+/gi,"");a+=(" "+b);a=a.replace(/\s+/g," ").replace(/^\s/,"");if("aligncenter"==b){c.I("hspace").value="";c.updateStyle("hspace")}c.I("img_classes").value=a},showSize:function(e){var c=this,f=c.I("img_demo"),a=c.width,d=c.height,g=e.id||"s100",b;b=parseInt(g.substring(1))/200;f.width=Math.round(a*b);f.height=Math.round(d*b);c.showSizeClear();e.style.borderColor="#A3A3A3";e.style.backgroundColor="#E5E5E5"},showSizeSet:function(){var b=this,d,c,a;if((b.width*1.3)>parseInt(b.preloadImg.width)){d=b.I("s130"),c=b.I("s120"),a=b.I("s110");d.onclick=c.onclick=a.onclick=null;d.onmouseover=c.onmouseover=a.onmouseover=null;d.style.color=c.style.color=a.style.color="#aaa"}},showSizeRem:function(){var a=this,c=a.I("img_demo"),b=document.forms[0];c.width=Math.round(b.width.value*0.5);c.height=Math.round(b.height.value*0.5);a.showSizeClear();a.I(a.current_size_sel).style.borderColor="#A3A3A3";a.I(a.current_size_sel).style.backgroundColor="#E5E5E5";return false},showSizeClear:function(){var b=this.I("img_size").getElementsByTagName("div"),a;for(a=0;a<b.length;a++){b[a].style.borderColor="#f1f1f1";b[a].style.backgroundColor="#f1f1f1"}},imgEditSize:function(g){var d=this,i=document.forms[0],a,c,b,e,j;if(!d.preloadImg||!d.preloadImg.width||!d.preloadImg.height){return}a=parseInt(d.preloadImg.width),c=parseInt(d.preloadImg.height),b=d.width||a,e=d.height||c,j=g.id||"s100";size=parseInt(j.substring(1))/100;b=Math.round(b*size);e=Math.round(e*size);i.width.value=Math.min(a,b);i.height.value=Math.min(c,e);d.current_size_sel=j;d.demoSetSize()},demoSetSize:function(a){var c=this.I("img_demo"),b=document.forms[0];c.width=b.width.value?Math.round(b.width.value*0.5):"";c.height=b.height.value?Math.round(b.height.value*0.5):""},demoSetStyle:function(){var b=document.forms[0],a=this.I("img_demo"),c=tinyMCEPopup.editor.dom;if(a){c.setAttrib(a,"style",b.img_style.value);c.setStyle(a,"width","");c.setStyle(a,"height","")}},origSize:function(){var a=this,c=document.forms[0],b=a.I("s100");c.width.value=a.width=a.preloadImg.width;c.height.value=a.height=a.preloadImg.height;a.showSizeSet();a.demoSetSize();a.showSize(b)},init:function(){var a=tinyMCEPopup.editor,b;b=document.body.innerHTML;document.body.innerHTML=a.translate(b);window.setTimeout(function(){wpImage.setup()},500)},setup:function(){var p=this,k,b,l,e,i=document.forms[0],h=tinyMCEPopup.editor,j=p.I("img_demo"),g=tinyMCEPopup.dom,a,o="",n,m;document.dir=tinyMCEPopup.editor.getParam("directionality","");if(tinyMCEPopup.editor.getParam("wpeditimage_disable_captions",false)){p.I("cap_field").style.display="none"}tinyMCEPopup.restoreSelection();b=h.selection.getNode();if(b.nodeName!="IMG"){return}i.img_src.value=j.src=l=h.dom.getAttrib(b,"src");h.dom.setStyle(b,"float","");p.getImageData();k=h.dom.getAttrib(b,"class");if(a=g.getParent(b,"dl")){n=h.dom.getAttrib(a,"class");n=n.match(/align[^ "']+/i);if(n&&!g.hasClass(b,n)){k+=" "+n;tinymce.trim(k)}tinymce.each(a.childNodes,function(c){if(c.nodeName=="DD"&&g.hasClass(c,"wp-caption-dd")){o=c.innerHTML;return}})}i.img_cap.value=o;i.img_title.value=h.dom.getAttrib(b,"title");i.img_alt.value=h.dom.getAttrib(b,"alt");i.border.value=h.dom.getAttrib(b,"border");i.vspace.value=h.dom.getAttrib(b,"vspace");i.hspace.value=h.dom.getAttrib(b,"hspace");i.align.value=h.dom.getAttrib(b,"align");i.width.value=p.width=h.dom.getAttrib(b,"width");i.height.value=p.height=h.dom.getAttrib(b,"height");i.img_classes.value=k;i.img_style.value=h.dom.getAttrib(b,"style");if(g.getAttrib(b,"hspace")){p.updateStyle("hspace")}if(g.getAttrib(b,"border")){p.updateStyle("border")}if(g.getAttrib(b,"vspace")){p.updateStyle("vspace")}if(m=h.dom.getParent(b,"A")){i.link_href.value=p.current=h.dom.getAttrib(m,"href");i.link_title.value=h.dom.getAttrib(m,"title");i.link_rel.value=p.link_rel=h.dom.getAttrib(m,"rel");i.link_style.value=h.dom.getAttrib(m,"style");p.target_value=h.dom.getAttrib(m,"target");i.link_classes.value=h.dom.getAttrib(m,"class")}i.link_target.checked=(p.target_value&&p.target_value=="_blank")?"checked":"";e=l.substring(l.lastIndexOf("/"));e=e.replace(/-[0-9]{2,4}x[0-9]{2,4}/,"");p.link=l.substring(0,l.lastIndexOf("/"))+e;if(k.indexOf("alignleft")!=-1){p.I("alignleft").checked="checked";j.className=p.align="alignleft"}else{if(k.indexOf("aligncenter")!=-1){p.I("aligncenter").checked="checked";j.className=p.align="aligncenter"}else{if(k.indexOf("alignright")!=-1){p.I("alignright").checked="checked";j.className=p.align="alignright"}else{if(k.indexOf("alignnone")!=-1){p.I("alignnone").checked="checked";j.className=p.align="alignnone"}}}}if(p.width&&p.preloadImg.width){p.showSizeSet()}document.body.style.display=""},remove:function(){var a=tinyMCEPopup.editor,c,b;tinyMCEPopup.restoreSelection();b=a.selection.getNode();if(b.nodeName!="IMG"){return}if((c=a.dom.getParent(b,"div"))&&a.dom.hasClass(c,"mceTemp")){a.dom.remove(c)}else{if((c=a.dom.getParent(b,"A"))&&c.childNodes.length==1){a.dom.remove(c)}else{a.dom.remove(b)}}a.execCommand("mceRepaint");tinyMCEPopup.close();return},update:function(){var m=this,v=document.forms[0],g=tinyMCEPopup.editor,e,x,d=null,n,h,p,r,o=null,k=v.img_classes.value,l,q,u="",j,i,s,a,z,w="",c,y;tinyMCEPopup.restoreSelection();e=g.selection.getNode();if(e.nodeName!="IMG"){return}if(v.img_src.value===""){m.remove();return}if(v.img_cap.value!=""&&v.width.value!=""){o=1;k=k.replace(/align[^ "']+\s?/gi,"")}p=g.dom.getParent(e,"a");h=g.dom.getParent(e,"p");n=g.dom.getParent(e,"dl");r=g.dom.getParent(e,"div");tinyMCEPopup.execCommand("mceBeginUndoLevel");if(v.width.value!=e.width||v.height.value!=e.height){k=k.replace(/size-[^ "']+/,"")}g.dom.setAttribs(e,{src:v.img_src.value,title:v.img_title.value,alt:v.img_alt.value,width:v.width.value,height:v.height.value,style:v.img_style.value,"class":k});if(v.link_href.value){if(p==null){if(!v.link_href.value.match(/https?:\/\//i)){v.link_href.value=tinyMCEPopup.editor.documentBaseURI.toAbsolute(v.link_href.value)}if(tinymce.isWebKit&&g.dom.hasClass(e,"aligncenter")){g.dom.removeClass(e,"aligncenter");d=1}tinyMCEPopup.execCommand("CreateLink",false,"#mce_temp_url#",{skip_undo:1});if(d){g.dom.addClass(e,"aligncenter")}tinymce.each(g.dom.select("a"),function(b){if(g.dom.getAttrib(b,"href")=="#mce_temp_url#"){g.dom.setAttribs(b,{href:v.link_href.value,title:v.link_title.value,rel:v.link_rel.value,target:(v.link_target.checked==true)?"_blank":"","class":v.link_classes.value,style:v.link_style.value})}})}else{g.dom.setAttribs(p,{href:v.link_href.value,title:v.link_title.value,rel:v.link_rel.value,target:(v.link_target.checked==true)?"_blank":"","class":v.link_classes.value,style:v.link_style.value})}}if(o){a=10+parseInt(v.width.value);z=(m.align=="aligncenter")?"mceTemp mceIEcenter":"mceTemp";if(n){g.dom.setAttribs(n,{"class":"wp-caption "+m.align,style:"width: "+a+"px;"});if(r){g.dom.setAttrib(r,"class",z)}if((i=g.dom.getParent(e,"dt"))&&(s=i.nextSibling)&&g.dom.hasClass(s,"wp-caption-dd")){g.dom.setHTML(s,v.img_cap.value)}}else{if((q=v.img_classes.value.match(/wp-image-([0-9]{1,6})/))&&q[1]){u="attachment_"+q[1]}if(v.link_href.value&&(w=g.dom.getParent(e,"a"))){if(w.childNodes.length==1){l=g.dom.getOuterHTML(w)}else{l=g.dom.getOuterHTML(w);l=l.match(/<a[^>]+>/i);l=l+g.dom.getOuterHTML(e)+"</a>"}}else{l=g.dom.getOuterHTML(e)}l='<dl id="'+u+'" class="wp-caption '+m.align+'" style="width: '+a+'px"><dt class="wp-caption-dt">'+l+'</dt><dd class="wp-caption-dd">'+v.img_cap.value+"</dd></dl>";j=g.dom.create("div",{"class":z},l);if(h){h.parentNode.insertBefore(j,h);if(h.childNodes.length==1){g.dom.remove(h)}else{if(w&&w.childNodes.length==1){g.dom.remove(w)}else{g.dom.remove(e)}}}else{if(c=g.dom.getParent(e,"TD,TH,LI")){c.appendChild(j);if(w&&w.childNodes.length==1){g.dom.remove(w)}else{g.dom.remove(e)}}}}}else{if(n&&r){if(v.link_href.value&&(y=g.dom.getParent(e,"a"))){l=g.dom.getOuterHTML(y)}else{l=g.dom.getOuterHTML(e)}h=g.dom.create("p",{},l);r.parentNode.insertBefore(h,r);g.dom.remove(r)}}if(v.img_classes.value.indexOf("aligncenter")!=-1){if(h&&(!h.style||h.style.textAlign!="center")){g.dom.setStyle(h,"textAlign","center")}}else{if(h&&h.style&&h.style.textAlign=="center"){g.dom.setStyle(h,"textAlign","")}}if(!v.link_href.value&&p){x=g.selection.getBookmark();g.dom.remove(p,1);g.selection.moveToBookmark(x)}tinyMCEPopup.execCommand("mceEndUndoLevel");g.execCommand("mceRepaint");tinyMCEPopup.close()},updateStyle:function(a){var e=tinyMCEPopup.dom,c,d=document.forms[0],b=e.create("img",{style:d.img_style.value});if(tinyMCEPopup.editor.settings.inline_styles){if(a=="align"){e.setStyle(b,"float","");e.setStyle(b,"vertical-align","");c=d.align.value;if(c){if(c=="left"||c=="right"){e.setStyle(b,"float",c)}else{b.style.verticalAlign=c}}}if(a=="border"){e.setStyle(b,"border","");c=d.border.value;if(c||c=="0"){if(c=="0"){b.style.border="0"}else{b.style.border=c+"px solid black"}}}if(a=="hspace"){e.setStyle(b,"marginLeft","");e.setStyle(b,"marginRight","");c=d.hspace.value;if(c){b.style.marginLeft=c+"px";b.style.marginRight=c+"px"}}if(a=="vspace"){e.setStyle(b,"marginTop","");e.setStyle(b,"marginBottom","");c=d.vspace.value;if(c){b.style.marginTop=c+"px";b.style.marginBottom=c+"px"}}d.img_style.value=e.serializeStyle(e.parseStyle(b.style.cssText));this.demoSetStyle()}},checkVal:function(a){if(a.value==""){if(a.id=="img_src"){a.value=this.I("img_demo").src||this.preloadImg.src}}},resetImageData:function(){var a=document.forms[0];a.width.value=a.height.value=""},updateImageData:function(){var d=document.forms[0],b=wpImage,a=d.width.value,c=d.height.value;if(!a&&c){a=d.width.value=b.width=Math.round(b.preloadImg.width/(b.preloadImg.height/c))}else{if(a&&!c){c=d.height.value=b.height=Math.round(b.preloadImg.height/(b.preloadImg.width/a))}}if(!a){d.width.value=b.width=b.preloadImg.width}if(!c){d.height.value=b.height=b.preloadImg.height}b.showSizeSet();b.demoSetSize();if(d.img_style.value){b.demoSetStyle()}},getImageData:function(){var a=wpImage,b=document.forms[0];a.preloadImg=new Image();a.preloadImg.onload=a.updateImageData;a.preloadImg.onerror=a.resetImageData;a.preloadImg.src=tinyMCEPopup.editor.documentBaseURI.toAbsolute(b.img_src.value)}};window.onload=function(){wpImage.init()};wpImage.preInit();
\ No newline at end of file
+var tinymce=null,tinyMCEPopup,tinyMCE,wpImage;tinyMCEPopup={init:function(){var b=this,a,c;a=b.getWin();tinymce=a.tinymce;tinyMCE=a.tinyMCE;b.editor=tinymce.EditorManager.activeEditor;b.params=b.editor.windowManager.params;b.features=b.editor.windowManager.features;b.dom=b.editor.windowManager.createInstance("tinymce.dom.DOMUtils",document);b.editor.windowManager.onOpen.dispatch(b.editor.windowManager,window)},getWin:function(){return(!window.frameElement&&window.dialogArguments)||opener||parent||top},getParam:function(b,a){return this.editor.getParam(b,a)},close:function(){var a=this;function b(){a.editor.windowManager.close(window);tinymce=tinyMCE=a.editor=a.params=a.dom=a.dom.doc=null}if(tinymce.isOpera){a.getWin().setTimeout(b,0)}else{b()}},execCommand:function(d,c,e,b){b=b||{};b.skip_focus=1;this.restoreSelection();return this.editor.execCommand(d,c,e,b)},storeSelection:function(){this.editor.windowManager.bookmark=tinyMCEPopup.editor.selection.getBookmark(1)},restoreSelection:function(){var a=tinyMCEPopup;if(tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}}};tinyMCEPopup.init();wpImage={preInit:function(){var a=tinyMCEPopup.editor,e=tinyMCEPopup.getWin(),d=e.document.styleSheets,b,c;for(c=0;c<d.length;c++){b=d.item(c).href;if(b&&b.indexOf("colors")!=-1){document.getElementsByTagName("head")[0].appendChild(a.dom.create("link",{rel:"stylesheet",href:b}));break}}},I:function(a){return document.getElementById(a)},current:"",link:"",link_rel:"",target_value:"",current_size_sel:"s100",width:"",height:"",align:"",img_alt:"",setTabs:function(b){var a=this;if("current"==b.className){return false}a.I("div_advanced").style.display=("tab_advanced"==b.id)?"block":"none";a.I("div_basic").style.display=("tab_basic"==b.id)?"block":"none";a.I("tab_basic").className=a.I("tab_advanced").className="";b.className="current";return false},img_seturl:function(b){var c=this,a=c.I("link_rel").value;if("current"==b){c.I("link_href").value=c.current;c.I("link_rel").value=c.link_rel}else{c.I("link_href").value=c.link;if(a){a=a.replace(/attachment|wp-att-[0-9]+/gi,"");c.I("link_rel").value=tinymce.trim(a)}}},imgAlignCls:function(b){var c=this,a=c.I("img_classes").value;c.I("img_demo").className=c.align=b;a=a.replace(/align[^ "']+/gi,"");a+=(" "+b);a=a.replace(/\s+/g," ").replace(/^\s/,"");if("aligncenter"==b){c.I("hspace").value="";c.updateStyle("hspace")}c.I("img_classes").value=a},showSize:function(e){var c=this,f=c.I("img_demo"),a=c.width,d=c.height,g=e.id||"s100",b;b=parseInt(g.substring(1))/200;f.width=Math.round(a*b);f.height=Math.round(d*b);c.showSizeClear();e.style.borderColor="#A3A3A3";e.style.backgroundColor="#E5E5E5"},showSizeSet:function(){var b=this,d,c,a;if((b.width*1.3)>parseInt(b.preloadImg.width)){d=b.I("s130"),c=b.I("s120"),a=b.I("s110");d.onclick=c.onclick=a.onclick=null;d.onmouseover=c.onmouseover=a.onmouseover=null;d.style.color=c.style.color=a.style.color="#aaa"}},showSizeRem:function(){var a=this,c=a.I("img_demo"),b=document.forms[0];c.width=Math.round(b.width.value*0.5);c.height=Math.round(b.height.value*0.5);a.showSizeClear();a.I(a.current_size_sel).style.borderColor="#A3A3A3";a.I(a.current_size_sel).style.backgroundColor="#E5E5E5";return false},showSizeClear:function(){var b=this.I("img_size").getElementsByTagName("div"),a;for(a=0;a<b.length;a++){b[a].style.borderColor="#f1f1f1";b[a].style.backgroundColor="#f1f1f1"}},imgEditSize:function(g){var d=this,i=document.forms[0],a,c,b,e,j;if(!d.preloadImg||!d.preloadImg.width||!d.preloadImg.height){return}a=parseInt(d.preloadImg.width),c=parseInt(d.preloadImg.height),b=d.width||a,e=d.height||c,j=g.id||"s100";size=parseInt(j.substring(1))/100;b=Math.round(b*size);e=Math.round(e*size);i.width.value=Math.min(a,b);i.height.value=Math.min(c,e);d.current_size_sel=j;d.demoSetSize()},demoSetSize:function(a){var c=this.I("img_demo"),b=document.forms[0];c.width=b.width.value?Math.round(b.width.value*0.5):"";c.height=b.height.value?Math.round(b.height.value*0.5):""},demoSetStyle:function(){var b=document.forms[0],a=this.I("img_demo"),c=tinyMCEPopup.editor.dom;if(a){c.setAttrib(a,"style",b.img_style.value);c.setStyle(a,"width","");c.setStyle(a,"height","")}},origSize:function(){var a=this,c=document.forms[0],b=a.I("s100");c.width.value=a.width=a.preloadImg.width;c.height.value=a.height=a.preloadImg.height;a.showSizeSet();a.demoSetSize();a.showSize(b)},init:function(){var a=tinyMCEPopup.editor,b;b=document.body.innerHTML;document.body.innerHTML=a.translate(b);window.setTimeout(function(){wpImage.setup()},500)},setup:function(){var q=this,l,b,m,e,j=document.forms[0],i=tinyMCEPopup.editor,k=q.I("img_demo"),h=tinyMCEPopup.dom,a,g,p="",o,n;document.dir=tinyMCEPopup.editor.getParam("directionality","");if(tinyMCEPopup.editor.getParam("wpeditimage_disable_captions",false)){q.I("cap_field").style.display="none"}tinyMCEPopup.restoreSelection();b=i.selection.getNode();if(b.nodeName!="IMG"){return}j.img_src.value=k.src=m=i.dom.getAttrib(b,"src");i.dom.setStyle(b,"float","");q.getImageData();l=i.dom.getAttrib(b,"class");if(a=h.getParent(b,"dl")){o=i.dom.getAttrib(a,"class");o=o.match(/align[^ "']+/i);if(o&&!h.hasClass(b,o)){l+=" "+o;tinymce.trim(l)}g=i.dom.select("dd.wp-caption-dd",a);if(g&&g[0]){p=i.serializer.serialize(g[0]).replace(/^<p>/,"").replace(/<\/p>$/,"")}}j.img_cap_text.value=p;j.img_title.value=i.dom.getAttrib(b,"title");j.img_alt.value=i.dom.getAttrib(b,"alt");j.border.value=i.dom.getAttrib(b,"border");j.vspace.value=i.dom.getAttrib(b,"vspace");j.hspace.value=i.dom.getAttrib(b,"hspace");j.align.value=i.dom.getAttrib(b,"align");j.width.value=q.width=i.dom.getAttrib(b,"width");j.height.value=q.height=i.dom.getAttrib(b,"height");j.img_classes.value=l;j.img_style.value=i.dom.getAttrib(b,"style");if(h.getAttrib(b,"hspace")){q.updateStyle("hspace")}if(h.getAttrib(b,"border")){q.updateStyle("border")}if(h.getAttrib(b,"vspace")){q.updateStyle("vspace")}if(n=i.dom.getParent(b,"A")){j.link_href.value=q.current=i.dom.getAttrib(n,"href");j.link_title.value=i.dom.getAttrib(n,"title");j.link_rel.value=q.link_rel=i.dom.getAttrib(n,"rel");j.link_style.value=i.dom.getAttrib(n,"style");q.target_value=i.dom.getAttrib(n,"target");j.link_classes.value=i.dom.getAttrib(n,"class")}j.link_target.checked=(q.target_value&&q.target_value=="_blank")?"checked":"";e=m.substring(m.lastIndexOf("/"));e=e.replace(/-[0-9]{2,4}x[0-9]{2,4}/,"");q.link=m.substring(0,m.lastIndexOf("/"))+e;if(l.indexOf("alignleft")!=-1){q.I("alignleft").checked="checked";k.className=q.align="alignleft"}else{if(l.indexOf("aligncenter")!=-1){q.I("aligncenter").checked="checked";k.className=q.align="aligncenter"}else{if(l.indexOf("alignright")!=-1){q.I("alignright").checked="checked";k.className=q.align="alignright"}else{if(l.indexOf("alignnone")!=-1){q.I("alignnone").checked="checked";k.className=q.align="alignnone"}}}}if(q.width&&q.preloadImg.width){q.showSizeSet()}document.body.style.display=""},remove:function(){var a=tinyMCEPopup.editor,c,b;tinyMCEPopup.restoreSelection();b=a.selection.getNode();if(b.nodeName!="IMG"){return}if((c=a.dom.getParent(b,"div"))&&a.dom.hasClass(c,"mceTemp")){a.dom.remove(c)}else{if((c=a.dom.getParent(b,"A"))&&c.childNodes.length==1){a.dom.remove(c)}else{a.dom.remove(b)}}a.execCommand("mceRepaint");tinyMCEPopup.close();return},update:function(){var m=this,v=document.forms[0],g=tinyMCEPopup.editor,e,y,d=null,n,h,p,r,o=null,k=v.img_classes.value,l,q,u="",j,i,s,a,B,x="",c,z,w;tinyMCEPopup.restoreSelection();e=g.selection.getNode();if(e.nodeName!="IMG"){return}if(v.img_src.value===""){m.remove();return}if(v.img_cap_text.value!=""&&v.width.value!=""){o=1;k=k.replace(/align[^ "']+\s?/gi,"")}p=g.dom.getParent(e,"a");h=g.dom.getParent(e,"p");n=g.dom.getParent(e,"dl");r=g.dom.getParent(e,"div");tinyMCEPopup.execCommand("mceBeginUndoLevel");if(v.width.value!=e.width||v.height.value!=e.height){k=k.replace(/size-[^ "']+/,"")}g.dom.setAttribs(e,{src:v.img_src.value,title:v.img_title.value,alt:v.img_alt.value,width:v.width.value,height:v.height.value,style:v.img_style.value,"class":k});if(v.link_href.value){if(p==null){if(!v.link_href.value.match(/https?:\/\//i)){v.link_href.value=tinyMCEPopup.editor.documentBaseURI.toAbsolute(v.link_href.value)}g.getDoc().execCommand("unlink",false,null);tinyMCEPopup.execCommand("mceInsertLink",false,"#mce_temp_url#",{skip_undo:1});tinymce.each(g.dom.select("a"),function(b){if(g.dom.getAttrib(b,"href")=="#mce_temp_url#"){g.dom.setAttribs(b,{href:v.link_href.value,title:v.link_title.value,rel:v.link_rel.value,target:(v.link_target.checked==true)?"_blank":"","class":v.link_classes.value,style:v.link_style.value})}})}else{g.dom.setAttribs(p,{href:v.link_href.value,title:v.link_title.value,rel:v.link_rel.value,target:(v.link_target.checked==true)?"_blank":"","class":v.link_classes.value,style:v.link_style.value})}}if(o){a=10+parseInt(v.width.value);B=(m.align=="aligncenter")?"mceTemp mceIEcenter":"mceTemp";w=v.img_cap_text.value;w=w.replace(/\r\n|\r/g,"\n").replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g,function(b){return b.replace(/[\r\n\t]+/," ")});w=w.replace(/\s*\n\s*/g,"<br />");if(n){g.dom.setAttribs(n,{"class":"wp-caption "+m.align,style:"width: "+a+"px;"});if(r){g.dom.setAttrib(r,"class",B)}if((i=g.dom.getParent(e,"dt"))&&(s=i.nextSibling)&&g.dom.hasClass(s,"wp-caption-dd")){g.dom.setHTML(s,w)}}else{if((q=v.img_classes.value.match(/wp-image-([0-9]{1,6})/))&&q[1]){u="attachment_"+q[1]}if(v.link_href.value&&(x=g.dom.getParent(e,"a"))){if(x.childNodes.length==1){l=g.dom.getOuterHTML(x)}else{l=g.dom.getOuterHTML(x);l=l.match(/<a [^>]+>/i);l=l+g.dom.getOuterHTML(e)+"</a>"}}else{l=g.dom.getOuterHTML(e)}l='<dl id="'+u+'" class="wp-caption '+m.align+'" style="width: '+a+'px"><dt class="wp-caption-dt">'+l+'</dt><dd class="wp-caption-dd">'+w+"</dd></dl>";j=g.dom.create("div",{"class":B},l);if(h){h.parentNode.insertBefore(j,h);if(h.childNodes.length==1){g.dom.remove(h)}else{if(x&&x.childNodes.length==1){g.dom.remove(x)}else{g.dom.remove(e)}}}else{if(c=g.dom.getParent(e,"TD,TH,LI")){c.appendChild(j);if(x&&x.childNodes.length==1){g.dom.remove(x)}else{g.dom.remove(e)}}}}}else{if(n&&r){if(v.link_href.value&&(z=g.dom.getParent(e,"a"))){l=g.dom.getOuterHTML(z)}else{l=g.dom.getOuterHTML(e)}h=g.dom.create("p",{},l);r.parentNode.insertBefore(h,r);g.dom.remove(r)}}if(v.img_classes.value.indexOf("aligncenter")!=-1){if(h&&(!h.style||h.style.textAlign!="center")){g.dom.setStyle(h,"textAlign","center")}}else{if(h&&h.style&&h.style.textAlign=="center"){g.dom.setStyle(h,"textAlign","")}}if(!v.link_href.value&&p){y=g.selection.getBookmark();g.dom.remove(p,1);g.selection.moveToBookmark(y)}tinyMCEPopup.execCommand("mceEndUndoLevel");g.execCommand("mceRepaint");tinyMCEPopup.close()},updateStyle:function(a){var e=tinyMCEPopup.dom,c,d=document.forms[0],b=e.create("img",{style:d.img_style.value});if(tinyMCEPopup.editor.settings.inline_styles){if(a=="align"){e.setStyle(b,"float","");e.setStyle(b,"vertical-align","");c=d.align.value;if(c){if(c=="left"||c=="right"){e.setStyle(b,"float",c)}else{b.style.verticalAlign=c}}}if(a=="border"){e.setStyle(b,"border","");c=d.border.value;if(c||c=="0"){if(c=="0"){b.style.border="0"}else{b.style.border=c+"px solid black"}}}if(a=="hspace"){e.setStyle(b,"marginLeft","");e.setStyle(b,"marginRight","");c=d.hspace.value;if(c){b.style.marginLeft=c+"px";b.style.marginRight=c+"px"}}if(a=="vspace"){e.setStyle(b,"marginTop","");e.setStyle(b,"marginBottom","");c=d.vspace.value;if(c){b.style.marginTop=c+"px";b.style.marginBottom=c+"px"}}d.img_style.value=e.serializeStyle(e.parseStyle(b.style.cssText));this.demoSetStyle()}},checkVal:function(a){if(a.value==""){if(a.id=="img_src"){a.value=this.I("img_demo").src||this.preloadImg.src}}},resetImageData:function(){var a=document.forms[0];a.width.value=a.height.value=""},updateImageData:function(){var d=document.forms[0],b=wpImage,a=d.width.value,c=d.height.value;if(!a&&c){a=d.width.value=b.width=Math.round(b.preloadImg.width/(b.preloadImg.height/c))}else{if(a&&!c){c=d.height.value=b.height=Math.round(b.preloadImg.height/(b.preloadImg.width/a))}}if(!a){d.width.value=b.width=b.preloadImg.width}if(!c){d.height.value=b.height=b.preloadImg.height}b.showSizeSet();b.demoSetSize();if(d.img_style.value){b.demoSetStyle()}},getImageData:function(){var a=wpImage,b=document.forms[0];a.preloadImg=new Image();a.preloadImg.onload=a.updateImageData;a.preloadImg.onerror=a.resetImageData;a.preloadImg.src=tinyMCEPopup.editor.documentBaseURI.toAbsolute(b.img_src.value)}};window.onload=function(){wpImage.init()};wpImage.preInit();
\ No newline at end of file
index 267f4674950032bbbb27aed8bebee8921e329b39..1bd68c3735b61e6354272293a2169108c4d26632 100644 (file)
@@ -1,11 +1,13 @@
 /*\r
 Distraction Free Writing mode TinyMCE Styles\r
 */\r
 /*\r
 Distraction Free Writing mode TinyMCE Styles\r
 */\r
-
-html, body {\r
+\r
+html,\r
+body {\r
        background: transparent;\r
        width: auto !important;\r
        max-width: none !important;\r
        background: transparent;\r
        width: auto !important;\r
        max-width: none !important;\r
-       margin: 0;\r
-       padding: 0;\r
+       margin: 0 !important;\r
+       padding: 0 !important;\r
+       min-height: 0 !important;\r
 }\r
 }\r
index 6c54415f8e0f3c5d7d22ef4b368c25d08762fe59..efc6f3dcebf5675dc050534e92412d97d276c8b0 100644 (file)
@@ -1 +1 @@
-(function(){tinymce.create("tinymce.plugins.wpFullscreenPlugin",{init:function(b,d){var e=this,h=0,f={},g=tinymce.DOM,a=false;b.addCommand("wpFullScreenClose",function(){if(b.getParam("wp_fullscreen_is_enabled")){g.win.setTimeout(function(){tinyMCE.remove(b);g.remove("wp_mce_fullscreen_parent");tinyMCE.settings=tinyMCE.oldSettings},10)}});b.addCommand("wpFullScreenSave",function(){var i=tinyMCE.get("wp_mce_fullscreen"),j;i.focus();j=tinyMCE.get(i.getParam("wp_fullscreen_editor_id"));j.setContent(i.getContent({format:"raw"}),{format:"raw"})});b.addCommand("wpFullScreenInit",function(){var k,i,j;b=tinymce.get("content");k=b.getDoc();i=k.body;tinyMCE.oldSettings=tinyMCE.settings;tinymce.each(b.settings,function(l,m){f[m]=l});f.id="wp_mce_fullscreen";f.wp_fullscreen_is_enabled=true;f.wp_fullscreen_editor_id=b.id;f.theme_advanced_resizing=false;f.theme_advanced_statusbar_location="none";f.content_css=f.content_css?f.content_css+","+f.wp_fullscreen_content_css:f.wp_fullscreen_content_css;f.height=tinymce.isIE?i.scrollHeight:i.offsetHeight;tinymce.each(b.getParam("wp_fullscreen_settings"),function(m,l){f[l]=m});j=new tinymce.Editor("wp_mce_fullscreen",f);j.onInit.add(function(l){var n=tinymce.DOM,m=n.select("a.mceButton",n.get("wp-fullscreen-buttons"));if(!b.isHidden()){l.setContent(b.getContent())}else{l.setContent(switchEditors.wpautop(l.getElement().value))}setTimeout(function(){l.onNodeChange.add(function(p,o,q){tinymce.each(m,function(t){var s,r;if(s=n.get("wp_mce_fullscreen_"+t.id.substr(6))){r=s.className;if(r){t.className=r}}})})},1000);l.dom.addClass(l.getBody(),"wp-fullscreen-editor");l.focus()});j.render();if("undefined"!=fullscreen){j.dom.bind(j.dom.doc,"mousemove",function(l){fullscreen.bounder("showToolbar","hideToolbar",2000,l)})}});if("undefined"!=fullscreen){b.addButton("wp_fullscreen",{title:"fullscreen.desc",onclick:function(){fullscreen.on()}})}if(b.getParam("fullscreen_is_enabled")||!b.getParam("wp_fullscreen_is_enabled")){return}function c(){if(a){return}var k=b.getDoc(),j=tinymce.DOM,l,i;if(tinymce.isIE){i=k.body.scrollHeight}else{i=k.documentElement.offsetHeight}l=(i>300)?i:300;if(h!=l){h=l;a=true;setTimeout(function(){a=false},100);j.setStyle(j.get(b.id+"_ifr"),"height",l+"px")}}b.onInit.add(function(j,i){j.onChange.add(c);j.onSetContent.add(c);j.onPaste.add(c);j.onKeyUp.add(c);j.onPostRender.add(c);j.getBody().style.overflowY="hidden"});if(b.getParam("autoresize_on_init",true)){b.onLoadContent.add(function(j,i){setTimeout(function(){c()},1200)})}b.addCommand("wpAutoResize",c)},getInfo:function(){return{longname:"WP Fullscreen",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wpfullscreen",tinymce.plugins.wpFullscreenPlugin)})();
\ No newline at end of file
+(function(){tinymce.create("tinymce.plugins.wpFullscreenPlugin",{init:function(a,c){var d=this,g=0,e={},f=tinymce.DOM;a.addCommand("wpFullScreenClose",function(){if(a.getParam("wp_fullscreen_is_enabled")){f.win.setTimeout(function(){tinyMCE.remove(a);f.remove("wp_mce_fullscreen_parent");tinyMCE.settings=tinyMCE.oldSettings},10)}});a.addCommand("wpFullScreenSave",function(){var h=tinyMCE.get("wp_mce_fullscreen"),i;h.focus();i=tinyMCE.get(h.getParam("wp_fullscreen_editor_id"));i.setContent(h.getContent({format:"raw"}),{format:"raw"})});a.addCommand("wpFullScreenInit",function(){var j,h,i;a=tinyMCE.activeEditor;j=a.getDoc();h=j.body;tinyMCE.oldSettings=tinyMCE.settings;tinymce.each(a.settings,function(k,l){e[l]=k});e.id="wp_mce_fullscreen";e.wp_fullscreen_is_enabled=true;e.wp_fullscreen_editor_id=a.id;e.theme_advanced_resizing=false;e.theme_advanced_statusbar_location="none";e.content_css=e.content_css?e.content_css+","+e.wp_fullscreen_content_css:e.wp_fullscreen_content_css;e.height=tinymce.isIE?h.scrollHeight:h.offsetHeight;tinymce.each(a.getParam("wp_fullscreen_settings"),function(m,l){e[l]=m});i=new tinymce.Editor("wp_mce_fullscreen",e);i.onInit.add(function(k){var m=tinymce.DOM,l=m.select("a.mceButton",m.get("wp-fullscreen-buttons"));if(!a.isHidden()){k.setContent(a.getContent())}else{k.setContent(switchEditors.wpautop(k.getElement().value))}setTimeout(function(){k.onNodeChange.add(function(o,n,p){tinymce.each(l,function(s){var r,q;if(r=m.get("wp_mce_fullscreen_"+s.id.substr(6))){q=r.className;if(q){s.className=q}}})})},1000);k.dom.addClass(k.getBody(),"wp-fullscreen-editor");k.focus()});i.render();if("undefined"!=fullscreen){i.dom.bind(i.dom.doc,"mousemove",function(k){fullscreen.bounder("showToolbar","hideToolbar",2000,k)})}});if("undefined"!=fullscreen){a.addButton("wp_fullscreen",{title:"fullscreen.desc",onclick:function(){fullscreen.on()}})}if(a.getParam("fullscreen_is_enabled")||!a.getParam("wp_fullscreen_is_enabled")){return}function b(){var j=a.getDoc(),i=tinymce.DOM,k,h;if(tinymce.isWebKit){h=j.body.offsetHeight}else{h=j.body.scrollHeight}k=(h>300)?h:300;if(g!=k){i.setStyle(i.get(a.id+"_ifr"),"height",k+"px");g=k;a.getWin().scrollTo(0,0)}}a.onInit.add(function(i,h){i.onChange.add(b);i.onSetContent.add(b);i.onPaste.add(b);i.onKeyUp.add(b);i.onPostRender.add(b);i.getBody().style.overflowY="hidden"});if(a.getParam("autoresize_on_init",true)){a.onLoadContent.add(function(i,h){setTimeout(function(){b()},1200)})}a.addCommand("wpAutoResize",b)},getInfo:function(){return{longname:"WP Fullscreen",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wpfullscreen",tinymce.plugins.wpFullscreenPlugin)})();
\ No newline at end of file
similarity index 94%
rename from wp-includes/js/tinymce/plugins/wpfullscreen/editor_plugin.dev.js
rename to wp-includes/js/tinymce/plugins/wpfullscreen/editor_plugin_src.js
index 6290c11233ba9181c75690cf1a7b6e6e7d050bb8..9d33795f4991f97ad8dde1ae1434773e51a460de 100644 (file)
@@ -8,7 +8,7 @@
        tinymce.create('tinymce.plugins.wpFullscreenPlugin', {
 
                init : function(ed, url) {
        tinymce.create('tinymce.plugins.wpFullscreenPlugin', {
 
                init : function(ed, url) {
-                       var t = this, oldHeight = 0, s = {}, DOM = tinymce.DOM, resized = false;
+                       var t = this, oldHeight = 0, s = {}, DOM = tinymce.DOM;
 
                        // Register commands
                        ed.addCommand('wpFullScreenClose', function() {
 
                        // Register commands
                        ed.addCommand('wpFullScreenClose', function() {
@@ -34,7 +34,7 @@
                        ed.addCommand('wpFullScreenInit', function() {
                                var d, b, fsed;
 
                        ed.addCommand('wpFullScreenInit', function() {
                                var d, b, fsed;
 
-                               ed = tinymce.get('content');
+                               ed = tinyMCE.activeEditor;
                                d = ed.getDoc();
                                b = d.body;
 
                                d = ed.getDoc();
                                b = d.body;
 
                         * This method gets executed each time the editor needs to resize.
                         */
                        function resize() {
                         * This method gets executed each time the editor needs to resize.
                         */
                        function resize() {
-                               if ( resized )
-                                       return;
-
                                var d = ed.getDoc(), DOM = tinymce.DOM, resizeHeight, myHeight;
 
                                // Get height differently depending on the browser used
                                var d = ed.getDoc(), DOM = tinymce.DOM, resizeHeight, myHeight;
 
                                // Get height differently depending on the browser used
-                               if ( tinymce.isIE )
-                                       myHeight = d.body.scrollHeight;
+                               if ( tinymce.isWebKit )
+                                       myHeight = d.body.offsetHeight;
                                else
                                else
-                                       myHeight = d.documentElement.offsetHeight;
+                                       myHeight = d.body.scrollHeight;
 
                                // Don't make it smaller than 300px
                                resizeHeight = (myHeight > 300) ? myHeight : 300;
 
                                // Resize content element
                                if ( oldHeight != resizeHeight ) {
 
                                // Don't make it smaller than 300px
                                resizeHeight = (myHeight > 300) ? myHeight : 300;
 
                                // Resize content element
                                if ( oldHeight != resizeHeight ) {
-                                       oldHeight = resizeHeight;
-                                       resized = true;
-                                       setTimeout(function(){ resized = false; }, 100);
-
                                        DOM.setStyle(DOM.get(ed.id + '_ifr'), 'height', resizeHeight + 'px');
                                        DOM.setStyle(DOM.get(ed.id + '_ifr'), 'height', resizeHeight + 'px');
+                                       oldHeight = resizeHeight;
+                                       ed.getWin().scrollTo(0,0);
                                }
                        };
 
                                }
                        };
 
index 0c2824ac746db7c55bb1e8f2ca6297bcf953c758..d48e5a94929da827b6a8a2dc39251cf03b921a80 100644 (file)
@@ -1 +1 @@
-(function(){tinymce.create("tinymce.plugins.wpGallery",{init:function(a,b){var c=this;c.url=b;c._createButtons();a.addCommand("WP_Gallery",function(){var h=a.selection.getNode(),f,e=tinymce.DOM.getViewPort(),g=e.h-80,d=(640<e.w)?640:e.w;if(h.nodeName!="IMG"){return}if(a.dom.getAttrib(h,"class").indexOf("wpGallery")==-1){return}f=tinymce.DOM.get("post_ID").value;tb_show("",tinymce.documentBaseURL+"/media-upload.php?post_id="+f+"&tab=gallery&TB_iframe=true&width="+d+"&height="+g);tinymce.DOM.setStyle(["TB_overlay","TB_window","TB_load"],"z-index","999999")});a.onMouseDown.add(function(d,f){if(f.target.nodeName=="IMG"&&d.dom.hasClass(f.target,"wpGallery")){d.plugins.wordpress._showButtons(f.target,"wp_gallerybtns")}});a.onBeforeSetContent.add(function(d,e){e.content=c._do_gallery(e.content)});a.onPostProcess.add(function(d,e){if(e.get){e.content=c._get_gallery(e.content)}})},_do_gallery:function(a){return a.replace(/\[gallery([^\]]*)\]/g,function(d,c){return'<img src="'+tinymce.baseURL+'/plugins/wpgallery/img/t.gif" class="wpGallery mceItem" title="gallery'+tinymce.DOM.encode(c)+'" />'})},_get_gallery:function(b){function a(c,d){d=new RegExp(d+'="([^"]+)"',"g").exec(c);return d?tinymce.DOM.decode(d[1]):""}return b.replace(/(?:<p[^>]*>)*(<img[^>]+>)(?:<\/p>)*/g,function(e,d){var c=a(d,"class");if(c.indexOf("wpGallery")!=-1){return"<p>["+tinymce.trim(a(d,"title"))+"]</p>"}return e})},_createButtons:function(){var b=this,a=tinyMCE.activeEditor,d=tinymce.DOM,e,c;d.remove("wp_gallerybtns");d.add(document.body,"div",{id:"wp_gallerybtns",style:"display:none;"});e=d.add("wp_gallerybtns","img",{src:b.url+"/img/edit.png",id:"wp_editgallery",width:"24",height:"24",title:a.getLang("wordpress.editgallery")});tinymce.dom.Event.add(e,"mousedown",function(g){var f=tinyMCE.activeEditor;f.windowManager.bookmark=f.selection.getBookmark("simple");f.execCommand("WP_Gallery")});c=d.add("wp_gallerybtns","img",{src:b.url+"/img/delete.png",id:"wp_delgallery",width:"24",height:"24",title:a.getLang("wordpress.delgallery")});tinymce.dom.Event.add(c,"mousedown",function(h){var f=tinyMCE.activeEditor,g=f.selection.getNode();if(g.nodeName=="IMG"&&f.dom.hasClass(g,"wpGallery")){f.dom.remove(g);f.execCommand("mceRepaint");return false}})},getInfo:function(){return{longname:"Gallery Settings",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wpgallery",tinymce.plugins.wpGallery)})();
\ No newline at end of file
+(function(){tinymce.create("tinymce.plugins.wpGallery",{init:function(a,b){var c=this;c.url=b;c._createButtons();a.addCommand("WP_Gallery",function(){var h=a.selection.getNode(),f,e=tinymce.DOM.getViewPort(),g=e.h-80,d=(640<e.w)?640:e.w;if(h.nodeName!="IMG"){return}if(a.dom.getAttrib(h,"class").indexOf("wpGallery")==-1){return}f=tinymce.DOM.get("post_ID").value;tb_show("",tinymce.documentBaseURL+"media-upload.php?post_id="+f+"&tab=gallery&TB_iframe=true&width="+d+"&height="+g);tinymce.DOM.setStyle(["TB_overlay","TB_window","TB_load"],"z-index","999999")});a.onMouseDown.add(function(d,f){if(f.target.nodeName=="IMG"&&d.dom.hasClass(f.target,"wpGallery")){d.plugins.wordpress._showButtons(f.target,"wp_gallerybtns")}});a.onBeforeSetContent.add(function(d,e){e.content=c._do_gallery(e.content)});a.onPostProcess.add(function(d,e){if(e.get){e.content=c._get_gallery(e.content)}})},_do_gallery:function(a){return a.replace(/\[gallery([^\]]*)\]/g,function(d,c){return'<img src="'+tinymce.baseURL+'/plugins/wpgallery/img/t.gif" class="wpGallery mceItem" title="gallery'+tinymce.DOM.encode(c)+'" />'})},_get_gallery:function(b){function a(c,d){d=new RegExp(d+'="([^"]+)"',"g").exec(c);return d?tinymce.DOM.decode(d[1]):""}return b.replace(/(?:<p[^>]*>)*(<img[^>]+>)(?:<\/p>)*/g,function(e,d){var c=a(d,"class");if(c.indexOf("wpGallery")!=-1){return"<p>["+tinymce.trim(a(d,"title"))+"]</p>"}return e})},_createButtons:function(){var b=this,a=tinyMCE.activeEditor,d=tinymce.DOM,e,c;d.remove("wp_gallerybtns");d.add(document.body,"div",{id:"wp_gallerybtns",style:"display:none;"});e=d.add("wp_gallerybtns","img",{src:b.url+"/img/edit.png",id:"wp_editgallery",width:"24",height:"24",title:a.getLang("wordpress.editgallery")});tinymce.dom.Event.add(e,"mousedown",function(g){var f=tinyMCE.activeEditor;f.windowManager.bookmark=f.selection.getBookmark("simple");f.execCommand("WP_Gallery")});c=d.add("wp_gallerybtns","img",{src:b.url+"/img/delete.png",id:"wp_delgallery",width:"24",height:"24",title:a.getLang("wordpress.delgallery")});tinymce.dom.Event.add(c,"mousedown",function(h){var f=tinyMCE.activeEditor,g=f.selection.getNode();if(g.nodeName=="IMG"&&f.dom.hasClass(g,"wpGallery")){f.dom.remove(g);f.execCommand("mceRepaint");return false}})},getInfo:function(){return{longname:"Gallery Settings",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wpgallery",tinymce.plugins.wpGallery)})();
\ No newline at end of file
similarity index 96%
rename from wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.dev.js
rename to wp-includes/js/tinymce/plugins/wpgallery/editor_plugin_src.js
index 6f5718489537856407e2ef5ba69fcb0e309def8e..9b2d028098e2627460aa1e07f73cb469f08fed2a 100644 (file)
@@ -17,7 +17,7 @@
                                if ( ed.dom.getAttrib(el, 'class').indexOf('wpGallery') == -1 ) return;
 
                                post_id = tinymce.DOM.get('post_ID').value;
                                if ( ed.dom.getAttrib(el, 'class').indexOf('wpGallery') == -1 ) return;
 
                                post_id = tinymce.DOM.get('post_ID').value;
-                               tb_show('', tinymce.documentBaseURL + '/media-upload.php?post_id='+post_id+'&tab=gallery&TB_iframe=true&width='+W+'&height='+H);
+                               tb_show('', tinymce.documentBaseURL + 'media-upload.php?post_id='+post_id+'&tab=gallery&TB_iframe=true&width='+W+'&height='+H);
 
                                tinymce.DOM.setStyle( ['TB_overlay','TB_window','TB_load'], 'z-index', '999999' );
                        });
 
                                tinymce.DOM.setStyle( ['TB_overlay','TB_window','TB_load'], 'z-index', '999999' );
                        });
index d4df984b6ab2954fb3ec4fb9821a13873607bb4a..d42b15408e0f1c556b2316b496f222bd1b55cd47 100644 (file)
@@ -2,9 +2,9 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#advanced_dlg.about_title}</title>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#advanced_dlg.about_title}</title>
-       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=345-20110908"></script>
-       <script type="text/javascript" src="../../utils/mctabs.js?ver=345-20110908"></script>
-       <script type="text/javascript" src="js/about.js?ver=345-20110908"></script>
+       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="../../utils/mctabs.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="js/about.js?ver=349-20120314"></script>
 </head>
 <body id="about" style="display: none">
                <div class="tabs">
 </head>
 <body id="about" style="display: none">
                <div class="tabs">
index 9a78c4508effc774e6059621bb6a3a944b383afb..6546621014d209aa98098acbeeedbb5143c914ea 100644 (file)
@@ -2,8 +2,8 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#advanced_dlg.anchor_title}</title>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#advanced_dlg.anchor_title}</title>
-       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=345-20110908"></script>
-       <script type="text/javascript" src="js/anchor.js?ver=345-20110908"></script>
+       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="js/anchor.js?ver=349-20120314"></script>
 </head>
 <body style="display: none" role="application" aria-labelledby="app_title">
 <form onsubmit="AnchorDialog.update();return false;" action="#">
 </head>
 <body style="display: none" role="application" aria-labelledby="app_title">
 <form onsubmit="AnchorDialog.update();return false;" action="#">
index b1afd19391883c451e7656edfede12d9937c0f6d..1a0b34bf2801bc79ce9009c7bcb8308d31683e0b 100644 (file)
@@ -2,10 +2,10 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#advanced_dlg.charmap_title}</title>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#advanced_dlg.charmap_title}</title>
-       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=345-20110908"></script>
-       <script type="text/javascript" src="js/charmap.js?ver=345-20110908"></script>
+       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="js/charmap.js?ver=349-20120314"></script>
 </head>
 </head>
-<body id="charmap" style="display:none">
+<body id="charmap" style="display:none" role="application">
 <table align="center" border="0" cellspacing="0" cellpadding="2" role="presentation">
        <tr>
                <td colspan="2" class="title" ><label for="charmapView" id="charmap_label">{#advanced_dlg.charmap_title}</label></td>
 <table align="center" border="0" cellspacing="0" cellpadding="2" role="presentation">
        <tr>
                <td colspan="2" class="title" ><label for="charmapView" id="charmap_label">{#advanced_dlg.charmap_title}</label></td>
                        </table>
                </td>
        </tr>
                        </table>
                </td>
        </tr>
+       <tr>
+               <td colspan="2" id="charmap_usage">{#advanced_dlg.charmap_usage}</td>
+       </tr>
+       
 </table>
 </body>
 </html>
 </table>
 </body>
 </html>
index 5a71c0346650e9e58ec27600af253a0fb82d4e0b..08f21720299cdd39dbe340e99bb37195645a7da8 100644 (file)
@@ -2,9 +2,9 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#advanced_dlg.colorpicker_title}</title>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#advanced_dlg.colorpicker_title}</title>
-       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=345-20110908"></script>
-       <script type="text/javascript" src="../../utils/mctabs.js?ver=345-20110908"></script>
-       <script type="text/javascript" src="js/color_picker.js?ver=345-20110908"></script>
+       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="../../utils/mctabs.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="js/color_picker.js?ver=349-20120314"></script>
 </head>
 <body id="colorpicker" style="display: none" role="application" aria-labelledby="app_label">
        <span class="mceVoiceLabel" id="app_label" style="display:none;">{#advanced_dlg.colorpicker_title}</span>
 </head>
 <body id="colorpicker" style="display: none" role="application" aria-labelledby="app_label">
        <span class="mceVoiceLabel" id="app_label" style="display:none;">{#advanced_dlg.colorpicker_title}</span>
index 7f30c18e4117f7136f09277712c4906df9cb5f8b..d85b4952ed2db712dd70ab899dbc461396ea369d 100644 (file)
@@ -1 +1 @@
-(function(e){var d=e.DOM,b=e.dom.Event,h=e.extend,f=e.each,a=e.util.Cookie,g,c=e.explode;e.ThemeManager.requireLangPack("advanced");e.create("tinymce.themes.AdvancedTheme",{sizes:[8,10,12,14,18,24,36],controls:{bold:["bold_desc","Bold"],italic:["italic_desc","Italic"],underline:["underline_desc","Underline"],strikethrough:["striketrough_desc","Strikethrough"],justifyleft:["justifyleft_desc","JustifyLeft"],justifycenter:["justifycenter_desc","JustifyCenter"],justifyright:["justifyright_desc","JustifyRight"],justifyfull:["justifyfull_desc","JustifyFull"],bullist:["bullist_desc","InsertUnorderedList"],numlist:["numlist_desc","InsertOrderedList"],outdent:["outdent_desc","Outdent"],indent:["indent_desc","Indent"],cut:["cut_desc","Cut"],copy:["copy_desc","Copy"],paste:["paste_desc","Paste"],undo:["undo_desc","Undo"],redo:["redo_desc","Redo"],link:["link_desc","mceLink"],unlink:["unlink_desc","unlink"],image:["image_desc","mceImage"],cleanup:["cleanup_desc","mceCleanup"],help:["help_desc","mceHelp"],code:["code_desc","mceCodeEditor"],hr:["hr_desc","InsertHorizontalRule"],removeformat:["removeformat_desc","RemoveFormat"],sub:["sub_desc","subscript"],sup:["sup_desc","superscript"],forecolor:["forecolor_desc","ForeColor"],forecolorpicker:["forecolor_desc","mceForeColor"],backcolor:["backcolor_desc","HiliteColor"],backcolorpicker:["backcolor_desc","mceBackColor"],charmap:["charmap_desc","mceCharMap"],visualaid:["visualaid_desc","mceToggleVisualAid"],anchor:["anchor_desc","mceInsertAnchor"],newdocument:["newdocument_desc","mceNewDocument"],blockquote:["blockquote_desc","mceBlockQuote"]},stateControls:["bold","italic","underline","strikethrough","bullist","numlist","justifyleft","justifycenter","justifyright","justifyfull","sub","sup","blockquote"],init:function(j,k){var l=this,m,i,n;l.editor=j;l.url=k;l.onResolveName=new e.util.Dispatcher(this);j.forcedHighContrastMode=j.settings.detect_highcontrast&&l._isHighContrast();j.settings.skin=j.forcedHighContrastMode?"highcontrast":j.settings.skin;l.settings=m=h({theme_advanced_path:true,theme_advanced_toolbar_location:"bottom",theme_advanced_buttons1:"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,|,sub,sup,|,charmap",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"center",theme_advanced_fonts:"Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",theme_advanced_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1,theme_advanced_font_sizes:"1,2,3,4,5,6,7",theme_advanced_font_selector:"span",theme_advanced_show_current_color:0,readonly:j.settings.readonly},j.settings);if(!m.font_size_style_values){m.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt"}if(e.is(m.theme_advanced_font_sizes,"string")){m.font_size_style_values=e.explode(m.font_size_style_values);m.font_size_classes=e.explode(m.font_size_classes||"");n={};j.settings.theme_advanced_font_sizes=m.theme_advanced_font_sizes;f(j.getParam("theme_advanced_font_sizes","","hash"),function(q,p){var o;if(p==q&&q>=1&&q<=7){p=q+" ("+l.sizes[q-1]+"pt)";o=m.font_size_classes[q-1];q=m.font_size_style_values[q-1]||(l.sizes[q-1]+"pt")}if(/^\s*\./.test(q)){o=q.replace(/\./g,"")}n[p]=o?{"class":o}:{fontSize:q}});m.theme_advanced_font_sizes=n}if((i=m.theme_advanced_path_location)&&i!="none"){m.theme_advanced_statusbar_location=m.theme_advanced_path_location}if(m.theme_advanced_statusbar_location=="none"){m.theme_advanced_statusbar_location=0}if(j.settings.content_css!==false){j.contentCSS.push(j.baseURI.toAbsolute(k+"/skins/"+j.settings.skin+"/content.css"))}j.onInit.add(function(){if(!j.settings.readonly){j.onNodeChange.add(l._nodeChanged,l);j.onKeyUp.add(l._updateUndoStatus,l);j.onMouseUp.add(l._updateUndoStatus,l);j.dom.bind(j.dom.getRoot(),"dragend",function(){l._updateUndoStatus(j)})}});j.onSetProgressState.add(function(q,o,r){var s,t=q.id,p;if(o){l.progressTimer=setTimeout(function(){s=q.getContainer();s=s.insertBefore(d.create("DIV",{style:"position:relative"}),s.firstChild);p=d.get(q.id+"_tbl");d.add(s,"div",{id:t+"_blocker","class":"mceBlocker",style:{width:p.clientWidth+2,height:p.clientHeight+2}});d.add(s,"div",{id:t+"_progress","class":"mceProgress",style:{left:p.clientWidth/2,top:p.clientHeight/2}})},r||0)}else{d.remove(t+"_blocker");d.remove(t+"_progress");clearTimeout(l.progressTimer)}});d.loadCSS(m.editor_css?j.documentBaseURI.toAbsolute(m.editor_css):k+"/skins/"+j.settings.skin+"/ui.css");if(m.skin_variant){d.loadCSS(k+"/skins/"+j.settings.skin+"/ui_"+m.skin_variant+".css")}},_isHighContrast:function(){var i,j=d.add(d.getRoot(),"div",{style:"background-color: rgb(171,239,86);"});i=(d.getStyle(j,"background-color",true)+"").toLowerCase().replace(/ /g,"");d.remove(j);return i!="rgb(171,239,86)"&&i!="#abef56"},createControl:function(l,i){var j,k;if(k=i.createControl(l)){return k}switch(l){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu()}if((j=this.controls[l])){return i.createButton(l,{title:"advanced."+j[0],cmd:j[1],ui:j[2],value:j[3]})}},execCommand:function(k,j,l){var i=this["_"+k];if(i){i.call(this,j,l);return true}return false},_importClasses:function(k){var i=this.editor,j=i.controlManager.get("styleselect");if(j.getLength()==0){f(i.dom.getClasses(),function(n,l){var m="style_"+l;i.formatter.register(m,{inline:"span",attributes:{"class":n["class"]},selector:"*"});j.add(n["class"],m)})}},_createStyleSelect:function(m){var k=this,i=k.editor,j=i.controlManager,l;l=j.createListBox("styleselect",{title:"advanced.style_select",onselect:function(o){var p,n=[];f(l.items,function(q){n.push(q.value)});i.focus();i.undoManager.add();p=i.formatter.matchAll(n);if(!o||p[0]==o){if(p[0]){i.formatter.remove(p[0])}}else{i.formatter.apply(o)}i.undoManager.add();i.nodeChanged();return false}});i.onInit.add(function(){var o=0,n=i.getParam("style_formats");if(n){f(n,function(p){var q,r=0;f(p,function(){r++});if(r>1){q=p.name=p.name||"style_"+(o++);i.formatter.register(q,p);l.add(p.title,q)}else{l.add(p.title)}})}else{f(i.getParam("theme_advanced_styles","","hash"),function(r,q){var p;if(r){p="style_"+(o++);i.formatter.register(p,{inline:"span",classes:r,selector:"*"});l.add(k.editor.translate(q),p)}})}});if(l.getLength()==0){l.onPostRender.add(function(o,p){if(!l.NativeListBox){b.add(p.id+"_text","focus",k._importClasses,k);b.add(p.id+"_text","mousedown",k._importClasses,k);b.add(p.id+"_open","focus",k._importClasses,k);b.add(p.id+"_open","mousedown",k._importClasses,k)}else{b.add(p.id,"focus",k._importClasses,k)}})}return l},_createFontSelect:function(){var k,j=this,i=j.editor;k=i.controlManager.createListBox("fontselect",{title:"advanced.fontdefault",onselect:function(l){var m=k.items[k.selectedIndex];if(!l&&m){i.execCommand("FontName",false,m.value);return}i.execCommand("FontName",false,l);k.select(function(n){return l==n});if(m&&m.value==l){k.select(null)}return false}});if(k){f(i.getParam("theme_advanced_fonts",j.settings.theme_advanced_fonts,"hash"),function(m,l){k.add(i.translate(l),m,{style:m.indexOf("dings")==-1?"font-family:"+m:""})})}return k},_createFontSizeSelect:function(){var m=this,k=m.editor,n,l=0,j=[];n=k.controlManager.createListBox("fontsizeselect",{title:"advanced.font_size",onselect:function(i){var o=n.items[n.selectedIndex];if(!i&&o){o=o.value;if(o["class"]){k.formatter.toggle("fontsize_class",{value:o["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,o.fontSize)}return}if(i["class"]){k.focus();k.undoManager.add();k.formatter.toggle("fontsize_class",{value:i["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,i.fontSize)}n.select(function(p){return i==p});if(o&&(o.value.fontSize==i.fontSize||o.value["class"]==i["class"])){n.select(null)}return false}});if(n){f(m.settings.theme_advanced_font_sizes,function(o,i){var p=o.fontSize;if(p>=1&&p<=7){p=m.sizes[parseInt(p)-1]+"pt"}n.add(i,o,{style:"font-size:"+p,"class":"mceFontSize"+(l++)+(" "+(o["class"]||""))})})}return n},_createBlockFormats:function(){var k,i={p:"advanced.paragraph",address:"advanced.address",pre:"advanced.pre",h1:"advanced.h1",h2:"advanced.h2",h3:"advanced.h3",h4:"advanced.h4",h5:"advanced.h5",h6:"advanced.h6",div:"advanced.div",blockquote:"advanced.blockquote",code:"advanced.code",dt:"advanced.dt",dd:"advanced.dd",samp:"advanced.samp"},j=this;k=j.editor.controlManager.createListBox("formatselect",{title:"advanced.block",onselect:function(l){j.editor.execCommand("FormatBlock",false,l);return false}});if(k){f(j.editor.getParam("theme_advanced_blockformats",j.settings.theme_advanced_blockformats,"hash"),function(m,l){k.add(j.editor.translate(l!=m?l:i[m]),m,{"class":"mce_formatPreview mce_"+m})})}return k},_createForeColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_text_colors){l.colors=i}if(k.theme_advanced_default_foreground_color){l.default_color=k.theme_advanced_default_foreground_color}l.title="advanced.forecolor_desc";l.cmd="ForeColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("forecolor",l);return m},_createBackColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_background_colors){l.colors=i}if(k.theme_advanced_default_background_color){l.default_color=k.theme_advanced_default_background_color}l.title="advanced.backcolor_desc";l.cmd="HiliteColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("backcolor",l);return m},renderUI:function(k){var m,l,q,v=this,r=v.editor,w=v.settings,u,j,i;if(r.settings){r.settings.aria_label=w.aria_label+r.getLang("advanced.help_shortcut")}m=j=d.create("span",{role:"application","aria-labelledby":r.id+"_voice",id:r.id+"_parent","class":"mceEditor "+r.settings.skin+"Skin"+(w.skin_variant?" "+r.settings.skin+"Skin"+v._ufirst(w.skin_variant):"")});d.add(m,"span",{"class":"mceVoiceLabel",style:"display:none;",id:r.id+"_voice"},w.aria_label);if(!d.boxModel){m=d.add(m,"div",{"class":"mceOldBoxModel"})}m=u=d.add(m,"table",{role:"presentation",id:r.id+"_tbl","class":"mceLayout",cellSpacing:0,cellPadding:0});m=q=d.add(m,"tbody");switch((w.theme_advanced_layout_manager||"").toLowerCase()){case"rowlayout":l=v._rowLayout(w,q,k);break;case"customlayout":l=r.execCallback("theme_advanced_custom_layout",w,q,k,j);break;default:l=v._simpleLayout(w,q,k,j)}m=k.targetNode;i=u.rows;d.addClass(i[0],"mceFirst");d.addClass(i[i.length-1],"mceLast");f(d.select("tr",q),function(o){d.addClass(o.firstChild,"mceFirst");d.addClass(o.childNodes[o.childNodes.length-1],"mceLast")});if(d.get(w.theme_advanced_toolbar_container)){d.get(w.theme_advanced_toolbar_container).appendChild(j)}else{d.insertAfter(j,m)}b.add(r.id+"_path_row","click",function(n){n=n.target;if(n.nodeName=="A"){v._sel(n.className.replace(/^.*mcePath_([0-9]+).*$/,"$1"));return b.cancel(n)}});if(!r.getParam("accessibility_focus")){b.add(d.add(j,"a",{href:"#"},"<!-- IE -->"),"focus",function(){tinyMCE.get(r.id).focus()})}if(w.theme_advanced_toolbar_location=="external"){k.deltaHeight=0}v.deltaHeight=k.deltaHeight;k.targetNode=null;r.onKeyDown.add(function(p,n){var s=121,o=122;if(n.altKey){if(n.keyCode===s){window.focus();v.toolbarGroup.focus();return b.cancel(n)}else{if(n.keyCode===o){d.get(p.id+"_path_row").focus();return b.cancel(n)}}}});r.addShortcut("alt+0","","mceShortcuts",v);return{iframeContainer:l,editorContainer:r.id+"_parent",sizeContainer:u,deltaHeight:k.deltaHeight}},getInfo:function(){return{longname:"Advanced theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:e.majorVersion+"."+e.minorVersion}},resizeBy:function(i,j){var k=d.get(this.editor.id+"_ifr");this.resizeTo(k.clientWidth+i,k.clientHeight+j)},resizeTo:function(i,m,k){var j=this.editor,l=this.settings,n=d.get(j.id+"_tbl"),o=d.get(j.id+"_ifr");i=Math.max(l.theme_advanced_resizing_min_width||100,i);m=Math.max(l.theme_advanced_resizing_min_height||100,m);i=Math.min(l.theme_advanced_resizing_max_width||65535,i);m=Math.min(l.theme_advanced_resizing_max_height||65535,m);d.setStyle(n,"height","");d.setStyle(o,"height",m);if(l.theme_advanced_resize_horizontal){d.setStyle(n,"width","");d.setStyle(o,"width",i);if(i<n.clientWidth){i=n.clientWidth;d.setStyle(o,"width",n.clientWidth)}}if(k&&l.theme_advanced_resizing_use_cookie){a.setHash("TinyMCE_"+j.id+"_size",{cw:i,ch:m})}},destroy:function(){var i=this.editor.id;b.clear(i+"_resize");b.clear(i+"_path_row");b.clear(i+"_external_close")},_simpleLayout:function(y,r,k,i){var x=this,u=x.editor,v=y.theme_advanced_toolbar_location,m=y.theme_advanced_statusbar_location,l,j,q,w;if(y.readonly){l=d.add(r,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"});return j}if(v=="top"){x._addToolbars(r,k)}if(v=="external"){l=w=d.create("div",{style:"position:relative"});l=d.add(l,"div",{id:u.id+"_external","class":"mceExternalToolbar"});d.add(l,"a",{id:u.id+"_external_close",href:"javascript:;","class":"mceExternalClose"});l=d.add(l,"table",{id:u.id+"_tblext",cellSpacing:0,cellPadding:0});q=d.add(l,"tbody");if(i.firstChild.className=="mceOldBoxModel"){i.firstChild.appendChild(w)}else{i.insertBefore(w,i.firstChild)}x._addToolbars(q,k);u.onMouseUp.add(function(){var o=d.get(u.id+"_external");d.show(o);d.hide(g);var n=b.add(u.id+"_external_close","click",function(){d.hide(u.id+"_external");b.remove(u.id+"_external_close","click",n)});d.show(o);d.setStyle(o,"top",0-d.getRect(u.id+"_tblext").h-1);d.hide(o);d.show(o);o.style.filter="";g=u.id+"_external";o=null})}if(m=="top"){x._addStatusBar(r,k)}if(!y.theme_advanced_toolbar_container){l=d.add(r,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"})}if(v=="bottom"){x._addToolbars(r,k)}if(m=="bottom"){x._addStatusBar(r,k)}return j},_rowLayout:function(w,m,k){var v=this,p=v.editor,u,x,i=p.controlManager,l,j,r,q;u=w.theme_advanced_containers_default_class||"";x=w.theme_advanced_containers_default_align||"center";f(c(w.theme_advanced_containers||""),function(s,o){var n=w["theme_advanced_container_"+s]||"";switch(s.toLowerCase()){case"mceeditor":l=d.add(m,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"});break;case"mceelementpath":v._addStatusBar(m,k);break;default:q=(w["theme_advanced_container_"+s+"_align"]||x).toLowerCase();q="mce"+v._ufirst(q);l=d.add(d.add(m,"tr"),"td",{"class":"mceToolbar "+(w["theme_advanced_container_"+s+"_class"]||u)+" "+q||x});r=i.createToolbar("toolbar"+o);v._addControls(n,r);d.setHTML(l,r.renderHTML());k.deltaHeight-=w.theme_advanced_row_height}});return j},_addControls:function(j,i){var k=this,l=k.settings,m,n=k.editor.controlManager;if(l.theme_advanced_disable&&!k._disabled){m={};f(c(l.theme_advanced_disable),function(o){m[o]=1});k._disabled=m}else{m=k._disabled}f(c(j),function(p){var o;if(m&&m[p]){return}if(p=="tablecontrols"){f(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"],function(q){q=k.createControl(q,n);if(q){i.add(q)}});return}o=k.createControl(p,n);if(o){i.add(o)}})},_addToolbars:function(x,k){var A=this,p,m,r=A.editor,B=A.settings,z,j=r.controlManager,u,l,q=[],y,w;w=j.createToolbarGroup("toolbargroup",{name:r.getLang("advanced.toolbar"),tab_focus_toolbar:r.getParam("theme_advanced_tab_focus_toolbar")});A.toolbarGroup=w;y=B.theme_advanced_toolbar_align.toLowerCase();y="mce"+A._ufirst(y);l=d.add(d.add(x,"tr",{role:"presentation"}),"td",{"class":"mceToolbar "+y,role:"presentation"});for(p=1;(z=B["theme_advanced_buttons"+p]);p++){m=j.createToolbar("toolbar"+p,{"class":"mceToolbarRow"+p});if(B["theme_advanced_buttons"+p+"_add"]){z+=","+B["theme_advanced_buttons"+p+"_add"]}if(B["theme_advanced_buttons"+p+"_add_before"]){z=B["theme_advanced_buttons"+p+"_add_before"]+","+z}A._addControls(z,m);w.add(m);k.deltaHeight-=B.theme_advanced_row_height}q.push(w.renderHTML());q.push(d.createHTML("a",{href:"#",accesskey:"z",title:r.getLang("advanced.toolbar_focus"),onfocus:"tinyMCE.getInstanceById('"+r.id+"').focus();"},"<!-- IE -->"));d.setHTML(l,q.join(""))},_addStatusBar:function(m,j){var k,v=this,p=v.editor,w=v.settings,i,q,u,l;k=d.add(m,"tr");k=l=d.add(k,"td",{"class":"mceStatusbar"});k=d.add(k,"div",{id:p.id+"_path_row",role:"group","aria-labelledby":p.id+"_path_voice"});if(w.theme_advanced_path){d.add(k,"span",{id:p.id+"_path_voice"},p.translate("advanced.path"));d.add(k,"span",{},": ")}else{d.add(k,"span",{},"&#160;")}if(w.theme_advanced_resizing){d.add(l,"a",{id:p.id+"_resize",href:"javascript:;",onclick:"return false;","class":"mceResize",tabIndex:"-1"});if(w.theme_advanced_resizing_use_cookie){p.onPostRender.add(function(){var n=a.getHash("TinyMCE_"+p.id+"_size"),r=d.get(p.id+"_tbl");if(!n){return}v.resizeTo(n.cw,n.ch)})}p.onPostRender.add(function(){b.add(p.id+"_resize","click",function(n){n.preventDefault()});b.add(p.id+"_resize","mousedown",function(D){var t,r,s,o,C,z,A,F,n,E,x;function y(G){G.preventDefault();n=A+(G.screenX-C);E=F+(G.screenY-z);v.resizeTo(n,E)}function B(G){b.remove(d.doc,"mousemove",t);b.remove(p.getDoc(),"mousemove",r);b.remove(d.doc,"mouseup",s);b.remove(p.getDoc(),"mouseup",o);n=A+(G.screenX-C);E=F+(G.screenY-z);v.resizeTo(n,E,true)}D.preventDefault();C=D.screenX;z=D.screenY;x=d.get(v.editor.id+"_ifr");A=n=x.clientWidth;F=E=x.clientHeight;t=b.add(d.doc,"mousemove",y);r=b.add(p.getDoc(),"mousemove",y);s=b.add(d.doc,"mouseup",B);o=b.add(p.getDoc(),"mouseup",B)})})}j.deltaHeight-=21;k=m=null},_updateUndoStatus:function(j){var i=j.controlManager,k=j.undoManager;i.setDisabled("undo",!k.hasUndo()&&!k.typing);i.setDisabled("redo",!k.hasRedo())},_nodeChanged:function(m,r,D,q,E){var y=this,C,F=0,x,G,z=y.settings,w,k,u,B,l,j,i;e.each(y.stateControls,function(n){r.setActive(n,m.queryCommandState(y.controls[n][1]))});function o(p){var s,n=E.parents,t=p;if(typeof(p)=="string"){t=function(v){return v.nodeName==p}}for(s=0;s<n.length;s++){if(t(n[s])){return n[s]}}}r.setActive("visualaid",m.hasVisual);y._updateUndoStatus(m);r.setDisabled("outdent",!m.queryCommandState("Outdent"));C=o("A");if(G=r.get("link")){if(!C||!C.name){G.setDisabled(!C&&q);G.setActive(!!C)}}if(G=r.get("unlink")){G.setDisabled(!C&&q);G.setActive(!!C&&!C.name)}if(G=r.get("anchor")){G.setActive(!q&&!!C&&C.name)}C=o("IMG");if(G=r.get("image")){G.setActive(!q&&!!C&&D.className.indexOf("mceItem")==-1)}if(G=r.get("styleselect")){y._importClasses();j=[];f(G.items,function(n){j.push(n.value)});i=m.formatter.matchAll(j);G.select(i[0])}if(G=r.get("formatselect")){C=o(d.isBlock);if(C){G.select(C.nodeName.toLowerCase())}}o(function(p){if(p.nodeName==="SPAN"){if(!w&&p.className){w=p.className}}if(m.dom.is(p,z.theme_advanced_font_selector)){if(!k&&p.style.fontSize){k=p.style.fontSize}if(!u&&p.style.fontFamily){u=p.style.fontFamily.replace(/[\"\']+/g,"").replace(/^([^,]+).*/,"$1").toLowerCase()}if(!B&&p.style.color){B=p.style.color}if(!l&&p.style.backgroundColor){l=p.style.backgroundColor}}return false});if(G=r.get("fontselect")){G.select(function(n){return n.replace(/^([^,]+).*/,"$1").toLowerCase()==u})}if(G=r.get("fontsizeselect")){if(z.theme_advanced_runtime_fontsize&&!k&&!w){k=m.dom.getStyle(D,"fontSize",true)}G.select(function(n){if(n.fontSize&&n.fontSize===k){return true}if(n["class"]&&n["class"]===w){return true}})}if(z.theme_advanced_show_current_color){function A(p,n){if(G=r.get(p)){if(!n){n=G.settings.default_color}if(n!==G.value){G.displayColor(n)}}}A("forecolor",B);A("backcolor",l)}if(z.theme_advanced_show_current_color){function A(p,n){if(G=r.get(p)){if(!n){n=G.settings.default_color}if(n!==G.value){G.displayColor(n)}}}A("forecolor",B);A("backcolor",l)}if(z.theme_advanced_path&&z.theme_advanced_statusbar_location){C=d.get(m.id+"_path")||d.add(m.id+"_path_row","span",{id:m.id+"_path"});if(y.statusKeyboardNavigation){y.statusKeyboardNavigation.destroy();y.statusKeyboardNavigation=null}d.setHTML(C,"");o(function(H){var p=H.nodeName.toLowerCase(),s,v,t="";if(H.nodeType!=1||p==="br"||H.getAttribute("data-mce-bogus")||d.hasClass(H,"mceItemHidden")||d.hasClass(H,"mceItemRemoved")){return}if(e.isIE&&H.scopeName!=="HTML"){p=H.scopeName+":"+p}p=p.replace(/mce\:/g,"");switch(p){case"b":p="strong";break;case"i":p="em";break;case"img":if(x=d.getAttrib(H,"src")){t+="src: "+x+" "}break;case"a":if(x=d.getAttrib(H,"name")){t+="name: "+x+" ";p+="#"+x}if(x=d.getAttrib(H,"href")){t+="href: "+x+" "}break;case"font":if(x=d.getAttrib(H,"face")){t+="font: "+x+" "}if(x=d.getAttrib(H,"size")){t+="size: "+x+" "}if(x=d.getAttrib(H,"color")){t+="color: "+x+" "}break;case"span":if(x=d.getAttrib(H,"style")){t+="style: "+x+" "}break}if(x=d.getAttrib(H,"id")){t+="id: "+x+" "}if(x=H.className){x=x.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g,"");if(x){t+="class: "+x+" ";if(d.isBlock(H)||p=="img"||p=="span"){p+="."+x}}}p=p.replace(/(html:)/g,"");p={name:p,node:H,title:t};y.onResolveName.dispatch(y,p);t=p.title;p=p.name;v=d.create("a",{href:"javascript:;",role:"button",onmousedown:"return false;",title:t,"class":"mcePath_"+(F++)},p);if(C.hasChildNodes()){C.insertBefore(d.create("span",{"aria-hidden":"true"},"\u00a0\u00bb "),C.firstChild);C.insertBefore(v,C.firstChild)}else{C.appendChild(v)}},m.getBody());if(d.select("a",C).length>0){y.statusKeyboardNavigation=new e.ui.KeyboardNavigation({root:m.id+"_path_row",items:d.select("a",C),excludeFromTabOrder:true,onCancel:function(){m.focus()}},d)}}},_sel:function(i){this.editor.execCommand("mceSelectNodeDepth",false,i)},_mceInsertAnchor:function(k,j){var i=this.editor;i.windowManager.open({url:this.url+"/anchor.htm",width:320+parseInt(i.getLang("advanced.anchor_delta_width",0)),height:90+parseInt(i.getLang("advanced.anchor_delta_height",0)),inline:true},{theme_url:this.url})},_mceCharMap:function(){var i=this.editor;i.windowManager.open({url:this.url+"/charmap.htm",width:550+parseInt(i.getLang("advanced.charmap_delta_width",0)),height:250+parseInt(i.getLang("advanced.charmap_delta_height",0)),inline:true},{theme_url:this.url})},_mceHelp:function(){var i=this.editor;i.windowManager.open({url:this.url+"/about.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceShortcuts:function(){var i=this.editor;i.windowManager.open({url:this.url+"/shortcuts.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceColorPicker:function(k,j){var i=this.editor;j=j||{};i.windowManager.open({url:this.url+"/color_picker.htm",width:375+parseInt(i.getLang("advanced.colorpicker_delta_width",0)),height:250+parseInt(i.getLang("advanced.colorpicker_delta_height",0)),close_previous:false,inline:true},{input_color:j.color,func:j.func,theme_url:this.url})},_mceCodeEditor:function(j,k){var i=this.editor;i.windowManager.open({url:this.url+"/source_editor.htm",width:parseInt(i.getParam("theme_advanced_source_editor_width",720)),height:parseInt(i.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url})},_mceImage:function(j,k){var i=this.editor;if(i.dom.getAttrib(i.selection.getNode(),"class").indexOf("mceItem")!=-1){return}i.windowManager.open({url:this.url+"/image.htm",width:355+parseInt(i.getLang("advanced.image_delta_width",0)),height:275+parseInt(i.getLang("advanced.image_delta_height",0)),inline:true},{theme_url:this.url})},_mceLink:function(j,k){var i=this.editor;i.windowManager.open({url:this.url+"/link.htm",width:310+parseInt(i.getLang("advanced.link_delta_width",0)),height:200+parseInt(i.getLang("advanced.link_delta_height",0)),inline:true},{theme_url:this.url})},_mceNewDocument:function(){var i=this.editor;i.windowManager.confirm("advanced.newdocument",function(j){if(j){i.execCommand("mceSetContent",false,"")}})},_mceForeColor:function(){var i=this;this._mceColorPicker(0,{color:i.fgColor,func:function(j){i.fgColor=j;i.editor.execCommand("ForeColor",false,j)}})},_mceBackColor:function(){var i=this;this._mceColorPicker(0,{color:i.bgColor,func:function(j){i.bgColor=j;i.editor.execCommand("HiliteColor",false,j)}})},_ufirst:function(i){return i.substring(0,1).toUpperCase()+i.substring(1)}});e.ThemeManager.add("advanced",e.themes.AdvancedTheme)}(tinymce));
\ No newline at end of file
+(function(e){var d=e.DOM,b=e.dom.Event,h=e.extend,f=e.each,a=e.util.Cookie,g,c=e.explode;e.ThemeManager.requireLangPack("advanced");e.create("tinymce.themes.AdvancedTheme",{sizes:[8,10,12,14,18,24,36],controls:{bold:["bold_desc","Bold"],italic:["italic_desc","Italic"],underline:["underline_desc","Underline"],strikethrough:["striketrough_desc","Strikethrough"],justifyleft:["justifyleft_desc","JustifyLeft"],justifycenter:["justifycenter_desc","JustifyCenter"],justifyright:["justifyright_desc","JustifyRight"],justifyfull:["justifyfull_desc","JustifyFull"],bullist:["bullist_desc","InsertUnorderedList"],numlist:["numlist_desc","InsertOrderedList"],outdent:["outdent_desc","Outdent"],indent:["indent_desc","Indent"],cut:["cut_desc","Cut"],copy:["copy_desc","Copy"],paste:["paste_desc","Paste"],undo:["undo_desc","Undo"],redo:["redo_desc","Redo"],link:["link_desc","mceLink"],unlink:["unlink_desc","unlink"],image:["image_desc","mceImage"],cleanup:["cleanup_desc","mceCleanup"],help:["help_desc","mceHelp"],code:["code_desc","mceCodeEditor"],hr:["hr_desc","InsertHorizontalRule"],removeformat:["removeformat_desc","RemoveFormat"],sub:["sub_desc","subscript"],sup:["sup_desc","superscript"],forecolor:["forecolor_desc","ForeColor"],forecolorpicker:["forecolor_desc","mceForeColor"],backcolor:["backcolor_desc","HiliteColor"],backcolorpicker:["backcolor_desc","mceBackColor"],charmap:["charmap_desc","mceCharMap"],visualaid:["visualaid_desc","mceToggleVisualAid"],anchor:["anchor_desc","mceInsertAnchor"],newdocument:["newdocument_desc","mceNewDocument"],blockquote:["blockquote_desc","mceBlockQuote"]},stateControls:["bold","italic","underline","strikethrough","bullist","numlist","justifyleft","justifycenter","justifyright","justifyfull","sub","sup","blockquote"],init:function(j,k){var l=this,m,i,n;l.editor=j;l.url=k;l.onResolveName=new e.util.Dispatcher(this);j.forcedHighContrastMode=j.settings.detect_highcontrast&&l._isHighContrast();j.settings.skin=j.forcedHighContrastMode?"highcontrast":j.settings.skin;l.settings=m=h({theme_advanced_path:true,theme_advanced_toolbar_location:"bottom",theme_advanced_buttons1:"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,|,sub,sup,|,charmap",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"center",theme_advanced_fonts:"Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",theme_advanced_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1,theme_advanced_font_sizes:"1,2,3,4,5,6,7",theme_advanced_font_selector:"span",theme_advanced_show_current_color:0,readonly:j.settings.readonly},j.settings);if(!m.font_size_style_values){m.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt"}if(e.is(m.theme_advanced_font_sizes,"string")){m.font_size_style_values=e.explode(m.font_size_style_values);m.font_size_classes=e.explode(m.font_size_classes||"");n={};j.settings.theme_advanced_font_sizes=m.theme_advanced_font_sizes;f(j.getParam("theme_advanced_font_sizes","","hash"),function(q,p){var o;if(p==q&&q>=1&&q<=7){p=q+" ("+l.sizes[q-1]+"pt)";o=m.font_size_classes[q-1];q=m.font_size_style_values[q-1]||(l.sizes[q-1]+"pt")}if(/^\s*\./.test(q)){o=q.replace(/\./g,"")}n[p]=o?{"class":o}:{fontSize:q}});m.theme_advanced_font_sizes=n}if((i=m.theme_advanced_path_location)&&i!="none"){m.theme_advanced_statusbar_location=m.theme_advanced_path_location}if(m.theme_advanced_statusbar_location=="none"){m.theme_advanced_statusbar_location=0}if(j.settings.content_css!==false){j.contentCSS.push(j.baseURI.toAbsolute(k+"/skins/"+j.settings.skin+"/content.css"))}j.onInit.add(function(){if(!j.settings.readonly){j.onNodeChange.add(l._nodeChanged,l);j.onKeyUp.add(l._updateUndoStatus,l);j.onMouseUp.add(l._updateUndoStatus,l);j.dom.bind(j.dom.getRoot(),"dragend",function(){l._updateUndoStatus(j)})}});j.onSetProgressState.add(function(q,o,r){var s,t=q.id,p;if(o){l.progressTimer=setTimeout(function(){s=q.getContainer();s=s.insertBefore(d.create("DIV",{style:"position:relative"}),s.firstChild);p=d.get(q.id+"_tbl");d.add(s,"div",{id:t+"_blocker","class":"mceBlocker",style:{width:p.clientWidth+2,height:p.clientHeight+2}});d.add(s,"div",{id:t+"_progress","class":"mceProgress",style:{left:p.clientWidth/2,top:p.clientHeight/2}})},r||0)}else{d.remove(t+"_blocker");d.remove(t+"_progress");clearTimeout(l.progressTimer)}});d.loadCSS(m.editor_css?j.documentBaseURI.toAbsolute(m.editor_css):k+"/skins/"+j.settings.skin+"/ui.css");if(m.skin_variant){d.loadCSS(k+"/skins/"+j.settings.skin+"/ui_"+m.skin_variant+".css")}},_isHighContrast:function(){var i,j=d.add(d.getRoot(),"div",{style:"background-color: rgb(171,239,86);"});i=(d.getStyle(j,"background-color",true)+"").toLowerCase().replace(/ /g,"");d.remove(j);return i!="rgb(171,239,86)"&&i!="#abef56"},createControl:function(l,i){var j,k;if(k=i.createControl(l)){return k}switch(l){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu()}if((j=this.controls[l])){return i.createButton(l,{title:"advanced."+j[0],cmd:j[1],ui:j[2],value:j[3]})}},execCommand:function(k,j,l){var i=this["_"+k];if(i){i.call(this,j,l);return true}return false},_importClasses:function(k){var i=this.editor,j=i.controlManager.get("styleselect");if(j.getLength()==0){f(i.dom.getClasses(),function(n,l){var m="style_"+l;i.formatter.register(m,{inline:"span",attributes:{"class":n["class"]},selector:"*"});j.add(n["class"],m)})}},_createStyleSelect:function(m){var k=this,i=k.editor,j=i.controlManager,l;l=j.createListBox("styleselect",{title:"advanced.style_select",onselect:function(o){var p,n=[];f(l.items,function(q){n.push(q.value)});i.focus();i.undoManager.add();p=i.formatter.matchAll(n);if(!o||p[0]==o){if(p[0]){i.formatter.remove(p[0])}}else{i.formatter.apply(o)}i.undoManager.add();i.nodeChanged();return false}});i.onInit.add(function(){var o=0,n=i.getParam("style_formats");if(n){f(n,function(p){var q,r=0;f(p,function(){r++});if(r>1){q=p.name=p.name||"style_"+(o++);i.formatter.register(q,p);l.add(p.title,q)}else{l.add(p.title)}})}else{f(i.getParam("theme_advanced_styles","","hash"),function(r,q){var p;if(r){p="style_"+(o++);i.formatter.register(p,{inline:"span",classes:r,selector:"*"});l.add(k.editor.translate(q),p)}})}});if(l.getLength()==0){l.onPostRender.add(function(o,p){if(!l.NativeListBox){b.add(p.id+"_text","focus",k._importClasses,k);b.add(p.id+"_text","mousedown",k._importClasses,k);b.add(p.id+"_open","focus",k._importClasses,k);b.add(p.id+"_open","mousedown",k._importClasses,k)}else{b.add(p.id,"focus",k._importClasses,k)}})}return l},_createFontSelect:function(){var k,j=this,i=j.editor;k=i.controlManager.createListBox("fontselect",{title:"advanced.fontdefault",onselect:function(l){var m=k.items[k.selectedIndex];if(!l&&m){i.execCommand("FontName",false,m.value);return}i.execCommand("FontName",false,l);k.select(function(n){return l==n});if(m&&m.value==l){k.select(null)}return false}});if(k){f(i.getParam("theme_advanced_fonts",j.settings.theme_advanced_fonts,"hash"),function(m,l){k.add(i.translate(l),m,{style:m.indexOf("dings")==-1?"font-family:"+m:""})})}return k},_createFontSizeSelect:function(){var m=this,k=m.editor,n,l=0,j=[];n=k.controlManager.createListBox("fontsizeselect",{title:"advanced.font_size",onselect:function(i){var o=n.items[n.selectedIndex];if(!i&&o){o=o.value;if(o["class"]){k.formatter.toggle("fontsize_class",{value:o["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,o.fontSize)}return}if(i["class"]){k.focus();k.undoManager.add();k.formatter.toggle("fontsize_class",{value:i["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,i.fontSize)}n.select(function(p){return i==p});if(o&&(o.value.fontSize==i.fontSize||o.value["class"]&&o.value["class"]==i["class"])){n.select(null)}return false}});if(n){f(m.settings.theme_advanced_font_sizes,function(o,i){var p=o.fontSize;if(p>=1&&p<=7){p=m.sizes[parseInt(p)-1]+"pt"}n.add(i,o,{style:"font-size:"+p,"class":"mceFontSize"+(l++)+(" "+(o["class"]||""))})})}return n},_createBlockFormats:function(){var k,i={p:"advanced.paragraph",address:"advanced.address",pre:"advanced.pre",h1:"advanced.h1",h2:"advanced.h2",h3:"advanced.h3",h4:"advanced.h4",h5:"advanced.h5",h6:"advanced.h6",div:"advanced.div",blockquote:"advanced.blockquote",code:"advanced.code",dt:"advanced.dt",dd:"advanced.dd",samp:"advanced.samp"},j=this;k=j.editor.controlManager.createListBox("formatselect",{title:"advanced.block",onselect:function(l){j.editor.execCommand("FormatBlock",false,l);return false}});if(k){f(j.editor.getParam("theme_advanced_blockformats",j.settings.theme_advanced_blockformats,"hash"),function(m,l){k.add(j.editor.translate(l!=m?l:i[m]),m,{"class":"mce_formatPreview mce_"+m})})}return k},_createForeColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_text_colors){l.colors=i}if(k.theme_advanced_default_foreground_color){l.default_color=k.theme_advanced_default_foreground_color}l.title="advanced.forecolor_desc";l.cmd="ForeColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("forecolor",l);return m},_createBackColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_background_colors){l.colors=i}if(k.theme_advanced_default_background_color){l.default_color=k.theme_advanced_default_background_color}l.title="advanced.backcolor_desc";l.cmd="HiliteColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("backcolor",l);return m},renderUI:function(k){var m,l,q,v=this,r=v.editor,w=v.settings,u,j,i;if(r.settings){r.settings.aria_label=w.aria_label+r.getLang("advanced.help_shortcut")}m=j=d.create("span",{role:"application","aria-labelledby":r.id+"_voice",id:r.id+"_parent","class":"mceEditor "+r.settings.skin+"Skin"+(w.skin_variant?" "+r.settings.skin+"Skin"+v._ufirst(w.skin_variant):"")});d.add(m,"span",{"class":"mceVoiceLabel",style:"display:none;",id:r.id+"_voice"},w.aria_label);if(!d.boxModel){m=d.add(m,"div",{"class":"mceOldBoxModel"})}m=u=d.add(m,"table",{role:"presentation",id:r.id+"_tbl","class":"mceLayout",cellSpacing:0,cellPadding:0});m=q=d.add(m,"tbody");switch((w.theme_advanced_layout_manager||"").toLowerCase()){case"rowlayout":l=v._rowLayout(w,q,k);break;case"customlayout":l=r.execCallback("theme_advanced_custom_layout",w,q,k,j);break;default:l=v._simpleLayout(w,q,k,j)}m=k.targetNode;i=u.rows;d.addClass(i[0],"mceFirst");d.addClass(i[i.length-1],"mceLast");f(d.select("tr",q),function(o){d.addClass(o.firstChild,"mceFirst");d.addClass(o.childNodes[o.childNodes.length-1],"mceLast")});if(d.get(w.theme_advanced_toolbar_container)){d.get(w.theme_advanced_toolbar_container).appendChild(j)}else{d.insertAfter(j,m)}b.add(r.id+"_path_row","click",function(n){n=n.target;if(n.nodeName=="A"){v._sel(n.className.replace(/^.*mcePath_([0-9]+).*$/,"$1"));return b.cancel(n)}});if(!r.getParam("accessibility_focus")){b.add(d.add(j,"a",{href:"#"},"<!-- IE -->"),"focus",function(){tinyMCE.get(r.id).focus()})}if(w.theme_advanced_toolbar_location=="external"){k.deltaHeight=0}v.deltaHeight=k.deltaHeight;k.targetNode=null;r.onKeyDown.add(function(p,n){var s=121,o=122;if(n.altKey){if(n.keyCode===s){if(e.isWebKit){window.focus()}v.toolbarGroup.focus();return b.cancel(n)}else{if(n.keyCode===o){d.get(p.id+"_path_row").focus();return b.cancel(n)}}}});r.addShortcut("alt+0","","mceShortcuts",v);return{iframeContainer:l,editorContainer:r.id+"_parent",sizeContainer:u,deltaHeight:k.deltaHeight}},getInfo:function(){return{longname:"Advanced theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:e.majorVersion+"."+e.minorVersion}},resizeBy:function(i,j){var k=d.get(this.editor.id+"_ifr");this.resizeTo(k.clientWidth+i,k.clientHeight+j)},resizeTo:function(i,m,k){var j=this.editor,l=this.settings,n=d.get(j.id+"_tbl"),o=d.get(j.id+"_ifr");i=Math.max(l.theme_advanced_resizing_min_width||100,i);m=Math.max(l.theme_advanced_resizing_min_height||100,m);i=Math.min(l.theme_advanced_resizing_max_width||65535,i);m=Math.min(l.theme_advanced_resizing_max_height||65535,m);d.setStyle(n,"height","");d.setStyle(o,"height",m);if(l.theme_advanced_resize_horizontal){d.setStyle(n,"width","");d.setStyle(o,"width",i);if(i<n.clientWidth){i=n.clientWidth;d.setStyle(o,"width",n.clientWidth)}}if(k&&l.theme_advanced_resizing_use_cookie){a.setHash("TinyMCE_"+j.id+"_size",{cw:i,ch:m})}},destroy:function(){var i=this.editor.id;b.clear(i+"_resize");b.clear(i+"_path_row");b.clear(i+"_external_close")},_simpleLayout:function(y,r,k,i){var x=this,u=x.editor,v=y.theme_advanced_toolbar_location,m=y.theme_advanced_statusbar_location,l,j,q,w;if(y.readonly){l=d.add(r,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"});return j}if(v=="top"){x._addToolbars(r,k)}if(v=="external"){l=w=d.create("div",{style:"position:relative"});l=d.add(l,"div",{id:u.id+"_external","class":"mceExternalToolbar"});d.add(l,"a",{id:u.id+"_external_close",href:"javascript:;","class":"mceExternalClose"});l=d.add(l,"table",{id:u.id+"_tblext",cellSpacing:0,cellPadding:0});q=d.add(l,"tbody");if(i.firstChild.className=="mceOldBoxModel"){i.firstChild.appendChild(w)}else{i.insertBefore(w,i.firstChild)}x._addToolbars(q,k);u.onMouseUp.add(function(){var o=d.get(u.id+"_external");d.show(o);d.hide(g);var n=b.add(u.id+"_external_close","click",function(){d.hide(u.id+"_external");b.remove(u.id+"_external_close","click",n)});d.show(o);d.setStyle(o,"top",0-d.getRect(u.id+"_tblext").h-1);d.hide(o);d.show(o);o.style.filter="";g=u.id+"_external";o=null})}if(m=="top"){x._addStatusBar(r,k)}if(!y.theme_advanced_toolbar_container){l=d.add(r,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"})}if(v=="bottom"){x._addToolbars(r,k)}if(m=="bottom"){x._addStatusBar(r,k)}return j},_rowLayout:function(w,m,k){var v=this,p=v.editor,u,x,i=p.controlManager,l,j,r,q;u=w.theme_advanced_containers_default_class||"";x=w.theme_advanced_containers_default_align||"center";f(c(w.theme_advanced_containers||""),function(s,o){var n=w["theme_advanced_container_"+s]||"";switch(s.toLowerCase()){case"mceeditor":l=d.add(m,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"});break;case"mceelementpath":v._addStatusBar(m,k);break;default:q=(w["theme_advanced_container_"+s+"_align"]||x).toLowerCase();q="mce"+v._ufirst(q);l=d.add(d.add(m,"tr"),"td",{"class":"mceToolbar "+(w["theme_advanced_container_"+s+"_class"]||u)+" "+q||x});r=i.createToolbar("toolbar"+o);v._addControls(n,r);d.setHTML(l,r.renderHTML());k.deltaHeight-=w.theme_advanced_row_height}});return j},_addControls:function(j,i){var k=this,l=k.settings,m,n=k.editor.controlManager;if(l.theme_advanced_disable&&!k._disabled){m={};f(c(l.theme_advanced_disable),function(o){m[o]=1});k._disabled=m}else{m=k._disabled}f(c(j),function(p){var o;if(m&&m[p]){return}if(p=="tablecontrols"){f(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"],function(q){q=k.createControl(q,n);if(q){i.add(q)}});return}o=k.createControl(p,n);if(o){i.add(o)}})},_addToolbars:function(x,k){var A=this,p,m,r=A.editor,B=A.settings,z,j=r.controlManager,u,l,q=[],y,w;w=j.createToolbarGroup("toolbargroup",{name:r.getLang("advanced.toolbar"),tab_focus_toolbar:r.getParam("theme_advanced_tab_focus_toolbar")});A.toolbarGroup=w;y=B.theme_advanced_toolbar_align.toLowerCase();y="mce"+A._ufirst(y);l=d.add(d.add(x,"tr",{role:"presentation"}),"td",{"class":"mceToolbar "+y,role:"presentation"});for(p=1;(z=B["theme_advanced_buttons"+p]);p++){m=j.createToolbar("toolbar"+p,{"class":"mceToolbarRow"+p});if(B["theme_advanced_buttons"+p+"_add"]){z+=","+B["theme_advanced_buttons"+p+"_add"]}if(B["theme_advanced_buttons"+p+"_add_before"]){z=B["theme_advanced_buttons"+p+"_add_before"]+","+z}A._addControls(z,m);w.add(m);k.deltaHeight-=B.theme_advanced_row_height}q.push(w.renderHTML());q.push(d.createHTML("a",{href:"#",accesskey:"z",title:r.getLang("advanced.toolbar_focus"),onfocus:"tinyMCE.getInstanceById('"+r.id+"').focus();"},"<!-- IE -->"));d.setHTML(l,q.join(""))},_addStatusBar:function(m,j){var k,v=this,p=v.editor,w=v.settings,i,q,u,l;k=d.add(m,"tr");k=l=d.add(k,"td",{"class":"mceStatusbar"});k=d.add(k,"div",{id:p.id+"_path_row",role:"group","aria-labelledby":p.id+"_path_voice"});if(w.theme_advanced_path){d.add(k,"span",{id:p.id+"_path_voice"},p.translate("advanced.path"));d.add(k,"span",{},": ")}else{d.add(k,"span",{},"&#160;")}if(w.theme_advanced_resizing){d.add(l,"a",{id:p.id+"_resize",href:"javascript:;",onclick:"return false;","class":"mceResize",tabIndex:"-1"});if(w.theme_advanced_resizing_use_cookie){p.onPostRender.add(function(){var n=a.getHash("TinyMCE_"+p.id+"_size"),r=d.get(p.id+"_tbl");if(!n){return}v.resizeTo(n.cw,n.ch)})}p.onPostRender.add(function(){b.add(p.id+"_resize","click",function(n){n.preventDefault()});b.add(p.id+"_resize","mousedown",function(D){var t,r,s,o,C,z,A,F,n,E,x;function y(G){G.preventDefault();n=A+(G.screenX-C);E=F+(G.screenY-z);v.resizeTo(n,E)}function B(G){b.remove(d.doc,"mousemove",t);b.remove(p.getDoc(),"mousemove",r);b.remove(d.doc,"mouseup",s);b.remove(p.getDoc(),"mouseup",o);n=A+(G.screenX-C);E=F+(G.screenY-z);v.resizeTo(n,E,true)}D.preventDefault();C=D.screenX;z=D.screenY;x=d.get(v.editor.id+"_ifr");A=n=x.clientWidth;F=E=x.clientHeight;t=b.add(d.doc,"mousemove",y);r=b.add(p.getDoc(),"mousemove",y);s=b.add(d.doc,"mouseup",B);o=b.add(p.getDoc(),"mouseup",B)})})}j.deltaHeight-=21;k=m=null},_updateUndoStatus:function(j){var i=j.controlManager,k=j.undoManager;i.setDisabled("undo",!k.hasUndo()&&!k.typing);i.setDisabled("redo",!k.hasRedo())},_nodeChanged:function(m,r,D,q,E){var y=this,C,F=0,x,G,z=y.settings,w,k,u,B,l,j,i;e.each(y.stateControls,function(n){r.setActive(n,m.queryCommandState(y.controls[n][1]))});function o(p){var s,n=E.parents,t=p;if(typeof(p)=="string"){t=function(v){return v.nodeName==p}}for(s=0;s<n.length;s++){if(t(n[s])){return n[s]}}}r.setActive("visualaid",m.hasVisual);y._updateUndoStatus(m);r.setDisabled("outdent",!m.queryCommandState("Outdent"));C=o("A");if(G=r.get("link")){if(!C||!C.name){G.setDisabled(!C&&q);G.setActive(!!C)}}if(G=r.get("unlink")){G.setDisabled(!C&&q);G.setActive(!!C&&!C.name)}if(G=r.get("anchor")){G.setActive(!q&&!!C&&C.name)}C=o("IMG");if(G=r.get("image")){G.setActive(!q&&!!C&&D.className.indexOf("mceItem")==-1)}if(G=r.get("styleselect")){y._importClasses();j=[];f(G.items,function(n){j.push(n.value)});i=m.formatter.matchAll(j);G.select(i[0])}if(G=r.get("formatselect")){C=o(d.isBlock);if(C){G.select(C.nodeName.toLowerCase())}}o(function(p){if(p.nodeName==="SPAN"){if(!w&&p.className){w=p.className}}if(m.dom.is(p,z.theme_advanced_font_selector)){if(!k&&p.style.fontSize){k=p.style.fontSize}if(!u&&p.style.fontFamily){u=p.style.fontFamily.replace(/[\"\']+/g,"").replace(/^([^,]+).*/,"$1").toLowerCase()}if(!B&&p.style.color){B=p.style.color}if(!l&&p.style.backgroundColor){l=p.style.backgroundColor}}return false});if(G=r.get("fontselect")){G.select(function(n){return n.replace(/^([^,]+).*/,"$1").toLowerCase()==u})}if(G=r.get("fontsizeselect")){if(z.theme_advanced_runtime_fontsize&&!k&&!w){k=m.dom.getStyle(D,"fontSize",true)}G.select(function(n){if(n.fontSize&&n.fontSize===k){return true}if(n["class"]&&n["class"]===w){return true}})}if(z.theme_advanced_show_current_color){function A(p,n){if(G=r.get(p)){if(!n){n=G.settings.default_color}if(n!==G.value){G.displayColor(n)}}}A("forecolor",B);A("backcolor",l)}if(z.theme_advanced_show_current_color){function A(p,n){if(G=r.get(p)){if(!n){n=G.settings.default_color}if(n!==G.value){G.displayColor(n)}}}A("forecolor",B);A("backcolor",l)}if(z.theme_advanced_path&&z.theme_advanced_statusbar_location){C=d.get(m.id+"_path")||d.add(m.id+"_path_row","span",{id:m.id+"_path"});if(y.statusKeyboardNavigation){y.statusKeyboardNavigation.destroy();y.statusKeyboardNavigation=null}d.setHTML(C,"");o(function(H){var p=H.nodeName.toLowerCase(),s,v,t="";if(H.nodeType!=1||p==="br"||H.getAttribute("data-mce-bogus")||d.hasClass(H,"mceItemHidden")||d.hasClass(H,"mceItemRemoved")){return}if(e.isIE&&H.scopeName!=="HTML"){p=H.scopeName+":"+p}p=p.replace(/mce\:/g,"");switch(p){case"b":p="strong";break;case"i":p="em";break;case"img":if(x=d.getAttrib(H,"src")){t+="src: "+x+" "}break;case"a":if(x=d.getAttrib(H,"name")){t+="name: "+x+" ";p+="#"+x}if(x=d.getAttrib(H,"href")){t+="href: "+x+" "}break;case"font":if(x=d.getAttrib(H,"face")){t+="font: "+x+" "}if(x=d.getAttrib(H,"size")){t+="size: "+x+" "}if(x=d.getAttrib(H,"color")){t+="color: "+x+" "}break;case"span":if(x=d.getAttrib(H,"style")){t+="style: "+x+" "}break}if(x=d.getAttrib(H,"id")){t+="id: "+x+" "}if(x=H.className){x=x.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g,"");if(x){t+="class: "+x+" ";if(d.isBlock(H)||p=="img"||p=="span"){p+="."+x}}}p=p.replace(/(html:)/g,"");p={name:p,node:H,title:t};y.onResolveName.dispatch(y,p);t=p.title;p=p.name;v=d.create("a",{href:"javascript:;",role:"button",onmousedown:"return false;",title:t,"class":"mcePath_"+(F++)},p);if(C.hasChildNodes()){C.insertBefore(d.create("span",{"aria-hidden":"true"},"\u00a0\u00bb "),C.firstChild);C.insertBefore(v,C.firstChild)}else{C.appendChild(v)}},m.getBody());if(d.select("a",C).length>0){y.statusKeyboardNavigation=new e.ui.KeyboardNavigation({root:m.id+"_path_row",items:d.select("a",C),excludeFromTabOrder:true,onCancel:function(){m.focus()}},d)}}},_sel:function(i){this.editor.execCommand("mceSelectNodeDepth",false,i)},_mceInsertAnchor:function(k,j){var i=this.editor;i.windowManager.open({url:this.url+"/anchor.htm",width:320+parseInt(i.getLang("advanced.anchor_delta_width",0)),height:90+parseInt(i.getLang("advanced.anchor_delta_height",0)),inline:true},{theme_url:this.url})},_mceCharMap:function(){var i=this.editor;i.windowManager.open({url:this.url+"/charmap.htm",width:550+parseInt(i.getLang("advanced.charmap_delta_width",0)),height:265+parseInt(i.getLang("advanced.charmap_delta_height",0)),inline:true},{theme_url:this.url})},_mceHelp:function(){var i=this.editor;i.windowManager.open({url:this.url+"/about.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceShortcuts:function(){var i=this.editor;i.windowManager.open({url:this.url+"/shortcuts.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceColorPicker:function(k,j){var i=this.editor;j=j||{};i.windowManager.open({url:this.url+"/color_picker.htm",width:375+parseInt(i.getLang("advanced.colorpicker_delta_width",0)),height:250+parseInt(i.getLang("advanced.colorpicker_delta_height",0)),close_previous:false,inline:true},{input_color:j.color,func:j.func,theme_url:this.url})},_mceCodeEditor:function(j,k){var i=this.editor;i.windowManager.open({url:this.url+"/source_editor.htm",width:parseInt(i.getParam("theme_advanced_source_editor_width",720)),height:parseInt(i.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url})},_mceImage:function(j,k){var i=this.editor;if(i.dom.getAttrib(i.selection.getNode(),"class").indexOf("mceItem")!=-1){return}i.windowManager.open({url:this.url+"/image.htm",width:355+parseInt(i.getLang("advanced.image_delta_width",0)),height:275+parseInt(i.getLang("advanced.image_delta_height",0)),inline:true},{theme_url:this.url})},_mceLink:function(j,k){var i=this.editor;i.windowManager.open({url:this.url+"/link.htm",width:310+parseInt(i.getLang("advanced.link_delta_width",0)),height:200+parseInt(i.getLang("advanced.link_delta_height",0)),inline:true},{theme_url:this.url})},_mceNewDocument:function(){var i=this.editor;i.windowManager.confirm("advanced.newdocument",function(j){if(j){i.execCommand("mceSetContent",false,"")}})},_mceForeColor:function(){var i=this;this._mceColorPicker(0,{color:i.fgColor,func:function(j){i.fgColor=j;i.editor.execCommand("ForeColor",false,j)}})},_mceBackColor:function(){var i=this;this._mceColorPicker(0,{color:i.bgColor,func:function(j){i.bgColor=j;i.editor.execCommand("HiliteColor",false,j)}})},_ufirst:function(i){return i.substring(0,1).toUpperCase()+i.substring(1)}});e.ThemeManager.add("advanced",e.themes.AdvancedTheme)}(tinymce));
\ No newline at end of file
diff --git a/wp-includes/js/tinymce/themes/advanced/editor_template_src.js b/wp-includes/js/tinymce/themes/advanced/editor_template_src.js
new file mode 100644 (file)
index 0000000..00b404a
--- /dev/null
@@ -0,0 +1,1362 @@
+/**
+ * editor_template_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function(tinymce) {
+       var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, each = tinymce.each, Cookie = tinymce.util.Cookie, lastExtID, explode = tinymce.explode;
+
+       // Tell it to load theme specific language pack(s)
+       tinymce.ThemeManager.requireLangPack('advanced');
+
+       tinymce.create('tinymce.themes.AdvancedTheme', {
+               sizes : [8, 10, 12, 14, 18, 24, 36],
+
+               // Control name lookup, format: title, command
+               controls : {
+                       bold : ['bold_desc', 'Bold'],
+                       italic : ['italic_desc', 'Italic'],
+                       underline : ['underline_desc', 'Underline'],
+                       strikethrough : ['striketrough_desc', 'Strikethrough'],
+                       justifyleft : ['justifyleft_desc', 'JustifyLeft'],
+                       justifycenter : ['justifycenter_desc', 'JustifyCenter'],
+                       justifyright : ['justifyright_desc', 'JustifyRight'],
+                       justifyfull : ['justifyfull_desc', 'JustifyFull'],
+                       bullist : ['bullist_desc', 'InsertUnorderedList'],
+                       numlist : ['numlist_desc', 'InsertOrderedList'],
+                       outdent : ['outdent_desc', 'Outdent'],
+                       indent : ['indent_desc', 'Indent'],
+                       cut : ['cut_desc', 'Cut'],
+                       copy : ['copy_desc', 'Copy'],
+                       paste : ['paste_desc', 'Paste'],
+                       undo : ['undo_desc', 'Undo'],
+                       redo : ['redo_desc', 'Redo'],
+                       link : ['link_desc', 'mceLink'],
+                       unlink : ['unlink_desc', 'unlink'],
+                       image : ['image_desc', 'mceImage'],
+                       cleanup : ['cleanup_desc', 'mceCleanup'],
+                       help : ['help_desc', 'mceHelp'],
+                       code : ['code_desc', 'mceCodeEditor'],
+                       hr : ['hr_desc', 'InsertHorizontalRule'],
+                       removeformat : ['removeformat_desc', 'RemoveFormat'],
+                       sub : ['sub_desc', 'subscript'],
+                       sup : ['sup_desc', 'superscript'],
+                       forecolor : ['forecolor_desc', 'ForeColor'],
+                       forecolorpicker : ['forecolor_desc', 'mceForeColor'],
+                       backcolor : ['backcolor_desc', 'HiliteColor'],
+                       backcolorpicker : ['backcolor_desc', 'mceBackColor'],
+                       charmap : ['charmap_desc', 'mceCharMap'],
+                       visualaid : ['visualaid_desc', 'mceToggleVisualAid'],
+                       anchor : ['anchor_desc', 'mceInsertAnchor'],
+                       newdocument : ['newdocument_desc', 'mceNewDocument'],
+                       blockquote : ['blockquote_desc', 'mceBlockQuote']
+               },
+
+               stateControls : ['bold', 'italic', 'underline', 'strikethrough', 'bullist', 'numlist', 'justifyleft', 'justifycenter', 'justifyright', 'justifyfull', 'sub', 'sup', 'blockquote'],
+
+               init : function(ed, url) {
+                       var t = this, s, v, o;
+       
+                       t.editor = ed;
+                       t.url = url;
+                       t.onResolveName = new tinymce.util.Dispatcher(this);
+
+                       ed.forcedHighContrastMode = ed.settings.detect_highcontrast && t._isHighContrast();
+                       ed.settings.skin = ed.forcedHighContrastMode ? 'highcontrast' : ed.settings.skin;
+
+                       // Default settings
+                       t.settings = s = extend({
+                               theme_advanced_path : true,
+                               theme_advanced_toolbar_location : 'bottom',
+                               theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",
+                               theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",
+                               theme_advanced_buttons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap",
+                               theme_advanced_blockformats : "p,address,pre,h1,h2,h3,h4,h5,h6",
+                               theme_advanced_toolbar_align : "center",
+                               theme_advanced_fonts : "Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",
+                               theme_advanced_more_colors : 1,
+                               theme_advanced_row_height : 23,
+                               theme_advanced_resize_horizontal : 1,
+                               theme_advanced_resizing_use_cookie : 1,
+                               theme_advanced_font_sizes : "1,2,3,4,5,6,7",
+                               theme_advanced_font_selector : "span",
+                               theme_advanced_show_current_color: 0,
+                               readonly : ed.settings.readonly
+                       }, ed.settings);
+
+                       // Setup default font_size_style_values
+                       if (!s.font_size_style_values)
+                               s.font_size_style_values = "8pt,10pt,12pt,14pt,18pt,24pt,36pt";
+
+                       if (tinymce.is(s.theme_advanced_font_sizes, 'string')) {
+                               s.font_size_style_values = tinymce.explode(s.font_size_style_values);
+                               s.font_size_classes = tinymce.explode(s.font_size_classes || '');
+
+                               // Parse string value
+                               o = {};
+                               ed.settings.theme_advanced_font_sizes = s.theme_advanced_font_sizes;
+                               each(ed.getParam('theme_advanced_font_sizes', '', 'hash'), function(v, k) {
+                                       var cl;
+
+                                       if (k == v && v >= 1 && v <= 7) {
+                                               k = v + ' (' + t.sizes[v - 1] + 'pt)';
+                                               cl = s.font_size_classes[v - 1];
+                                               v = s.font_size_style_values[v - 1] || (t.sizes[v - 1] + 'pt');
+                                       }
+
+                                       if (/^\s*\./.test(v))
+                                               cl = v.replace(/\./g, '');
+
+                                       o[k] = cl ? {'class' : cl} : {fontSize : v};
+                               });
+
+                               s.theme_advanced_font_sizes = o;
+                       }
+
+                       if ((v = s.theme_advanced_path_location) && v != 'none')
+                               s.theme_advanced_statusbar_location = s.theme_advanced_path_location;
+
+                       if (s.theme_advanced_statusbar_location == 'none')
+                               s.theme_advanced_statusbar_location = 0;
+
+                       if (ed.settings.content_css !== false)
+                               ed.contentCSS.push(ed.baseURI.toAbsolute(url + "/skins/" + ed.settings.skin + "/content.css"));
+
+                       // Init editor
+                       ed.onInit.add(function() {
+                               if (!ed.settings.readonly) {
+                                       ed.onNodeChange.add(t._nodeChanged, t);
+                                       ed.onKeyUp.add(t._updateUndoStatus, t);
+                                       ed.onMouseUp.add(t._updateUndoStatus, t);
+                                       ed.dom.bind(ed.dom.getRoot(), 'dragend', function() {
+                                               t._updateUndoStatus(ed);
+                                       });
+                               }
+                       });
+
+                       ed.onSetProgressState.add(function(ed, b, ti) {
+                               var co, id = ed.id, tb;
+
+                               if (b) {
+                                       t.progressTimer = setTimeout(function() {
+                                               co = ed.getContainer();
+                                               co = co.insertBefore(DOM.create('DIV', {style : 'position:relative'}), co.firstChild);
+                                               tb = DOM.get(ed.id + '_tbl');
+
+                                               DOM.add(co, 'div', {id : id + '_blocker', 'class' : 'mceBlocker', style : {width : tb.clientWidth + 2, height : tb.clientHeight + 2}});
+                                               DOM.add(co, 'div', {id : id + '_progress', 'class' : 'mceProgress', style : {left : tb.clientWidth / 2, top : tb.clientHeight / 2}});
+                                       }, ti || 0);
+                               } else {
+                                       DOM.remove(id + '_blocker');
+                                       DOM.remove(id + '_progress');
+                                       clearTimeout(t.progressTimer);
+                               }
+                       });
+
+                       DOM.loadCSS(s.editor_css ? ed.documentBaseURI.toAbsolute(s.editor_css) : url + "/skins/" + ed.settings.skin + "/ui.css");
+
+                       if (s.skin_variant)
+                               DOM.loadCSS(url + "/skins/" + ed.settings.skin + "/ui_" + s.skin_variant + ".css");
+               },
+
+               _isHighContrast : function() {
+                       var actualColor, div = DOM.add(DOM.getRoot(), 'div', {'style': 'background-color: rgb(171,239,86);'});
+
+                       actualColor = (DOM.getStyle(div, 'background-color', true) + '').toLowerCase().replace(/ /g, '');
+                       DOM.remove(div);
+
+                       return actualColor != 'rgb(171,239,86)' && actualColor != '#abef56';
+               },
+
+               createControl : function(n, cf) {
+                       var cd, c;
+
+                       if (c = cf.createControl(n))
+                               return c;
+
+                       switch (n) {
+                               case "styleselect":
+                                       return this._createStyleSelect();
+
+                               case "formatselect":
+                                       return this._createBlockFormats();
+
+                               case "fontselect":
+                                       return this._createFontSelect();
+
+                               case "fontsizeselect":
+                                       return this._createFontSizeSelect();
+
+                               case "forecolor":
+                                       return this._createForeColorMenu();
+
+                               case "backcolor":
+                                       return this._createBackColorMenu();
+                       }
+
+                       if ((cd = this.controls[n]))
+                               return cf.createButton(n, {title : "advanced." + cd[0], cmd : cd[1], ui : cd[2], value : cd[3]});
+               },
+
+               execCommand : function(cmd, ui, val) {
+                       var f = this['_' + cmd];
+
+                       if (f) {
+                               f.call(this, ui, val);
+                               return true;
+                       }
+
+                       return false;
+               },
+
+               _importClasses : function(e) {
+                       var ed = this.editor, ctrl = ed.controlManager.get('styleselect');
+
+                       if (ctrl.getLength() == 0) {
+                               each(ed.dom.getClasses(), function(o, idx) {
+                                       var name = 'style_' + idx;
+
+                                       ed.formatter.register(name, {
+                                               inline : 'span',
+                                               attributes : {'class' : o['class']},
+                                               selector : '*'
+                                       });
+
+                                       ctrl.add(o['class'], name);
+                               });
+                       }
+               },
+
+               _createStyleSelect : function(n) {
+                       var t = this, ed = t.editor, ctrlMan = ed.controlManager, ctrl;
+
+                       // Setup style select box
+                       ctrl = ctrlMan.createListBox('styleselect', {
+                               title : 'advanced.style_select',
+                               onselect : function(name) {
+                                       var matches, formatNames = [];
+
+                                       each(ctrl.items, function(item) {
+                                               formatNames.push(item.value);
+                                       });
+
+                                       ed.focus();
+                                       ed.undoManager.add();
+
+                                       // Toggle off the current format
+                                       matches = ed.formatter.matchAll(formatNames);
+                                       if (!name || matches[0] == name) {
+                                               if (matches[0]) 
+                                                       ed.formatter.remove(matches[0]);
+                                       } else
+                                               ed.formatter.apply(name);
+
+                                       ed.undoManager.add();
+                                       ed.nodeChanged();
+
+                                       return false; // No auto select
+                               }
+                       });
+
+                       // Handle specified format
+                       ed.onInit.add(function() {
+                               var counter = 0, formats = ed.getParam('style_formats');
+
+                               if (formats) {
+                                       each(formats, function(fmt) {
+                                               var name, keys = 0;
+
+                                               each(fmt, function() {keys++;});
+
+                                               if (keys > 1) {
+                                                       name = fmt.name = fmt.name || 'style_' + (counter++);
+                                                       ed.formatter.register(name, fmt);
+                                                       ctrl.add(fmt.title, name);
+                                               } else
+                                                       ctrl.add(fmt.title);
+                                       });
+                               } else {
+                                       each(ed.getParam('theme_advanced_styles', '', 'hash'), function(val, key) {
+                                               var name;
+
+                                               if (val) {
+                                                       name = 'style_' + (counter++);
+
+                                                       ed.formatter.register(name, {
+                                                               inline : 'span',
+                                                               classes : val,
+                                                               selector : '*'
+                                                       });
+
+                                                       ctrl.add(t.editor.translate(key), name);
+                                               }
+                                       });
+                               }
+                       });
+
+                       // Auto import classes if the ctrl box is empty
+                       if (ctrl.getLength() == 0) {
+                               ctrl.onPostRender.add(function(ed, n) {
+                                       if (!ctrl.NativeListBox) {
+                                               Event.add(n.id + '_text', 'focus', t._importClasses, t);
+                                               Event.add(n.id + '_text', 'mousedown', t._importClasses, t);
+                                               Event.add(n.id + '_open', 'focus', t._importClasses, t);
+                                               Event.add(n.id + '_open', 'mousedown', t._importClasses, t);
+                                       } else
+                                               Event.add(n.id, 'focus', t._importClasses, t);
+                               });
+                       }
+
+                       return ctrl;
+               },
+
+               _createFontSelect : function() {
+                       var c, t = this, ed = t.editor;
+
+                       c = ed.controlManager.createListBox('fontselect', {
+                               title : 'advanced.fontdefault',
+                               onselect : function(v) {
+                                       var cur = c.items[c.selectedIndex];
+
+                                       if (!v && cur) {
+                                               ed.execCommand('FontName', false, cur.value);
+                                               return;
+                                       }
+
+                                       ed.execCommand('FontName', false, v);
+
+                                       // Fake selection, execCommand will fire a nodeChange and update the selection
+                                       c.select(function(sv) {
+                                               return v == sv;
+                                       });
+
+                                       if (cur && cur.value == v) {
+                                               c.select(null);
+                                       }
+
+                                       return false; // No auto select
+                               }
+                       });
+
+                       if (c) {
+                               each(ed.getParam('theme_advanced_fonts', t.settings.theme_advanced_fonts, 'hash'), function(v, k) {
+                                       c.add(ed.translate(k), v, {style : v.indexOf('dings') == -1 ? 'font-family:' + v : ''});
+                               });
+                       }
+
+                       return c;
+               },
+
+               _createFontSizeSelect : function() {
+                       var t = this, ed = t.editor, c, i = 0, cl = [];
+
+                       c = ed.controlManager.createListBox('fontsizeselect', {title : 'advanced.font_size', onselect : function(v) {
+                               var cur = c.items[c.selectedIndex];
+
+                               if (!v && cur) {
+                                       cur = cur.value;
+
+                                       if (cur['class']) {
+                                               ed.formatter.toggle('fontsize_class', {value : cur['class']});
+                                               ed.undoManager.add();
+                                               ed.nodeChanged();
+                                       } else {
+                                               ed.execCommand('FontSize', false, cur.fontSize);
+                                       }
+
+                                       return;
+                               }
+
+                               if (v['class']) {
+                                       ed.focus();
+                                       ed.undoManager.add();
+                                       ed.formatter.toggle('fontsize_class', {value : v['class']});
+                                       ed.undoManager.add();
+                                       ed.nodeChanged();
+                               } else
+                                       ed.execCommand('FontSize', false, v.fontSize);
+
+                               // Fake selection, execCommand will fire a nodeChange and update the selection
+                               c.select(function(sv) {
+                                       return v == sv;
+                               });
+
+                               if (cur && (cur.value.fontSize == v.fontSize || cur.value['class'] && cur.value['class'] == v['class'])) {
+                                       c.select(null);
+                               }
+
+                               return false; // No auto select
+                       }});
+
+                       if (c) {
+                               each(t.settings.theme_advanced_font_sizes, function(v, k) {
+                                       var fz = v.fontSize;
+
+                                       if (fz >= 1 && fz <= 7)
+                                               fz = t.sizes[parseInt(fz) - 1] + 'pt';
+
+                                       c.add(k, v, {'style' : 'font-size:' + fz, 'class' : 'mceFontSize' + (i++) + (' ' + (v['class'] || ''))});
+                               });
+                       }
+
+                       return c;
+               },
+
+               _createBlockFormats : function() {
+                       var c, fmts = {
+                               p : 'advanced.paragraph',
+                               address : 'advanced.address',
+                               pre : 'advanced.pre',
+                               h1 : 'advanced.h1',
+                               h2 : 'advanced.h2',
+                               h3 : 'advanced.h3',
+                               h4 : 'advanced.h4',
+                               h5 : 'advanced.h5',
+                               h6 : 'advanced.h6',
+                               div : 'advanced.div',
+                               blockquote : 'advanced.blockquote',
+                               code : 'advanced.code',
+                               dt : 'advanced.dt',
+                               dd : 'advanced.dd',
+                               samp : 'advanced.samp'
+                       }, t = this;
+
+                       c = t.editor.controlManager.createListBox('formatselect', {title : 'advanced.block', onselect : function(v) {
+                               t.editor.execCommand('FormatBlock', false, v);
+                               return false;
+                       }});
+
+                       if (c) {
+                               each(t.editor.getParam('theme_advanced_blockformats', t.settings.theme_advanced_blockformats, 'hash'), function(v, k) {
+                                       c.add(t.editor.translate(k != v ? k : fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v});
+                               });
+                       }
+
+                       return c;
+               },
+
+               _createForeColorMenu : function() {
+                       var c, t = this, s = t.settings, o = {}, v;
+
+                       if (s.theme_advanced_more_colors) {
+                               o.more_colors_func = function() {
+                                       t._mceColorPicker(0, {
+                                               color : c.value,
+                                               func : function(co) {
+                                                       c.setColor(co);
+                                               }
+                                       });
+                               };
+                       }
+
+                       if (v = s.theme_advanced_text_colors)
+                               o.colors = v;
+
+                       if (s.theme_advanced_default_foreground_color)
+                               o.default_color = s.theme_advanced_default_foreground_color;
+
+                       o.title = 'advanced.forecolor_desc';
+                       o.cmd = 'ForeColor';
+                       o.scope = this;
+
+                       c = t.editor.controlManager.createColorSplitButton('forecolor', o);
+
+                       return c;
+               },
+
+               _createBackColorMenu : function() {
+                       var c, t = this, s = t.settings, o = {}, v;
+
+                       if (s.theme_advanced_more_colors) {
+                               o.more_colors_func = function() {
+                                       t._mceColorPicker(0, {
+                                               color : c.value,
+                                               func : function(co) {
+                                                       c.setColor(co);
+                                               }
+                                       });
+                               };
+                       }
+
+                       if (v = s.theme_advanced_background_colors)
+                               o.colors = v;
+
+                       if (s.theme_advanced_default_background_color)
+                               o.default_color = s.theme_advanced_default_background_color;
+
+                       o.title = 'advanced.backcolor_desc';
+                       o.cmd = 'HiliteColor';
+                       o.scope = this;
+
+                       c = t.editor.controlManager.createColorSplitButton('backcolor', o);
+
+                       return c;
+               },
+
+               renderUI : function(o) {
+                       var n, ic, tb, t = this, ed = t.editor, s = t.settings, sc, p, nl;
+
+                       if (ed.settings) {
+                               ed.settings.aria_label = s.aria_label + ed.getLang('advanced.help_shortcut');
+                       }
+
+                       // TODO: ACC Should have an aria-describedby attribute which is user-configurable to describe what this field is actually for.
+                       // Maybe actually inherit it from the original textara?
+                       n = p = DOM.create('span', {role : 'application', 'aria-labelledby' : ed.id + '_voice', id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '')});
+                       DOM.add(n, 'span', {'class': 'mceVoiceLabel', 'style': 'display:none;', id: ed.id + '_voice'}, s.aria_label);
+
+                       if (!DOM.boxModel)
+                               n = DOM.add(n, 'div', {'class' : 'mceOldBoxModel'});
+
+                       n = sc = DOM.add(n, 'table', {role : "presentation", id : ed.id + '_tbl', 'class' : 'mceLayout', cellSpacing : 0, cellPadding : 0});
+                       n = tb = DOM.add(n, 'tbody');
+
+                       switch ((s.theme_advanced_layout_manager || '').toLowerCase()) {
+                               case "rowlayout":
+                                       ic = t._rowLayout(s, tb, o);
+                                       break;
+
+                               case "customlayout":
+                                       ic = ed.execCallback("theme_advanced_custom_layout", s, tb, o, p);
+                                       break;
+
+                               default:
+                                       ic = t._simpleLayout(s, tb, o, p);
+                       }
+
+                       n = o.targetNode;
+
+                       // Add classes to first and last TRs
+                       nl = sc.rows;
+                       DOM.addClass(nl[0], 'mceFirst');
+                       DOM.addClass(nl[nl.length - 1], 'mceLast');
+
+                       // Add classes to first and last TDs
+                       each(DOM.select('tr', tb), function(n) {
+                               DOM.addClass(n.firstChild, 'mceFirst');
+                               DOM.addClass(n.childNodes[n.childNodes.length - 1], 'mceLast');
+                       });
+
+                       if (DOM.get(s.theme_advanced_toolbar_container))
+                               DOM.get(s.theme_advanced_toolbar_container).appendChild(p);
+                       else
+                               DOM.insertAfter(p, n);
+
+                       Event.add(ed.id + '_path_row', 'click', function(e) {
+                               e = e.target;
+
+                               if (e.nodeName == 'A') {
+                                       t._sel(e.className.replace(/^.*mcePath_([0-9]+).*$/, '$1'));
+
+                                       return Event.cancel(e);
+                               }
+                       });
+/*
+                       if (DOM.get(ed.id + '_path_row')) {
+                               Event.add(ed.id + '_tbl', 'mouseover', function(e) {
+                                       var re;
+       
+                                       e = e.target;
+
+                                       if (e.nodeName == 'SPAN' && DOM.hasClass(e.parentNode, 'mceButton')) {
+                                               re = DOM.get(ed.id + '_path_row');
+                                               t.lastPath = re.innerHTML;
+                                               DOM.setHTML(re, e.parentNode.title);
+                                       }
+                               });
+
+                               Event.add(ed.id + '_tbl', 'mouseout', function(e) {
+                                       if (t.lastPath) {
+                                               DOM.setHTML(ed.id + '_path_row', t.lastPath);
+                                               t.lastPath = 0;
+                                       }
+                               });
+                       }
+*/
+
+                       if (!ed.getParam('accessibility_focus'))
+                               Event.add(DOM.add(p, 'a', {href : '#'}, '<!-- IE -->'), 'focus', function() {tinyMCE.get(ed.id).focus();});
+
+                       if (s.theme_advanced_toolbar_location == 'external')
+                               o.deltaHeight = 0;
+
+                       t.deltaHeight = o.deltaHeight;
+                       o.targetNode = null;
+
+                       ed.onKeyDown.add(function(ed, evt) {
+                               var DOM_VK_F10 = 121, DOM_VK_F11 = 122;
+
+                               if (evt.altKey) {
+                                       if (evt.keyCode === DOM_VK_F10) {
+                                               // Make sure focus is given to toolbar in Safari.
+                                               // We can't do this in IE as it prevents giving focus to toolbar when editor is in a frame
+                                               if (tinymce.isWebKit) {
+                                                       window.focus();
+                                               }
+                                               t.toolbarGroup.focus();
+                                               return Event.cancel(evt);
+                                       } else if (evt.keyCode === DOM_VK_F11) {
+                                               DOM.get(ed.id + '_path_row').focus();
+                                               return Event.cancel(evt);
+                                       }
+                               }
+                       });
+
+                       // alt+0 is the UK recommended shortcut for accessing the list of access controls.
+                       ed.addShortcut('alt+0', '', 'mceShortcuts', t);
+
+                       return {
+                               iframeContainer : ic,
+                               editorContainer : ed.id + '_parent',
+                               sizeContainer : sc,
+                               deltaHeight : o.deltaHeight
+                       };
+               },
+
+               getInfo : function() {
+                       return {
+                               longname : 'Advanced theme',
+                               author : 'Moxiecode Systems AB',
+                               authorurl : 'http://tinymce.moxiecode.com',
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion
+                       }
+               },
+
+               resizeBy : function(dw, dh) {
+                       var e = DOM.get(this.editor.id + '_ifr');
+
+                       this.resizeTo(e.clientWidth + dw, e.clientHeight + dh);
+               },
+
+               resizeTo : function(w, h, store) {
+                       var ed = this.editor, s = this.settings, e = DOM.get(ed.id + '_tbl'), ifr = DOM.get(ed.id + '_ifr');
+
+                       // Boundery fix box
+                       w = Math.max(s.theme_advanced_resizing_min_width || 100, w);
+                       h = Math.max(s.theme_advanced_resizing_min_height || 100, h);
+                       w = Math.min(s.theme_advanced_resizing_max_width || 0xFFFF, w);
+                       h = Math.min(s.theme_advanced_resizing_max_height || 0xFFFF, h);
+
+                       // Resize iframe and container
+                       DOM.setStyle(e, 'height', '');
+                       DOM.setStyle(ifr, 'height', h);
+
+                       if (s.theme_advanced_resize_horizontal) {
+                               DOM.setStyle(e, 'width', '');
+                               DOM.setStyle(ifr, 'width', w);
+
+                               // Make sure that the size is never smaller than the over all ui
+                               if (w < e.clientWidth) {
+                                       w = e.clientWidth;
+                                       DOM.setStyle(ifr, 'width', e.clientWidth);
+                               }
+                       }
+
+                       // Store away the size
+                       if (store && s.theme_advanced_resizing_use_cookie) {
+                               Cookie.setHash("TinyMCE_" + ed.id + "_size", {
+                                       cw : w,
+                                       ch : h
+                               });
+                       }
+               },
+
+               destroy : function() {
+                       var id = this.editor.id;
+
+                       Event.clear(id + '_resize');
+                       Event.clear(id + '_path_row');
+                       Event.clear(id + '_external_close');
+               },
+
+               // Internal functions
+
+               _simpleLayout : function(s, tb, o, p) {
+                       var t = this, ed = t.editor, lo = s.theme_advanced_toolbar_location, sl = s.theme_advanced_statusbar_location, n, ic, etb, c;
+
+                       if (s.readonly) {
+                               n = DOM.add(tb, 'tr');
+                               n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
+                               return ic;
+                       }
+
+                       // Create toolbar container at top
+                       if (lo == 'top')
+                               t._addToolbars(tb, o);
+
+                       // Create external toolbar
+                       if (lo == 'external') {
+                               n = c = DOM.create('div', {style : 'position:relative'});
+                               n = DOM.add(n, 'div', {id : ed.id + '_external', 'class' : 'mceExternalToolbar'});
+                               DOM.add(n, 'a', {id : ed.id + '_external_close', href : 'javascript:;', 'class' : 'mceExternalClose'});
+                               n = DOM.add(n, 'table', {id : ed.id + '_tblext', cellSpacing : 0, cellPadding : 0});
+                               etb = DOM.add(n, 'tbody');
+
+                               if (p.firstChild.className == 'mceOldBoxModel')
+                                       p.firstChild.appendChild(c);
+                               else
+                                       p.insertBefore(c, p.firstChild);
+
+                               t._addToolbars(etb, o);
+
+                               ed.onMouseUp.add(function() {
+                                       var e = DOM.get(ed.id + '_external');
+                                       DOM.show(e);
+
+                                       DOM.hide(lastExtID);
+
+                                       var f = Event.add(ed.id + '_external_close', 'click', function() {
+                                               DOM.hide(ed.id + '_external');
+                                               Event.remove(ed.id + '_external_close', 'click', f);
+                                       });
+
+                                       DOM.show(e);
+                                       DOM.setStyle(e, 'top', 0 - DOM.getRect(ed.id + '_tblext').h - 1);
+
+                                       // Fixes IE rendering bug
+                                       DOM.hide(e);
+                                       DOM.show(e);
+                                       e.style.filter = '';
+
+                                       lastExtID = ed.id + '_external';
+
+                                       e = null;
+                               });
+                       }
+
+                       if (sl == 'top')
+                               t._addStatusBar(tb, o);
+
+                       // Create iframe container
+                       if (!s.theme_advanced_toolbar_container) {
+                               n = DOM.add(tb, 'tr');
+                               n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
+                       }
+
+                       // Create toolbar container at bottom
+                       if (lo == 'bottom')
+                               t._addToolbars(tb, o);
+
+                       if (sl == 'bottom')
+                               t._addStatusBar(tb, o);
+
+                       return ic;
+               },
+
+               _rowLayout : function(s, tb, o) {
+                       var t = this, ed = t.editor, dc, da, cf = ed.controlManager, n, ic, to, a;
+
+                       dc = s.theme_advanced_containers_default_class || '';
+                       da = s.theme_advanced_containers_default_align || 'center';
+
+                       each(explode(s.theme_advanced_containers || ''), function(c, i) {
+                               var v = s['theme_advanced_container_' + c] || '';
+
+                               switch (c.toLowerCase()) {
+                                       case 'mceeditor':
+                                               n = DOM.add(tb, 'tr');
+                                               n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
+                                               break;
+
+                                       case 'mceelementpath':
+                                               t._addStatusBar(tb, o);
+                                               break;
+
+                                       default:
+                                               a = (s['theme_advanced_container_' + c + '_align'] || da).toLowerCase();
+                                               a = 'mce' + t._ufirst(a);
+
+                                               n = DOM.add(DOM.add(tb, 'tr'), 'td', {
+                                                       'class' : 'mceToolbar ' + (s['theme_advanced_container_' + c + '_class'] || dc) + ' ' + a || da
+                                               });
+
+                                               to = cf.createToolbar("toolbar" + i);
+                                               t._addControls(v, to);
+                                               DOM.setHTML(n, to.renderHTML());
+                                               o.deltaHeight -= s.theme_advanced_row_height;
+                               }
+                       });
+
+                       return ic;
+               },
+
+               _addControls : function(v, tb) {
+                       var t = this, s = t.settings, di, cf = t.editor.controlManager;
+
+                       if (s.theme_advanced_disable && !t._disabled) {
+                               di = {};
+
+                               each(explode(s.theme_advanced_disable), function(v) {
+                                       di[v] = 1;
+                               });
+
+                               t._disabled = di;
+                       } else
+                               di = t._disabled;
+
+                       each(explode(v), function(n) {
+                               var c;
+
+                               if (di && di[n])
+                                       return;
+
+                               // Compatiblity with 2.x
+                               if (n == 'tablecontrols') {
+                                       each(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"], function(n) {
+                                               n = t.createControl(n, cf);
+
+                                               if (n)
+                                                       tb.add(n);
+                                       });
+
+                                       return;
+                               }
+
+                               c = t.createControl(n, cf);
+
+                               if (c)
+                                       tb.add(c);
+                       });
+               },
+
+               _addToolbars : function(c, o) {
+                       var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a, toolbarGroup;
+
+                       toolbarGroup = cf.createToolbarGroup('toolbargroup', {
+                               'name': ed.getLang('advanced.toolbar'),
+                               'tab_focus_toolbar':ed.getParam('theme_advanced_tab_focus_toolbar')
+                       });
+
+                       t.toolbarGroup = toolbarGroup;
+
+                       a = s.theme_advanced_toolbar_align.toLowerCase();
+                       a = 'mce' + t._ufirst(a);
+
+                       n = DOM.add(DOM.add(c, 'tr', {role: 'presentation'}), 'td', {'class' : 'mceToolbar ' + a, "role":"presentation"});
+
+                       // Create toolbar and add the controls
+                       for (i=1; (v = s['theme_advanced_buttons' + i]); i++) {
+                               tb = cf.createToolbar("toolbar" + i, {'class' : 'mceToolbarRow' + i});
+
+                               if (s['theme_advanced_buttons' + i + '_add'])
+                                       v += ',' + s['theme_advanced_buttons' + i + '_add'];
+
+                               if (s['theme_advanced_buttons' + i + '_add_before'])
+                                       v = s['theme_advanced_buttons' + i + '_add_before'] + ',' + v;
+
+                               t._addControls(v, tb);
+                               toolbarGroup.add(tb);
+
+                               o.deltaHeight -= s.theme_advanced_row_height;
+                       }
+                       h.push(toolbarGroup.renderHTML());
+                       h.push(DOM.createHTML('a', {href : '#', accesskey : 'z', title : ed.getLang("advanced.toolbar_focus"), onfocus : 'tinyMCE.getInstanceById(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));
+                       DOM.setHTML(n, h.join(''));
+               },
+
+               _addStatusBar : function(tb, o) {
+                       var n, t = this, ed = t.editor, s = t.settings, r, mf, me, td;
+
+                       n = DOM.add(tb, 'tr');
+                       n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'}); 
+                       n = DOM.add(n, 'div', {id : ed.id + '_path_row', 'role': 'group', 'aria-labelledby': ed.id + '_path_voice'});
+                       if (s.theme_advanced_path) {
+                               DOM.add(n, 'span', {id: ed.id + '_path_voice'}, ed.translate('advanced.path'));
+                               DOM.add(n, 'span', {}, ': ');
+                       } else {
+                               DOM.add(n, 'span', {}, '&#160;');
+                       }
+                       
+
+                       if (s.theme_advanced_resizing) {
+                               DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize', tabIndex:"-1"});
+
+                               if (s.theme_advanced_resizing_use_cookie) {
+                                       ed.onPostRender.add(function() {
+                                               var o = Cookie.getHash("TinyMCE_" + ed.id + "_size"), c = DOM.get(ed.id + '_tbl');
+
+                                               if (!o)
+                                                       return;
+
+                                               t.resizeTo(o.cw, o.ch);
+                                       });
+                               }
+
+                               ed.onPostRender.add(function() {
+                                       Event.add(ed.id + '_resize', 'click', function(e) {
+                                               e.preventDefault();
+                                       });
+
+                                       Event.add(ed.id + '_resize', 'mousedown', function(e) {
+                                               var mouseMoveHandler1, mouseMoveHandler2,
+                                                       mouseUpHandler1, mouseUpHandler2,
+                                                       startX, startY, startWidth, startHeight, width, height, ifrElm;
+
+                                               function resizeOnMove(e) {
+                                                       e.preventDefault();
+
+                                                       width = startWidth + (e.screenX - startX);
+                                                       height = startHeight + (e.screenY - startY);
+
+                                                       t.resizeTo(width, height);
+                                               };
+
+                                               function endResize(e) {
+                                                       // Stop listening
+                                                       Event.remove(DOM.doc, 'mousemove', mouseMoveHandler1);
+                                                       Event.remove(ed.getDoc(), 'mousemove', mouseMoveHandler2);
+                                                       Event.remove(DOM.doc, 'mouseup', mouseUpHandler1);
+                                                       Event.remove(ed.getDoc(), 'mouseup', mouseUpHandler2);
+
+                                                       width = startWidth + (e.screenX - startX);
+                                                       height = startHeight + (e.screenY - startY);
+                                                       t.resizeTo(width, height, true);
+                                               };
+
+                                               e.preventDefault();
+
+                                               // Get the current rect size
+                                               startX = e.screenX;
+                                               startY = e.screenY;
+                                               ifrElm = DOM.get(t.editor.id + '_ifr');
+                                               startWidth = width = ifrElm.clientWidth;
+                                               startHeight = height = ifrElm.clientHeight;
+
+                                               // Register envent handlers
+                                               mouseMoveHandler1 = Event.add(DOM.doc, 'mousemove', resizeOnMove);
+                                               mouseMoveHandler2 = Event.add(ed.getDoc(), 'mousemove', resizeOnMove);
+                                               mouseUpHandler1 = Event.add(DOM.doc, 'mouseup', endResize);
+                                               mouseUpHandler2 = Event.add(ed.getDoc(), 'mouseup', endResize);
+                                       });
+                               });
+                       }
+
+                       o.deltaHeight -= 21;
+                       n = tb = null;
+               },
+
+               _updateUndoStatus : function(ed) {
+                       var cm = ed.controlManager, um = ed.undoManager;
+
+                       cm.setDisabled('undo', !um.hasUndo() && !um.typing);
+                       cm.setDisabled('redo', !um.hasRedo());
+               },
+
+               _nodeChanged : function(ed, cm, n, co, ob) {
+                       var t = this, p, de = 0, v, c, s = t.settings, cl, fz, fn, fc, bc, formatNames, matches;
+
+                       tinymce.each(t.stateControls, function(c) {
+                               cm.setActive(c, ed.queryCommandState(t.controls[c][1]));
+                       });
+
+                       function getParent(name) {
+                               var i, parents = ob.parents, func = name;
+
+                               if (typeof(name) == 'string') {
+                                       func = function(node) {
+                                               return node.nodeName == name;
+                                       };
+                               }
+
+                               for (i = 0; i < parents.length; i++) {
+                                       if (func(parents[i]))
+                                               return parents[i];
+                               }
+                       };
+
+                       cm.setActive('visualaid', ed.hasVisual);
+                       t._updateUndoStatus(ed);
+                       cm.setDisabled('outdent', !ed.queryCommandState('Outdent'));
+
+                       p = getParent('A');
+                       if (c = cm.get('link')) {
+                               if (!p || !p.name) {
+                                       c.setDisabled(!p && co);
+                                       c.setActive(!!p);
+                               }
+                       }
+
+                       if (c = cm.get('unlink')) {
+                               c.setDisabled(!p && co);
+                               c.setActive(!!p && !p.name);
+                       }
+
+                       if (c = cm.get('anchor')) {
+                               c.setActive(!co && !!p && p.name);
+                       }
+
+                       p = getParent('IMG');
+                       if (c = cm.get('image'))
+                               c.setActive(!co && !!p && n.className.indexOf('mceItem') == -1);
+
+                       if (c = cm.get('styleselect')) {
+                               t._importClasses();
+
+                               formatNames = [];
+                               each(c.items, function(item) {
+                                       formatNames.push(item.value);
+                               });
+
+                               matches = ed.formatter.matchAll(formatNames);
+                               c.select(matches[0]);
+                       }
+
+                       if (c = cm.get('formatselect')) {
+                               p = getParent(DOM.isBlock);
+
+                               if (p)
+                                       c.select(p.nodeName.toLowerCase());
+                       }
+
+                       // Find out current fontSize, fontFamily and fontClass
+                       getParent(function(n) {
+                               if (n.nodeName === 'SPAN') {
+                                       if (!cl && n.className)
+                                               cl = n.className;
+                               }
+
+                               if (ed.dom.is(n, s.theme_advanced_font_selector)) {
+                                       if (!fz && n.style.fontSize)
+                                               fz = n.style.fontSize;
+
+                                       if (!fn && n.style.fontFamily)
+                                               fn = n.style.fontFamily.replace(/[\"\']+/g, '').replace(/^([^,]+).*/, '$1').toLowerCase();
+                                       
+                                       if (!fc && n.style.color)
+                                               fc = n.style.color;
+
+                                       if (!bc && n.style.backgroundColor)
+                                               bc = n.style.backgroundColor;
+                               }
+
+                               return false;
+                       });
+
+                       if (c = cm.get('fontselect')) {
+                               c.select(function(v) {
+                                       return v.replace(/^([^,]+).*/, '$1').toLowerCase() == fn;
+                               });
+                       }
+
+                       // Select font size
+                       if (c = cm.get('fontsizeselect')) {
+                               // Use computed style
+                               if (s.theme_advanced_runtime_fontsize && !fz && !cl)
+                                       fz = ed.dom.getStyle(n, 'fontSize', true);
+
+                               c.select(function(v) {
+                                       if (v.fontSize && v.fontSize === fz)
+                                               return true;
+
+                                       if (v['class'] && v['class'] === cl)
+                                               return true;
+                               });
+                       }
+                       
+                       if (s.theme_advanced_show_current_color) {
+                               function updateColor(controlId, color) {
+                                       if (c = cm.get(controlId)) {
+                                               if (!color)
+                                                       color = c.settings.default_color;
+                                               if (color !== c.value) {
+                                                       c.displayColor(color);
+                                               }
+                                       }
+                               }
+                               updateColor('forecolor', fc);
+                               updateColor('backcolor', bc);
+                       }
+
+                       if (s.theme_advanced_show_current_color) {
+                               function updateColor(controlId, color) {
+                                       if (c = cm.get(controlId)) {
+                                               if (!color)
+                                                       color = c.settings.default_color;
+                                               if (color !== c.value) {
+                                                       c.displayColor(color);
+                                               }
+                                       }
+                               };
+
+                               updateColor('forecolor', fc);
+                               updateColor('backcolor', bc);
+                       }
+
+                       if (s.theme_advanced_path && s.theme_advanced_statusbar_location) {
+                               p = DOM.get(ed.id + '_path') || DOM.add(ed.id + '_path_row', 'span', {id : ed.id + '_path'});
+
+                               if (t.statusKeyboardNavigation) {
+                                       t.statusKeyboardNavigation.destroy();
+                                       t.statusKeyboardNavigation = null;
+                               }
+
+                               DOM.setHTML(p, '');
+
+                               getParent(function(n) {
+                                       var na = n.nodeName.toLowerCase(), u, pi, ti = '';
+
+                                       // Ignore non element and bogus/hidden elements
+                                       if (n.nodeType != 1 || na === 'br' || n.getAttribute('data-mce-bogus') || DOM.hasClass(n, 'mceItemHidden') || DOM.hasClass(n, 'mceItemRemoved'))
+                                               return;
+
+                                       // Handle prefix
+                                       if (tinymce.isIE && n.scopeName !== 'HTML')
+                                               na = n.scopeName + ':' + na;
+
+                                       // Remove internal prefix
+                                       na = na.replace(/mce\:/g, '');
+
+                                       // Handle node name
+                                       switch (na) {
+                                               case 'b':
+                                                       na = 'strong';
+                                                       break;
+
+                                               case 'i':
+                                                       na = 'em';
+                                                       break;
+
+                                               case 'img':
+                                                       if (v = DOM.getAttrib(n, 'src'))
+                                                               ti += 'src: ' + v + ' ';
+
+                                                       break;
+
+                                               case 'a':
+                                                       if (v = DOM.getAttrib(n, 'name')) {
+                                                               ti += 'name: ' + v + ' ';
+                                                               na += '#' + v;
+                                                       }
+
+                                                       if (v = DOM.getAttrib(n, 'href'))
+                                                               ti += 'href: ' + v + ' ';
+
+                                                       break;
+
+                                               case 'font':
+                                                       if (v = DOM.getAttrib(n, 'face'))
+                                                               ti += 'font: ' + v + ' ';
+
+                                                       if (v = DOM.getAttrib(n, 'size'))
+                                                               ti += 'size: ' + v + ' ';
+
+                                                       if (v = DOM.getAttrib(n, 'color'))
+                                                               ti += 'color: ' + v + ' ';
+
+                                                       break;
+
+                                               case 'span':
+                                                       if (v = DOM.getAttrib(n, 'style'))
+                                                               ti += 'style: ' + v + ' ';
+
+                                                       break;
+                                       }
+
+                                       if (v = DOM.getAttrib(n, 'id'))
+                                               ti += 'id: ' + v + ' ';
+
+                                       if (v = n.className) {
+                                               v = v.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g, '')
+
+                                               if (v) {
+                                                       ti += 'class: ' + v + ' ';
+
+                                                       if (DOM.isBlock(n) || na == 'img' || na == 'span')
+                                                               na += '.' + v;
+                                               }
+                                       }
+
+                                       na = na.replace(/(html:)/g, '');
+                                       na = {name : na, node : n, title : ti};
+                                       t.onResolveName.dispatch(t, na);
+                                       ti = na.title;
+                                       na = na.name;
+
+                                       //u = "javascript:tinymce.EditorManager.get('" + ed.id + "').theme._sel('" + (de++) + "');";
+                                       pi = DOM.create('a', {'href' : "javascript:;", role: 'button', onmousedown : "return false;", title : ti, 'class' : 'mcePath_' + (de++)}, na);
+
+                                       if (p.hasChildNodes()) {
+                                               p.insertBefore(DOM.create('span', {'aria-hidden': 'true'}, '\u00a0\u00bb '), p.firstChild);
+                                               p.insertBefore(pi, p.firstChild);
+                                       } else
+                                               p.appendChild(pi);
+                               }, ed.getBody());
+
+                               if (DOM.select('a', p).length > 0) {
+                                       t.statusKeyboardNavigation = new tinymce.ui.KeyboardNavigation({
+                                               root: ed.id + "_path_row",
+                                               items: DOM.select('a', p),
+                                               excludeFromTabOrder: true,
+                                               onCancel: function() {
+                                                       ed.focus();
+                                               }
+                                       }, DOM);
+                               }
+                       }
+               },
+
+               // Commands gets called by execCommand
+
+               _sel : function(v) {
+                       this.editor.execCommand('mceSelectNodeDepth', false, v);
+               },
+
+               _mceInsertAnchor : function(ui, v) {
+                       var ed = this.editor;
+
+                       ed.windowManager.open({
+                               url : this.url + '/anchor.htm',
+                               width : 320 + parseInt(ed.getLang('advanced.anchor_delta_width', 0)),
+                               height : 90 + parseInt(ed.getLang('advanced.anchor_delta_height', 0)),
+                               inline : true
+                       }, {
+                               theme_url : this.url
+                       });
+               },
+
+               _mceCharMap : function() {
+                       var ed = this.editor;
+
+                       ed.windowManager.open({
+                               url : this.url + '/charmap.htm',
+                               width : 550 + parseInt(ed.getLang('advanced.charmap_delta_width', 0)),
+                               height : 265 + parseInt(ed.getLang('advanced.charmap_delta_height', 0)),
+                               inline : true
+                       }, {
+                               theme_url : this.url
+                       });
+               },
+
+               _mceHelp : function() {
+                       var ed = this.editor;
+
+                       ed.windowManager.open({
+                               url : this.url + '/about.htm',
+                               width : 480,
+                               height : 380,
+                               inline : true
+                       }, {
+                               theme_url : this.url
+                       });
+               },
+
+               _mceShortcuts : function() {
+                       var ed = this.editor;
+                       ed.windowManager.open({
+                               url: this.url + '/shortcuts.htm',
+                               width: 480,
+                               height: 380,
+                               inline: true
+                       }, {
+                               theme_url: this.url
+                       });
+               },
+
+               _mceColorPicker : function(u, v) {
+                       var ed = this.editor;
+
+                       v = v || {};
+
+                       ed.windowManager.open({
+                               url : this.url + '/color_picker.htm',
+                               width : 375 + parseInt(ed.getLang('advanced.colorpicker_delta_width', 0)),
+                               height : 250 + parseInt(ed.getLang('advanced.colorpicker_delta_height', 0)),
+                               close_previous : false,
+                               inline : true
+                       }, {
+                               input_color : v.color,
+                               func : v.func,
+                               theme_url : this.url
+                       });
+               },
+
+               _mceCodeEditor : function(ui, val) {
+                       var ed = this.editor;
+
+                       ed.windowManager.open({
+                               url : this.url + '/source_editor.htm',
+                               width : parseInt(ed.getParam("theme_advanced_source_editor_width", 720)),
+                               height : parseInt(ed.getParam("theme_advanced_source_editor_height", 580)),
+                               inline : true,
+                               resizable : true,
+                               maximizable : true
+                       }, {
+                               theme_url : this.url
+                       });
+               },
+
+               _mceImage : function(ui, val) {
+                       var ed = this.editor;
+
+                       // Internal image object like a flash placeholder
+                       if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1)
+                               return;
+
+                       ed.windowManager.open({
+                               url : this.url + '/image.htm',
+                               width : 355 + parseInt(ed.getLang('advanced.image_delta_width', 0)),
+                               height : 275 + parseInt(ed.getLang('advanced.image_delta_height', 0)),
+                               inline : true
+                       }, {
+                               theme_url : this.url
+                       });
+               },
+
+               _mceLink : function(ui, val) {
+                       var ed = this.editor;
+
+                       ed.windowManager.open({
+                               url : this.url + '/link.htm',
+                               width : 310 + parseInt(ed.getLang('advanced.link_delta_width', 0)),
+                               height : 200 + parseInt(ed.getLang('advanced.link_delta_height', 0)),
+                               inline : true
+                       }, {
+                               theme_url : this.url
+                       });
+               },
+
+               _mceNewDocument : function() {
+                       var ed = this.editor;
+
+                       ed.windowManager.confirm('advanced.newdocument', function(s) {
+                               if (s)
+                                       ed.execCommand('mceSetContent', false, '');
+                       });
+               },
+
+               _mceForeColor : function() {
+                       var t = this;
+
+                       this._mceColorPicker(0, {
+                               color: t.fgColor,
+                               func : function(co) {
+                                       t.fgColor = co;
+                                       t.editor.execCommand('ForeColor', false, co);
+                               }
+                       });
+               },
+
+               _mceBackColor : function() {
+                       var t = this;
+
+                       this._mceColorPicker(0, {
+                               color: t.bgColor,
+                               func : function(co) {
+                                       t.bgColor = co;
+                                       t.editor.execCommand('HiliteColor', false, co);
+                               }
+                       });
+               },
+
+               _ufirst : function(s) {
+                       return s.substring(0, 1).toUpperCase() + s.substring(1);
+               }
+       });
+
+       tinymce.ThemeManager.add('advanced', tinymce.themes.AdvancedTheme);
+}(tinymce));
index 038ab97f9a4328f4529725180963a21b50973c2d..bb0ba653563b50784ec57785e189246a75e51e8b 100644 (file)
@@ -2,10 +2,10 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#advanced_dlg.image_title}</title>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#advanced_dlg.image_title}</title>
-       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=345-20110908"></script>
-       <script type="text/javascript" src="../../utils/mctabs.js?ver=345-20110908"></script>
-       <script type="text/javascript" src="../../utils/form_utils.js?ver=345-20110908"></script>
-       <script type="text/javascript" src="js/image.js?ver=345-20110908"></script>
+       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="../../utils/mctabs.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="../../utils/form_utils.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="js/image.js?ver=349-20120314"></script>
 </head>
 <body id="image" style="display: none">
 <form onsubmit="ImageDialog.update();return false;" action="#">
 </head>
 <body id="image" style="display: none">
 <form onsubmit="ImageDialog.update();return false;" action="#">
index 7b556351df49d9064d6016dca78d80ad65a26a54..b6c5b695c5a11f24f58d4afecb8f843dac48f05b 100644 (file)
@@ -30,9 +30,10 @@ var AnchorDialog = {
                        ed.selection.collapse(1);
 
                elm = ed.dom.getParent(ed.selection.getNode(), 'A');
                        ed.selection.collapse(1);
 
                elm = ed.dom.getParent(ed.selection.getNode(), 'A');
-               if (elm)
+               if (elm) {
+                       elm.setAttribute('name', name);
                        elm.name = name;
                        elm.name = name;
-               else
+               else
                        ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : name, 'class' : 'mceItemAnchor'}, ''));
 
                tinyMCEPopup.close();
                        ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : name, 'class' : 'mceItemAnchor'}, ''));
 
                tinyMCEPopup.close();
index 78bc080e182b54afccae2a10ad1ec60a86516fec..cbb4172bacbbcc3f5067cef36cf09dd47ebfc4d5 100644 (file)
@@ -281,13 +281,21 @@ tinyMCEPopup.onInit.add(function() {
 function addKeyboardNavigation(){
        var tableElm, cells, settings;
 
 function addKeyboardNavigation(){
        var tableElm, cells, settings;
 
-       cells = tinyMCEPopup.dom.select(".charmaplink", "charmapgroup");
+       cells = tinyMCEPopup.dom.select("a.charmaplink", "charmapgroup");
 
        settings ={
                root: "charmapgroup",
                items: cells
        };
 
        settings ={
                root: "charmapgroup",
                items: cells
        };
-
+       cells[0].tabindex=0;
+       tinyMCEPopup.dom.addClass(cells[0], "mceFocus");
+       if (tinymce.isGecko) {
+               cells[0].focus();               
+       } else {
+               setTimeout(function(){
+                       cells[0].focus();
+               }, 100);
+       }
        tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', settings, tinyMCEPopup.dom);
 }
 
        tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', settings, tinyMCEPopup.dom);
 }
 
@@ -306,7 +314,7 @@ function renderCharMapHTML() {
                        previewCharFn = 'previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');';
                        html += ''
                                + '<td class="charmap">'
                        previewCharFn = 'previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');';
                        html += ''
                                + '<td class="charmap">'
-                               + '<a class="charmaplink" role="button" onmouseover="'+previewCharFn+'" onfocus="'+previewCharFn+'" href="javascript:void(0)" onclick="insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');" onclick="return false;" onmousedown="return false;" title="' + charmap[i][3] + '">'
+                               + '<a class="charmaplink" role="button" onmouseover="'+previewCharFn+'" onfocus="'+previewCharFn+'" href="javascript:void(0)" onclick="insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');" onclick="return false;" onmousedown="return false;" title="' + charmap[i][3] + ' '+ tinyMCEPopup.editor.translate("advanced_dlg.charmap_usage")+'">'
                                + charmap[i][1]
                                + '</a></td>';
                        if ((cols+1) % charsPerRow == 0)
                                + charmap[i][1]
                                + '</a></td>';
                        if ((cols+1) % charsPerRow == 0)
index cdf8c4c0c4c2f66d6ffa4a5b0b89a8d4d04a3364..3cbf32c4f2fcff1ab7b7463dd20b732fa7213d62 100644 (file)
@@ -1,6 +1,6 @@
 tinyMCEPopup.requireLangPack();
 
 tinyMCEPopup.requireLangPack();
 
-var detail = 50, strhex = "0123456789ABCDEF", i, isMouseDown = false, isMouseOver = false;
+var detail = 50, strhex = "0123456789abcdef", i, isMouseDown = false, isMouseOver = false;
 
 var colors = [
        "#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033",
 
 var colors = [
        "#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033",
@@ -266,10 +266,10 @@ function dechex(n) {
 }
 
 function computeColor(e) {
 }
 
 function computeColor(e) {
-       var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB;
+       var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB, pos = tinyMCEPopup.dom.getPos(e.target);
 
 
-       x = e.offsetX ? e.offsetX : (e.target ? e.clientX - e.target.x : 0);
-       y = e.offsetY ? e.offsetY : (e.target ? e.clientY - e.target.y : 0);
+       x = e.offsetX ? e.offsetX : (e.target ? e.clientX - pos.x : 0);
+       y = e.offsetY ? e.offsetY : (e.target ? e.clientY - pos.y : 0);
 
        partWidth = document.getElementById('colors').width / 6;
        partDetail = detail / 2;
 
        partWidth = document.getElementById('colors').width / 6;
        partDetail = detail / 2;
index fc5fa845d8020087b6e16ce6da3bb1a1072d71c8..008e8ad3e6581d196b6794e6f139353f0f93cfaa 100644 (file)
@@ -2,11 +2,11 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#advanced_dlg.link_title}</title>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#advanced_dlg.link_title}</title>
-       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=345-20110908"></script>
-       <script type="text/javascript" src="../../utils/mctabs.js?ver=345-20110908"></script>
-       <script type="text/javascript" src="../../utils/form_utils.js?ver=345-20110908"></script>
-       <script type="text/javascript" src="../../utils/validate.js?ver=345-20110908"></script>
-       <script type="text/javascript" src="js/link.js?ver=345-20110908"></script>
+       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="../../utils/mctabs.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="../../utils/form_utils.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="../../utils/validate.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="js/link.js?ver=349-20120314"></script>
 </head>
 <body id="link" style="display: none">
 <form onsubmit="LinkDialog.update();return false;" action="#">
 </head>
 <body id="link" style="display: none">
 <form onsubmit="LinkDialog.update();return false;" action="#">
index e1908905f3ecc62b999935ff1dc605bfe5ae77e0..81cefe5736c0c4158d2ac8e2ab397c83e58a6611 100644 (file)
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
                <title>{#advanced_dlg.accessibility_help}</title>
 <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
                <title>{#advanced_dlg.accessibility_help}</title>
-               <script type="text/javascript" src="../../tiny_mce_popup.js?ver=345-20110908"></script>
+               <script type="text/javascript" src="../../tiny_mce_popup.js?ver=349-20120314"></script>
                <script type="text/javascript">tinyMCEPopup.requireLangPack();</script>
        </head>
        <body id="content">
                <script type="text/javascript">tinyMCEPopup.requireLangPack();</script>
        </head>
        <body id="content">
index b9adf6f02e1bf2ae2c30d280a3cd3ea159c1d622..4d63ca98103e7273001bab311fa45e08bf753bae 100644 (file)
@@ -13,7 +13,7 @@ a.mceItemAnchor {display:inline-block; -webkit-user-select:all; -webkit-user-mod
 span.mceItemNbsp {background: #DDD}
 td.mceSelected, th.mceSelected {background-color:#3399ff !important}
 img {border:0;}
 span.mceItemNbsp {background: #DDD}
 td.mceSelected, th.mceSelected {background-color:#3399ff !important}
 img {border:0;}
-table {cursor:default}
+table, img, hr, .mceItemAnchor {cursor:default}
 table td, table th {cursor:text}
 ins {border-bottom:1px solid green; text-decoration: none; color:green}
 del {color:red; text-decoration:line-through}
 table td, table th {cursor:text}
 ins {border-bottom:1px solid green; text-decoration: none; color:green}
 del {color:red; text-decoration:line-through}
@@ -45,5 +45,6 @@ font[face=mceinline] {font-family:inherit !important}
 .mceItemRealMedia {background-image:url(../../img/realmedia.gif)}
 .mceItemVideo {background-image:url(../../img/video.gif)}
 .mceItemAudio {background-image:url(../../img/video.gif)}
 .mceItemRealMedia {background-image:url(../../img/realmedia.gif)}
 .mceItemVideo {background-image:url(../../img/video.gif)}
 .mceItemAudio {background-image:url(../../img/video.gif)}
+.mceItemEmbeddedAudio {background-image:url(../../img/video.gif)}
 .mceItemIframe {background-image:url(../../img/iframe.gif)}
 .mcePageBreak {display:block;border:0;width:100%;height:12px;border-top:1px dotted #ccc;margin-top:15px;background:#fff url(../../img/pagebreak.gif) no-repeat center top;}
 .mceItemIframe {background-image:url(../../img/iframe.gif)}
 .mcePageBreak {display:block;border:0;width:100%;height:12px;border-top:1px dotted #ccc;margin-top:15px;background:#fff url(../../img/pagebreak.gif) no-repeat center top;}
index 46007b04267cfe985e53cb46de90f3a36fc8d45b..ee3d369d02238e02e0185349064c637232d0e15a 100644 (file)
@@ -11,7 +11,7 @@ a.mceItemAnchor {display:inline-block; width:11px !important; height:11px  !impo
 span.mceItemNbsp {background: #DDD}
 td.mceSelected, th.mceSelected {background-color:#3399ff !important}
 img {border:0;}
 span.mceItemNbsp {background: #DDD}
 td.mceSelected, th.mceSelected {background-color:#3399ff !important}
 img {border:0;}
-table {cursor:default}
+table, img, hr, .mceItemAnchor {cursor:default}
 table td, table th {cursor:text}
 ins {border-bottom:1px solid green; text-decoration: none; color:green}
 del {color:red; text-decoration:line-through}
 table td, table th {cursor:text}
 ins {border-bottom:1px solid green; text-decoration: none; color:green}
 del {color:red; text-decoration:line-through}
index 47a39255a120184362db8b8cf835e81ac5132c84..631fa0ec874001708bfa20500145e5e7c05cd0f9 100644 (file)
@@ -12,7 +12,7 @@ a.mceItemAnchor {display:inline-block; width:11px !important; height:11px  !impo
 span.mceItemNbsp {background: #DDD}
 td.mceSelected, th.mceSelected {background-color:#3399ff !important}
 img {border:0;}
 span.mceItemNbsp {background: #DDD}
 td.mceSelected, th.mceSelected {background-color:#3399ff !important}
 img {border:0;}
-table {cursor:default}
+table, img, hr, .mceItemAnchor {cursor:default}
 table td, table th {cursor:text}
 ins {border-bottom:1px solid green; text-decoration: none; color:green}
 del {color:red; text-decoration:line-through}
 table td, table th {cursor:text}
 ins {border-bottom:1px solid green; text-decoration: none; color:green}
 del {color:red; text-decoration:line-through}
index 065a00457cfe526a159777aa70076be10a7c03b5..23fef64c9a4326f02a3e4953120f451b098ea5fa 100644 (file)
@@ -1,8 +1,4 @@
-body {
-       font: 13px/19px Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
-       margin: 10px;
-       color: #000;
-}
+
 body.mceForceColors {background:#FFF; color:#000;}
 body.mceBrowserDefaults {background:transparent; color:inherit; font-size:inherit; font-family:inherit;}
 td {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;}
 body.mceForceColors {background:#FFF; color:#000;}
 body.mceBrowserDefaults {background:transparent; color:inherit; font-size:inherit; font-family:inherit;}
 td {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;}
@@ -17,7 +13,7 @@ a.mceItemAnchor {display:inline-block; -webkit-user-select:all; -webkit-user-mod
 span.mceItemNbsp {background: #DDD}
 td.mceSelected, th.mceSelected {background-color:#3399ff !important}
 img {border:0;}
 span.mceItemNbsp {background: #DDD}
 td.mceSelected, th.mceSelected {background-color:#3399ff !important}
 img {border:0;}
-table {cursor:default}
+table, img, hr, .mceItemAnchor {cursor:default}
 table td, table th {cursor:text}
 ins {border-bottom:1px solid green; text-decoration: none; color:green}
 del {color:red; text-decoration:line-through}
 table td, table th {cursor:text}
 ins {border-bottom:1px solid green; text-decoration: none; color:green}
 del {color:red; text-decoration:line-through}
@@ -41,6 +37,24 @@ font[face=mceinline] {font-family:inherit !important}
 .mcePageBreak {display:block;border:0;width:100%;height:12px;border-top:1px dotted #ccc;margin-top:15px;background:#fff url(../../img/pagebreak.gif) no-repeat center top;}
 
 /* WordPress styles */
 .mcePageBreak {display:block;border:0;width:100%;height:12px;border-top:1px dotted #ccc;margin-top:15px;background:#fff url(../../img/pagebreak.gif) no-repeat center top;}
 
 /* WordPress styles */
+body {
+       font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
+       font-size: 13px;
+       line-height: 19px;
+       color: #333;
+       margin: 10px;
+       min-height: 100%;
+}
+
+br[data-mce-bogus] {
+       line-height: 1em;
+       margin-top: -1em;
+}
+
+br[data-mce-bogus]:only-child {
+       line-height: inherit;
+       margin-top: inherit;
+}
 
 .aligncenter,
 dl.aligncenter {
 
 .aligncenter,
 dl.aligncenter {
@@ -75,6 +89,7 @@ dl.aligncenter {
        margin: 0;
        padding: 0;
        border: 0 none;
        margin: 0;
        padding: 0;
        border: 0 none;
+       -webkit-user-drag: none;
 }
 
 .wp-caption-dd {
 }
 
 .wp-caption-dd {
@@ -94,3 +109,36 @@ td {
        margin: 8px;
 }
 
        margin: 8px;
 }
 
+/* Styles for the WordPress plugins */
+img.mceWPnextpage,
+img.mceWPmore {
+       border: 0;
+       border-top: 1px dotted #cccccc;
+       display: block;
+       width: 95%;
+       height: 12px;
+       margin: 15px auto 0;
+}
+
+img.mceWPmore {
+       background: transparent url("img/more_bug.gif") no-repeat right top;
+}
+
+img.mceWPnextpage {
+    background: transparent url("img/page_bug.gif") no-repeat right top;
+}
+
+img.wpGallery {
+       border: 1px dashed #888;
+       background: #f2f8ff url("img/gallery.png") no-repeat scroll center center;
+       width: 99%;
+       height: 250px;
+}
+
+img.wp-oembed {
+       border: 1px dashed #888;
+       background: #f7f5f2 url("img/embedded.png") no-repeat scroll center center;
+       width: 300px;
+       height: 250px;
+}
+
index 1116ff434119bca48c354e851b2619da8ab3d00b..a2d3f1ae02e78f57782dc02304767a642779fa8b 100644 (file)
@@ -1,8 +1,8 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#advanced_dlg.code_title}</title>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <title>{#advanced_dlg.code_title}</title>
-       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=345-20110908"></script>
-       <script type="text/javascript" src="js/source_editor.js?ver=345-20110908"></script>
+       <script type="text/javascript" src="../../tiny_mce_popup.js?ver=349-20120314"></script>
+       <script type="text/javascript" src="js/source_editor.js?ver=349-20120314"></script>
 </head>
 <body onresize="resizeInputs();" style="display:none; overflow:hidden;">
        <form name="source" onsubmit="saveContent();return false;" action="#">
 </head>
 <body onresize="resizeInputs();" style="display:none; overflow:hidden;">
        <form name="source" onsubmit="saveContent();return false;" action="#">
 
                <div class="mceActionPanel">
                        <div style="float: left">
 
                <div class="mceActionPanel">
                        <div style="float: left">
-                               <input type="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
+                               <input type="button" role="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
                        </div>
 
                        <div style="float: right">
                        </div>
 
                        <div style="float: right">
-                               <input type="submit" name="insert" value="{#update}" id="insert" />
+                               <input type="submit" role="button" name="insert" value="{#update}" id="insert" />
                        </div>
                </div>
        </form>
                        </div>
                </div>
        </form>
index 808f9ee465e178bb394e566f3b398efa91f686bf..38069d1974b794bd79235a45d86814cff98aae0c 100644 (file)
@@ -1 +1 @@
-(function(d){var a=/^\s*|\s*$/g,e,c="B".replace(/A(.)|B/,"$1")==="$1";var b={majorVersion:"3",minorVersion:"4.5",releaseDate:"2011-09-06",_init:function(){var s=this,q=document,o=navigator,g=o.userAgent,m,f,l,k,j,r;s.isOpera=d.opera&&opera.buildNumber;s.isWebKit=/WebKit/.test(g);s.isIE=!s.isWebKit&&!s.isOpera&&(/MSIE/gi).test(g)&&(/Explorer/gi).test(o.appName);s.isIE6=s.isIE&&/MSIE [56]/.test(g);s.isIE7=s.isIE&&/MSIE [7]/.test(g);s.isIE8=s.isIE&&/MSIE [8]/.test(g);s.isIE9=s.isIE&&/MSIE [9]/.test(g);s.isGecko=!s.isWebKit&&/Gecko/.test(g);s.isMac=g.indexOf("Mac")!=-1;s.isAir=/adobeair/i.test(g);s.isIDevice=/(iPad|iPhone)/.test(g);s.isIOS5=s.isIDevice&&g.match(/AppleWebKit\/(\d*)/)[1]>=534;if(d.tinyMCEPreInit){s.suffix=tinyMCEPreInit.suffix;s.baseURL=tinyMCEPreInit.base;s.query=tinyMCEPreInit.query;return}s.suffix="";f=q.getElementsByTagName("base");for(m=0;m<f.length;m++){if(r=f[m].href){if(/^https?:\/\/[^\/]+$/.test(r)){r+="/"}k=r?r.match(/.*\//)[0]:""}}function h(i){if(i.src&&/tiny_mce(|_gzip|_jquery|_prototype|_full)(_dev|_src)?.js/.test(i.src)){if(/_(src|dev)\.js/g.test(i.src)){s.suffix="_src"}if((j=i.src.indexOf("?"))!=-1){s.query=i.src.substring(j+1)}s.baseURL=i.src.substring(0,i.src.lastIndexOf("/"));if(k&&s.baseURL.indexOf("://")==-1&&s.baseURL.indexOf("/")!==0){s.baseURL=k+s.baseURL}return s.baseURL}return null}f=q.getElementsByTagName("script");for(m=0;m<f.length;m++){if(h(f[m])){return}}l=q.getElementsByTagName("head")[0];if(l){f=l.getElementsByTagName("script");for(m=0;m<f.length;m++){if(h(f[m])){return}}}return},is:function(g,f){if(!f){return g!==e}if(f=="array"&&(g.hasOwnProperty&&g instanceof Array)){return true}return typeof(g)==f},makeMap:function(f,j,h){var g;f=f||[];j=j||",";if(typeof(f)=="string"){f=f.split(j)}h=h||{};g=f.length;while(g--){h[f[g]]={}}return h},each:function(i,f,h){var j,g;if(!i){return 0}h=h||i;if(i.length!==e){for(j=0,g=i.length;j<g;j++){if(f.call(h,i[j],j,i)===false){return 0}}}else{for(j in i){if(i.hasOwnProperty(j)){if(f.call(h,i[j],j,i)===false){return 0}}}}return 1},map:function(g,h){var i=[];b.each(g,function(f){i.push(h(f))});return i},grep:function(g,h){var i=[];b.each(g,function(f){if(!h||h(f)){i.push(f)}});return i},inArray:function(g,h){var j,f;if(g){for(j=0,f=g.length;j<f;j++){if(g[j]===h){return j}}}return -1},extend:function(k,j){var h,g,f=arguments;for(h=1,g=f.length;h<g;h++){j=f[h];b.each(j,function(i,l){if(i!==e){k[l]=i}})}return k},trim:function(f){return(f?""+f:"").replace(a,"")},create:function(o,f,j){var n=this,g,i,k,l,h,m=0;o=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(o);k=o[3].match(/(^|\.)(\w+)$/i)[2];i=n.createNS(o[3].replace(/\.\w+$/,""),j);if(i[k]){return}if(o[2]=="static"){i[k]=f;if(this.onCreate){this.onCreate(o[2],o[3],i[k])}return}if(!f[k]){f[k]=function(){};m=1}i[k]=f[k];n.extend(i[k].prototype,f);if(o[5]){g=n.resolve(o[5]).prototype;l=o[5].match(/\.(\w+)$/i)[1];h=i[k];if(m){i[k]=function(){return g[l].apply(this,arguments)}}else{i[k]=function(){this.parent=g[l];return h.apply(this,arguments)}}i[k].prototype[k]=i[k];n.each(g,function(p,q){i[k].prototype[q]=g[q]});n.each(f,function(p,q){if(g[q]){i[k].prototype[q]=function(){this.parent=g[q];return p.apply(this,arguments)}}else{if(q!=k){i[k].prototype[q]=p}}})}n.each(f["static"],function(p,q){i[k][q]=p});if(this.onCreate){this.onCreate(o[2],o[3],i[k].prototype)}},walk:function(i,h,j,g){g=g||this;if(i){if(j){i=i[j]}b.each(i,function(k,f){if(h.call(g,k,f,j)===false){return false}b.walk(k,h,j,g)})}},createNS:function(j,h){var g,f;h=h||d;j=j.split(".");for(g=0;g<j.length;g++){f=j[g];if(!h[f]){h[f]={}}h=h[f]}return h},resolve:function(j,h){var g,f;h=h||d;j=j.split(".");for(g=0,f=j.length;g<f;g++){h=h[j[g]];if(!h){break}}return h},addUnload:function(j,i){var h=this;j={func:j,scope:i||this};if(!h.unloads){function g(){var f=h.unloads,l,m;if(f){for(m in f){l=f[m];if(l&&l.func){l.func.call(l.scope,1)}}if(d.detachEvent){d.detachEvent("onbeforeunload",k);d.detachEvent("onunload",g)}else{if(d.removeEventListener){d.removeEventListener("unload",g,false)}}h.unloads=l=f=w=g=0;if(d.CollectGarbage){CollectGarbage()}}}function k(){var l=document;if(l.readyState=="interactive"){function f(){l.detachEvent("onstop",f);if(g){g()}l=0}if(l){l.attachEvent("onstop",f)}d.setTimeout(function(){if(l){l.detachEvent("onstop",f)}},0)}}if(d.attachEvent){d.attachEvent("onunload",g);d.attachEvent("onbeforeunload",k)}else{if(d.addEventListener){d.addEventListener("unload",g,false)}}h.unloads=[j]}else{h.unloads.push(j)}return j},removeUnload:function(i){var g=this.unloads,h=null;b.each(g,function(j,f){if(j&&j.func==i){g.splice(f,1);h=i;return false}});return h},explode:function(f,g){return f?b.map(f.split(g||","),b.trim):f},_addVer:function(g){var f;if(!this.query){return g}f=(g.indexOf("?")==-1?"?":"&")+this.query;if(g.indexOf("#")==-1){return g+f}return g.replace("#",f+"#")},_replace:function(h,f,g){if(c){return g.replace(h,function(){var l=f,j=arguments,k;for(k=0;k<j.length-2;k++){if(j[k]===e){l=l.replace(new RegExp("\\$"+k,"g"),"")}else{l=l.replace(new RegExp("\\$"+k,"g"),j[k])}}return l})}return g.replace(h,f)}};b._init();d.tinymce=d.tinyMCE=b})(window);tinymce.create("tinymce.util.Dispatcher",{scope:null,listeners:null,Dispatcher:function(a){this.scope=a||this;this.listeners=[]},add:function(a,b){this.listeners.push({cb:a,scope:b||this.scope});return a},addToTop:function(a,b){this.listeners.unshift({cb:a,scope:b||this.scope});return a},remove:function(a){var b=this.listeners,c=null;tinymce.each(b,function(e,d){if(a==e.cb){c=a;b.splice(d,1);return false}});return c},dispatch:function(){var f,d=arguments,e,b=this.listeners,g;for(e=0;e<b.length;e++){g=b[e];f=g.cb.apply(g.scope,d);if(f===false){break}}return f}});(function(){var a=tinymce.each;tinymce.create("tinymce.util.URI",{URI:function(e,g){var f=this,i,d,c,h;e=tinymce.trim(e);g=f.settings=g||{};if(/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e)){f.source=e;return}if(e.indexOf("/")===0&&e.indexOf("//")!==0){e=(g.base_uri?g.base_uri.protocol||"http":"http")+"://mce_host"+e}if(!/^[\w-]*:?\/\//.test(e)){h=g.base_uri?g.base_uri.path:new tinymce.util.URI(location.href).directory;e=((g.base_uri&&g.base_uri.protocol)||"http")+"://mce_host"+f.toAbsPath(h,e)}e=e.replace(/@@/g,"(mce_at)");e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e);a(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(b,j){var k=e[j];if(k){k=k.replace(/\(mce_at\)/g,"@@")}f[b]=k});if(c=g.base_uri){if(!f.protocol){f.protocol=c.protocol}if(!f.userInfo){f.userInfo=c.userInfo}if(!f.port&&f.host=="mce_host"){f.port=c.port}if(!f.host||f.host=="mce_host"){f.host=c.host}f.source=""}},setPath:function(c){var b=this;c=/^(.*?)\/?(\w+)?$/.exec(c);b.path=c[0];b.directory=c[1];b.file=c[2];b.source="";b.getURI()},toRelative:function(b){var c=this,d;if(b==="./"){return b}b=new tinymce.util.URI(b,{base_uri:c});if((b.host!="mce_host"&&c.host!=b.host&&b.host)||c.port!=b.port||c.protocol!=b.protocol){return b.getURI()}d=c.toRelPath(c.path,b.path);if(b.query){d+="?"+b.query}if(b.anchor){d+="#"+b.anchor}return d},toAbsolute:function(b,c){var b=new tinymce.util.URI(b,{base_uri:this});return b.getURI(this.host==b.host&&this.protocol==b.protocol?c:0)},toRelPath:function(g,h){var c,f=0,d="",e,b;g=g.substring(0,g.lastIndexOf("/"));g=g.split("/");c=h.split("/");if(g.length>=c.length){for(e=0,b=g.length;e<b;e++){if(e>=c.length||g[e]!=c[e]){f=e+1;break}}}if(g.length<c.length){for(e=0,b=c.length;e<b;e++){if(e>=g.length||g[e]!=c[e]){f=e+1;break}}}if(f==1){return h}for(e=0,b=g.length-(f-1);e<b;e++){d+="../"}for(e=f-1,b=c.length;e<b;e++){if(e!=f-1){d+="/"+c[e]}else{d+=c[e]}}return d},toAbsPath:function(e,f){var c,b=0,h=[],d,g;d=/\/$/.test(f)?"/":"";e=e.split("/");f=f.split("/");a(e,function(i){if(i){h.push(i)}});e=h;for(c=f.length-1,h=[];c>=0;c--){if(f[c].length==0||f[c]=="."){continue}if(f[c]==".."){b++;continue}if(b>0){b--;continue}h.push(f[c])}c=e.length-b;if(c<=0){g=h.reverse().join("/")}else{g=e.slice(0,c).join("/")+"/"+h.reverse().join("/")}if(g.indexOf("/")!==0){g="/"+g}if(d&&g.lastIndexOf("/")!==g.length-1){g+=d}return g},getURI:function(d){var c,b=this;if(!b.source||d){c="";if(!d){if(b.protocol){c+=b.protocol+"://"}if(b.userInfo){c+=b.userInfo+"@"}if(b.host){c+=b.host}if(b.port){c+=":"+b.port}}if(b.path){c+=b.path}if(b.query){c+="?"+b.query}if(b.anchor){c+="#"+b.anchor}b.source=c}return b.source}})})();(function(){var a=tinymce.each;tinymce.create("static tinymce.util.Cookie",{getHash:function(d){var b=this.get(d),c;if(b){a(b.split("&"),function(e){e=e.split("=");c=c||{};c[unescape(e[0])]=unescape(e[1])})}return c},setHash:function(j,b,g,f,i,c){var h="";a(b,function(e,d){h+=(!h?"":"&")+escape(d)+"="+escape(e)});this.set(j,h,g,f,i,c)},get:function(i){var h=document.cookie,g,f=i+"=",d;if(!h){return}d=h.indexOf("; "+f);if(d==-1){d=h.indexOf(f);if(d!=0){return null}}else{d+=2}g=h.indexOf(";",d);if(g==-1){g=h.length}return unescape(h.substring(d+f.length,g))},set:function(i,b,g,f,h,c){document.cookie=i+"="+escape(b)+((g)?"; expires="+g.toGMTString():"")+((f)?"; path="+escape(f):"")+((h)?"; domain="+h:"")+((c)?"; secure":"")},remove:function(e,b){var c=new Date();c.setTime(c.getTime()-1000);this.set(e,"",c,b,c)}})})();(function(){function serialize(o,quote){var i,v,t;quote=quote||'"';if(o==null){return"null"}t=typeof o;if(t=="string"){v="\bb\tt\nn\ff\rr\"\"''\\\\";return quote+o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(a,b){if(quote==='"'&&a==="'"){return a}i=v.indexOf(b);if(i+1){return"\\"+v.charAt(i+1)}a=b.charCodeAt().toString(16);return"\\u"+"0000".substring(a.length)+a})+quote}if(t=="object"){if(o.hasOwnProperty&&o instanceof Array){for(i=0,v="[";i<o.length;i++){v+=(i>0?",":"")+serialize(o[i],quote)}return v+"]"}v="{";for(i in o){v+=typeof o[i]!="function"?(v.length>1?","+quote:quote)+i+quote+":"+serialize(o[i],quote):""}return v+"}"}return""+o}tinymce.util.JSON={serialize:serialize,parse:function(s){try{return eval("("+s+")")}catch(ex){}}}})();tinymce.create("static tinymce.util.XHR",{send:function(g){var a,e,b=window,h=0;g.scope=g.scope||this;g.success_scope=g.success_scope||g.scope;g.error_scope=g.error_scope||g.scope;g.async=g.async===false?false:true;g.data=g.data||"";function d(i){a=0;try{a=new ActiveXObject(i)}catch(c){}return a}a=b.XMLHttpRequest?new XMLHttpRequest():d("Microsoft.XMLHTTP")||d("Msxml2.XMLHTTP");if(a){if(a.overrideMimeType){a.overrideMimeType(g.content_type)}a.open(g.type||(g.data?"POST":"GET"),g.url,g.async);if(g.content_type){a.setRequestHeader("Content-Type",g.content_type)}a.setRequestHeader("X-Requested-With","XMLHttpRequest");a.send(g.data);function f(){if(!g.async||a.readyState==4||h++>10000){if(g.success&&h<10000&&a.status==200){g.success.call(g.success_scope,""+a.responseText,a,g)}else{if(g.error){g.error.call(g.error_scope,h>10000?"TIMED_OUT":"GENERAL",a,g)}}a=null}else{b.setTimeout(f,10)}}if(!g.async){return f()}e=b.setTimeout(f,10)}}});(function(){var c=tinymce.extend,b=tinymce.util.JSON,a=tinymce.util.XHR;tinymce.create("tinymce.util.JSONRequest",{JSONRequest:function(d){this.settings=c({},d);this.count=0},send:function(f){var e=f.error,d=f.success;f=c(this.settings,f);f.success=function(h,g){h=b.parse(h);if(typeof(h)=="undefined"){h={error:"JSON Parse error."}}if(h.error){e.call(f.error_scope||f.scope,h.error,g)}else{d.call(f.success_scope||f.scope,h.result)}};f.error=function(h,g){if(e){e.call(f.error_scope||f.scope,h,g)}};f.data=b.serialize({id:f.id||"c"+(this.count++),method:f.method,params:f.params});f.content_type="application/json";a.send(f)},"static":{sendRPC:function(d){return new tinymce.util.JSONRequest().send(d)}}})}());(function(a){a.VK={DELETE:46,BACKSPACE:8}})(tinymce);(function(d){var f=d.VK,e=f.BACKSPACE,c=f.DELETE;function b(g){var i=g.dom,h=g.selection;g.onKeyDown.add(function(k,o){var j,p,m,n,l;l=o.keyCode==c;if(l||o.keyCode==e){o.preventDefault();j=h.getRng();p=i.getParent(j.startContainer,i.isBlock);if(l){p=i.getNext(p,i.isBlock)}if(p){m=p.firstChild;if(m&&m.nodeName==="SPAN"){n=m.cloneNode(false)}}k.getDoc().execCommand(l?"ForwardDelete":"Delete",false,null);p=i.getParent(j.startContainer,i.isBlock);d.each(i.select("span.Apple-style-span,font.Apple-style-span",p),function(r){var q=i.createRng();q.setStartBefore(r);q.setEndBefore(r);if(n){i.replace(n.cloneNode(false),r,true)}else{i.remove(r,true)}h.setRng(q)})}})}function a(g){g.onKeyUp.add(function(h,j){var i=j.keyCode;if(i==c||i==e){if(h.dom.isEmpty(h.getBody())){h.setContent("",{format:"raw"});h.nodeChanged();return}}})}d.create("tinymce.util.Quirks",{Quirks:function(g){if(d.isWebKit){b(g);a(g)}if(d.isIE){a(g)}}})})(tinymce);(function(j){var a,g,d,k=/[&<>\"\u007E-\uD7FF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,b=/[<>&\u007E-\uD7FF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,f=/[<>&\"\']/g,c=/&(#x|#)?([\w]+);/g,i={128:"\u20AC",130:"\u201A",131:"\u0192",132:"\u201E",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02C6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017D",145:"\u2018",146:"\u2019",147:"\u201C",148:"\u201D",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02DC",153:"\u2122",154:"\u0161",155:"\u203A",156:"\u0153",158:"\u017E",159:"\u0178"};g={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;"};d={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"};function h(l){var m;m=document.createElement("div");m.innerHTML=l;return m.textContent||m.innerText||l}function e(m,p){var n,o,l,q={};if(m){m=m.split(",");p=p||10;for(n=0;n<m.length;n+=2){o=String.fromCharCode(parseInt(m[n],p));if(!g[o]){l="&"+m[n+1]+";";q[o]=l;q[l]=o}}return q}}a=e("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);j.html=j.html||{};j.html.Entities={encodeRaw:function(m,l){return m.replace(l?k:b,function(n){return g[n]||n})},encodeAllRaw:function(l){return(""+l).replace(f,function(m){return g[m]||m})},encodeNumeric:function(m,l){return m.replace(l?k:b,function(n){if(n.length>1){return"&#"+(((n.charCodeAt(0)-55296)*1024)+(n.charCodeAt(1)-56320)+65536)+";"}return g[n]||"&#"+n.charCodeAt(0)+";"})},encodeNamed:function(n,l,m){m=m||a;return n.replace(l?k:b,function(o){return g[o]||m[o]||o})},getEncodeFunc:function(l,o){var p=j.html.Entities;o=e(o)||a;function m(r,q){return r.replace(q?k:b,function(s){return g[s]||o[s]||"&#"+s.charCodeAt(0)+";"||s})}function n(r,q){return p.encodeNamed(r,q,o)}l=j.makeMap(l.replace(/\+/g,","));if(l.named&&l.numeric){return m}if(l.named){if(o){return n}return p.encodeNamed}if(l.numeric){return p.encodeNumeric}return p.encodeRaw},decode:function(l){return l.replace(c,function(n,m,o){if(m){o=parseInt(o,m.length===2?16:10);if(o>65535){o-=65536;return String.fromCharCode(55296+(o>>10),56320+(o&1023))}else{return i[o]||String.fromCharCode(o)}}return d[n]||a[n]||h(n)})}}})(tinymce);tinymce.html.Styles=function(d,f){var k=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,h=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,b=/\s*([^:]+):\s*([^;]+);?/g,l=/\s+$/,m=/rgb/,e,g,a={},j;d=d||{};j="\\\" \\' \\; \\: ; : \uFEFF".split(" ");for(g=0;g<j.length;g++){a[j[g]]="\uFEFF"+g;a["\uFEFF"+g]=j[g]}function c(n,q,p,i){function o(r){r=parseInt(r).toString(16);return r.length>1?r:"0"+r}return"#"+o(q)+o(p)+o(i)}return{toHex:function(i){return i.replace(k,c)},parse:function(r){var y={},p,n,v,q,u=d.url_converter,x=d.url_converter_scope||this;function o(C,F){var E,B,A,D;E=y[C+"-top"+F];if(!E){return}B=y[C+"-right"+F];if(E!=B){return}A=y[C+"-bottom"+F];if(B!=A){return}D=y[C+"-left"+F];if(A!=D){return}y[C+F]=D;delete y[C+"-top"+F];delete y[C+"-right"+F];delete y[C+"-bottom"+F];delete y[C+"-left"+F]}function t(B){var C=y[B],A;if(!C||C.indexOf(" ")<0){return}C=C.split(" ");A=C.length;while(A--){if(C[A]!==C[0]){return false}}y[B]=C[0];return true}function z(C,B,A,D){if(!t(B)){return}if(!t(A)){return}if(!t(D)){return}y[C]=y[B]+" "+y[A]+" "+y[D];delete y[B];delete y[A];delete y[D]}function s(A){q=true;return a[A]}function i(B,A){if(q){B=B.replace(/\uFEFF[0-9]/g,function(C){return a[C]})}if(!A){B=B.replace(/\\([\'\";:])/g,"$1")}return B}if(r){r=r.replace(/\\[\"\';:\uFEFF]/g,s).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(A){return A.replace(/[;:]/g,s)});while(p=b.exec(r)){n=p[1].replace(l,"").toLowerCase();v=p[2].replace(l,"");if(n&&v.length>0){if(n==="font-weight"&&v==="700"){v="bold"}else{if(n==="color"||n==="background-color"){v=v.toLowerCase()}}v=v.replace(k,c);v=v.replace(h,function(B,A,E,D,F,C){F=F||C;if(F){F=i(F);return"'"+F.replace(/\'/g,"\\'")+"'"}A=i(A||E||D);if(u){A=u.call(x,A,"style")}return"url('"+A.replace(/\'/g,"\\'")+"')"});y[n]=q?i(v,true):v}b.lastIndex=p.index+p[0].length}o("border","");o("border","-width");o("border","-color");o("border","-style");o("padding","");o("margin","");z("border","border-width","border-style","border-color");if(y.border==="medium none"){delete y.border}}return y},serialize:function(p,r){var o="",n,q;function i(t){var x,u,s,v;x=f.styles[t];if(x){for(u=0,s=x.length;u<s;u++){t=x[u];v=p[t];if(v!==e&&v.length>0){o+=(o.length>0?" ":"")+t+": "+v+";"}}}}if(r&&f&&f.styles){i("*");i(r)}else{for(n in p){q=p[n];if(q!==e&&q.length>0){o+=(o.length>0?" ":"")+n+": "+q+";"}}}return o}}};(function(m){var h={},j,l,g,f,c={},b,e,d=m.makeMap,k=m.each;function i(o,n){return o.split(n||",")}function a(r,q){var o,p={};function n(s){return s.replace(/[A-Z]+/g,function(t){return n(r[t])})}for(o in r){if(r.hasOwnProperty(o)){r[o]=n(r[o])}}n(q).replace(/#/g,"#text").replace(/(\w+)\[([^\]]+)\]\[([^\]]*)\]/g,function(v,t,s,u){s=i(s,"|");p[t]={attributes:d(s),attributesOrder:s,children:d(u,"|",{"#comment":{}})}});return p}l="h1,h2,h3,h4,h5,h6,hr,p,div,address,pre,form,table,tbody,thead,tfoot,th,tr,td,li,ol,ul,caption,blockquote,center,dl,dt,dd,dir,fieldset,noscript,menu,isindex,samp,header,footer,article,section,hgroup";l=d(l,",",d(l.toUpperCase()));h=a({Z:"H|K|N|O|P",Y:"X|form|R|Q",ZG:"E|span|width|align|char|charoff|valign",X:"p|T|div|U|W|isindex|fieldset|table",ZF:"E|align|char|charoff|valign",W:"pre|hr|blockquote|address|center|noframes",ZE:"abbr|axis|headers|scope|rowspan|colspan|align|char|charoff|valign|nowrap|bgcolor|width|height",ZD:"[E][S]",U:"ul|ol|dl|menu|dir",ZC:"p|Y|div|U|W|table|br|span|bdo|object|applet|img|map|K|N|Q",T:"h1|h2|h3|h4|h5|h6",ZB:"X|S|Q",S:"R|P",ZA:"a|G|J|M|O|P",R:"a|H|K|N|O",Q:"noscript|P",P:"ins|del|script",O:"input|select|textarea|label|button",N:"M|L",M:"em|strong|dfn|code|q|samp|kbd|var|cite|abbr|acronym",L:"sub|sup",K:"J|I",J:"tt|i|b|u|s|strike",I:"big|small|font|basefont",H:"G|F",G:"br|span|bdo",F:"object|applet|img|map|iframe",E:"A|B|C",D:"accesskey|tabindex|onfocus|onblur",C:"onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup",B:"lang|xml:lang|dir",A:"id|class|style|title"},"script[id|charset|type|language|src|defer|xml:space][]style[B|id|type|media|title|xml:space][]object[E|declare|classid|codebase|data|type|codetype|archive|standby|width|height|usemap|name|tabindex|align|border|hspace|vspace][#|param|Y]param[id|name|value|valuetype|type][]p[E|align][#|S]a[E|D|charset|type|name|href|hreflang|rel|rev|shape|coords|target][#|Z]br[A|clear][]span[E][#|S]bdo[A|C|B][#|S]applet[A|codebase|archive|code|object|alt|name|width|height|align|hspace|vspace][#|param|Y]h1[E|align][#|S]img[E|src|alt|name|longdesc|width|height|usemap|ismap|align|border|hspace|vspace][]map[B|C|A|name][X|form|Q|area]h2[E|align][#|S]iframe[A|longdesc|name|src|frameborder|marginwidth|marginheight|scrolling|align|width|height][#|Y]h3[E|align][#|S]tt[E][#|S]i[E][#|S]b[E][#|S]u[E][#|S]s[E][#|S]strike[E][#|S]big[E][#|S]small[E][#|S]font[A|B|size|color|face][#|S]basefont[id|size|color|face][]em[E][#|S]strong[E][#|S]dfn[E][#|S]code[E][#|S]q[E|cite][#|S]samp[E][#|S]kbd[E][#|S]var[E][#|S]cite[E][#|S]abbr[E][#|S]acronym[E][#|S]sub[E][#|S]sup[E][#|S]input[E|D|type|name|value|checked|disabled|readonly|size|maxlength|src|alt|usemap|onselect|onchange|accept|align][]select[E|name|size|multiple|disabled|tabindex|onfocus|onblur|onchange][optgroup|option]optgroup[E|disabled|label][option]option[E|selected|disabled|label|value][]textarea[E|D|name|rows|cols|disabled|readonly|onselect|onchange][]label[E|for|accesskey|onfocus|onblur][#|S]button[E|D|name|value|type|disabled][#|p|T|div|U|W|table|G|object|applet|img|map|K|N|Q]h4[E|align][#|S]ins[E|cite|datetime][#|Y]h5[E|align][#|S]del[E|cite|datetime][#|Y]h6[E|align][#|S]div[E|align][#|Y]ul[E|type|compact][li]li[E|type|value][#|Y]ol[E|type|compact|start][li]dl[E|compact][dt|dd]dt[E][#|S]dd[E][#|Y]menu[E|compact][li]dir[E|compact][li]pre[E|width|xml:space][#|ZA]hr[E|align|noshade|size|width][]blockquote[E|cite][#|Y]address[E][#|S|p]center[E][#|Y]noframes[E][#|Y]isindex[A|B|prompt][]fieldset[E][#|legend|Y]legend[E|accesskey|align][#|S]table[E|summary|width|border|frame|rules|cellspacing|cellpadding|align|bgcolor][caption|col|colgroup|thead|tfoot|tbody|tr]caption[E|align][#|S]col[ZG][]colgroup[ZG][col]thead[ZF][tr]tr[ZF|bgcolor][th|td]th[E|ZE][#|Y]form[E|action|method|name|enctype|onsubmit|onreset|accept|accept-charset|target][#|X|R|Q]noscript[E][#|Y]td[E|ZE][#|Y]tfoot[ZF][tr]tbody[ZF][tr]area[E|D|shape|coords|href|nohref|alt|target][]base[id|href|target][]body[E|onload|onunload|background|bgcolor|text|link|vlink|alink][#|Y]");j=d("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected,autoplay,loop,controls");g=d("area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed,source");f=m.extend(d("td,th,iframe,video,audio,object"),g);b=d("pre,script,style,textarea");e=d("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr");m.html.Schema=function(r){var A=this,n={},o={},y=[],q,p;r=r||{};if(r.verify_html===false){r.valid_elements="*[*]"}if(r.valid_styles){q={};k(r.valid_styles,function(C,B){q[B]=m.explode(C)})}p=r.whitespace_elements?d(r.whitespace_elements):b;function z(B){return new RegExp("^"+B.replace(/([?+*])/g,".$1")+"$")}function t(I){var H,D,W,S,X,C,F,R,U,N,V,Z,L,G,T,B,P,E,Y,aa,M,Q,K=/^([#+-])?([^\[\/]+)(?:\/([^\[]+))?(?:\[([^\]]+)\])?$/,O=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,J=/[*?+]/;if(I){I=i(I);if(n["@"]){P=n["@"].attributes;E=n["@"].attributesOrder}for(H=0,D=I.length;H<D;H++){C=K.exec(I[H]);if(C){T=C[1];N=C[2];B=C[3];U=C[4];L={};G=[];F={attributes:L,attributesOrder:G};if(T==="#"){F.paddEmpty=true}if(T==="-"){F.removeEmpty=true}if(P){for(aa in P){L[aa]=P[aa]}G.push.apply(G,E)}if(U){U=i(U,"|");for(W=0,S=U.length;W<S;W++){C=O.exec(U[W]);if(C){R={};Z=C[1];V=C[2].replace(/::/g,":");T=C[3];Q=C[4];if(Z==="!"){F.attributesRequired=F.attributesRequired||[];F.attributesRequired.push(V);R.required=true}if(Z==="-"){delete L[V];G.splice(m.inArray(G,V),1);continue}if(T){if(T==="="){F.attributesDefault=F.attributesDefault||[];F.attributesDefault.push({name:V,value:Q});R.defaultValue=Q}if(T===":"){F.attributesForced=F.attributesForced||[];F.attributesForced.push({name:V,value:Q});R.forcedValue=Q}if(T==="<"){R.validValues=d(Q,"?")}}if(J.test(V)){F.attributePatterns=F.attributePatterns||[];R.pattern=z(V);F.attributePatterns.push(R)}else{if(!L[V]){G.push(V)}L[V]=R}}}}if(!P&&N=="@"){P=L;E=G}if(B){F.outputName=N;n[B]=F}if(J.test(N)){F.pattern=z(N);y.push(F)}else{n[N]=F}}}}}function v(B){n={};y=[];t(B);k(h,function(D,C){o[C]=D.children})}function s(C){var B=/^(~)?(.+)$/;if(C){k(i(C),function(G){var E=B.exec(G),F=E[1]==="~",H=F?"span":"div",D=E[2];o[D]=o[H];c[D]=H;if(!F){l[D]={}}k(o,function(I,J){if(I[H]){I[D]=I[H]}})})}}function u(C){var B=/^([+\-]?)(\w+)\[([^\]]+)\]$/;if(C){k(i(C),function(G){var F=B.exec(G),D,E;if(F){E=F[1];if(E){D=o[F[2]]}else{D=o[F[2]]={"#comment":{}}}D=o[F[2]];k(i(F[3],"|"),function(H){if(E==="-"){delete D[H]}else{D[H]={}}})}})}}function x(B){var D=n[B],C;if(D){return D}C=y.length;while(C--){D=y[C];if(D.pattern.test(B)){return D}}}if(!r.valid_elements){k(h,function(C,B){n[B]={attributes:C.attributes,attributesOrder:C.attributesOrder};o[B]=C.children});k(i("strong/b,em/i"),function(B){B=i(B,"/");n[B[1]].outputName=B[0]});n.img.attributesDefault=[{name:"alt",value:""}];k(i("ol,ul,sub,sup,blockquote,span,font,a,table,tbody,tr"),function(B){n[B].removeEmpty=true});k(i("p,h1,h2,h3,h4,h5,h6,th,td,pre,div,address,caption"),function(B){n[B].paddEmpty=true})}else{v(r.valid_elements)}s(r.custom_elements);u(r.valid_children);t(r.extended_valid_elements);u("+ol[ul|ol],+ul[ul|ol]");if(!x("span")){t("span[!data-mce-type|*]")}if(r.invalid_elements){m.each(m.explode(r.invalid_elements),function(B){if(n[B]){delete n[B]}})}A.children=o;A.styles=q;A.getBoolAttrs=function(){return j};A.getBlockElements=function(){return l};A.getShortEndedElements=function(){return g};A.getSelfClosingElements=function(){return e};A.getNonEmptyElements=function(){return f};A.getWhiteSpaceElements=function(){return p};A.isValidChild=function(B,D){var C=o[B];return !!(C&&C[D])};A.getElementRule=x;A.getCustomElements=function(){return c};A.addValidElements=t;A.setValidElements=v;A.addCustomElements=s;A.addValidChildren=u};m.html.Schema.boolAttrMap=j;m.html.Schema.blockElementsMap=l})(tinymce);(function(a){a.html.SaxParser=function(c,e){var b=this,d=function(){};c=c||{};b.schema=e=e||new a.html.Schema();if(c.fix_self_closing!==false){c.fix_self_closing=true}a.each("comment cdata text start end pi doctype".split(" "),function(f){if(f){b[f]=c[f]||d}});b.parse=function(D){var n=this,g,F=0,H,A,z=[],M,P,B,q,y,r,L,G,N,u,m,k,s,Q,o,O,E,R,K,f,I,l,C,J,h,v=0,j=a.html.Entities.decode,x,p;function t(S){var U,T;U=z.length;while(U--){if(z[U].name===S){break}}if(U>=0){for(T=z.length-1;T>=U;T--){S=z[T];if(S.valid){n.end(S.name)}}z.length=U}}l=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([^\\s\\/<>]+)\\s*((?:[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*)>))","g");C=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:\\.|[^\"])*)\")|(?:\'((?:\\.|[^\'])*)\')|([^>\s]+)))?/g;J={script:/<\/script[^>]*>/gi,style:/<\/style[^>]*>/gi,noscript:/<\/noscript[^>]*>/gi};L=e.getShortEndedElements();I=e.getSelfClosingElements();G=e.getBoolAttrs();u=c.validate;r=c.remove_internals;x=c.fix_self_closing;p=a.isIE;o=/^:/;while(g=l.exec(D)){if(F<g.index){n.text(j(D.substr(F,g.index-F)))}if(H=g[6]){H=H.toLowerCase();if(p&&o.test(H)){H=H.substr(1)}t(H)}else{if(H=g[7]){H=H.toLowerCase();if(p&&o.test(H)){H=H.substr(1)}N=H in L;if(x&&I[H]&&z.length>0&&z[z.length-1].name===H){t(H)}if(!u||(m=e.getElementRule(H))){k=true;if(u){O=m.attributes;E=m.attributePatterns}if(Q=g[8]){y=Q.indexOf("data-mce-type")!==-1;if(y&&r){k=false}M=[];M.map={};Q.replace(C,function(T,S,X,W,V){var Y,U;S=S.toLowerCase();X=S in G?S:j(X||W||V||"");if(u&&!y&&S.indexOf("data-")!==0){Y=O[S];if(!Y&&E){U=E.length;while(U--){Y=E[U];if(Y.pattern.test(S)){break}}if(U===-1){Y=null}}if(!Y){return}if(Y.validValues&&!(X in Y.validValues)){return}}M.map[S]=X;M.push({name:S,value:X})})}else{M=[];M.map={}}if(u&&!y){R=m.attributesRequired;K=m.attributesDefault;f=m.attributesForced;if(f){P=f.length;while(P--){s=f[P];q=s.name;h=s.value;if(h==="{$uid}"){h="mce_"+v++}M.map[q]=h;M.push({name:q,value:h})}}if(K){P=K.length;while(P--){s=K[P];q=s.name;if(!(q in M.map)){h=s.value;if(h==="{$uid}"){h="mce_"+v++}M.map[q]=h;M.push({name:q,value:h})}}}if(R){P=R.length;while(P--){if(R[P] in M.map){break}}if(P===-1){k=false}}if(M.map["data-mce-bogus"]){k=false}}if(k){n.start(H,M,N)}}else{k=false}if(A=J[H]){A.lastIndex=F=g.index+g[0].length;if(g=A.exec(D)){if(k){B=D.substr(F,g.index-F)}F=g.index+g[0].length}else{B=D.substr(F);F=D.length}if(k&&B.length>0){n.text(B,true)}if(k){n.end(H)}l.lastIndex=F;continue}if(!N){if(!Q||Q.indexOf("/")!=Q.length-1){z.push({name:H,valid:k})}else{if(k){n.end(H)}}}}else{if(H=g[1]){n.comment(H)}else{if(H=g[2]){n.cdata(H)}else{if(H=g[3]){n.doctype(H)}else{if(H=g[4]){n.pi(H,g[5])}}}}}}F=g.index+g[0].length}if(F<D.length){n.text(j(D.substr(F)))}for(P=z.length-1;P>=0;P--){H=z[P];if(H.valid){n.end(H.name)}}}}})(tinymce);(function(d){var c=/^[ \t\r\n]*$/,e={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};function a(k,l,j){var i,h,f=j?"lastChild":"firstChild",g=j?"prev":"next";if(k[f]){return k[f]}if(k!==l){i=k[g];if(i){return i}for(h=k.parent;h&&h!==l;h=h.parent){i=h[g];if(i){return i}}}}function b(f,g){this.name=f;this.type=g;if(g===1){this.attributes=[];this.attributes.map={}}}d.extend(b.prototype,{replace:function(g){var f=this;if(g.parent){g.remove()}f.insert(g,f);f.remove();return f},attr:function(h,l){var f=this,g,j,k;if(typeof h!=="string"){for(j in h){f.attr(j,h[j])}return f}if(g=f.attributes){if(l!==k){if(l===null){if(h in g.map){delete g.map[h];j=g.length;while(j--){if(g[j].name===h){g=g.splice(j,1);return f}}}return f}if(h in g.map){j=g.length;while(j--){if(g[j].name===h){g[j].value=l;break}}}else{g.push({name:h,value:l})}g.map[h]=l;return f}else{return g.map[h]}}},clone:function(){var g=this,n=new b(g.name,g.type),h,f,m,j,k;if(m=g.attributes){k=[];k.map={};for(h=0,f=m.length;h<f;h++){j=m[h];if(j.name!=="id"){k[k.length]={name:j.name,value:j.value};k.map[j.name]=j.value}}n.attributes=k}n.value=g.value;n.shortEnded=g.shortEnded;return n},wrap:function(g){var f=this;f.parent.insert(g,f);g.append(f);return f},unwrap:function(){var f=this,h,g;for(h=f.firstChild;h;){g=h.next;f.insert(h,f,true);h=g}f.remove()},remove:function(){var f=this,h=f.parent,g=f.next,i=f.prev;if(h){if(h.firstChild===f){h.firstChild=g;if(g){g.prev=null}}else{i.next=g}if(h.lastChild===f){h.lastChild=i;if(i){i.next=null}}else{g.prev=i}f.parent=f.next=f.prev=null}return f},append:function(h){var f=this,g;if(h.parent){h.remove()}g=f.lastChild;if(g){g.next=h;h.prev=g;f.lastChild=h}else{f.lastChild=f.firstChild=h}h.parent=f;return h},insert:function(h,f,i){var g;if(h.parent){h.remove()}g=f.parent||this;if(i){if(f===g.firstChild){g.firstChild=h}else{f.prev.next=h}h.prev=f.prev;h.next=f;f.prev=h}else{if(f===g.lastChild){g.lastChild=h}else{f.next.prev=h}h.next=f.next;h.prev=f;f.next=h}h.parent=g;return h},getAll:function(g){var f=this,h,i=[];for(h=f.firstChild;h;h=a(h,f)){if(h.name===g){i.push(h)}}return i},empty:function(){var g=this,f,h,j;if(g.firstChild){f=[];for(j=g.firstChild;j;j=a(j,g)){f.push(j)}h=f.length;while(h--){j=f[h];j.parent=j.firstChild=j.lastChild=j.next=j.prev=null}}g.firstChild=g.lastChild=null;return g},isEmpty:function(k){var f=this,j=f.firstChild,h,g;if(j){do{if(j.type===1){if(j.attributes.map["data-mce-bogus"]){continue}if(k[j.name]){return false}h=j.attributes.length;while(h--){g=j.attributes[h].name;if(g==="name"||g.indexOf("data-")===0){return false}}}if((j.type===3&&!c.test(j.value))){return false}}while(j=a(j,f))}return true},walk:function(f){return a(this,null,f)}});d.extend(b,{create:function(g,f){var i,h;i=new b(g,e[g]||1);if(f){for(h in f){i.attr(h,f[h])}}return i}});d.html.Node=b})(tinymce);(function(b){var a=b.html.Node;b.html.DomParser=function(g,h){var f=this,e={},d=[],i={},c={};g=g||{};g.validate="validate" in g?g.validate:true;g.root_name=g.root_name||"body";f.schema=h=h||new b.html.Schema();function j(m){var o,p,x,v,z,n,q,l,t,u,k,s,y,r;s=b.makeMap("tr,td,th,tbody,thead,tfoot,table");k=h.getNonEmptyElements();for(o=0;o<m.length;o++){p=m[o];if(!p.parent){continue}v=[p];for(x=p.parent;x&&!h.isValidChild(x.name,p.name)&&!s[x.name];x=x.parent){v.push(x)}if(x&&v.length>1){v.reverse();z=n=f.filterNode(v[0].clone());for(t=0;t<v.length-1;t++){if(h.isValidChild(n.name,v[t].name)){q=f.filterNode(v[t].clone());n.append(q)}else{q=n}for(l=v[t].firstChild;l&&l!=v[t+1];){r=l.next;q.append(l);l=r}n=q}if(!z.isEmpty(k)){x.insert(z,v[0],true);x.insert(p,z)}else{x.insert(p,v[0],true)}x=v[0];if(x.isEmpty(k)||x.firstChild===x.lastChild&&x.firstChild.name==="br"){x.empty().remove()}}else{if(p.parent){if(p.name==="li"){y=p.prev;if(y&&(y.name==="ul"||y.name==="ul")){y.append(p);continue}y=p.next;if(y&&(y.name==="ul"||y.name==="ul")){y.insert(p,y.firstChild,true);continue}p.wrap(f.filterNode(new a("ul",1)));continue}if(h.isValidChild(p.parent.name,"div")&&h.isValidChild("div",p.name)){p.wrap(f.filterNode(new a("div",1)))}else{if(p.name==="style"||p.name==="script"){p.empty().remove()}else{p.unwrap()}}}}}}f.filterNode=function(m){var l,k,n;if(k in e){n=i[k];if(n){n.push(m)}else{i[k]=[m]}}l=d.length;while(l--){k=d[l].name;if(k in m.attributes.map){n=c[k];if(n){n.push(m)}else{c[k]=[m]}}}return m};f.addNodeFilter=function(k,l){b.each(b.explode(k),function(m){var n=e[m];if(!n){e[m]=n=[]}n.push(l)})};f.addAttributeFilter=function(k,l){b.each(b.explode(k),function(m){var n;for(n=0;n<d.length;n++){if(d[n].name===m){d[n].callbacks.push(l);return}}d.push({name:m,callbacks:[l]})})};f.parse=function(v,m){var n,H,A,z,C,B,x,r,E,K,y,o,D,J=[],t,k,s,p,u,q;m=m||{};i={};c={};o=b.extend(b.makeMap("script,style,head,html,body,title,meta,param"),h.getBlockElements());u=h.getNonEmptyElements();p=h.children;y=g.validate;q="forced_root_block" in m?m.forced_root_block:g.forced_root_block;s=h.getWhiteSpaceElements();D=/^[ \t\r\n]+/;t=/[ \t\r\n]+$/;k=/[ \t\r\n]+/g;function F(){var L=H.firstChild,l,M;while(L){l=L.next;if(L.type==3||(L.type==1&&L.name!=="p"&&!o[L.name]&&!L.attr("data-mce-type"))){if(!M){M=I(q,1);H.insert(M,L);M.append(L)}else{M.append(L)}}else{M=null}L=l}}function I(l,L){var M=new a(l,L),N;if(l in e){N=i[l];if(N){N.push(M)}else{i[l]=[M]}}return M}function G(M){var N,l,L;for(N=M.prev;N&&N.type===3;){l=N.value.replace(t,"");if(l.length>0){N.value=l;N=N.prev}else{L=N.prev;N.remove();N=L}}}n=new b.html.SaxParser({validate:y,fix_self_closing:!y,cdata:function(l){A.append(I("#cdata",4)).value=l},text:function(M,l){var L;if(!s[A.name]){M=M.replace(k," ");if(A.lastChild&&o[A.lastChild.name]){M=M.replace(D,"")}}if(M.length!==0){L=I("#text",3);L.raw=!!l;A.append(L).value=M}},comment:function(l){A.append(I("#comment",8)).value=l},pi:function(l,L){A.append(I(l,7)).value=L;G(A)},doctype:function(L){var l;l=A.append(I("#doctype",10));l.value=L;G(A)},start:function(l,T,M){var R,O,N,L,P,U,S,Q;N=y?h.getElementRule(l):{};if(N){R=I(N.outputName||l,1);R.attributes=T;R.shortEnded=M;A.append(R);Q=p[A.name];if(Q&&p[R.name]&&!Q[R.name]){J.push(R)}O=d.length;while(O--){P=d[O].name;if(P in T.map){E=c[P];if(E){E.push(R)}else{c[P]=[R]}}}if(o[l]){G(R)}if(!M){A=R}}},end:function(l){var P,M,O,L,N;M=y?h.getElementRule(l):{};if(M){if(o[l]){if(!s[A.name]){for(P=A.firstChild;P&&P.type===3;){O=P.value.replace(D,"");if(O.length>0){P.value=O;P=P.next}else{L=P.next;P.remove();P=L}}for(P=A.lastChild;P&&P.type===3;){O=P.value.replace(t,"");if(O.length>0){P.value=O;P=P.prev}else{L=P.prev;P.remove();P=L}}}P=A.prev;if(P&&P.type===3){O=P.value.replace(D,"");if(O.length>0){P.value=O}else{P.remove()}}}if(M.removeEmpty||M.paddEmpty){if(A.isEmpty(u)){if(M.paddEmpty){A.empty().append(new a("#text","3")).value="\u00a0"}else{if(!A.attributes.map.name){N=A.parent;A.empty().remove();A=N;return}}}}A=A.parent}}},h);H=A=new a(m.context||g.root_name,11);n.parse(v);if(y&&J.length){if(!m.context){j(J)}else{m.invalid=true}}if(q&&H.name=="body"){F()}if(!m.invalid){for(K in i){E=e[K];z=i[K];x=z.length;while(x--){if(!z[x].parent){z.splice(x,1)}}for(C=0,B=E.length;C<B;C++){E[C](z,K,m)}}for(C=0,B=d.length;C<B;C++){E=d[C];if(E.name in c){z=c[E.name];x=z.length;while(x--){if(!z[x].parent){z.splice(x,1)}}for(x=0,r=E.callbacks.length;x<r;x++){E.callbacks[x](z,E.name,m)}}}}return H};if(g.remove_trailing_brs){f.addNodeFilter("br",function(n,m){var r,q=n.length,o,u=h.getBlockElements(),k=h.getNonEmptyElements(),s,p,t;u.body=1;for(r=0;r<q;r++){o=n[r];s=o.parent;if(u[o.parent.name]&&o===s.lastChild){p=o.prev;while(p){t=p.name;if(t!=="span"||p.attr("data-mce-type")!=="bookmark"){if(t!=="br"){break}if(t==="br"){o=null;break}}p=p.prev}if(o){o.remove();if(s.isEmpty(k)){elementRule=h.getElementRule(s.name);if(elementRule){if(elementRule.removeEmpty){s.remove()}else{if(elementRule.paddEmpty){s.empty().append(new b.html.Node("#text",3)).value="\u00a0"}}}}}}}})}}})(tinymce);tinymce.html.Writer=function(e){var c=[],a,b,d,f,g;e=e||{};a=e.indent;b=tinymce.makeMap(e.indent_before||"");d=tinymce.makeMap(e.indent_after||"");f=tinymce.html.Entities.getEncodeFunc(e.entity_encoding||"raw",e.entities);g=e.element_format=="html";return{start:function(m,k,p){var n,j,h,o;if(a&&b[m]&&c.length>0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}c.push("<",m);if(k){for(n=0,j=k.length;n<j;n++){h=k[n];c.push(" ",h.name,'="',f(h.value,true),'"')}}if(!p||g){c[c.length]=">"}else{c[c.length]=" />"}if(p&&a&&d[m]&&c.length>0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}},end:function(h){var i;c.push("</",h,">");if(a&&d[h]&&c.length>0){i=c[c.length-1];if(i.length>0&&i!=="\n"){c.push("\n")}}},text:function(i,h){if(i.length>0){c[c.length]=h?i:f(i)}},cdata:function(h){c.push("<![CDATA[",h,"]]>")},comment:function(h){c.push("<!--",h,"-->")},pi:function(h,i){if(i){c.push("<?",h," ",i,"?>")}else{c.push("<?",h,"?>")}if(a){c.push("\n")}},doctype:function(h){c.push("<!DOCTYPE",h,">",a?"\n":"")},reset:function(){c.length=0},getContent:function(){return c.join("").replace(/\n$/,"")}}};(function(a){a.html.Serializer=function(c,d){var b=this,e=new a.html.Writer(c);c=c||{};c.validate="validate" in c?c.validate:true;b.schema=d=d||new a.html.Schema();b.writer=e;b.serialize=function(h){var g,i;i=c.validate;g={3:function(k,j){e.text(k.value,k.raw)},8:function(j){e.comment(j.value)},7:function(j){e.pi(j.name,j.value)},10:function(j){e.doctype(j.value)},4:function(j){e.cdata(j.value)},11:function(j){if((j=j.firstChild)){do{f(j)}while(j=j.next)}}};e.reset();function f(k){var t=g[k.type],j,o,s,r,p,u,n,m,q;if(!t){j=k.name;o=k.shortEnded;s=k.attributes;if(i&&s&&s.length>1){u=[];u.map={};q=d.getElementRule(k.name);for(n=0,m=q.attributesOrder.length;n<m;n++){r=q.attributesOrder[n];if(r in s.map){p=s.map[r];u.map[r]=p;u.push({name:r,value:p})}}for(n=0,m=s.length;n<m;n++){r=s[n].name;if(!(r in u.map)){p=s.map[r];u.map[r]=p;u.push({name:r,value:p})}}s=u}e.start(k.name,s,o);if(!o){if((k=k.firstChild)){do{f(k)}while(k=k.next)}e.end(j)}}else{t(k)}}if(h.type==1&&!c.inner){f(h)}else{g[11](h)}return e.getContent()}}})(tinymce);(function(h){var f=h.each,e=h.is,d=h.isWebKit,b=h.isIE,c=h.html.Entities,a=/^([a-z0-9],?)+$/i,g=h.html.Schema.blockElementsMap,i=/^[ \t\r\n]*$/;h.create("tinymce.dom.DOMUtils",{doc:null,root:null,files:null,pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},DOMUtils:function(o,m){var l=this,j,k;l.doc=o;l.win=window;l.files={};l.cssFlicker=false;l.counter=0;l.stdMode=!h.isIE||o.documentMode>=8;l.boxModel=!h.isIE||o.compatMode=="CSS1Compat"||l.stdMode;l.hasOuterHTML="outerHTML" in o.createElement("a");l.settings=m=h.extend({keep_values:false,hex_colors:1},m);l.schema=m.schema;l.styles=new h.html.Styles({url_converter:m.url_converter,url_converter_scope:m.url_converter_scope},m.schema);if(h.isIE6){try{o.execCommand("BackgroundImageCache",false,true)}catch(n){l.cssFlicker=true}}if(b&&m.schema){("abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video").replace(/\w+/g,function(p){o.createElement(p)});for(k in m.schema.getCustomElements()){o.createElement(k)}}h.addUnload(l.destroy,l)},getRoot:function(){var j=this,k=j.settings;return(k&&j.get(k.root_element))||j.doc.body},getViewPort:function(k){var l,j;k=!k?this.win:k;l=k.document;j=this.boxModel?l.documentElement:l.body;return{x:k.pageXOffset||j.scrollLeft,y:k.pageYOffset||j.scrollTop,w:k.innerWidth||j.clientWidth,h:k.innerHeight||j.clientHeight}},getRect:function(m){var l,j=this,k;m=j.get(m);l=j.getPos(m);k=j.getSize(m);return{x:l.x,y:l.y,w:k.w,h:k.h}},getSize:function(m){var k=this,j,l;m=k.get(m);j=k.getStyle(m,"width");l=k.getStyle(m,"height");if(j.indexOf("px")===-1){j=0}if(l.indexOf("px")===-1){l=0}return{w:parseInt(j)||m.offsetWidth||m.clientWidth,h:parseInt(l)||m.offsetHeight||m.clientHeight}},getParent:function(l,k,j){return this.getParents(l,k,j,false)},getParents:function(u,p,l,s){var k=this,j,m=k.settings,q=[];u=k.get(u);s=s===undefined;if(m.strict_root){l=l||k.getRoot()}if(e(p,"string")){j=p;if(p==="*"){p=function(o){return o.nodeType==1}}else{p=function(o){return k.is(o,j)}}}while(u){if(u==l||!u.nodeType||u.nodeType===9){break}if(!p||p(u)){if(s){q.push(u)}else{return u}}u=u.parentNode}return s?q:null},get:function(j){var k;if(j&&this.doc&&typeof(j)=="string"){k=j;j=this.doc.getElementById(j);if(j&&j.id!==k){return this.doc.getElementsByName(k)[1]}}return j},getNext:function(k,j){return this._findSib(k,j,"nextSibling")},getPrev:function(k,j){return this._findSib(k,j,"previousSibling")},select:function(l,k){var j=this;return h.dom.Sizzle(l,j.get(k)||j.get(j.settings.root_element)||j.doc,[])},is:function(l,j){var k;if(l.length===undefined){if(j==="*"){return l.nodeType==1}if(a.test(j)){j=j.toLowerCase().split(/,/);l=l.nodeName.toLowerCase();for(k=j.length-1;k>=0;k--){if(j[k]==l){return true}}return false}}return h.dom.Sizzle.matches(j,l.nodeType?[l]:l).length>0},add:function(m,q,j,l,o){var k=this;return this.run(m,function(s){var r,n;r=e(q,"string")?k.doc.createElement(q):q;k.setAttribs(r,j);if(l){if(l.nodeType){r.appendChild(l)}else{k.setHTML(r,l)}}return !o?s.appendChild(r):r})},create:function(l,j,k){return this.add(this.doc.createElement(l),l,j,k,1)},createHTML:function(r,j,p){var q="",m=this,l;q+="<"+r;for(l in j){if(j.hasOwnProperty(l)){q+=" "+l+'="'+m.encode(j[l])+'"'}}if(typeof(p)!="undefined"){return q+">"+p+"</"+r+">"}return q+" />"},remove:function(j,k){return this.run(j,function(m){var n,l=m.parentNode;if(!l){return null}if(k){while(n=m.firstChild){if(!h.isIE||n.nodeType!==3||n.nodeValue){l.insertBefore(n,m)}else{m.removeChild(n)}}}return l.removeChild(m)})},setStyle:function(m,j,k){var l=this;return l.run(m,function(p){var o,n;o=p.style;j=j.replace(/-(\D)/g,function(r,q){return q.toUpperCase()});if(l.pixelStyles.test(j)&&(h.is(k,"number")||/^[\-0-9\.]+$/.test(k))){k+="px"}switch(j){case"opacity":if(b){o.filter=k===""?"":"alpha(opacity="+(k*100)+")";if(!m.currentStyle||!m.currentStyle.hasLayout){o.display="inline-block"}}o[j]=o["-moz-opacity"]=o["-khtml-opacity"]=k||"";break;case"float":b?o.styleFloat=k:o.cssFloat=k;break;default:o[j]=k||""}if(l.settings.update_styles){l.setAttrib(p,"data-mce-style")}})},getStyle:function(m,j,l){m=this.get(m);if(!m){return}if(this.doc.defaultView&&l){j=j.replace(/[A-Z]/g,function(n){return"-"+n});try{return this.doc.defaultView.getComputedStyle(m,null).getPropertyValue(j)}catch(k){return null}}j=j.replace(/-(\D)/g,function(o,n){return n.toUpperCase()});if(j=="float"){j=b?"styleFloat":"cssFloat"}if(m.currentStyle&&l){return m.currentStyle[j]}return m.style?m.style[j]:undefined},setStyles:function(m,n){var k=this,l=k.settings,j;j=l.update_styles;l.update_styles=0;f(n,function(o,p){k.setStyle(m,p,o)});l.update_styles=j;if(l.update_styles){k.setAttrib(m,l.cssText)}},removeAllAttribs:function(j){return this.run(j,function(m){var l,k=m.attributes;for(l=k.length-1;l>=0;l--){m.removeAttributeNode(k.item(l))}})},setAttrib:function(l,m,j){var k=this;if(!l||!m){return}if(k.settings.strict){m=m.toLowerCase()}return this.run(l,function(o){var n=k.settings;switch(m){case"style":if(!e(j,"string")){f(j,function(p,q){k.setStyle(o,q,p)});return}if(n.keep_values){if(j&&!k._isRes(j)){o.setAttribute("data-mce-style",j,2)}else{o.removeAttribute("data-mce-style",2)}}o.style.cssText=j;break;case"class":o.className=j||"";break;case"src":case"href":if(n.keep_values){if(n.url_converter){j=n.url_converter.call(n.url_converter_scope||k,j,m,o)}k.setAttrib(o,"data-mce-"+m,j,2)}break;case"shape":o.setAttribute("data-mce-style",j);break}if(e(j)&&j!==null&&j.length!==0){o.setAttribute(m,""+j,2)}else{o.removeAttribute(m,2)}})},setAttribs:function(k,l){var j=this;return this.run(k,function(m){f(l,function(o,p){j.setAttrib(m,p,o)})})},getAttrib:function(o,p,l){var j,k=this,m;o=k.get(o);if(!o||o.nodeType!==1){return l===m?false:l}if(!e(l)){l=""}if(/^(src|href|style|coords|shape)$/.test(p)){j=o.getAttribute("data-mce-"+p);if(j){return j}}if(b&&k.props[p]){j=o[k.props[p]];j=j&&j.nodeValue?j.nodeValue:j}if(!j){j=o.getAttribute(p,2)}if(/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(p)){if(o[k.props[p]]===true&&j===""){return p}return j?p:""}if(o.nodeName==="FORM"&&o.getAttributeNode(p)){return o.getAttributeNode(p).nodeValue}if(p==="style"){j=j||o.style.cssText;if(j){j=k.serializeStyle(k.parseStyle(j),o.nodeName);if(k.settings.keep_values&&!k._isRes(j)){o.setAttribute("data-mce-style",j)}}}if(d&&p==="class"&&j){j=j.replace(/(apple|webkit)\-[a-z\-]+/gi,"")}if(b){switch(p){case"rowspan":case"colspan":if(j===1){j=""}break;case"size":if(j==="+0"||j===20||j===0){j=""}break;case"width":case"height":case"vspace":case"checked":case"disabled":case"readonly":if(j===0){j=""}break;case"hspace":if(j===-1){j=""}break;case"maxlength":case"tabindex":if(j===32768||j===2147483647||j==="32768"){j=""}break;case"multiple":case"compact":case"noshade":case"nowrap":if(j===65535){return p}return l;case"shape":j=j.toLowerCase();break;default:if(p.indexOf("on")===0&&j){j=h._replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1",""+j)}}}return(j!==m&&j!==null&&j!=="")?""+j:l},getPos:function(s,m){var k=this,j=0,q=0,o,p=k.doc,l;s=k.get(s);m=m||p.body;if(s){if(s.getBoundingClientRect){s=s.getBoundingClientRect();o=k.boxModel?p.documentElement:p.body;j=s.left+(p.documentElement.scrollLeft||p.body.scrollLeft)-o.clientTop;q=s.top+(p.documentElement.scrollTop||p.body.scrollTop)-o.clientLeft;return{x:j,y:q}}l=s;while(l&&l!=m&&l.nodeType){j+=l.offsetLeft||0;q+=l.offsetTop||0;l=l.offsetParent}l=s.parentNode;while(l&&l!=m&&l.nodeType){j-=l.scrollLeft||0;q-=l.scrollTop||0;l=l.parentNode}}return{x:j,y:q}},parseStyle:function(j){return this.styles.parse(j)},serializeStyle:function(k,j){return this.styles.serialize(k,j)},loadCSS:function(j){var l=this,m=l.doc,k;if(!j){j=""}k=l.select("head")[0];f(j.split(","),function(n){var o;if(l.files[n]){return}l.files[n]=true;o=l.create("link",{rel:"stylesheet",href:h._addVer(n)});if(b&&m.documentMode&&m.recalc){o.onload=function(){if(m.recalc){m.recalc()}o.onload=null}}k.appendChild(o)})},addClass:function(j,k){return this.run(j,function(l){var m;if(!k){return 0}if(this.hasClass(l,k)){return l.className}m=this.removeClass(l,k);return l.className=(m!=""?(m+" "):"")+k})},removeClass:function(l,m){var j=this,k;return j.run(l,function(o){var n;if(j.hasClass(o,m)){if(!k){k=new RegExp("(^|\\s+)"+m+"(\\s+|$)","g")}n=o.className.replace(k," ");n=h.trim(n!=" "?n:"");o.className=n;if(!n){o.removeAttribute("class");o.removeAttribute("className")}return n}return o.className})},hasClass:function(k,j){k=this.get(k);if(!k||!j){return false}return(" "+k.className+" ").indexOf(" "+j+" ")!==-1},show:function(j){return this.setStyle(j,"display","block")},hide:function(j){return this.setStyle(j,"display","none")},isHidden:function(j){j=this.get(j);return !j||j.style.display=="none"||this.getStyle(j,"display")=="none"},uniqueId:function(j){return(!j?"mce_":j)+(this.counter++)},setHTML:function(l,k){var j=this;return j.run(l,function(n){if(b){while(n.firstChild){n.removeChild(n.firstChild)}try{n.innerHTML="<br />"+k;n.removeChild(n.firstChild)}catch(m){n=j.create("div");n.innerHTML="<br />"+k;f(n.childNodes,function(p,o){if(o){n.appendChild(p)}})}}else{n.innerHTML=k}return k})},getOuterHTML:function(l){var k,j=this;l=j.get(l);if(!l){return null}if(l.nodeType===1&&j.hasOuterHTML){return l.outerHTML}k=(l.ownerDocument||j.doc).createElement("body");k.appendChild(l.cloneNode(true));return k.innerHTML},setOuterHTML:function(m,k,n){var j=this;function l(p,o,r){var s,q;q=r.createElement("body");q.innerHTML=o;s=q.lastChild;while(s){j.insertAfter(s.cloneNode(true),p);s=s.previousSibling}j.remove(p)}return this.run(m,function(p){p=j.get(p);if(p.nodeType==1){n=n||p.ownerDocument||j.doc;if(b){try{if(b&&p.nodeType==1){p.outerHTML=k}else{l(p,k,n)}}catch(o){l(p,k,n)}}else{l(p,k,n)}}})},decode:c.decode,encode:c.encodeAllRaw,insertAfter:function(j,k){k=this.get(k);return this.run(j,function(m){var l,n;l=k.parentNode;n=k.nextSibling;if(n){l.insertBefore(m,n)}else{l.appendChild(m)}return m})},isBlock:function(k){var j=k.nodeType;if(j){return !!(j===1&&g[k.nodeName])}return !!g[k]},replace:function(p,m,j){var l=this;if(e(m,"array")){p=p.cloneNode(true)}return l.run(m,function(k){if(j){f(h.grep(k.childNodes),function(n){p.appendChild(n)})}return k.parentNode.replaceChild(p,k)})},rename:function(m,j){var l=this,k;if(m.nodeName!=j.toUpperCase()){k=l.create(j);f(l.getAttribs(m),function(n){l.setAttrib(k,n.nodeName,l.getAttrib(m,n.nodeName))});l.replace(k,m,1)}return k||m},findCommonAncestor:function(l,j){var m=l,k;while(m){k=j;while(k&&m!=k){k=k.parentNode}if(m==k){break}m=m.parentNode}if(!m&&l.ownerDocument){return l.ownerDocument.documentElement}return m},toHex:function(j){var l=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(j);function k(m){m=parseInt(m).toString(16);return m.length>1?m:"0"+m}if(l){j="#"+k(l[1])+k(l[2])+k(l[3]);return j}return j},getClasses:function(){var n=this,j=[],m,o={},p=n.settings.class_filter,l;if(n.classes){return n.classes}function q(r){f(r.imports,function(s){q(s)});f(r.cssRules||r.rules,function(s){switch(s.type||1){case 1:if(s.selectorText){f(s.selectorText.split(","),function(t){t=t.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(t)||!/\.[\w\-]+$/.test(t)){return}l=t;t=h._replace(/.*\.([a-z0-9_\-]+).*/i,"$1",t);if(p&&!(t=p(t,l))){return}if(!o[t]){j.push({"class":t});o[t]=1}})}break;case 3:q(s.styleSheet);break}})}try{f(n.doc.styleSheets,q)}catch(k){}if(j.length>0){n.classes=j}return j},run:function(m,l,k){var j=this,n;if(j.doc&&typeof(m)==="string"){m=j.get(m)}if(!m){return false}k=k||this;if(!m.nodeType&&(m.length||m.length===0)){n=[];f(m,function(p,o){if(p){if(typeof(p)=="string"){p=j.doc.getElementById(p)}n.push(l.call(k,p,o))}});return n}return l.call(k,m)},getAttribs:function(k){var j;k=this.get(k);if(!k){return[]}if(b){j=[];if(k.nodeName=="OBJECT"){return k.attributes}if(k.nodeName==="OPTION"&&this.getAttrib(k,"selected")){j.push({specified:1,nodeName:"selected"})}k.cloneNode(false).outerHTML.replace(/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi,"").replace(/[\w:\-]+/gi,function(l){j.push({specified:1,nodeName:l})});return j}return k.attributes},isEmpty:function(m,k){var r=this,o,n,q,j,l,p;m=m.firstChild;if(m){j=new h.dom.TreeWalker(m);k=k||r.schema?r.schema.getNonEmptyElements():null;do{q=m.nodeType;if(q===1){if(m.getAttribute("data-mce-bogus")){continue}l=m.nodeName.toLowerCase();if(k&&k[l]){p=m.parentNode;if(l==="br"&&r.isBlock(p)&&p.firstChild===m&&p.lastChild===m){continue}return false}n=r.getAttribs(m);o=m.attributes.length;while(o--){l=m.attributes[o].nodeName;if(l==="name"||l==="data-mce-bookmark"){return false}}}if((q===3&&!i.test(m.nodeValue))){return false}}while(m=j.next())}return true},destroy:function(k){var j=this;if(j.events){j.events.destroy()}j.win=j.doc=j.root=j.events=null;if(!k){h.removeUnload(j.destroy)}},createRng:function(){var j=this.doc;return j.createRange?j.createRange():new h.dom.Range(this)},nodeIndex:function(n,o){var j=0,l,m,k;if(n){for(l=n.nodeType,n=n.previousSibling,m=n;n;n=n.previousSibling){k=n.nodeType;if(o&&k==3){if(k==l||!n.nodeValue.length){continue}}j++;l=k}}return j},split:function(n,m,q){var s=this,j=s.createRng(),o,l,p;function k(v){var t,r=v.childNodes,u=v.nodeType;if(u==1&&v.getAttribute("data-mce-type")=="bookmark"){return}for(t=r.length-1;t>=0;t--){k(r[t])}if(u!=9){if(u==3&&v.nodeValue.length>0){if(!s.isBlock(v.parentNode)||h.trim(v.nodeValue).length>0){return}}else{if(u==1){r=v.childNodes;if(r.length==1&&r[0]&&r[0].nodeType==1&&r[0].getAttribute("data-mce-type")=="bookmark"){v.parentNode.insertBefore(r[0],v)}if(r.length||/^(br|hr|input|img)$/i.test(v.nodeName)){return}}}s.remove(v)}return v}if(n&&m){j.setStart(n.parentNode,s.nodeIndex(n));j.setEnd(m.parentNode,s.nodeIndex(m));o=j.extractContents();j=s.createRng();j.setStart(m.parentNode,s.nodeIndex(m)+1);j.setEnd(n.parentNode,s.nodeIndex(n)+1);l=j.extractContents();p=n.parentNode;p.insertBefore(k(o),n);if(q){p.replaceChild(q,m)}else{p.insertBefore(m,n)}p.insertBefore(k(l),n);s.remove(n);return q||m}},bind:function(n,j,m,l){var k=this;if(!k.events){k.events=new h.dom.EventUtils()}return k.events.add(n,j,m,l||this)},unbind:function(m,j,l){var k=this;if(!k.events){k.events=new h.dom.EventUtils()}return k.events.remove(m,j,l)},_findSib:function(m,j,k){var l=this,n=j;if(m){if(e(n,"string")){n=function(o){return l.is(o,j)}}for(m=m[k];m;m=m[k]){if(n(m)){return m}}}return null},_isRes:function(j){return/^(top|left|bottom|right|width|height)/i.test(j)||/;\s*(top|left|bottom|right|width|height)/i.test(j)}});h.DOM=new h.dom.DOMUtils(document,{process_html:0})})(tinymce);(function(a){function b(c){var N=this,e=c.doc,S=0,E=1,j=2,D=true,R=false,U="startOffset",h="startContainer",P="endContainer",z="endOffset",k=tinymce.extend,n=c.nodeIndex;k(N,{startContainer:e,startOffset:0,endContainer:e,endOffset:0,collapsed:D,commonAncestorContainer:e,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:q,setEnd:s,setStartBefore:g,setStartAfter:I,setEndBefore:J,setEndAfter:u,collapse:A,selectNode:x,selectNodeContents:F,compareBoundaryPoints:v,deleteContents:p,extractContents:H,cloneContents:d,insertNode:C,surroundContents:M,cloneRange:K});function q(V,t){B(D,V,t)}function s(V,t){B(R,V,t)}function g(t){q(t.parentNode,n(t))}function I(t){q(t.parentNode,n(t)+1)}function J(t){s(t.parentNode,n(t))}function u(t){s(t.parentNode,n(t)+1)}function A(t){if(t){N[P]=N[h];N[z]=N[U]}else{N[h]=N[P];N[U]=N[z]}N.collapsed=D}function x(t){g(t);u(t)}function F(t){q(t,0);s(t,t.nodeType===1?t.childNodes.length:t.nodeValue.length)}function v(Y,t){var ab=N[h],W=N[U],aa=N[P],V=N[z],Z=t.startContainer,ad=t.startOffset,X=t.endContainer,ac=t.endOffset;if(Y===0){return G(ab,W,Z,ad)}if(Y===1){return G(aa,V,Z,ad)}if(Y===2){return G(aa,V,X,ac)}if(Y===3){return G(ab,W,X,ac)}}function p(){m(j)}function H(){return m(S)}function d(){return m(E)}function C(Y){var V=this[h],t=this[U],X,W;if((V.nodeType===3||V.nodeType===4)&&V.nodeValue){if(!t){V.parentNode.insertBefore(Y,V)}else{if(t>=V.nodeValue.length){c.insertAfter(Y,V)}else{X=V.splitText(t);V.parentNode.insertBefore(Y,X)}}}else{if(V.childNodes.length>0){W=V.childNodes[t]}if(W){V.insertBefore(Y,W)}else{V.appendChild(Y)}}}function M(V){var t=N.extractContents();N.insertNode(V);V.appendChild(t);N.selectNode(V)}function K(){return k(new b(c),{startContainer:N[h],startOffset:N[U],endContainer:N[P],endOffset:N[z],collapsed:N.collapsed,commonAncestorContainer:N.commonAncestorContainer})}function O(t,V){var W;if(t.nodeType==3){return t}if(V<0){return t}W=t.firstChild;while(W&&V>0){--V;W=W.nextSibling}if(W){return W}return t}function l(){return(N[h]==N[P]&&N[U]==N[z])}function G(X,Z,V,Y){var aa,W,t,ab,ad,ac;if(X==V){if(Z==Y){return 0}if(Z<Y){return -1}return 1}aa=V;while(aa&&aa.parentNode!=X){aa=aa.parentNode}if(aa){W=0;t=X.firstChild;while(t!=aa&&W<Z){W++;t=t.nextSibling}if(Z<=W){return -1}return 1}aa=X;while(aa&&aa.parentNode!=V){aa=aa.parentNode}if(aa){W=0;t=V.firstChild;while(t!=aa&&W<Y){W++;t=t.nextSibling}if(W<Y){return -1}return 1}ab=c.findCommonAncestor(X,V);ad=X;while(ad&&ad.parentNode!=ab){ad=ad.parentNode}if(!ad){ad=ab}ac=V;while(ac&&ac.parentNode!=ab){ac=ac.parentNode}if(!ac){ac=ab}if(ad==ac){return 0}t=ab.firstChild;while(t){if(t==ad){return -1}if(t==ac){return 1}t=t.nextSibling}}function B(V,Y,X){var t,W;if(V){N[h]=Y;N[U]=X}else{N[P]=Y;N[z]=X}t=N[P];while(t.parentNode){t=t.parentNode}W=N[h];while(W.parentNode){W=W.parentNode}if(W==t){if(G(N[h],N[U],N[P],N[z])>0){N.collapse(V)}}else{N.collapse(V)}N.collapsed=l();N.commonAncestorContainer=c.findCommonAncestor(N[h],N[P])}function m(ab){var aa,X=0,ad=0,V,Z,W,Y,t,ac;if(N[h]==N[P]){return f(ab)}for(aa=N[P],V=aa.parentNode;V;aa=V,V=V.parentNode){if(V==N[h]){return r(aa,ab)}++X}for(aa=N[h],V=aa.parentNode;V;aa=V,V=V.parentNode){if(V==N[P]){return T(aa,ab)}++ad}Z=ad-X;W=N[h];while(Z>0){W=W.parentNode;Z--}Y=N[P];while(Z<0){Y=Y.parentNode;Z++}for(t=W.parentNode,ac=Y.parentNode;t!=ac;t=t.parentNode,ac=ac.parentNode){W=t;Y=ac}return o(W,Y,ab)}function f(Z){var ab,Y,X,aa,t,W,V;if(Z!=j){ab=e.createDocumentFragment()}if(N[U]==N[z]){return ab}if(N[h].nodeType==3){Y=N[h].nodeValue;X=Y.substring(N[U],N[z]);if(Z!=E){N[h].deleteData(N[U],N[z]-N[U]);N.collapse(D)}if(Z==j){return}ab.appendChild(e.createTextNode(X));return ab}aa=O(N[h],N[U]);t=N[z]-N[U];while(t>0){W=aa.nextSibling;V=y(aa,Z);if(ab){ab.appendChild(V)}--t;aa=W}if(Z!=E){N.collapse(D)}return ab}function r(ab,Y){var aa,Z,V,t,X,W;if(Y!=j){aa=e.createDocumentFragment()}Z=i(ab,Y);if(aa){aa.appendChild(Z)}V=n(ab);t=V-N[U];if(t<=0){if(Y!=E){N.setEndBefore(ab);N.collapse(R)}return aa}Z=ab.previousSibling;while(t>0){X=Z.previousSibling;W=y(Z,Y);if(aa){aa.insertBefore(W,aa.firstChild)}--t;Z=X}if(Y!=E){N.setEndBefore(ab);N.collapse(R)}return aa}function T(Z,Y){var ab,V,aa,t,X,W;if(Y!=j){ab=e.createDocumentFragment()}aa=Q(Z,Y);if(ab){ab.appendChild(aa)}V=n(Z);++V;t=N[z]-V;aa=Z.nextSibling;while(t>0){X=aa.nextSibling;W=y(aa,Y);if(ab){ab.appendChild(W)}--t;aa=X}if(Y!=E){N.setStartAfter(Z);N.collapse(D)}return ab}function o(Z,t,ac){var W,ae,Y,aa,ab,V,ad,X;if(ac!=j){ae=e.createDocumentFragment()}W=Q(Z,ac);if(ae){ae.appendChild(W)}Y=Z.parentNode;aa=n(Z);ab=n(t);++aa;V=ab-aa;ad=Z.nextSibling;while(V>0){X=ad.nextSibling;W=y(ad,ac);if(ae){ae.appendChild(W)}ad=X;--V}W=i(t,ac);if(ae){ae.appendChild(W)}if(ac!=E){N.setStartAfter(Z);N.collapse(D)}return ae}function i(aa,ab){var W=O(N[P],N[z]-1),ac,Z,Y,t,V,X=W!=N[P];if(W==aa){return L(W,X,R,ab)}ac=W.parentNode;Z=L(ac,R,R,ab);while(ac){while(W){Y=W.previousSibling;t=L(W,X,R,ab);if(ab!=j){Z.insertBefore(t,Z.firstChild)}X=D;W=Y}if(ac==aa){return Z}W=ac.previousSibling;ac=ac.parentNode;V=L(ac,R,R,ab);if(ab!=j){V.appendChild(Z)}Z=V}}function Q(aa,ab){var X=O(N[h],N[U]),Y=X!=N[h],ac,Z,W,t,V;if(X==aa){return L(X,Y,D,ab)}ac=X.parentNode;Z=L(ac,R,D,ab);while(ac){while(X){W=X.nextSibling;t=L(X,Y,D,ab);if(ab!=j){Z.appendChild(t)}Y=D;X=W}if(ac==aa){return Z}X=ac.nextSibling;ac=ac.parentNode;V=L(ac,R,D,ab);if(ab!=j){V.appendChild(Z)}Z=V}}function L(t,Y,ab,ac){var X,W,Z,V,aa;if(Y){return y(t,ac)}if(t.nodeType==3){X=t.nodeValue;if(ab){V=N[U];W=X.substring(V);Z=X.substring(0,V)}else{V=N[z];W=X.substring(0,V);Z=X.substring(V)}if(ac!=E){t.nodeValue=Z}if(ac==j){return}aa=t.cloneNode(R);aa.nodeValue=W;return aa}if(ac==j){return}return t.cloneNode(R)}function y(V,t){if(t!=j){return t==E?V.cloneNode(D):V}V.parentNode.removeChild(V)}}a.Range=b})(tinymce.dom);(function(){function a(d){var b=this,h=d.dom,c=true,f=false;function e(i,j){var k,t=0,q,n,m,l,o,r,p=-1,s;k=i.duplicate();k.collapse(j);s=k.parentElement();if(s.ownerDocument!==d.dom.doc){return}while(s.contentEditable==="false"){s=s.parentNode}if(!s.hasChildNodes()){return{node:s,inside:1}}m=s.children;q=m.length-1;while(t<=q){r=Math.floor((t+q)/2);l=m[r];k.moveToElementText(l);p=k.compareEndPoints(j?"StartToStart":"EndToEnd",i);if(p>0){q=r-1}else{if(p<0){t=r+1}else{return{node:l}}}}if(p<0){if(!l){k.moveToElementText(s);k.collapse(true);l=s;n=true}else{k.collapse(false)}k.setEndPoint(j?"EndToStart":"EndToEnd",i);if(k.compareEndPoints(j?"StartToStart":"StartToEnd",i)>0){k=i.duplicate();k.collapse(j);o=-1;while(s==k.parentElement()){if(k.move("character",-1)==0){break}o++}}o=o||k.text.replace("\r\n"," ").length}else{k.collapse(true);k.setEndPoint(j?"StartToStart":"StartToEnd",i);o=k.text.replace("\r\n"," ").length}return{node:l,position:p,offset:o,inside:n}}function g(){var i=d.getRng(),r=h.createRng(),l,k,p,q,m,j;l=i.item?i.item(0):i.parentElement();if(l.ownerDocument!=h.doc){return r}k=d.isCollapsed();if(i.item){r.setStart(l.parentNode,h.nodeIndex(l));r.setEnd(r.startContainer,r.startOffset+1);return r}function o(A){var u=e(i,A),s,y,z=0,x,v,t;s=u.node;y=u.offset;if(u.inside&&!s.hasChildNodes()){r[A?"setStart":"setEnd"](s,0);return}if(y===v){r[A?"setStartBefore":"setEndAfter"](s);return}if(u.position<0){x=u.inside?s.firstChild:s.nextSibling;if(!x){r[A?"setStartAfter":"setEndAfter"](s);return}if(!y){if(x.nodeType==3){r[A?"setStart":"setEnd"](x,0)}else{r[A?"setStartBefore":"setEndBefore"](x)}return}while(x){t=x.nodeValue;z+=t.length;if(z>=y){s=x;z-=y;z=t.length-z;break}x=x.nextSibling}}else{x=s.previousSibling;if(!x){return r[A?"setStartBefore":"setEndBefore"](s)}if(!y){if(s.nodeType==3){r[A?"setStart":"setEnd"](x,s.nodeValue.length)}else{r[A?"setStartAfter":"setEndAfter"](x)}return}while(x){z+=x.nodeValue.length;if(z>=y){s=x;z-=y;break}x=x.previousSibling}}r[A?"setStart":"setEnd"](s,z)}try{o(true);if(!k){o()}}catch(n){if(n.number==-2147024809){m=b.getBookmark(2);p=i.duplicate();p.collapse(true);l=p.parentElement();if(!k){p=i.duplicate();p.collapse(false);q=p.parentElement();q.innerHTML=q.innerHTML}l.innerHTML=l.innerHTML;b.moveToBookmark(m);i=d.getRng();o(true);if(!k){o()}}else{throw n}}return r}this.getBookmark=function(m){var j=d.getRng(),o,i,l={};function n(u){var u,t,p,s,r,q=[];t=u.parentNode;p=h.getRoot().parentNode;while(t!=p){s=t.children;r=s.length;while(r--){if(u===s[r]){q.push(r);break}}u=t;t=t.parentNode}return q}function k(q){var p;p=e(j,q);if(p){return{position:p.position,offset:p.offset,indexes:n(p.node),inside:p.inside}}}if(m===2){if(!j.item){l.start=k(true);if(!d.isCollapsed()){l.end=k()}}else{l.start={ctrl:true,indexes:n(j.item(0))}}}return l};this.moveToBookmark=function(k){var j,i=h.doc.body;function m(o){var r,q,n,p;r=h.getRoot();for(q=o.length-1;q>=0;q--){p=r.children;n=o[q];if(n<=p.length-1){r=p[n]}}return r}function l(r){var n=k[r?"start":"end"],q,p,o;if(n){q=n.position>0;p=i.createTextRange();p.moveToElementText(m(n.indexes));offset=n.offset;if(offset!==o){p.collapse(n.inside||q);p.moveStart("character",q?-offset:offset)}else{p.collapse(r)}j.setEndPoint(r?"StartToStart":"EndToStart",p);if(r){j.collapse(true)}}}if(k.start){if(k.start.ctrl){j=i.createControlRange();j.addElement(m(k.start.indexes));j.select()}else{j=i.createTextRange();l(true);l();j.select()}}};this.addRange=function(i){var n,l,k,p,s,q,r=d.dom.doc,m=r.body;function j(z){var u,y,t,x,v;t=h.create("a");u=z?k:s;y=z?p:q;x=n.duplicate();if(u==r||u==r.documentElement){u=m;y=0}if(u.nodeType==3){u.parentNode.insertBefore(t,u);x.moveToElementText(t);x.moveStart("character",y);h.remove(t);n.setEndPoint(z?"StartToStart":"EndToEnd",x)}else{v=u.childNodes;if(v.length){if(y>=v.length){h.insertAfter(t,v[v.length-1])}else{u.insertBefore(t,v[y])}x.moveToElementText(t)}else{t=r.createTextNode("\uFEFF");u.appendChild(t);x.moveToElementText(t.parentNode);x.collapse(c)}n.setEndPoint(z?"StartToStart":"EndToEnd",x);h.remove(t)}}k=i.startContainer;p=i.startOffset;s=i.endContainer;q=i.endOffset;n=m.createTextRange();if(k==s&&k.nodeType==1&&p==q-1){if(p==q-1){try{l=m.createControlRange();l.addElement(k.childNodes[p]);l.select();return}catch(o){}}}j(true);j();n.select()};this.getRangeAt=g}tinymce.dom.TridentSelection=a})();(function(){var p=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,j=0,d=Object.prototype.toString,o=false,i=true;[0,0].sort(function(){i=false;return 0});var b=function(v,e,z,A){z=z||[];e=e||document;var C=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!v||typeof v!=="string"){return z}var x=[],s,E,H,r,u=true,t=b.isXML(e),B=v,D,G,F,y;do{p.exec("");s=p.exec(B);if(s){B=s[3];x.push(s[1]);if(s[2]){r=s[3];break}}}while(s);if(x.length>1&&k.exec(v)){if(x.length===2&&f.relative[x[0]]){E=h(x[0]+x[1],e)}else{E=f.relative[x[0]]?[e]:b(x.shift(),e);while(x.length){v=x.shift();if(f.relative[v]){v+=x.shift()}E=h(v,E)}}}else{if(!A&&x.length>1&&e.nodeType===9&&!t&&f.match.ID.test(x[0])&&!f.match.ID.test(x[x.length-1])){D=b.find(x.shift(),e,t);e=D.expr?b.filter(D.expr,D.set)[0]:D.set[0]}if(e){D=A?{expr:x.pop(),set:a(A)}:b.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&e.parentNode?e.parentNode:e,t);E=D.expr?b.filter(D.expr,D.set):D.set;if(x.length>0){H=a(E)}else{u=false}while(x.length){G=x.pop();F=G;if(!f.relative[G]){G=""}else{F=x.pop()}if(F==null){F=e}f.relative[G](H,F,t)}}else{H=x=[]}}if(!H){H=E}if(!H){b.error(G||v)}if(d.call(H)==="[object Array]"){if(!u){z.push.apply(z,H)}else{if(e&&e.nodeType===1){for(y=0;H[y]!=null;y++){if(H[y]&&(H[y]===true||H[y].nodeType===1&&b.contains(e,H[y]))){z.push(E[y])}}}else{for(y=0;H[y]!=null;y++){if(H[y]&&H[y].nodeType===1){z.push(E[y])}}}}}else{a(H,z)}if(r){b(r,C,z,A);b.uniqueSort(z)}return z};b.uniqueSort=function(r){if(c){o=i;r.sort(c);if(o){for(var e=1;e<r.length;e++){if(r[e]===r[e-1]){r.splice(e--,1)}}}}return r};b.matches=function(e,r){return b(e,null,null,r)};b.find=function(y,e,z){var x;if(!y){return[]}for(var t=0,s=f.order.length;t<s;t++){var v=f.order[t],u;if((u=f.leftMatch[v].exec(y))){var r=u[1];u.splice(1,1);if(r.substr(r.length-1)!=="\\"){u[1]=(u[1]||"").replace(/\\/g,"");x=f.find[v](u,e,z);if(x!=null){y=y.replace(f.match[v],"");break}}}}if(!x){x=e.getElementsByTagName("*")}return{set:x,expr:y}};b.filter=function(C,B,F,u){var s=C,H=[],z=B,x,e,y=B&&B[0]&&b.isXML(B[0]);while(C&&B.length){for(var A in f.filter){if((x=f.leftMatch[A].exec(C))!=null&&x[2]){var r=f.filter[A],G,E,t=x[1];e=false;x.splice(1,1);if(t.substr(t.length-1)==="\\"){continue}if(z===H){H=[]}if(f.preFilter[A]){x=f.preFilter[A](x,z,F,H,u,y);if(!x){e=G=true}else{if(x===true){continue}}}if(x){for(var v=0;(E=z[v])!=null;v++){if(E){G=r(E,x,v,z);var D=u^!!G;if(F&&G!=null){if(D){e=true}else{z[v]=false}}else{if(D){H.push(E);e=true}}}}}if(G!==undefined){if(!F){z=H}C=C.replace(f.match[A],"");if(!e){return[]}break}}}if(C===s){if(e==null){b.error(C)}else{break}}s=C}return z};b.error=function(e){throw"Syntax error, unrecognized expression: "+e};var f=b.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")}},relative:{"+":function(x,r){var t=typeof r==="string",v=t&&!/\W/.test(r),y=t&&!v;if(v){r=r.toLowerCase()}for(var s=0,e=x.length,u;s<e;s++){if((u=x[s])){while((u=u.previousSibling)&&u.nodeType!==1){}x[s]=y||u&&u.nodeName.toLowerCase()===r?u||false:u===r}}if(y){b.filter(r,x,true)}},">":function(x,r){var u=typeof r==="string",v,s=0,e=x.length;if(u&&!/\W/.test(r)){r=r.toLowerCase();for(;s<e;s++){v=x[s];if(v){var t=v.parentNode;x[s]=t.nodeName.toLowerCase()===r?t:false}}}else{for(;s<e;s++){v=x[s];if(v){x[s]=u?v.parentNode:v.parentNode===r}}if(u){b.filter(r,x,true)}}},"":function(t,r,v){var s=j++,e=q,u;if(typeof r==="string"&&!/\W/.test(r)){r=r.toLowerCase();u=r;e=n}e("parentNode",r,s,t,u,v)},"~":function(t,r,v){var s=j++,e=q,u;if(typeof r==="string"&&!/\W/.test(r)){r=r.toLowerCase();u=r;e=n}e("previousSibling",r,s,t,u,v)}},find:{ID:function(r,s,t){if(typeof s.getElementById!=="undefined"&&!t){var e=s.getElementById(r[1]);return e?[e]:[]}},NAME:function(s,v){if(typeof v.getElementsByName!=="undefined"){var r=[],u=v.getElementsByName(s[1]);for(var t=0,e=u.length;t<e;t++){if(u[t].getAttribute("name")===s[1]){r.push(u[t])}}return r.length===0?null:r}},TAG:function(e,r){return r.getElementsByTagName(e[1])}},preFilter:{CLASS:function(t,r,s,e,x,y){t=" "+t[1].replace(/\\/g,"")+" ";if(y){return t}for(var u=0,v;(v=r[u])!=null;u++){if(v){if(x^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(t)>=0)){if(!s){e.push(v)}}else{if(s){r[u]=false}}}}return false},ID:function(e){return e[1].replace(/\\/g,"")},TAG:function(r,e){return r[1].toLowerCase()},CHILD:function(e){if(e[1]==="nth"){var r=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(r[1]+(r[2]||1))-0;e[3]=r[3]-0}e[0]=j++;return e},ATTR:function(u,r,s,e,v,x){var t=u[1].replace(/\\/g,"");if(!x&&f.attrMap[t]){u[1]=f.attrMap[t]}if(u[2]==="~="){u[4]=" "+u[4]+" "}return u},PSEUDO:function(u,r,s,e,v){if(u[1]==="not"){if((p.exec(u[3])||"").length>1||/^\w/.test(u[3])){u[3]=b(u[3],null,null,r)}else{var t=b.filter(u[3],r,s,true^v);if(!s){e.push.apply(e,t)}return false}}else{if(f.match.POS.test(u[0])||f.match.CHILD.test(u[0])){return true}}return u},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){e.parentNode.selectedIndex;return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(s,r,e){return !!b(e[3],s).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(e){return"text"===e.type},radio:function(e){return"radio"===e.type},checkbox:function(e){return"checkbox"===e.type},file:function(e){return"file"===e.type},password:function(e){return"password"===e.type},submit:function(e){return"submit"===e.type},image:function(e){return"image"===e.type},reset:function(e){return"reset"===e.type},button:function(e){return"button"===e.type||e.nodeName.toLowerCase()==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)}},setFilters:{first:function(r,e){return e===0},last:function(s,r,e,t){return r===t.length-1},even:function(r,e){return e%2===0},odd:function(r,e){return e%2===1},lt:function(s,r,e){return r<e[3]-0},gt:function(s,r,e){return r>e[3]-0},nth:function(s,r,e){return e[3]-0===r},eq:function(s,r,e){return e[3]-0===r}},filter:{PSEUDO:function(s,y,x,z){var e=y[1],r=f.filters[e];if(r){return r(s,x,y,z)}else{if(e==="contains"){return(s.textContent||s.innerText||b.getText([s])||"").indexOf(y[3])>=0}else{if(e==="not"){var t=y[3];for(var v=0,u=t.length;v<u;v++){if(t[v]===s){return false}}return true}else{b.error("Syntax error, unrecognized expression: "+e)}}}},CHILD:function(e,t){var x=t[1],r=e;switch(x){case"only":case"first":while((r=r.previousSibling)){if(r.nodeType===1){return false}}if(x==="first"){return true}r=e;case"last":while((r=r.nextSibling)){if(r.nodeType===1){return false}}return true;case"nth":var s=t[2],A=t[3];if(s===1&&A===0){return true}var v=t[0],z=e.parentNode;if(z&&(z.sizcache!==v||!e.nodeIndex)){var u=0;for(r=z.firstChild;r;r=r.nextSibling){if(r.nodeType===1){r.nodeIndex=++u}}z.sizcache=v}var y=e.nodeIndex-A;if(s===0){return y===0}else{return(y%s===0&&y/s>=0)}}},ID:function(r,e){return r.nodeType===1&&r.getAttribute("id")===e},TAG:function(r,e){return(e==="*"&&r.nodeType===1)||r.nodeName.toLowerCase()===e},CLASS:function(r,e){return(" "+(r.className||r.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(v,t){var s=t[1],e=f.attrHandle[s]?f.attrHandle[s](v):v[s]!=null?v[s]:v.getAttribute(s),x=e+"",u=t[2],r=t[4];return e==null?u==="!=":u==="="?x===r:u==="*="?x.indexOf(r)>=0:u==="~="?(" "+x+" ").indexOf(r)>=0:!r?x&&e!==false:u==="!="?x!==r:u==="^="?x.indexOf(r)===0:u==="$="?x.substr(x.length-r.length)===r:u==="|="?x===r||x.substr(0,r.length+1)===r+"-":false},POS:function(u,r,s,v){var e=r[2],t=f.setFilters[e];if(t){return t(u,s,r,v)}}}};var k=f.match.POS,g=function(r,e){return"\\"+(e-0+1)};for(var m in f.match){f.match[m]=new RegExp(f.match[m].source+(/(?![^\[]*\])(?![^\(]*\))/.source));f.leftMatch[m]=new RegExp(/(^(?:.|\r|\n)*?)/.source+f.match[m].source.replace(/\\(\d+)/g,g))}var a=function(r,e){r=Array.prototype.slice.call(r,0);if(e){e.push.apply(e,r);return e}return r};try{Array.prototype.slice.call(document.documentElement.childNodes,0)[0].nodeType}catch(l){a=function(u,t){var r=t||[],s=0;if(d.call(u)==="[object Array]"){Array.prototype.push.apply(r,u)}else{if(typeof u.length==="number"){for(var e=u.length;s<e;s++){r.push(u[s])}}else{for(;u[s];s++){r.push(u[s])}}}return r}}var c;if(document.documentElement.compareDocumentPosition){c=function(r,e){if(!r.compareDocumentPosition||!e.compareDocumentPosition){if(r==e){o=true}return r.compareDocumentPosition?-1:1}var s=r.compareDocumentPosition(e)&4?-1:r===e?0:1;if(s===0){o=true}return s}}else{if("sourceIndex" in document.documentElement){c=function(r,e){if(!r.sourceIndex||!e.sourceIndex){if(r==e){o=true}return r.sourceIndex?-1:1}var s=r.sourceIndex-e.sourceIndex;if(s===0){o=true}return s}}else{if(document.createRange){c=function(t,r){if(!t.ownerDocument||!r.ownerDocument){if(t==r){o=true}return t.ownerDocument?-1:1}var s=t.ownerDocument.createRange(),e=r.ownerDocument.createRange();s.setStart(t,0);s.setEnd(t,0);e.setStart(r,0);e.setEnd(r,0);var u=s.compareBoundaryPoints(Range.START_TO_END,e);if(u===0){o=true}return u}}}}b.getText=function(e){var r="",t;for(var s=0;e[s];s++){t=e[s];if(t.nodeType===3||t.nodeType===4){r+=t.nodeValue}else{if(t.nodeType!==8){r+=b.getText(t.childNodes)}}}return r};(function(){var r=document.createElement("div"),s="script"+(new Date()).getTime();r.innerHTML="<a name='"+s+"'/>";var e=document.documentElement;e.insertBefore(r,e.firstChild);if(document.getElementById(s)){f.find.ID=function(u,v,x){if(typeof v.getElementById!=="undefined"&&!x){var t=v.getElementById(u[1]);return t?t.id===u[1]||typeof t.getAttributeNode!=="undefined"&&t.getAttributeNode("id").nodeValue===u[1]?[t]:undefined:[]}};f.filter.ID=function(v,t){var u=typeof v.getAttributeNode!=="undefined"&&v.getAttributeNode("id");return v.nodeType===1&&u&&u.nodeValue===t}}e.removeChild(r);e=r=null})();(function(){var e=document.createElement("div");e.appendChild(document.createComment(""));if(e.getElementsByTagName("*").length>0){f.find.TAG=function(r,v){var u=v.getElementsByTagName(r[1]);if(r[1]==="*"){var t=[];for(var s=0;u[s];s++){if(u[s].nodeType===1){t.push(u[s])}}u=t}return u}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){f.attrHandle.href=function(r){return r.getAttribute("href",2)}}e=null})();if(document.querySelectorAll){(function(){var e=b,s=document.createElement("div");s.innerHTML="<p class='TEST'></p>";if(s.querySelectorAll&&s.querySelectorAll(".TEST").length===0){return}b=function(x,v,t,u){v=v||document;if(!u&&v.nodeType===9&&!b.isXML(v)){try{return a(v.querySelectorAll(x),t)}catch(y){}}return e(x,v,t,u)};for(var r in e){b[r]=e[r]}s=null})()}(function(){var e=document.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}f.order.splice(1,0,"CLASS");f.find.CLASS=function(r,s,t){if(typeof s.getElementsByClassName!=="undefined"&&!t){return s.getElementsByClassName(r[1])}};e=null})();function n(r,x,v,A,y,z){for(var t=0,s=A.length;t<s;t++){var e=A[t];if(e){e=e[r];var u=false;while(e){if(e.sizcache===v){u=A[e.sizset];break}if(e.nodeType===1&&!z){e.sizcache=v;e.sizset=t}if(e.nodeName.toLowerCase()===x){u=e;break}e=e[r]}A[t]=u}}}function q(r,x,v,A,y,z){for(var t=0,s=A.length;t<s;t++){var e=A[t];if(e){e=e[r];var u=false;while(e){if(e.sizcache===v){u=A[e.sizset];break}if(e.nodeType===1){if(!z){e.sizcache=v;e.sizset=t}if(typeof x!=="string"){if(e===x){u=true;break}}else{if(b.filter(x,[e]).length>0){u=e;break}}}e=e[r]}A[t]=u}}}b.contains=document.compareDocumentPosition?function(r,e){return !!(r.compareDocumentPosition(e)&16)}:function(r,e){return r!==e&&(r.contains?r.contains(e):true)};b.isXML=function(e){var r=(e?e.ownerDocument||e:0).documentElement;return r?r.nodeName!=="HTML":false};var h=function(e,y){var t=[],u="",v,s=y.nodeType?[y]:y;while((v=f.match.PSEUDO.exec(e))){u+=v[0];e=e.replace(f.match.PSEUDO,"")}e=f.relative[e]?e+"*":e;for(var x=0,r=s.length;x<r;x++){b(e,s[x],t)}return b.filter(u,t)};window.tinymce.dom.Sizzle=b})();(function(d){var f=d.each,c=d.DOM,b=d.isIE,e=d.isWebKit,a;d.create("tinymce.dom.EventUtils",{EventUtils:function(){this.inits=[];this.events=[]},add:function(m,p,l,j){var g,h=this,i=h.events,k;if(p instanceof Array){k=[];f(p,function(o){k.push(h.add(m,o,l,j))});return k}if(m&&m.hasOwnProperty&&m instanceof Array){k=[];f(m,function(n){n=c.get(n);k.push(h.add(n,p,l,j))});return k}m=c.get(m);if(!m){return}g=function(n){if(h.disabled){return}n=n||window.event;if(n&&b){if(!n.target){n.target=n.srcElement}d.extend(n,h._stoppers)}if(!j){return l(n)}return l.call(j,n)};if(p=="unload"){d.unloads.unshift({func:g});return g}if(p=="init"){if(h.domLoaded){g()}else{h.inits.push(g)}return g}i.push({obj:m,name:p,func:l,cfunc:g,scope:j});h._add(m,p,g);return l},remove:function(l,m,k){var h=this,g=h.events,i=false,j;if(l&&l.hasOwnProperty&&l instanceof Array){j=[];f(l,function(n){n=c.get(n);j.push(h.remove(n,m,k))});return j}l=c.get(l);f(g,function(o,n){if(o.obj==l&&o.name==m&&(!k||(o.func==k||o.cfunc==k))){g.splice(n,1);h._remove(l,m,o.cfunc);i=true;return false}});return i},clear:function(l){var j=this,g=j.events,h,k;if(l){l=c.get(l);for(h=g.length-1;h>=0;h--){k=g[h];if(k.obj===l){j._remove(k.obj,k.name,k.cfunc);k.obj=k.cfunc=null;g.splice(h,1)}}}},cancel:function(g){if(!g){return false}this.stop(g);return this.prevent(g)},stop:function(g){if(g.stopPropagation){g.stopPropagation()}else{g.cancelBubble=true}return false},prevent:function(g){if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}return false},destroy:function(){var g=this;f(g.events,function(j,h){g._remove(j.obj,j.name,j.cfunc);j.obj=j.cfunc=null});g.events=[];g=null},_add:function(h,i,g){if(h.attachEvent){h.attachEvent("on"+i,g)}else{if(h.addEventListener){h.addEventListener(i,g,false)}else{h["on"+i]=g}}},_remove:function(i,j,h){if(i){try{if(i.detachEvent){i.detachEvent("on"+j,h)}else{if(i.removeEventListener){i.removeEventListener(j,h,false)}else{i["on"+j]=null}}}catch(g){}}},_pageInit:function(h){var g=this;if(g.domLoaded){return}g.domLoaded=true;f(g.inits,function(i){i()});g.inits=[]},_wait:function(i){var g=this,h=i.document;if(i.tinyMCE_GZ&&tinyMCE_GZ.loaded){g.domLoaded=1;return}if(h.attachEvent){h.attachEvent("onreadystatechange",function(){if(h.readyState==="complete"){h.detachEvent("onreadystatechange",arguments.callee);g._pageInit(i)}});if(h.documentElement.doScroll&&i==i.top){(function(){if(g.domLoaded){return}try{h.documentElement.doScroll("left")}catch(j){setTimeout(arguments.callee,0);return}g._pageInit(i)})()}}else{if(h.addEventListener){g._add(i,"DOMContentLoaded",function(){g._pageInit(i)})}}g._add(i,"load",function(){g._pageInit(i)})},_stoppers:{preventDefault:function(){this.returnValue=false},stopPropagation:function(){this.cancelBubble=true}}});a=d.dom.Event=new d.dom.EventUtils();a._wait(window);d.addUnload(function(){a.destroy()})})(tinymce);(function(a){a.dom.Element=function(f,d){var b=this,e,c;b.settings=d=d||{};b.id=f;b.dom=e=d.dom||a.DOM;if(!a.isIE){c=e.get(b.id)}a.each(("getPos,getRect,getParent,add,setStyle,getStyle,setStyles,setAttrib,setAttribs,getAttrib,addClass,removeClass,hasClass,getOuterHTML,setOuterHTML,remove,show,hide,isHidden,setHTML,get").split(/,/),function(g){b[g]=function(){var h=[f],j;for(j=0;j<arguments.length;j++){h.push(arguments[j])}h=e[g].apply(e,h);b.update(g);return h}});a.extend(b,{on:function(i,h,g){return a.dom.Event.add(b.id,i,h,g)},getXY:function(){return{x:parseInt(b.getStyle("left")),y:parseInt(b.getStyle("top"))}},getSize:function(){var g=e.get(b.id);return{w:parseInt(b.getStyle("width")||g.clientWidth),h:parseInt(b.getStyle("height")||g.clientHeight)}},moveTo:function(g,h){b.setStyles({left:g,top:h})},moveBy:function(g,i){var h=b.getXY();b.moveTo(h.x+g,h.y+i)},resizeTo:function(g,i){b.setStyles({width:g,height:i})},resizeBy:function(g,j){var i=b.getSize();b.resizeTo(i.w+g,i.h+j)},update:function(h){var g;if(a.isIE6&&d.blocker){h=h||"";if(h.indexOf("get")===0||h.indexOf("has")===0||h.indexOf("is")===0){return}if(h=="remove"){e.remove(b.blocker);return}if(!b.blocker){b.blocker=e.uniqueId();g=e.add(d.container||e.getRoot(),"iframe",{id:b.blocker,style:"position:absolute;",frameBorder:0,src:'javascript:""'});e.setStyle(g,"opacity",0)}else{g=e.get(b.blocker)}e.setStyles(g,{left:b.getStyle("left",1),top:b.getStyle("top",1),width:b.getStyle("width",1),height:b.getStyle("height",1),display:b.getStyle("display",1),zIndex:parseInt(b.getStyle("zIndex",1)||0)-1})}}})}})(tinymce);(function(c){function e(f){return f.replace(/[\n\r]+/g,"")}var b=c.is,a=c.isIE,d=c.each;c.create("tinymce.dom.Selection",{Selection:function(i,h,g){var f=this;f.dom=i;f.win=h;f.serializer=g;d(["onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent"],function(j){f[j]=new c.util.Dispatcher(f)});if(!f.win.getSelection){f.tridentSel=new c.dom.TridentSelection(f)}if(c.isIE&&i.boxModel){this._fixIESelection()}c.addUnload(f.destroy,f)},setCursorLocation:function(h,i){var f=this;var g=f.dom.createRng();g.setStart(h,i);g.setEnd(h,i);f.setRng(g);f.collapse(false)},getContent:function(g){var f=this,h=f.getRng(),l=f.dom.create("body"),j=f.getSel(),i,k,m;g=g||{};i=k="";g.get=true;g.format=g.format||"html";g.forced_root_block="";f.onBeforeGetContent.dispatch(f,g);if(g.format=="text"){return f.isCollapsed()?"":(h.text||(j.toString?j.toString():""))}if(h.cloneContents){m=h.cloneContents();if(m){l.appendChild(m)}}else{if(b(h.item)||b(h.htmlText)){l.innerHTML="<br>"+(h.item?h.item(0).outerHTML:h.htmlText);l.removeChild(l.firstChild)}else{l.innerHTML=h.toString()}}if(/^\s/.test(l.innerHTML)){i=" "}if(/\s+$/.test(l.innerHTML)){k=" "}g.getInner=true;g.content=f.isCollapsed()?"":i+f.serializer.serialize(l,g)+k;f.onGetContent.dispatch(f,g);return g.content},setContent:function(g,i){var n=this,f=n.getRng(),j,k=n.win.document,m,l;i=i||{format:"html"};i.set=true;g=i.content=g;if(!i.no_events){n.onBeforeSetContent.dispatch(n,i)}g=i.content;if(f.insertNode){g+='<span id="__caret">_</span>';if(f.startContainer==k&&f.endContainer==k){k.body.innerHTML=g}else{f.deleteContents();if(k.body.childNodes.length==0){k.body.innerHTML=g}else{if(f.createContextualFragment){f.insertNode(f.createContextualFragment(g))}else{m=k.createDocumentFragment();l=k.createElement("div");m.appendChild(l);l.outerHTML=g;f.insertNode(m)}}}j=n.dom.get("__caret");f=k.createRange();f.setStartBefore(j);f.setEndBefore(j);n.setRng(f);n.dom.remove("__caret");try{n.setRng(f)}catch(h){}}else{if(f.item){k.execCommand("Delete",false,null);f=n.getRng()}if(/^\s+/.test(g)){f.pasteHTML('<span id="__mce_tmp">_</span>'+g);n.dom.remove("__mce_tmp")}else{f.pasteHTML(g)}}if(!i.no_events){n.onSetContent.dispatch(n,i)}},getStart:function(){var g=this.getRng(),h,f,j,i;if(g.duplicate||g.item){if(g.item){return g.item(0)}j=g.duplicate();j.collapse(1);h=j.parentElement();f=i=g.parentElement();while(i=i.parentNode){if(i==h){h=f;break}}return h}else{h=g.startContainer;if(h.nodeType==1&&h.hasChildNodes()){h=h.childNodes[Math.min(h.childNodes.length-1,g.startOffset)]}if(h&&h.nodeType==3){return h.parentNode}return h}},getEnd:function(){var g=this,h=g.getRng(),i,f;if(h.duplicate||h.item){if(h.item){return h.item(0)}h=h.duplicate();h.collapse(0);i=h.parentElement();if(i&&i.nodeName=="BODY"){return i.lastChild||i}return i}else{i=h.endContainer;f=h.endOffset;if(i.nodeType==1&&i.hasChildNodes()){i=i.childNodes[f>0?f-1:f]}if(i&&i.nodeType==3){return i.parentNode}return i}},getBookmark:function(r,s){var v=this,m=v.dom,g,j,i,n,h,o,p,l="\uFEFF",u;function f(x,y){var t=0;d(m.select(x),function(A,z){if(A==y){t=z}});return t}if(r==2){function k(){var x=v.getRng(true),t=m.getRoot(),y={};function z(C,H){var B=C[H?"startContainer":"endContainer"],G=C[H?"startOffset":"endOffset"],A=[],D,F,E=0;if(B.nodeType==3){if(s){for(D=B.previousSibling;D&&D.nodeType==3;D=D.previousSibling){G+=D.nodeValue.length}}A.push(G)}else{F=B.childNodes;if(G>=F.length&&F.length){E=1;G=Math.max(0,F.length-1)}A.push(v.dom.nodeIndex(F[G],s)+E)}for(;B&&B!=t;B=B.parentNode){A.push(v.dom.nodeIndex(B,s))}return A}y.start=z(x,true);if(!v.isCollapsed()){y.end=z(x)}return y}if(v.tridentSel){return v.tridentSel.getBookmark(r)}return k()}if(r){return{rng:v.getRng()}}g=v.getRng();i=m.uniqueId();n=tinyMCE.activeEditor.selection.isCollapsed();u="overflow:hidden;line-height:0px";if(g.duplicate||g.item){if(!g.item){j=g.duplicate();try{g.collapse();g.pasteHTML('<span data-mce-type="bookmark" id="'+i+'_start" style="'+u+'">'+l+"</span>");if(!n){j.collapse(false);g.moveToElementText(j.parentElement());if(g.compareEndPoints("StartToEnd",j)==0){j.move("character",-1)}j.pasteHTML('<span data-mce-type="bookmark" id="'+i+'_end" style="'+u+'">'+l+"</span>")}}catch(q){return null}}else{o=g.item(0);h=o.nodeName;return{name:h,index:f(h,o)}}}else{o=v.getNode();h=o.nodeName;if(h=="IMG"){return{name:h,index:f(h,o)}}j=g.cloneRange();if(!n){j.collapse(false);j.insertNode(m.create("span",{"data-mce-type":"bookmark",id:i+"_end",style:u},l))}g.collapse(true);g.insertNode(m.create("span",{"data-mce-type":"bookmark",id:i+"_start",style:u},l))}v.moveToBookmark({id:i,keep:1});return{id:i}},moveToBookmark:function(n){var r=this,l=r.dom,i,h,f,q,j,s,o,p;if(n){if(n.start){f=l.createRng();q=l.getRoot();function g(z){var t=n[z?"start":"end"],v,x,y,u;if(t){y=t[0];for(x=q,v=t.length-1;v>=1;v--){u=x.childNodes;if(t[v]>u.length-1){return}x=u[t[v]]}if(x.nodeType===3){y=Math.min(t[0],x.nodeValue.length)}if(x.nodeType===1){y=Math.min(t[0],x.childNodes.length)}if(z){f.setStart(x,y)}else{f.setEnd(x,y)}}return true}if(r.tridentSel){return r.tridentSel.moveToBookmark(n)}if(g(true)&&g()){r.setRng(f)}}else{if(n.id){function k(A){var u=l.get(n.id+"_"+A),z,t,x,y,v=n.keep;if(u){z=u.parentNode;if(A=="start"){if(!v){t=l.nodeIndex(u)}else{z=u.firstChild;t=1}j=s=z;o=p=t}else{if(!v){t=l.nodeIndex(u)}else{z=u.firstChild;t=1}s=z;p=t}if(!v){y=u.previousSibling;x=u.nextSibling;d(c.grep(u.childNodes),function(B){if(B.nodeType==3){B.nodeValue=B.nodeValue.replace(/\uFEFF/g,"")}});while(u=l.get(n.id+"_"+A)){l.remove(u,1)}if(y&&x&&y.nodeType==x.nodeType&&y.nodeType==3&&!c.isOpera){t=y.nodeValue.length;y.appendData(x.nodeValue);l.remove(x);if(A=="start"){j=s=y;o=p=t}else{s=y;p=t}}}}}function m(t){if(l.isBlock(t)&&!t.innerHTML){t.innerHTML=!a?'<br data-mce-bogus="1" />':" "}return t}k("start");k("end");if(j){f=l.createRng();f.setStart(m(j),o);f.setEnd(m(s),p);r.setRng(f)}}else{if(n.name){r.select(l.select(n.name)[n.index])}else{if(n.rng){r.setRng(n.rng)}}}}}},select:function(k,j){var i=this,l=i.dom,g=l.createRng(),f;if(k){f=l.nodeIndex(k);g.setStart(k.parentNode,f);g.setEnd(k.parentNode,f+1);if(j){function h(m,o){var n=new c.dom.TreeWalker(m,m);do{if(m.nodeType==3&&c.trim(m.nodeValue).length!=0){if(o){g.setStart(m,0)}else{g.setEnd(m,m.nodeValue.length)}return}if(m.nodeName=="BR"){if(o){g.setStartBefore(m)}else{g.setEndBefore(m)}return}}while(m=(o?n.next():n.prev()))}h(k,1);h(k)}i.setRng(g)}return k},isCollapsed:function(){var f=this,h=f.getRng(),g=f.getSel();if(!h||h.item){return false}if(h.compareEndPoints){return h.compareEndPoints("StartToEnd",h)===0}return !g||h.collapsed},collapse:function(f){var h=this,g=h.getRng(),i;if(g.item){i=g.item(0);g=h.win.document.body.createTextRange();g.moveToElementText(i)}g.collapse(!!f);h.setRng(g)},getSel:function(){var g=this,f=this.win;return f.getSelection?f.getSelection():f.document.selection},getRng:function(l){var g=this,h,i,k,j=g.win.document;if(l&&g.tridentSel){return g.tridentSel.getRangeAt(0)}try{if(h=g.getSel()){i=h.rangeCount>0?h.getRangeAt(0):(h.createRange?h.createRange():j.createRange())}}catch(f){}if(c.isIE&&i&&i.setStart&&j.selection.createRange().item){k=j.selection.createRange().item(0);i=j.createRange();i.setStartBefore(k);i.setEndAfter(k)}if(!i){i=j.createRange?j.createRange():j.body.createTextRange()}if(g.selectedRange&&g.explicitRange){if(i.compareBoundaryPoints(i.START_TO_START,g.selectedRange)===0&&i.compareBoundaryPoints(i.END_TO_END,g.selectedRange)===0){i=g.explicitRange}else{g.selectedRange=null;g.explicitRange=null}}return i},setRng:function(i){var h,g=this;if(!g.tridentSel){h=g.getSel();if(h){g.explicitRange=i;try{h.removeAllRanges()}catch(f){}h.addRange(i);g.selectedRange=h.getRangeAt(0)}}else{if(i.cloneRange){g.tridentSel.addRange(i);return}try{i.select()}catch(f){}}},setNode:function(g){var f=this;f.setContent(f.dom.getOuterHTML(g));return g},getNode:function(){var h=this,g=h.getRng(),i=h.getSel(),l,k=g.startContainer,f=g.endContainer;if(!g){return h.dom.getRoot()}if(g.setStart){l=g.commonAncestorContainer;if(!g.collapsed){if(g.startContainer==g.endContainer){if(g.endOffset-g.startOffset<2){if(g.startContainer.hasChildNodes()){l=g.startContainer.childNodes[g.startOffset]}}}if(k.nodeType===3&&f.nodeType===3){function j(p,m){var o=p;while(p&&p.nodeType===3&&p.length===0){p=m?p.nextSibling:p.previousSibling}return p||o}if(k.length===g.startOffset){k=j(k.nextSibling,true)}else{k=k.parentNode}if(g.endOffset===0){f=j(f.previousSibling,false)}else{f=f.parentNode}if(k&&k===f){return k}}}if(l&&l.nodeType==3){return l.parentNode}return l}return g.item?g.item(0):g.parentElement()},getSelectedBlocks:function(g,f){var i=this,j=i.dom,m,h,l,k=[];m=j.getParent(g||i.getStart(),j.isBlock);h=j.getParent(f||i.getEnd(),j.isBlock);if(m){k.push(m)}if(m&&h&&m!=h){l=m;while((l=l.nextSibling)&&l!=h){if(j.isBlock(l)){k.push(l)}}}if(h&&m!=h){k.push(h)}return k},normalize:function(){var g=this,f,i;if(c.isIE){return}function h(p){var k,o,n,m=g.dom,j=m.getRoot(),l;k=f[(p?"start":"end")+"Container"];o=f[(p?"start":"end")+"Offset"];if(k.nodeType===9){k=k.body;o=0}if(k===j){if(k.hasChildNodes()){k=k.childNodes[Math.min(!p&&o>0?o-1:o,k.childNodes.length-1)];o=0;if(k.hasChildNodes()){l=k;n=new c.dom.TreeWalker(k,j);do{if(l.nodeType===3){o=p?0:l.nodeValue.length-1;k=l;break}if(l.nodeName==="BR"){o=m.nodeIndex(l);k=l.parentNode;break}}while(l=(p?n.next():n.prev()));i=true}}}if(i){f["set"+(p?"Start":"End")](k,o)}}f=g.getRng();h(true);if(f.collapsed){h()}if(i){g.setRng(f)}},destroy:function(g){var f=this;f.win=null;if(!g){c.removeUnload(f.destroy)}},_fixIESelection:function(){var g=this.dom,m=g.doc,h=m.body,j,n,f;m.documentElement.unselectable=true;function i(o,r){var p=h.createTextRange();try{p.moveToPoint(o,r)}catch(q){p=null}return p}function l(p){var o;if(p.button){o=i(p.x,p.y);if(o){if(o.compareEndPoints("StartToStart",n)>0){o.setEndPoint("StartToStart",n)}else{o.setEndPoint("EndToEnd",n)}o.select()}}else{k()}}function k(){var o=m.selection.createRange();if(n&&!o.item&&o.compareEndPoints("StartToEnd",o)===0){n.select()}g.unbind(m,"mouseup",k);g.unbind(m,"mousemove",l);n=j=0}g.bind(m,["mousedown","contextmenu"],function(o){if(o.target.nodeName==="HTML"){if(j){k()}f=m.documentElement;if(f.scrollHeight>f.clientHeight){return}j=1;n=i(o.x,o.y);if(n){g.bind(m,"mouseup",k);g.bind(m,"mousemove",l);g.win.focus();n.select()}}})}})})(tinymce);(function(a){a.dom.Serializer=function(e,i,f){var h,b,d=a.isIE,g=a.each,c;if(!e.apply_source_formatting){e.indent=false}e.remove_trailing_brs=true;i=i||a.DOM;f=f||new a.html.Schema(e);e.entity_encoding=e.entity_encoding||"named";h=new a.util.Dispatcher(self);b=new a.util.Dispatcher(self);c=new a.html.DomParser(e,f);c.addAttributeFilter("src,href,style",function(k,j){var o=k.length,l,q,n="data-mce-"+j,p=e.url_converter,r=e.url_converter_scope,m;while(o--){l=k[o];q=l.attributes.map[n];if(q!==m){l.attr(j,q.length>0?q:null);l.attr(n,null)}else{q=l.attributes.map[j];if(j==="style"){q=i.serializeStyle(i.parseStyle(q),l.name)}else{if(p){q=p.call(r,q,j,l.name)}}l.attr(j,q.length>0?q:null)}}});c.addAttributeFilter("class",function(j,k){var l=j.length,m,n;while(l--){m=j[l];n=m.attr("class").replace(/\s*mce(Item\w+|Selected)\s*/g,"");m.attr("class",n.length>0?n:null)}});c.addAttributeFilter("data-mce-type",function(j,l,k){var m=j.length,n;while(m--){n=j[m];if(n.attributes.map["data-mce-type"]==="bookmark"&&!k.cleanup){n.remove()}}});c.addNodeFilter("script,style",function(k,l){var m=k.length,n,o;function j(p){return p.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*(\/\/\s*<!--|\/\/\s*<!\[CDATA\[|<!--|<!\[CDATA\[)[\r\n]*/g,"").replace(/\s*(\/\/\s*\]\]>|\/\/\s*-->|\]\]>|-->|\]\]-->)\s*$/g,"")}while(m--){n=k[m];o=n.firstChild?n.firstChild.value:"";if(l==="script"){n.attr("type",(n.attr("type")||"text/javascript").replace(/^mce\-/,""));if(o.length>0){n.firstChild.value="// <![CDATA[\n"+j(o)+"\n// ]]>"}}else{if(o.length>0){n.firstChild.value="<!--\n"+j(o)+"\n-->"}}}});c.addNodeFilter("#comment",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.value.indexOf("[CDATA[")===0){m.name="#cdata";m.type=4;m.value=m.value.replace(/^\[CDATA\[|\]\]$/g,"")}else{if(m.value.indexOf("mce:protected ")===0){m.name="#text";m.type=3;m.raw=true;m.value=unescape(m.value).substr(14)}}}});c.addNodeFilter("xml:namespace,input",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.type===7){m.remove()}else{if(m.type===1){if(k==="input"&&!("type" in m.attributes.map)){m.attr("type","text")}}}}});if(e.fix_list_elements){c.addNodeFilter("ul,ol",function(k,l){var m=k.length,n,j;while(m--){n=k[m];j=n.parent;if(j.name==="ul"||j.name==="ol"){if(n.prev&&n.prev.name==="li"){n.prev.append(n)}}}})}c.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style",function(j,k){var l=j.length;while(l--){j[l].attr(k,null)}});return{schema:f,addNodeFilter:c.addNodeFilter,addAttributeFilter:c.addAttributeFilter,onPreProcess:h,onPostProcess:b,serialize:function(o,m){var l,p,k,j,n;if(d&&i.select("script,style,select,map").length>0){n=o.innerHTML;o=o.cloneNode(false);i.setHTML(o,n)}else{o=o.cloneNode(true)}l=o.ownerDocument.implementation;if(l.createHTMLDocument){p=l.createHTMLDocument("");g(o.nodeName=="BODY"?o.childNodes:[o],function(q){p.body.appendChild(p.importNode(q,true))});if(o.nodeName!="BODY"){o=p.body.firstChild}else{o=p.body}k=i.doc;i.doc=p}m=m||{};m.format=m.format||"html";if(!m.no_events){m.node=o;h.dispatch(self,m)}j=new a.html.Serializer(e,f);m.content=j.serialize(c.parse(m.getInner?o.innerHTML:a.trim(i.getOuterHTML(o),m),m));if(!m.cleanup){m.content=m.content.replace(/\uFEFF/g,"")}if(!m.no_events){b.dispatch(self,m)}if(k){i.doc=k}m.node=null;return m.content},addRules:function(j){f.addValidElements(j)},setRules:function(j){f.setValidElements(j)}}}})(tinymce);(function(a){a.dom.ScriptLoader=function(h){var c=0,k=1,i=2,l={},j=[],f={},d=[],g=0,e;function b(m,v){var x=this,q=a.DOM,s,o,r,n;function p(){q.remove(n);if(s){s.onreadystatechange=s.onload=s=null}v()}function u(){if(typeof(console)!=="undefined"&&console.log){console.log("Failed to load: "+m)}}n=q.uniqueId();if(a.isIE6){o=new a.util.URI(m);r=location;if(o.host==r.hostname&&o.port==r.port&&(o.protocol+":")==r.protocol&&o.protocol.toLowerCase()!="file"){a.util.XHR.send({url:a._addVer(o.getURI()),success:function(y){var t=q.create("script",{type:"text/javascript"});t.text=y;document.getElementsByTagName("head")[0].appendChild(t);q.remove(t);p()},error:u});return}}s=q.create("script",{id:n,type:"text/javascript",src:a._addVer(m)});if(!a.isIE){s.onload=p}s.onerror=u;if(!a.isOpera){s.onreadystatechange=function(){var t=s.readyState;if(t=="complete"||t=="loaded"){p()}}}(document.getElementsByTagName("head")[0]||document.body).appendChild(s)}this.isDone=function(m){return l[m]==i};this.markDone=function(m){l[m]=i};this.add=this.load=function(m,q,n){var o,p=l[m];if(p==e){j.push(m);l[m]=c}if(q){if(!f[m]){f[m]=[]}f[m].push({func:q,scope:n||this})}};this.loadQueue=function(n,m){this.loadScripts(j,n,m)};this.loadScripts=function(m,q,p){var o;function n(r){a.each(f[r],function(s){s.func.call(s.scope)});f[r]=e}d.push({func:q,scope:p||this});o=function(){var r=a.grep(m);m.length=0;a.each(r,function(s){if(l[s]==i){n(s);return}if(l[s]!=k){l[s]=k;g++;b(s,function(){l[s]=i;g--;n(s);o()})}});if(!g){a.each(d,function(s){s.func.call(s.scope)});d.length=0}};o()}};a.ScriptLoader=new a.dom.ScriptLoader()})(tinymce);tinymce.dom.TreeWalker=function(a,c){var b=a;function d(i,f,e,j){var h,g;if(i){if(!j&&i[f]){return i[f]}if(i!=c){h=i[e];if(h){return h}for(g=i.parentNode;g&&g!=c;g=g.parentNode){h=g[e];if(h){return h}}}}}this.current=function(){return b};this.next=function(e){return(b=d(b,"firstChild","nextSibling",e))};this.prev=function(e){return(b=d(b,"lastChild","previousSibling",e))}};(function(a){a.dom.RangeUtils=function(c){var b="\uFEFF";this.walk=function(d,r){var h=d.startContainer,k=d.startOffset,s=d.endContainer,l=d.endOffset,i,f,n,g,q,p,e;e=c.select("td.mceSelected,th.mceSelected");if(e.length>0){a.each(e,function(t){r([t])});return}function o(v,u,t){var x=[];for(;v&&v!=t;v=v[u]){x.push(v)}return x}function m(u,t){do{if(u.parentNode==t){return u}u=u.parentNode}while(u)}function j(v,u,x){var t=x?"nextSibling":"previousSibling";for(g=v,q=g.parentNode;g&&g!=u;g=q){q=g.parentNode;p=o(g==v?g:g[t],t);if(p.length){if(!x){p.reverse()}r(p)}}}if(h.nodeType==1&&h.hasChildNodes()){h=h.childNodes[k]}if(s.nodeType==1&&s.hasChildNodes()){s=s.childNodes[Math.min(l-1,s.childNodes.length-1)]}i=c.findCommonAncestor(h,s);if(h==s){return r([h])}for(g=h;g;g=g.parentNode){if(g==s){return j(h,i,true)}if(g==i){break}}for(g=s;g;g=g.parentNode){if(g==h){return j(s,i)}if(g==i){break}}f=m(h,i)||h;n=m(s,i)||s;j(h,f,true);p=o(f==h?f:f.nextSibling,"nextSibling",n==s?n.nextSibling:n);if(p.length){r(p)}j(s,n)}};a.dom.RangeUtils.compareRanges=function(c,b){if(c&&b){if(c.item||c.duplicate){if(c.item&&b.item&&c.item(0)===b.item(0)){return true}if(c.isEqual&&b.isEqual&&b.isEqual(c)){return true}}else{return c.startContainer==b.startContainer&&c.startOffset==b.startOffset}}return false}})(tinymce);(function(b){var a=b.dom.Event,c=b.each;b.create("tinymce.ui.KeyboardNavigation",{KeyboardNavigation:function(e,f){var p=this,m=e.root,l=e.items,n=e.enableUpDown,i=e.enableLeftRight||!e.enableUpDown,k=e.excludeFromTabOrder,j,h,o,d,g;f=f||b.DOM;j=function(q){g=q.target.id};h=function(q){f.setAttrib(q.target.id,"tabindex","-1")};d=function(q){var r=f.get(g);f.setAttrib(r,"tabindex","0");r.focus()};p.focus=function(){f.get(g).focus()};p.destroy=function(){c(l,function(q){f.unbind(f.get(q.id),"focus",j);f.unbind(f.get(q.id),"blur",h)});f.unbind(f.get(m),"focus",d);f.unbind(f.get(m),"keydown",o);l=f=m=p.focus=j=h=o=d=null;p.destroy=function(){}};p.moveFocus=function(u,r){var q=-1,t=p.controls,s;if(!g){return}c(l,function(x,v){if(x.id===g){q=v;return false}});q+=u;if(q<0){q=l.length-1}else{if(q>=l.length){q=0}}s=l[q];f.setAttrib(g,"tabindex","-1");f.setAttrib(s.id,"tabindex","0");f.get(s.id).focus();if(e.actOnFocus){e.onAction(s.id)}if(r){a.cancel(r)}};o=function(y){var u=37,t=39,x=38,z=40,q=27,s=14,r=13,v=32;switch(y.keyCode){case u:if(i){p.moveFocus(-1)}break;case t:if(i){p.moveFocus(1)}break;case x:if(n){p.moveFocus(-1)}break;case z:if(n){p.moveFocus(1)}break;case q:if(e.onCancel){e.onCancel();a.cancel(y)}break;case s:case r:case v:if(e.onAction){e.onAction(g);a.cancel(y)}break}};c(l,function(s,q){var r;if(!s.id){s.id=f.uniqueId("_mce_item_")}if(k){f.bind(s.id,"blur",h);r="-1"}else{r=(q===0?"0":"-1")}f.setAttrib(s.id,"tabindex",r);f.bind(f.get(s.id),"focus",j)});if(l[0]){g=l[0].id}f.setAttrib(m,"tabindex","-1");f.bind(f.get(m),"focus",d);f.bind(f.get(m),"keydown",o)}})})(tinymce);(function(c){var b=c.DOM,a=c.is;c.create("tinymce.ui.Control",{Control:function(f,e,d){this.id=f;this.settings=e=e||{};this.rendered=false;this.onRender=new c.util.Dispatcher(this);this.classPrefix="";this.scope=e.scope||this;this.disabled=0;this.active=0;this.editor=d},setAriaProperty:function(f,e){var d=b.get(this.id+"_aria")||b.get(this.id);if(d){b.setAttrib(d,"aria-"+f,!!e)}},focus:function(){b.get(this.id).focus()},setDisabled:function(d){if(d!=this.disabled){this.setAriaProperty("disabled",d);this.setState("Disabled",d);this.setState("Enabled",!d);this.disabled=d}},isDisabled:function(){return this.disabled},setActive:function(d){if(d!=this.active){this.setState("Active",d);this.active=d;this.setAriaProperty("pressed",d)}},isActive:function(){return this.active},setState:function(f,d){var e=b.get(this.id);f=this.classPrefix+f;if(d){b.addClass(e,f)}else{b.removeClass(e,f)}},isRendered:function(){return this.rendered},renderHTML:function(){},renderTo:function(d){b.setHTML(d,this.renderHTML())},postRender:function(){var e=this,d;if(a(e.disabled)){d=e.disabled;e.disabled=-1;e.setDisabled(d)}if(a(e.active)){d=e.active;e.active=-1;e.setActive(d)}},remove:function(){b.remove(this.id);this.destroy()},destroy:function(){c.dom.Event.clear(this.id)}})})(tinymce);tinymce.create("tinymce.ui.Container:tinymce.ui.Control",{Container:function(c,b,a){this.parent(c,b,a);this.controls=[];this.lookup={}},add:function(a){this.lookup[a.id]=a;this.controls.push(a);return a},get:function(a){return this.lookup[a]}});tinymce.create("tinymce.ui.Separator:tinymce.ui.Control",{Separator:function(b,a){this.parent(b,a);this.classPrefix="mceSeparator";this.setDisabled(true)},renderHTML:function(){return tinymce.DOM.createHTML("span",{"class":this.classPrefix,role:"separator","aria-orientation":"vertical",tabindex:"-1"})}});(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.MenuItem:tinymce.ui.Control",{MenuItem:function(g,f){this.parent(g,f);this.classPrefix="mceMenuItem"},setSelected:function(f){this.setState("Selected",f);this.setAriaProperty("checked",!!f);this.selected=f},isSelected:function(){return this.selected},postRender:function(){var f=this;f.parent();if(c(f.selected)){f.setSelected(f.selected)}}})})(tinymce);(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.Menu:tinymce.ui.MenuItem",{Menu:function(h,g){var f=this;f.parent(h,g);f.items={};f.collapsed=false;f.menuCount=0;f.onAddItem=new d.util.Dispatcher(this)},expand:function(g){var f=this;if(g){a(f,function(h){if(h.expand){h.expand()}},"items",f)}f.collapsed=false},collapse:function(g){var f=this;if(g){a(f,function(h){if(h.collapse){h.collapse()}},"items",f)}f.collapsed=true},isCollapsed:function(){return this.collapsed},add:function(f){if(!f.settings){f=new d.ui.MenuItem(f.id||b.uniqueId(),f)}this.onAddItem.dispatch(this,f);return this.items[f.id]=f},addSeparator:function(){return this.add({separator:true})},addMenu:function(f){if(!f.collapse){f=this.createMenu(f)}this.menuCount++;return this.add(f)},hasMenus:function(){return this.menuCount!==0},remove:function(f){delete this.items[f.id]},removeAll:function(){var f=this;a(f,function(g){if(g.removeAll){g.removeAll()}else{g.remove()}g.destroy()},"items",f);f.items={}},createMenu:function(g){var f=new d.ui.Menu(g.id||b.uniqueId(),g);f.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return f}})})(tinymce);(function(e){var d=e.is,c=e.DOM,f=e.each,a=e.dom.Event,b=e.dom.Element;e.create("tinymce.ui.DropMenu:tinymce.ui.Menu",{DropMenu:function(h,g){g=g||{};g.container=g.container||c.doc.body;g.offset_x=g.offset_x||0;g.offset_y=g.offset_y||0;g.vp_offset_x=g.vp_offset_x||0;g.vp_offset_y=g.vp_offset_y||0;if(d(g.icons)&&!g.icons){g["class"]+=" mceNoIcons"}this.parent(h,g);this.onShowMenu=new e.util.Dispatcher(this);this.onHideMenu=new e.util.Dispatcher(this);this.classPrefix="mceMenu"},createMenu:function(j){var h=this,i=h.settings,g;j.container=j.container||i.container;j.parent=h;j.constrain=j.constrain||i.constrain;j["class"]=j["class"]||i["class"];j.vp_offset_x=j.vp_offset_x||i.vp_offset_x;j.vp_offset_y=j.vp_offset_y||i.vp_offset_y;j.keyboard_focus=i.keyboard_focus;g=new e.ui.DropMenu(j.id||c.uniqueId(),j);g.onAddItem.add(h.onAddItem.dispatch,h.onAddItem);return g},focus:function(){var g=this;if(g.keyboardNav){g.keyboardNav.focus()}},update:function(){var i=this,j=i.settings,g=c.get("menu_"+i.id+"_tbl"),l=c.get("menu_"+i.id+"_co"),h,k;h=j.max_width?Math.min(g.clientWidth,j.max_width):g.clientWidth;k=j.max_height?Math.min(g.clientHeight,j.max_height):g.clientHeight;if(!c.boxModel){i.element.setStyles({width:h+2,height:k+2})}else{i.element.setStyles({width:h,height:k})}if(j.max_width){c.setStyle(l,"width",h)}if(j.max_height){c.setStyle(l,"height",k);if(g.clientHeight<j.max_height){c.setStyle(l,"overflow","hidden")}}},showMenu:function(p,n,r){var z=this,A=z.settings,o,g=c.getViewPort(),u,l,v,q,i=2,k,j,m=z.classPrefix;z.collapse(1);if(z.isMenuVisible){return}if(!z.rendered){o=c.add(z.settings.container,z.renderNode());f(z.items,function(h){h.postRender()});z.element=new b("menu_"+z.id,{blocker:1,container:A.container})}else{o=c.get("menu_"+z.id)}if(!e.isOpera){c.setStyles(o,{left:-65535,top:-65535})}c.show(o);z.update();p+=A.offset_x||0;n+=A.offset_y||0;g.w-=4;g.h-=4;if(A.constrain){u=o.clientWidth-i;l=o.clientHeight-i;v=g.x+g.w;q=g.y+g.h;if((p+A.vp_offset_x+u)>v){p=r?r-u:Math.max(0,(v-A.vp_offset_x)-u)}if((n+A.vp_offset_y+l)>q){n=Math.max(0,(q-A.vp_offset_y)-l)}}c.setStyles(o,{left:p,top:n});z.element.update();z.isMenuVisible=1;z.mouseClickFunc=a.add(o,"click",function(s){var h;s=s.target;if(s&&(s=c.getParent(s,"tr"))&&!c.hasClass(s,m+"ItemSub")){h=z.items[s.id];if(h.isDisabled()){return}k=z;while(k){if(k.hideMenu){k.hideMenu()}k=k.settings.parent}if(h.settings.onclick){h.settings.onclick(s)}return a.cancel(s)}});if(z.hasMenus()){z.mouseOverFunc=a.add(o,"mouseover",function(x){var h,t,s;x=x.target;if(x&&(x=c.getParent(x,"tr"))){h=z.items[x.id];if(z.lastMenu){z.lastMenu.collapse(1)}if(h.isDisabled()){return}if(x&&c.hasClass(x,m+"ItemSub")){t=c.getRect(x);h.showMenu((t.x+t.w-i),t.y-i,t.x);z.lastMenu=h;c.addClass(c.get(h.id).firstChild,m+"ItemActive")}}})}a.add(o,"keydown",z._keyHandler,z);z.onShowMenu.dispatch(z);if(A.keyboard_focus){z._setupKeyboardNav()}},hideMenu:function(j){var g=this,i=c.get("menu_"+g.id),h;if(!g.isMenuVisible){return}if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(i,"mouseover",g.mouseOverFunc);a.remove(i,"click",g.mouseClickFunc);a.remove(i,"keydown",g._keyHandler);c.hide(i);g.isMenuVisible=0;if(!j){g.collapse(1)}if(g.element){g.element.hide()}if(h=c.get(g.id)){c.removeClass(h.firstChild,g.classPrefix+"ItemActive")}g.onHideMenu.dispatch(g)},add:function(i){var g=this,h;i=g.parent(i);if(g.isRendered&&(h=c.get("menu_"+g.id))){g._add(c.select("tbody",h)[0],i)}return i},collapse:function(g){this.parent(g);this.hideMenu(1)},remove:function(g){c.remove(g.id);this.destroy();return this.parent(g)},destroy:function(){var g=this,h=c.get("menu_"+g.id);if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(h,"mouseover",g.mouseOverFunc);a.remove(c.select("a",h),"focus",g.mouseOverFunc);a.remove(h,"click",g.mouseClickFunc);a.remove(h,"keydown",g._keyHandler);if(g.element){g.element.remove()}c.remove(h)},renderNode:function(){var i=this,j=i.settings,l,h,k,g;g=c.create("div",{role:"listbox",id:"menu_"+i.id,"class":j["class"],style:"position:absolute;left:0;top:0;z-index:200000;outline:0"});if(i.settings.parent){c.setAttrib(g,"aria-parent","menu_"+i.settings.parent.id)}k=c.add(g,"div",{role:"presentation",id:"menu_"+i.id+"_co","class":i.classPrefix+(j["class"]?" "+j["class"]:"")});i.element=new b("menu_"+i.id,{blocker:1,container:j.container});if(j.menu_line){c.add(k,"span",{"class":i.classPrefix+"Line"})}l=c.add(k,"table",{role:"presentation",id:"menu_"+i.id+"_tbl",border:0,cellPadding:0,cellSpacing:0});h=c.add(l,"tbody");f(i.items,function(m){i._add(h,m)});i.rendered=true;return g},_setupKeyboardNav:function(){var i,h,g=this;i=c.select("#menu_"+g.id)[0];h=c.select("a[role=option]","menu_"+g.id);h.splice(0,0,i);g.keyboardNav=new e.ui.KeyboardNavigation({root:"menu_"+g.id,items:h,onCancel:function(){g.hideMenu()},enableUpDown:true});i.focus()},_keyHandler:function(g){var h=this,i;switch(g.keyCode){case 37:if(h.settings.parent){h.hideMenu();h.settings.parent.focus();a.cancel(g)}break;case 39:if(h.mouseOverFunc){h.mouseOverFunc(g)}break}},_add:function(j,h){var i,q=h.settings,p,l,k,m=this.classPrefix,g;if(q.separator){l=c.add(j,"tr",{id:h.id,"class":m+"ItemSeparator"});c.add(l,"td",{"class":m+"ItemSeparator"});if(i=l.previousSibling){c.addClass(i,"mceLast")}return}i=l=c.add(j,"tr",{id:h.id,"class":m+"Item "+m+"ItemEnabled"});i=k=c.add(i,q.titleItem?"th":"td");i=p=c.add(i,"a",{id:h.id+"_aria",role:q.titleItem?"presentation":"option",href:"javascript:;",onclick:"return false;",onmousedown:"return false;"});if(q.parent){c.setAttrib(p,"aria-haspopup","true");c.setAttrib(p,"aria-owns","menu_"+h.id)}c.addClass(k,q["class"]);g=c.add(i,"span",{"class":"mceIcon"+(q.icon?" mce_"+q.icon:"")});if(q.icon_src){c.add(g,"img",{src:q.icon_src})}i=c.add(i,q.element||"span",{"class":"mceText",title:h.settings.title},h.settings.title);if(h.settings.style){c.setAttrib(i,"style",h.settings.style)}if(j.childNodes.length==1){c.addClass(l,"mceFirst")}if((i=l.previousSibling)&&c.hasClass(i,m+"ItemSeparator")){c.addClass(l,"mceFirst")}if(h.collapse){c.addClass(l,m+"ItemSub")}if(i=l.previousSibling){c.removeClass(i,"mceLast")}c.addClass(l,"mceLast")}})})(tinymce);(function(b){var a=b.DOM;b.create("tinymce.ui.Button:tinymce.ui.Control",{Button:function(e,d,c){this.parent(e,d,c);this.classPrefix="mceButton"},renderHTML:function(){var f=this.classPrefix,e=this.settings,d,c;c=a.encode(e.label||"");d='<a role="button" id="'+this.id+'" href="javascript:;" class="'+f+" "+f+"Enabled "+e["class"]+(c?" "+f+"Labeled":"")+'" onmousedown="return false;" onclick="return false;" aria-labelledby="'+this.id+'_voice" title="'+a.encode(e.title)+'">';if(e.image&&!(this.editor&&this.editor.forcedHighContrastMode)){d+='<img class="mceIcon" src="'+e.image+'" alt="'+a.encode(e.title)+'" />'+c}else{d+='<span class="mceIcon '+e["class"]+'"></span>'+(c?'<span class="'+f+'Label">'+c+"</span>":"")}d+='<span class="mceVoiceLabel mceIconOnly" style="display: none;" id="'+this.id+'_voice">'+e.title+"</span>";d+="</a>";return d},postRender:function(){var c=this,d=c.settings;b.dom.Event.add(c.id,"click",function(f){if(!c.isDisabled()){return d.onclick.call(d.scope,f)}})}})})(tinymce);(function(d){var c=d.DOM,b=d.dom.Event,e=d.each,a=d.util.Dispatcher;d.create("tinymce.ui.ListBox:tinymce.ui.Control",{ListBox:function(i,h,f){var g=this;g.parent(i,h,f);g.items=[];g.onChange=new a(g);g.onPostRender=new a(g);g.onAdd=new a(g);g.onRenderMenu=new d.util.Dispatcher(this);g.classPrefix="mceListBox"},select:function(h){var g=this,j,i;if(h==undefined){return g.selectByIndex(-1)}if(h&&h.call){i=h}else{i=function(f){return f==h}}if(h!=g.selectedValue){e(g.items,function(k,f){if(i(k.value)){j=1;g.selectByIndex(f);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){var g=this,h,i;if(f!=g.selectedIndex){h=c.get(g.id+"_text");i=g.items[f];if(i){g.selectedValue=i.value;g.selectedIndex=f;c.setHTML(h,c.encode(i.title));c.removeClass(h,"mceTitle");c.setAttrib(g.id,"aria-valuenow",i.title)}else{c.setHTML(h,c.encode(g.settings.title));c.addClass(h,"mceTitle");g.selectedValue=g.selectedIndex=null;c.setAttrib(g.id,"aria-valuenow",g.settings.title)}h=0}},add:function(i,f,h){var g=this;h=h||{};h=d.extend(h,{title:i,value:f});g.items.push(h);g.onAdd.dispatch(g,h)},getLength:function(){return this.items.length},renderHTML:function(){var i="",f=this,g=f.settings,j=f.classPrefix;i='<span role="button" aria-haspopup="true" aria-labelledby="'+f.id+'_text" aria-describedby="'+f.id+'_voiceDesc"><table role="presentation" tabindex="0" id="'+f.id+'" cellpadding="0" cellspacing="0" class="'+j+" "+j+"Enabled"+(g["class"]?(" "+g["class"]):"")+'"><tbody><tr>';i+="<td>"+c.createHTML("span",{id:f.id+"_voiceDesc","class":"voiceLabel",style:"display:none;"},f.settings.title);i+=c.createHTML("a",{id:f.id+"_text",tabindex:-1,href:"javascript:;","class":"mceText",onclick:"return false;",onmousedown:"return false;"},c.encode(f.settings.title))+"</td>";i+="<td>"+c.createHTML("a",{id:f.id+"_open",tabindex:-1,href:"javascript:;","class":"mceOpen",onclick:"return false;",onmousedown:"return false;"},'<span><span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span></span>')+"</td>";i+="</tr></tbody></table></span>";return i},showMenu:function(){var g=this,i,h=c.get(this.id),f;if(g.isDisabled()||g.items.length==0){return}if(g.menu&&g.menu.isMenuVisible){return g.hideMenu()}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}i=c.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.keyboard_focus=!d.isOpera;if(g.oldID){f.items[g.oldID].setSelected(0)}e(g.items,function(j){if(j.value===g.selectedValue){f.items[j.id].setSelected(1);g.oldID=j.id}});f.showMenu(0,h.clientHeight);b.add(c.doc,"mousedown",g.hideMenu,g);c.addClass(g.id,g.classPrefix+"Selected")},hideMenu:function(g){var f=this;if(f.menu&&f.menu.isMenuVisible){c.removeClass(f.id,f.classPrefix+"Selected");if(g&&g.type=="mousedown"&&(g.target.id==f.id+"_text"||g.target.id==f.id+"_open")){return}if(!g||!c.getParent(g.target,".mceMenu")){c.removeClass(f.id,f.classPrefix+"Selected");b.remove(c.doc,"mousedown",f.hideMenu,f);f.menu.hideMenu()}}},renderMenu:function(){var g=this,f;f=g.settings.control_manager.createDropMenu(g.id+"_menu",{menu_line:1,"class":g.classPrefix+"Menu mceNoIcons",max_width:150,max_height:150});f.onHideMenu.add(function(){g.hideMenu();g.focus()});f.add({title:g.settings.title,"class":"mceMenuItemTitle",onclick:function(){if(g.settings.onselect("")!==false){g.select("")}}});e(g.items,function(h){if(h.value===undefined){f.add({title:h.title,"class":"mceMenuItemTitle",onclick:function(){if(g.settings.onselect("")!==false){g.select("")}}})}else{h.id=c.uniqueId();h.onclick=function(){if(g.settings.onselect(h.value)!==false){g.select(h.value)}};f.add(h)}});g.onRenderMenu.dispatch(g,f);g.menu=f},postRender:function(){var f=this,g=f.classPrefix;b.add(f.id,"click",f.showMenu,f);b.add(f.id,"keydown",function(h){if(h.keyCode==32){f.showMenu(h);b.cancel(h)}});b.add(f.id,"focus",function(){if(!f._focused){f.keyDownHandler=b.add(f.id,"keydown",function(h){if(h.keyCode==40){f.showMenu();b.cancel(h)}});f.keyPressHandler=b.add(f.id,"keypress",function(i){var h;if(i.keyCode==13){h=f.selectedValue;f.selectedValue=null;b.cancel(i);f.settings.onselect(h)}})}f._focused=1});b.add(f.id,"blur",function(){b.remove(f.id,"keydown",f.keyDownHandler);b.remove(f.id,"keypress",f.keyPressHandler);f._focused=0});if(d.isIE6||!c.boxModel){b.add(f.id,"mouseover",function(){if(!c.hasClass(f.id,g+"Disabled")){c.addClass(f.id,g+"Hover")}});b.add(f.id,"mouseout",function(){if(!c.hasClass(f.id,g+"Disabled")){c.removeClass(f.id,g+"Hover")}})}f.onPostRender.dispatch(f,c.get(f.id))},destroy:function(){this.parent();b.clear(this.id+"_text");b.clear(this.id+"_open")}})})(tinymce);(function(d){var c=d.DOM,b=d.dom.Event,e=d.each,a=d.util.Dispatcher;d.create("tinymce.ui.NativeListBox:tinymce.ui.ListBox",{NativeListBox:function(g,f){this.parent(g,f);this.classPrefix="mceNativeListBox"},setDisabled:function(f){c.get(this.id).disabled=f;this.setAriaProperty("disabled",f)},isDisabled:function(){return c.get(this.id).disabled},select:function(h){var g=this,j,i;if(h==undefined){return g.selectByIndex(-1)}if(h&&h.call){i=h}else{i=function(f){return f==h}}if(h!=g.selectedValue){e(g.items,function(k,f){if(i(k.value)){j=1;g.selectByIndex(f);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){c.get(this.id).selectedIndex=f+1;this.selectedValue=this.items[f]?this.items[f].value:null},add:function(j,g,f){var i,h=this;f=f||{};f.value=g;if(h.isRendered()){c.add(c.get(this.id),"option",f,j)}i={title:j,value:g,attribs:f};h.items.push(i);h.onAdd.dispatch(h,i)},getLength:function(){return this.items.length},renderHTML:function(){var g,f=this;g=c.createHTML("option",{value:""},"-- "+f.settings.title+" --");e(f.items,function(h){g+=c.createHTML("option",{value:h.value},h.title)});g=c.createHTML("select",{id:f.id,"class":"mceNativeListBox","aria-labelledby":f.id+"_aria"},g);g+=c.createHTML("span",{id:f.id+"_aria",style:"display: none"},f.settings.title);return g},postRender:function(){var g=this,h,i=true;g.rendered=true;function f(k){var j=g.items[k.target.selectedIndex-1];if(j&&(j=j.value)){g.onChange.dispatch(g,j);if(g.settings.onselect){g.settings.onselect(j)}}}b.add(g.id,"change",f);b.add(g.id,"keydown",function(k){var j;b.remove(g.id,"change",h);i=false;j=b.add(g.id,"blur",function(){if(i){return}i=true;b.add(g.id,"change",f);b.remove(g.id,"blur",j)});if(d.isWebKit&&(k.keyCode==37||k.keyCode==39)){return b.prevent(k)}if(k.keyCode==13||k.keyCode==32){f(k);return b.cancel(k)}});g.onPostRender.dispatch(g,c.get(g.id))}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.MenuButton:tinymce.ui.Button",{MenuButton:function(g,f,e){this.parent(g,f,e);this.onRenderMenu=new c.util.Dispatcher(this);f.menu_container=f.menu_container||b.doc.body},showMenu:function(){var g=this,j,i,h=b.get(g.id),f;if(g.isDisabled()){return}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}if(g.isMenuVisible){return g.hideMenu()}j=b.getPos(g.settings.menu_container);i=b.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.vp_offset_x=i.x;f.settings.vp_offset_y=i.y;f.settings.keyboard_focus=g._focused;f.showMenu(0,h.clientHeight);a.add(b.doc,"mousedown",g.hideMenu,g);g.setState("Selected",1);g.isMenuVisible=1},renderMenu:function(){var f=this,e;e=f.settings.control_manager.createDropMenu(f.id+"_menu",{menu_line:1,"class":this.classPrefix+"Menu",icons:f.settings.icons});e.onHideMenu.add(function(){f.hideMenu();f.focus()});f.onRenderMenu.dispatch(f,e);f.menu=e},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&b.getParent(g.target,function(h){return h.id===f.id||h.id===f.id+"_open"})){return}if(!g||!b.getParent(g.target,".mceMenu")){f.setState("Selected",0);a.remove(b.doc,"mousedown",f.hideMenu,f);if(f.menu){f.menu.hideMenu()}}f.isMenuVisible=0},postRender:function(){var e=this,f=e.settings;a.add(e.id,"click",function(){if(!e.isDisabled()){if(f.onclick){f.onclick(e.value)}e.showMenu()}})}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.SplitButton:tinymce.ui.MenuButton",{SplitButton:function(g,f,e){this.parent(g,f,e);this.classPrefix="mceSplitButton"},renderHTML:function(){var i,f=this,g=f.settings,e;i="<tbody><tr>";if(g.image){e=b.createHTML("img ",{src:g.image,role:"presentation","class":"mceAction "+g["class"]})}else{e=b.createHTML("span",{"class":"mceAction "+g["class"]},"")}e+=b.createHTML("span",{"class":"mceVoiceLabel mceIconOnly",id:f.id+"_voice",style:"display:none;"},g.title);i+="<td >"+b.createHTML("a",{role:"button",id:f.id+"_action",tabindex:"-1",href:"javascript:;","class":"mceAction "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";e=b.createHTML("span",{"class":"mceOpen "+g["class"]},'<span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span>');i+="<td >"+b.createHTML("a",{role:"button",id:f.id+"_open",tabindex:"-1",href:"javascript:;","class":"mceOpen "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";i+="</tr></tbody>";i=b.createHTML("table",{id:f.id,role:"presentation",tabindex:"0","class":"mceSplitButton mceSplitButtonEnabled "+g["class"],cellpadding:"0",cellspacing:"0",title:g.title},i);return b.createHTML("span",{role:"button","aria-labelledby":f.id+"_voice","aria-haspopup":"true"},i)},postRender:function(){var e=this,g=e.settings,f;if(g.onclick){f=function(h){if(!e.isDisabled()){g.onclick(e.value);a.cancel(h)}};a.add(e.id+"_action","click",f);a.add(e.id,["click","keydown"],function(h){var k=32,m=14,i=13,j=38,l=40;if((h.keyCode===32||h.keyCode===13||h.keyCode===14)&&!h.altKey&&!h.ctrlKey&&!h.metaKey){f();a.cancel(h)}else{if(h.type==="click"||h.keyCode===l){e.showMenu();a.cancel(h)}}})}a.add(e.id+"_open","click",function(h){e.showMenu();a.cancel(h)});a.add([e.id,e.id+"_open"],"focus",function(){e._focused=1});a.add([e.id,e.id+"_open"],"blur",function(){e._focused=0});if(c.isIE6||!b.boxModel){a.add(e.id,"mouseover",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.addClass(e.id,"mceSplitButtonHover")}});a.add(e.id,"mouseout",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.removeClass(e.id,"mceSplitButtonHover")}})}},destroy:function(){this.parent();a.clear(this.id+"_action");a.clear(this.id+"_open");a.clear(this.id)}})})(tinymce);(function(d){var c=d.DOM,a=d.dom.Event,b=d.is,e=d.each;d.create("tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton",{ColorSplitButton:function(i,h,f){var g=this;g.parent(i,h,f);g.settings=h=d.extend({colors:"000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",grid_width:8,default_color:"#888888"},g.settings);g.onShowMenu=new d.util.Dispatcher(g);g.onHideMenu=new d.util.Dispatcher(g);g.value=h.default_color},showMenu:function(){var f=this,g,j,i,h;if(f.isDisabled()){return}if(!f.isMenuRendered){f.renderMenu();f.isMenuRendered=true}if(f.isMenuVisible){return f.hideMenu()}i=c.get(f.id);c.show(f.id+"_menu");c.addClass(i,"mceSplitButtonSelected");h=c.getPos(i);c.setStyles(f.id+"_menu",{left:h.x,top:h.y+i.clientHeight,zIndex:200000});i=0;a.add(c.doc,"mousedown",f.hideMenu,f);f.onShowMenu.dispatch(f);if(f._focused){f._keyHandler=a.add(f.id+"_menu","keydown",function(k){if(k.keyCode==27){f.hideMenu()}});c.select("a",f.id+"_menu")[0].focus()}f.isMenuVisible=1},hideMenu:function(g){var f=this;if(f.isMenuVisible){if(g&&g.type=="mousedown"&&c.getParent(g.target,function(h){return h.id===f.id+"_open"})){return}if(!g||!c.getParent(g.target,".mceSplitButtonMenu")){c.removeClass(f.id,"mceSplitButtonSelected");a.remove(c.doc,"mousedown",f.hideMenu,f);a.remove(f.id+"_menu","keydown",f._keyHandler);c.hide(f.id+"_menu")}f.isMenuVisible=0;f.onHideMenu.dispatch()}},renderMenu:function(){var p=this,h,k=0,q=p.settings,g,j,l,o,f;o=c.add(q.menu_container,"div",{role:"listbox",id:p.id+"_menu","class":q.menu_class+" "+q["class"],style:"position:absolute;left:0;top:-1000px;"});h=c.add(o,"div",{"class":q["class"]+" mceSplitButtonMenu"});c.add(h,"span",{"class":"mceMenuLine"});g=c.add(h,"table",{role:"presentation","class":"mceColorSplitMenu"});j=c.add(g,"tbody");k=0;e(b(q.colors,"array")?q.colors:q.colors.split(","),function(i){i=i.replace(/^#/,"");if(!k--){l=c.add(j,"tr");k=q.grid_width-1}g=c.add(l,"td");g=c.add(g,"a",{role:"option",href:"javascript:;",style:{backgroundColor:"#"+i},title:p.editor.getLang("colors."+i,i),"data-mce-color":"#"+i});if(p.editor.forcedHighContrastMode){g=c.add(g,"canvas",{width:16,height:16,"aria-hidden":"true"});if(g.getContext&&(f=g.getContext("2d"))){f.fillStyle="#"+i;f.fillRect(0,0,16,16)}else{c.remove(g)}}});if(q.more_colors_func){g=c.add(j,"tr");g=c.add(g,"td",{colspan:q.grid_width,"class":"mceMoreColors"});g=c.add(g,"a",{role:"option",id:p.id+"_more",href:"javascript:;",onclick:"return false;","class":"mceMoreColors"},q.more_colors_title);a.add(g,"click",function(i){q.more_colors_func.call(q.more_colors_scope||this);return a.cancel(i)})}c.addClass(h,"mceColorSplitMenu");new d.ui.KeyboardNavigation({root:p.id+"_menu",items:c.select("a",p.id+"_menu"),onCancel:function(){p.hideMenu();p.focus()}});a.add(p.id+"_menu","mousedown",function(i){return a.cancel(i)});a.add(p.id+"_menu","click",function(i){var m;i=c.getParent(i.target,"a",j);if(i&&i.nodeName.toLowerCase()=="a"&&(m=i.getAttribute("data-mce-color"))){p.setColor(m)}return a.cancel(i)});return o},setColor:function(f){this.displayColor(f);this.hideMenu();this.settings.onselect(f)},displayColor:function(g){var f=this;c.setStyle(f.id+"_preview","backgroundColor",g);f.value=g},postRender:function(){var f=this,g=f.id;f.parent();c.add(g+"_action","div",{id:g+"_preview","class":"mceColorPreview"});c.setStyle(f.id+"_preview","backgroundColor",f.value)},destroy:function(){this.parent();a.clear(this.id+"_menu");a.clear(this.id+"_more");c.remove(this.id+"_menu")}})})(tinymce);(function(b){var d=b.DOM,c=b.each,a=b.dom.Event;b.create("tinymce.ui.ToolbarGroup:tinymce.ui.Container",{renderHTML:function(){var f=this,i=[],e=f.controls,j=b.each,g=f.settings;i.push('<div id="'+f.id+'" role="group" aria-labelledby="'+f.id+'_voice">');i.push("<span role='application'>");i.push('<span id="'+f.id+'_voice" class="mceVoiceLabel" style="display:none;">'+d.encode(g.name)+"</span>");j(e,function(h){i.push(h.renderHTML())});i.push("</span>");i.push("</div>");return i.join("")},focus:function(){this.keyNav.focus()},postRender:function(){var f=this,e=[];c(f.controls,function(g){c(g.controls,function(h){if(h.id){e.push(h)}})});f.keyNav=new b.ui.KeyboardNavigation({root:f.id,items:e,onCancel:function(){f.editor.focus()},excludeFromTabOrder:!f.settings.tab_focus_toolbar})},destroy:function(){var e=this;e.parent();e.keyNav.destroy();a.clear(e.id)}})})(tinymce);(function(a){var c=a.DOM,b=a.each;a.create("tinymce.ui.Toolbar:tinymce.ui.Container",{renderHTML:function(){var m=this,f="",j,k,n=m.settings,e,d,g,l;l=m.controls;for(e=0;e<l.length;e++){k=l[e];d=l[e-1];g=l[e+1];if(e===0){j="mceToolbarStart";if(k.Button){j+=" mceToolbarStartButton"}else{if(k.SplitButton){j+=" mceToolbarStartSplitButton"}else{if(k.ListBox){j+=" mceToolbarStartListBox"}}}f+=c.createHTML("td",{"class":j},c.createHTML("span",null,"<!-- IE -->"))}if(d&&k.ListBox){if(d.Button||d.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarEnd"},c.createHTML("span",null,"<!-- IE -->"))}}if(c.stdMode){f+='<td style="position: relative">'+k.renderHTML()+"</td>"}else{f+="<td>"+k.renderHTML()+"</td>"}if(g&&k.ListBox){if(g.Button||g.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarStart"},c.createHTML("span",null,"<!-- IE -->"))}}}j="mceToolbarEnd";if(k.Button){j+=" mceToolbarEndButton"}else{if(k.SplitButton){j+=" mceToolbarEndSplitButton"}else{if(k.ListBox){j+=" mceToolbarEndListBox"}}}f+=c.createHTML("td",{"class":j},c.createHTML("span",null,"<!-- IE -->"));return c.createHTML("table",{id:m.id,"class":"mceToolbar"+(n["class"]?" "+n["class"]:""),cellpadding:"0",cellspacing:"0",align:m.settings.align||"",role:"presentation",tabindex:"-1"},"<tbody><tr>"+f+"</tr></tbody>")}})})(tinymce);(function(b){var a=b.util.Dispatcher,c=b.each;b.create("tinymce.AddOnManager",{AddOnManager:function(){var d=this;d.items=[];d.urls={};d.lookup={};d.onAdd=new a(d)},get:function(d){if(this.lookup[d]){return this.lookup[d].instance}else{return undefined}},dependencies:function(e){var d;if(this.lookup[e]){d=this.lookup[e].dependencies}return d||[]},requireLangPack:function(e){var d=b.settings;if(d&&d.language&&d.language_load!==false){b.ScriptLoader.add(this.urls[e]+"/langs/"+d.language+".js")}},add:function(f,e,d){this.items.push(e);this.lookup[f]={instance:e,dependencies:d};this.onAdd.dispatch(this,f,e);return e},createUrl:function(d,e){if(typeof e==="object"){return e}else{return{prefix:d.prefix,resource:e,suffix:d.suffix}}},addComponents:function(f,d){var e=this.urls[f];b.each(d,function(g){b.ScriptLoader.add(e+"/"+g)})},load:function(j,f,d,h){var g=this,e=f;function i(){var k=g.dependencies(j);b.each(k,function(m){var l=g.createUrl(f,m);g.load(l.resource,l,undefined,undefined)});if(d){if(h){d.call(h)}else{d.call(b.ScriptLoader)}}}if(g.urls[j]){return}if(typeof f==="object"){e=f.prefix+f.resource+f.suffix}if(e.indexOf("/")!=0&&e.indexOf("://")==-1){e=b.baseURL+"/"+e}g.urls[j]=e.substring(0,e.lastIndexOf("/"));if(g.lookup[j]){i()}else{b.ScriptLoader.add(e,i,h)}}});b.PluginManager=new b.AddOnManager();b.ThemeManager=new b.AddOnManager()}(tinymce));(function(j){var g=j.each,d=j.extend,k=j.DOM,i=j.dom.Event,f=j.ThemeManager,b=j.PluginManager,e=j.explode,h=j.util.Dispatcher,a,c=0;j.documentBaseURL=window.location.href.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(j.documentBaseURL)){j.documentBaseURL+="/"}j.baseURL=new j.util.URI(j.documentBaseURL).toAbsolute(j.baseURL);j.baseURI=new j.util.URI(j.baseURL);j.onBeforeUnload=new h(j);i.add(window,"beforeunload",function(l){j.onBeforeUnload.dispatch(j,l)});j.onAddEditor=new h(j);j.onRemoveEditor=new h(j);j.EditorManager=d(j,{editors:[],i18n:{},activeEditor:null,init:function(q){var n=this,p,l=j.ScriptLoader,u,o=[],m;function r(x,y,t){var v=x[y];if(!v){return}if(j.is(v,"string")){t=v.replace(/\.\w+$/,"");t=t?j.resolve(t):0;v=j.resolve(v)}return v.apply(t||this,Array.prototype.slice.call(arguments,2))}q=d({theme:"simple",language:"en"},q);n.settings=q;i.add(document,"init",function(){var s,v;r(q,"onpageload");switch(q.mode){case"exact":s=q.elements||"";if(s.length>0){g(e(s),function(x){if(k.get(x)){m=new j.Editor(x,q);o.push(m);m.render(1)}else{g(document.forms,function(y){g(y.elements,function(z){if(z.name===x){x="mce_editor_"+c++;k.setAttrib(z,"id",x);m=new j.Editor(x,q);o.push(m);m.render(1)}})})}})}break;case"textareas":case"specific_textareas":function t(y,x){return x.constructor===RegExp?x.test(y.className):k.hasClass(y,x)}g(k.select("textarea"),function(x){if(q.editor_deselector&&t(x,q.editor_deselector)){return}if(!q.editor_selector||t(x,q.editor_selector)){u=k.get(x.name);if(!x.id&&!u){x.id=x.name}if(!x.id||n.get(x.id)){x.id=k.uniqueId()}m=new j.Editor(x.id,q);o.push(m);m.render(1)}});break}if(q.oninit){s=v=0;g(o,function(x){v++;if(!x.initialized){x.onInit.add(function(){s++;if(s==v){r(q,"oninit")}})}else{s++}if(s==v){r(q,"oninit")}})}})},get:function(l){if(l===a){return this.editors}return this.editors[l]},getInstanceById:function(l){return this.get(l)},add:function(m){var l=this,n=l.editors;n[m.id]=m;n.push(m);l._setActive(m);l.onAddEditor.dispatch(l,m);return m},remove:function(n){var m=this,l,o=m.editors;if(!o[n.id]){return null}delete o[n.id];for(l=0;l<o.length;l++){if(o[l]==n){o.splice(l,1);break}}if(m.activeEditor==n){m._setActive(o[0])}n.destroy();m.onRemoveEditor.dispatch(m,n);return n},execCommand:function(r,p,o){var q=this,n=q.get(o),l;switch(r){case"mceFocus":n.focus();return true;case"mceAddEditor":case"mceAddControl":if(!q.get(o)){new j.Editor(o,q.settings).render()}return true;case"mceAddFrameControl":l=o.window;l.tinyMCE=tinyMCE;l.tinymce=j;j.DOM.doc=l.document;j.DOM.win=l;n=new j.Editor(o.element_id,o);n.render();if(j.isIE){function m(){n.destroy();l.detachEvent("onunload",m);l=l.tinyMCE=l.tinymce=null}l.attachEvent("onunload",m)}o.page_window=null;return true;case"mceRemoveEditor":case"mceRemoveControl":if(n){n.remove()}return true;case"mceToggleEditor":if(!n){q.execCommand("mceAddControl",0,o);return true}if(n.isHidden()){n.show()}else{n.hide()}return true}if(q.activeEditor){return q.activeEditor.execCommand(r,p,o)}return false},execInstanceCommand:function(p,o,n,m){var l=this.get(p);if(l){return l.execCommand(o,n,m)}return false},triggerSave:function(){g(this.editors,function(l){l.save()})},addI18n:function(n,q){var l,m=this.i18n;if(!j.is(n,"string")){g(n,function(r,p){g(r,function(t,s){g(t,function(v,u){if(s==="common"){m[p+"."+u]=v}else{m[p+"."+s+"."+u]=v}})})})}else{g(q,function(r,p){m[n+"."+p]=r})}},_setActive:function(l){this.selectedInstance=this.activeEditor=l}})})(tinymce);(function(m){var n=m.DOM,j=m.dom.Event,f=m.extend,k=m.util.Dispatcher,i=m.each,a=m.isGecko,b=m.isIE,e=m.isWebKit,d=m.is,h=m.ThemeManager,c=m.PluginManager,o=m.inArray,l=m.grep,g=m.explode;m.create("tinymce.Editor",{Editor:function(r,q){var p=this;p.id=p.editorId=r;p.execCommands={};p.queryStateCommands={};p.queryValueCommands={};p.isNotDirty=false;p.plugins={};i(["onPreInit","onBeforeRenderUI","onPostRender","onInit","onRemove","onActivate","onDeactivate","onClick","onEvent","onMouseUp","onMouseDown","onDblClick","onKeyDown","onKeyUp","onKeyPress","onContextMenu","onSubmit","onReset","onPaste","onPreProcess","onPostProcess","onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent","onLoadContent","onSaveContent","onNodeChange","onChange","onBeforeExecCommand","onExecCommand","onUndo","onRedo","onVisualAid","onSetProgressState"],function(s){p[s]=new k(p)});p.settings=q=f({id:r,language:"en",docs_language:"en",theme:"simple",skin:"default",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:m.documentBaseURL,add_form_submit_trigger:1,submit_patch:1,add_unload_trigger:1,convert_urls:1,relative_urls:1,remove_script_host:1,table_inline_editing:0,object_resizing:1,cleanup:1,accessibility_focus:1,custom_shortcuts:1,custom_undo_redo_keyboard_shortcuts:1,custom_undo_redo_restore_selection:1,custom_undo_redo:1,doctype:m.isIE6?'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">':"<!DOCTYPE>",visual_table_class:"mceItemTable",visual:1,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",apply_source_formatting:1,directionality:"ltr",forced_root_block:"p",hidden_input:1,padd_empty_editor:1,render_ui:1,init_theme:1,force_p_newlines:1,indentation:"30px",keep_styles:1,fix_table_elements:1,inline_styles:1,convert_fonts_to_spans:true,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr",validate:true,entity_encoding:"named",url_converter:p.convertURL,url_converter_scope:p,ie7_compat:true},q);p.documentBaseURI=new m.util.URI(q.document_base_url||m.documentBaseURL,{base_uri:tinyMCE.baseURI});p.baseURI=m.baseURI;p.contentCSS=[];p.execCallback("setup",p)},render:function(r){var u=this,v=u.settings,x=u.id,p=m.ScriptLoader;if(!j.domLoaded){j.add(document,"init",function(){u.render()});return}tinyMCE.settings=v;if(!u.getElement()){return}if(m.isIDevice&&!m.isIOS5){return}if(!/TEXTAREA|INPUT/i.test(u.getElement().nodeName)&&v.hidden_input&&n.getParent(x,"form")){n.insertAfter(n.create("input",{type:"hidden",name:x}),x)}if(m.WindowManager){u.windowManager=new m.WindowManager(u)}if(v.encoding=="xml"){u.onGetContent.add(function(s,t){if(t.save){t.content=n.encode(t.content)}})}if(v.add_form_submit_trigger){u.onSubmit.addToTop(function(){if(u.initialized){u.save();u.isNotDirty=1}})}if(v.add_unload_trigger){u._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(u.initialized&&!u.destroyed&&!u.isHidden()){u.save({format:"raw",no_events:true})}})}m.addUnload(u.destroy,u);if(v.submit_patch){u.onBeforeRenderUI.add(function(){var s=u.getElement().form;if(!s){return}if(s._mceOldSubmit){return}if(!s.submit.nodeType&&!s.submit.length){u.formElement=s;s._mceOldSubmit=s.submit;s.submit=function(){m.triggerSave();u.isNotDirty=1;return u.formElement._mceOldSubmit(u.formElement)}}s=null})}function q(){if(v.language&&v.language_load!==false){p.add(m.baseURL+"/langs/"+v.language+".js")}if(v.theme&&v.theme.charAt(0)!="-"&&!h.urls[v.theme]){h.load(v.theme,"themes/"+v.theme+"/editor_template"+m.suffix+".js")}i(g(v.plugins),function(t){if(t&&!c.urls[t]){if(t.charAt(0)=="-"){t=t.substr(1,t.length);var s=c.dependencies(t);i(s,function(z){var y={prefix:"plugins/",resource:z,suffix:"/editor_plugin"+m.suffix+".js"};var z=c.createUrl(y,z);c.load(z.resource,z)})}else{if(t=="safari"){return}c.load(t,{prefix:"plugins/",resource:t,suffix:"/editor_plugin"+m.suffix+".js"})}}});p.loadQueue(function(){if(!u.removed){u.init()}})}q()},init:function(){var r,H=this,I=H.settings,E,A,D=H.getElement(),q,p,F,y,C,G,z,v=[];m.add(H);I.aria_label=I.aria_label||n.getAttrib(D,"aria-label",H.getLang("aria.rich_text_area"));if(I.theme){I.theme=I.theme.replace(/-/,"");q=h.get(I.theme);H.theme=new q();if(H.theme.init&&I.init_theme){H.theme.init(H,h.urls[I.theme]||m.documentBaseURL.replace(/\/$/,""))}}function B(J){var K=c.get(J),t=c.urls[J]||m.documentBaseURL.replace(/\/$/,""),s;if(K&&m.inArray(v,J)===-1){i(c.dependencies(J),function(u){B(u)});s=new K(H,t);H.plugins[J]=s;if(s.init){s.init(H,t);v.push(J)}}}i(g(I.plugins.replace(/\-/g,"")),B);if(I.popup_css!==false){if(I.popup_css){I.popup_css=H.documentBaseURI.toAbsolute(I.popup_css)}else{I.popup_css=H.baseURI.toAbsolute("themes/"+I.theme+"/skins/"+I.skin+"/dialog.css")}}if(I.popup_css_add){I.popup_css+=","+H.documentBaseURI.toAbsolute(I.popup_css_add)}H.controlManager=new m.ControlManager(H);if(I.custom_undo_redo){H.onBeforeExecCommand.add(function(t,J,u,K,s){if(J!="Undo"&&J!="Redo"&&J!="mceRepaint"&&(!s||!s.skip_undo)){H.undoManager.beforeChange()}});H.onExecCommand.add(function(t,J,u,K,s){if(J!="Undo"&&J!="Redo"&&J!="mceRepaint"&&(!s||!s.skip_undo)){H.undoManager.add()}})}H.onExecCommand.add(function(s,t){if(!/^(FontName|FontSize)$/.test(t)){H.nodeChanged()}});if(a){function x(s,t){if(!t||!t.initial){H.execCommand("mceRepaint")}}H.onUndo.add(x);H.onRedo.add(x);H.onSetContent.add(x)}H.onBeforeRenderUI.dispatch(H,H.controlManager);if(I.render_ui){E=I.width||D.style.width||D.offsetWidth;A=I.height||D.style.height||D.offsetHeight;H.orgDisplay=D.style.display;G=/^[0-9\.]+(|px)$/i;if(G.test(""+E)){E=Math.max(parseInt(E)+(q.deltaWidth||0),100)}if(G.test(""+A)){A=Math.max(parseInt(A)+(q.deltaHeight||0),100)}q=H.theme.renderUI({targetNode:D,width:E,height:A,deltaWidth:I.delta_width,deltaHeight:I.delta_height});H.editorContainer=q.editorContainer}if(document.domain&&location.hostname!=document.domain){m.relaxedDomain=document.domain}n.setStyles(q.sizeContainer||q.editorContainer,{width:E,height:A});if(I.content_css){m.each(g(I.content_css),function(s){H.contentCSS.push(H.documentBaseURI.toAbsolute(s))})}A=(q.iframeHeight||A)+(typeof(A)=="number"?(q.deltaHeight||0):"");if(A<100){A=100}H.iframeHTML=I.doctype+'<html><head xmlns="http://www.w3.org/1999/xhtml">';if(I.document_base_url!=m.documentBaseURL){H.iframeHTML+='<base href="'+H.documentBaseURI.getURI()+'" />'}if(I.ie7_compat){H.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=7" />'}else{H.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=edge" />'}H.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';y=I.body_id||"tinymce";if(y.indexOf("=")!=-1){y=H.getParam("body_id","","hash");y=y[H.id]||y}C=I.body_class||"";if(C.indexOf("=")!=-1){C=H.getParam("body_class","","hash");C=C[H.id]||""}H.iframeHTML+='</head><body id="'+y+'" class="mceContentBody '+C+'"><br></body></html>';if(m.relaxedDomain&&(b||(m.isOpera&&parseFloat(opera.version())<11))){F='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+H.id+'");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()'}r=n.add(q.iframeContainer,"iframe",{id:H.id+"_ifr",src:F||'javascript:""',frameBorder:"0",allowTransparency:"true",title:I.aria_label,style:{width:"100%",height:A,display:"block"}});H.contentAreaContainer=q.iframeContainer;n.get(q.editorContainer).style.display=H.orgDisplay;n.get(H.id).style.display="none";n.setAttrib(H.id,"aria-hidden",true);if(!m.relaxedDomain||!F){H.setupIframe()}D=r=q=null},setupIframe:function(){var q=this,v=q.settings,x=n.get(q.id),y=q.getDoc(),u,p;if(!b||!m.relaxedDomain){if(a&&!Range.prototype.getClientRects){q.onMouseDown.add(function(t,z){if(z.target.nodeName==="HTML"){var s=q.getBody();s.blur();setTimeout(function(){s.focus()},0)}})}y.open();y.write(q.iframeHTML);y.close();if(m.relaxedDomain){y.domain=m.relaxedDomain}}p=q.getBody();p.disabled=true;if(!v.readonly){p.contentEditable=true}p.disabled=false;q.schema=new m.html.Schema(v);q.dom=new m.dom.DOMUtils(q.getDoc(),{keep_values:true,url_converter:q.convertURL,url_converter_scope:q,hex_colors:v.force_hex_style_colors,class_filter:v.class_filter,update_styles:1,fix_ie_paragraphs:1,schema:q.schema});q.parser=new m.html.DomParser(v,q.schema);if(!q.settings.allow_html_in_named_anchor){q.parser.addAttributeFilter("name",function(s,t){var A=s.length,C,z,B,D;while(A--){D=s[A];if(D.name==="a"&&D.firstChild){B=D.parent;C=D.lastChild;do{z=C.prev;B.insert(C,D);C=z}while(C)}}})}q.parser.addAttributeFilter("src,href,style",function(s,t){var z=s.length,B,D=q.dom,C,A;while(z--){B=s[z];C=B.attr(t);A="data-mce-"+t;if(!B.attributes.map[A]){if(t==="style"){B.attr(A,D.serializeStyle(D.parseStyle(C),B.name))}else{B.attr(A,q.convertURL(C,t,B.name))}}}});q.parser.addNodeFilter("script",function(s,t){var z=s.length;while(z--){s[z].attr("type","mce-text/javascript")}});q.parser.addNodeFilter("#cdata",function(s,t){var z=s.length,A;while(z--){A=s[z];A.type=8;A.name="#comment";A.value="[CDATA["+A.value+"]]"}});q.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(t,z){var A=t.length,B,s=q.schema.getNonEmptyElements();while(A--){B=t[A];if(B.isEmpty(s)){B.empty().append(new m.html.Node("br",1)).shortEnded=true}}});q.serializer=new m.dom.Serializer(v,q.dom,q.schema);q.selection=new m.dom.Selection(q.dom,q.getWin(),q.serializer);q.formatter=new m.Formatter(this);q.formatter.register({alignleft:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"left"}},{selector:"img,table",collapsed:false,styles:{"float":"left"}}],aligncenter:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"center"}},{selector:"img",collapsed:false,styles:{display:"block",marginLeft:"auto",marginRight:"auto"}},{selector:"table",collapsed:false,styles:{marginLeft:"auto",marginRight:"auto"}}],alignright:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"right"}},{selector:"img,table",collapsed:false,styles:{"float":"right"}}],alignfull:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"justify"}}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:true},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:true},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},wrap_links:false},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},wrap_links:false},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},link:{inline:"a",selector:"a",remove:"all",split:true,deep:true,onmatch:function(s){return true},onformat:function(z,s,t){i(t,function(B,A){q.dom.setAttrib(z,A,B)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike",remove:"all",split:true,expand:false,block_expand:true,deep:true},{selector:"span",attributes:["style","class"],remove:"empty",split:true,expand:false,deep:true},{selector:"*",attributes:["style","class"],split:false,expand:false,deep:true}]});i("p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp".split(/\s/),function(s){q.formatter.register(s,{block:s,remove:"all"})});q.formatter.register(q.settings.formats);q.undoManager=new m.UndoManager(q);q.undoManager.onAdd.add(function(t,s){if(t.hasUndo()){return q.onChange.dispatch(q,s,t)}});q.undoManager.onUndo.add(function(t,s){return q.onUndo.dispatch(q,s,t)});q.undoManager.onRedo.add(function(t,s){return q.onRedo.dispatch(q,s,t)});q.forceBlocks=new m.ForceBlocks(q,{forced_root_block:v.forced_root_block});q.editorCommands=new m.EditorCommands(q);q.serializer.onPreProcess.add(function(s,t){return q.onPreProcess.dispatch(q,t,s)});q.serializer.onPostProcess.add(function(s,t){return q.onPostProcess.dispatch(q,t,s)});q.onPreInit.dispatch(q);if(!v.gecko_spellcheck){q.getBody().spellcheck=0}if(!v.readonly){q._addEvents()}q.controlManager.onPostRender.dispatch(q,q.controlManager);q.onPostRender.dispatch(q);q.quirks=new m.util.Quirks(this);if(v.directionality){q.getBody().dir=v.directionality}if(v.nowrap){q.getBody().style.whiteSpace="nowrap"}if(v.handle_node_change_callback){q.onNodeChange.add(function(t,s,z){q.execCallback("handle_node_change_callback",q.id,z,-1,-1,true,q.selection.isCollapsed())})}if(v.save_callback){q.onSaveContent.add(function(s,z){var t=q.execCallback("save_callback",q.id,z.content,q.getBody());if(t){z.content=t}})}if(v.onchange_callback){q.onChange.add(function(t,s){q.execCallback("onchange_callback",q,s)})}if(v.protect){q.onBeforeSetContent.add(function(s,t){if(v.protect){i(v.protect,function(z){t.content=t.content.replace(z,function(A){return"<!--mce:protected "+escape(A)+"-->"})})}})}if(v.convert_newlines_to_brs){q.onBeforeSetContent.add(function(s,t){if(t.initial){t.content=t.content.replace(/\r?\n/g,"<br />")}})}if(v.preformatted){q.onPostProcess.add(function(s,t){t.content=t.content.replace(/^\s*<pre.*?>/,"");t.content=t.content.replace(/<\/pre>\s*$/,"");if(t.set){t.content='<pre class="mceItemHidden">'+t.content+"</pre>"}})}if(v.verify_css_classes){q.serializer.attribValueFilter=function(B,z){var A,t;if(B=="class"){if(!q.classesRE){t=q.dom.getClasses();if(t.length>0){A="";i(t,function(s){A+=(A?"|":"")+s["class"]});q.classesRE=new RegExp("("+A+")","gi")}}return !q.classesRE||/(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(z)||q.classesRE.test(z)?z:""}return z}}if(v.cleanup_callback){q.onBeforeSetContent.add(function(s,t){t.content=q.execCallback("cleanup_callback","insert_to_editor",t.content,t)});q.onPreProcess.add(function(s,t){if(t.set){q.execCallback("cleanup_callback","insert_to_editor_dom",t.node,t)}if(t.get){q.execCallback("cleanup_callback","get_from_editor_dom",t.node,t)}});q.onPostProcess.add(function(s,t){if(t.set){t.content=q.execCallback("cleanup_callback","insert_to_editor",t.content,t)}if(t.get){t.content=q.execCallback("cleanup_callback","get_from_editor",t.content,t)}})}if(v.save_callback){q.onGetContent.add(function(s,t){if(t.save){t.content=q.execCallback("save_callback",q.id,t.content,q.getBody())}})}if(v.handle_event_callback){q.onEvent.add(function(s,t,z){if(q.execCallback("handle_event_callback",t,s,z)===false){j.cancel(t)}})}q.onSetContent.add(function(){q.addVisual(q.getBody())});if(v.padd_empty_editor){q.onPostProcess.add(function(s,t){t.content=t.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")})}if(a){function r(s,t){i(s.dom.select("a"),function(A){var z=A.parentNode;if(s.dom.isBlock(z)&&z.lastChild===A){s.dom.add(z,"br",{"data-mce-bogus":1})}})}q.onExecCommand.add(function(s,t){if(t==="CreateLink"){r(s)}});q.onSetContent.add(q.selection.onSetContent.add(r))}q.load({initial:true,format:"html"});q.startContent=q.getContent({format:"raw"});q.undoManager.add();q.initialized=true;q.onInit.dispatch(q);q.execCallback("setupcontent_callback",q.id,q.getBody(),q.getDoc());q.execCallback("init_instance_callback",q);q.focus(true);q.nodeChanged({initial:1});i(q.contentCSS,function(s){q.dom.loadCSS(s)});if(v.auto_focus){setTimeout(function(){var s=m.get(v.auto_focus);s.selection.select(s.getBody(),1);s.selection.collapse(1);s.getBody().focus();s.getWin().focus()},100)}x=null},focus:function(u){var y,q=this,s=q.selection,x=q.settings.content_editable,r,p,v=q.getDoc();if(!u){r=s.getRng();if(r.item){p=r.item(0)}q._refreshContentEditable();s.normalize();if(!x){q.getWin().focus()}if(m.isGecko){q.getBody().focus()}if(p&&p.ownerDocument==v){r=v.body.createControlRange();r.addElement(p);r.select()}}if(m.activeEditor!=q){if((y=m.activeEditor)!=null){y.onDeactivate.dispatch(y,q)}q.onActivate.dispatch(q,y)}m._setActive(q)},execCallback:function(u){var p=this,r=p.settings[u],q;if(!r){return}if(p.callbackLookup&&(q=p.callbackLookup[u])){r=q.func;q=q.scope}if(d(r,"string")){q=r.replace(/\.\w+$/,"");q=q?m.resolve(q):0;r=m.resolve(r);p.callbackLookup=p.callbackLookup||{};p.callbackLookup[u]={func:r,scope:q}}return r.apply(q||p,Array.prototype.slice.call(arguments,1))},translate:function(p){var r=this.settings.language||"en",q=m.i18n;if(!p){return""}return q[r+"."+p]||p.replace(/{\#([^}]+)\}/g,function(t,s){return q[r+"."+s]||"{#"+s+"}"})},getLang:function(q,p){return m.i18n[(this.settings.language||"en")+"."+q]||(d(p)?p:"{#"+q+"}")},getParam:function(u,r,p){var s=m.trim,q=d(this.settings[u])?this.settings[u]:r,t;if(p==="hash"){t={};if(d(q,"string")){i(q.indexOf("=")>0?q.split(/[;,](?![^=;,]*(?:[;,]|$))/):q.split(","),function(x){x=x.split("=");if(x.length>1){t[s(x[0])]=s(x[1])}else{t[s(x[0])]=s(x)}})}else{t=q}return t}return q},nodeChanged:function(r){var p=this,q=p.selection,u=q.getStart()||p.getBody();if(p.initialized){r=r||{};u=b&&u.ownerDocument!=p.getDoc()?p.getBody():u;r.parents=[];p.dom.getParent(u,function(s){if(s.nodeName=="BODY"){return true}r.parents.push(s)});p.onNodeChange.dispatch(p,r?r.controlManager||p.controlManager:p.controlManager,u,q.isCollapsed(),r)}},addButton:function(r,q){var p=this;p.buttons=p.buttons||{};p.buttons[r]=q},addCommand:function(p,r,q){this.execCommands[p]={func:r,scope:q||this}},addQueryStateHandler:function(p,r,q){this.queryStateCommands[p]={func:r,scope:q||this}},addQueryValueHandler:function(p,r,q){this.queryValueCommands[p]={func:r,scope:q||this}},addShortcut:function(r,u,p,s){var q=this,v;if(!q.settings.custom_shortcuts){return false}q.shortcuts=q.shortcuts||{};if(d(p,"string")){v=p;p=function(){q.execCommand(v,false,null)}}if(d(p,"object")){v=p;p=function(){q.execCommand(v[0],v[1],v[2])}}i(g(r),function(t){var x={func:p,scope:s||this,desc:u,alt:false,ctrl:false,shift:false};i(g(t,"+"),function(y){switch(y){case"alt":case"ctrl":case"shift":x[y]=true;break;default:x.charCode=y.charCodeAt(0);x.keyCode=y.toUpperCase().charCodeAt(0)}});q.shortcuts[(x.ctrl?"ctrl":"")+","+(x.alt?"alt":"")+","+(x.shift?"shift":"")+","+x.keyCode]=x});return true},execCommand:function(x,v,z,p){var r=this,u=0,y,q;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(x)&&(!p||!p.skip_focus)){r.focus()}y={};r.onBeforeExecCommand.dispatch(r,x,v,z,y);if(y.terminate){return false}if(r.execCallback("execcommand_callback",r.id,r.selection.getNode(),x,v,z)){r.onExecCommand.dispatch(r,x,v,z,p);return true}if(y=r.execCommands[x]){q=y.func.call(y.scope,v,z);if(q!==true){r.onExecCommand.dispatch(r,x,v,z,p);return q}}i(r.plugins,function(s){if(s.execCommand&&s.execCommand(x,v,z)){r.onExecCommand.dispatch(r,x,v,z,p);u=1;return false}});if(u){return true}if(r.theme&&r.theme.execCommand&&r.theme.execCommand(x,v,z)){r.onExecCommand.dispatch(r,x,v,z,p);return true}if(r.editorCommands.execCommand(x,v,z)){r.onExecCommand.dispatch(r,x,v,z,p);return true}r.getDoc().execCommand(x,v,z);r.onExecCommand.dispatch(r,x,v,z,p)},queryCommandState:function(u){var q=this,v,r;if(q._isHidden()){return}if(v=q.queryStateCommands[u]){r=v.func.call(v.scope);if(r!==true){return r}}v=q.editorCommands.queryCommandState(u);if(v!==-1){return v}try{return this.getDoc().queryCommandState(u)}catch(p){}},queryCommandValue:function(v){var q=this,u,r;if(q._isHidden()){return}if(u=q.queryValueCommands[v]){r=u.func.call(u.scope);if(r!==true){return r}}u=q.editorCommands.queryCommandValue(v);if(d(u)){return u}try{return this.getDoc().queryCommandValue(v)}catch(p){}},show:function(){var p=this;n.show(p.getContainer());n.hide(p.id);p.load()},hide:function(){var p=this,q=p.getDoc();if(b&&q){q.execCommand("SelectAll")}p.save();n.hide(p.getContainer());n.setStyle(p.id,"display",p.orgDisplay)},isHidden:function(){return !n.isHidden(this.id)},setProgressState:function(p,q,r){this.onSetProgressState.dispatch(this,p,q,r);return p},load:function(s){var p=this,r=p.getElement(),q;if(r){s=s||{};s.load=true;q=p.setContent(d(r.value)?r.value:r.innerHTML,s);s.element=r;if(!s.no_events){p.onLoadContent.dispatch(p,s)}s.element=r=null;return q}},save:function(u){var p=this,s=p.getElement(),q,r;if(!s||!p.initialized){return}u=u||{};u.save=true;if(!u.no_events){p.undoManager.typing=false;p.undoManager.add()}u.element=s;q=u.content=p.getContent(u);if(!u.no_events){p.onSaveContent.dispatch(p,u)}q=u.content;if(!/TEXTAREA|INPUT/i.test(s.nodeName)){s.innerHTML=q;if(r=n.getParent(p.id,"form")){i(r.elements,function(t){if(t.name==p.id){t.value=q;return false}})}}else{s.value=q}u.element=s=null;return q},setContent:function(u,s){var r=this,q,p=r.getBody(),t;s=s||{};s.format=s.format||"html";s.set=true;s.content=u;if(!s.no_events){r.onBeforeSetContent.dispatch(r,s)}u=s.content;if(!m.isIE&&(u.length===0||/^\s+$/.test(u))){t=r.settings.forced_root_block;if(t){u="<"+t+'><br data-mce-bogus="1"></'+t+">"}else{u='<br data-mce-bogus="1">'}p.innerHTML=u;r.selection.select(p,true);r.selection.collapse(true);return}if(s.format!=="raw"){u=new m.html.Serializer({},r.schema).serialize(r.parser.parse(u))}s.content=m.trim(u);r.dom.setHTML(p,s.content);if(!s.no_events){r.onSetContent.dispatch(r,s)}r.selection.normalize();return s.content},getContent:function(q){var p=this,r;q=q||{};q.format=q.format||"html";q.get=true;if(!q.no_events){p.onBeforeGetContent.dispatch(p,q)}if(q.format=="raw"){r=p.getBody().innerHTML}else{r=p.serializer.serialize(p.getBody(),q)}q.content=m.trim(r);if(!q.no_events){p.onGetContent.dispatch(p,q)}return q.content},isDirty:function(){var p=this;return m.trim(p.startContent)!=m.trim(p.getContent({format:"raw",no_events:1}))&&!p.isNotDirty},getContainer:function(){var p=this;if(!p.container){p.container=n.get(p.editorContainer||p.id+"_parent")}return p.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return n.get(this.settings.content_element||this.id)},getWin:function(){var p=this,q;if(!p.contentWindow){q=n.get(p.id+"_ifr");if(q){p.contentWindow=q.contentWindow}}return p.contentWindow},getDoc:function(){var q=this,p;if(!q.contentDocument){p=q.getWin();if(p){q.contentDocument=p.document}}return q.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(p,x,v){var q=this,r=q.settings;if(r.urlconverter_callback){return q.execCallback("urlconverter_callback",p,v,true,x)}if(!r.convert_urls||(v&&v.nodeName=="LINK")||p.indexOf("file:")===0){return p}if(r.relative_urls){return q.documentBaseURI.toRelative(p)}p=q.documentBaseURI.toAbsolute(p,r.remove_script_host);return p},addVisual:function(r){var p=this,q=p.settings;r=r||p.getBody();if(!d(p.hasVisual)){p.hasVisual=q.visual}i(p.dom.select("table,a",r),function(t){var s;switch(t.nodeName){case"TABLE":s=p.dom.getAttrib(t,"border");if(!s||s=="0"){if(p.hasVisual){p.dom.addClass(t,q.visual_table_class)}else{p.dom.removeClass(t,q.visual_table_class)}}return;case"A":s=p.dom.getAttrib(t,"name");if(s){if(p.hasVisual){p.dom.addClass(t,"mceItemAnchor")}else{p.dom.removeClass(t,"mceItemAnchor")}}return}});p.onVisualAid.dispatch(p,r,p.hasVisual)},remove:function(){var p=this,q=p.getContainer();p.removed=1;p.hide();p.execCallback("remove_instance_callback",p);p.onRemove.dispatch(p);p.onExecCommand.listeners=[];m.remove(p);n.remove(q)},destroy:function(q){var p=this;if(p.destroyed){return}if(!q){m.removeUnload(p.destroy);tinyMCE.onBeforeUnload.remove(p._beforeUnload);if(p.theme&&p.theme.destroy){p.theme.destroy()}p.controlManager.destroy();p.selection.destroy();p.dom.destroy();if(!p.settings.content_editable){j.clear(p.getWin());j.clear(p.getDoc())}j.clear(p.getBody());j.clear(p.formElement)}if(p.formElement){p.formElement.submit=p.formElement._mceOldSubmit;p.formElement._mceOldSubmit=null}p.contentAreaContainer=p.formElement=p.container=p.settings.content_element=p.bodyElement=p.contentDocument=p.contentWindow=null;if(p.selection){p.selection=p.selection.win=p.selection.dom=p.selection.dom.doc=null}p.destroyed=1},_addEvents:function(){var B=this,r,C=B.settings,q=B.dom,x={mouseup:"onMouseUp",mousedown:"onMouseDown",click:"onClick",keyup:"onKeyUp",keydown:"onKeyDown",keypress:"onKeyPress",submit:"onSubmit",reset:"onReset",contextmenu:"onContextMenu",dblclick:"onDblClick",paste:"onPaste"};function p(t,D){var s=t.type;if(B.removed){return}if(B.onEvent.dispatch(B,t,D)!==false){B[x[t.fakeType||t.type]].dispatch(B,t,D)}}i(x,function(t,s){switch(s){case"contextmenu":q.bind(B.getDoc(),s,p);break;case"paste":q.bind(B.getBody(),s,function(D){p(D)});break;case"submit":case"reset":q.bind(B.getElement().form||n.getParent(B.id,"form"),s,p);break;default:q.bind(C.content_editable?B.getBody():B.getDoc(),s,p)}});q.bind(C.content_editable?B.getBody():(a?B.getDoc():B.getWin()),"focus",function(s){B.focus(true)});if(m.isGecko){q.bind(B.getDoc(),"DOMNodeInserted",function(t){var s;t=t.target;if(t.nodeType===1&&t.nodeName==="IMG"&&(s=t.getAttribute("data-mce-src"))){t.src=B.documentBaseURI.toAbsolute(s)}})}if(a){function u(){var E=this,G=E.getDoc(),F=E.settings;if(a&&!F.readonly){E._refreshContentEditable();try{G.execCommand("styleWithCSS",0,false)}catch(D){if(!E._isHidden()){try{G.execCommand("useCSS",0,true)}catch(D){}}}if(!F.table_inline_editing){try{G.execCommand("enableInlineTableEditing",false,false)}catch(D){}}if(!F.object_resizing){try{G.execCommand("enableObjectResizing",false,false)}catch(D){}}}}B.onBeforeExecCommand.add(u);B.onMouseDown.add(u)}B.onClick.add(function(s,t){t=t.target;if(m.isWebKit&&t.nodeName=="IMG"){B.selection.getSel().setBaseAndExtent(t,0,t,1)}if(t.nodeName=="A"&&q.hasClass(t,"mceItemAnchor")){B.selection.select(t)}B.nodeChanged()});B.onMouseUp.add(B.nodeChanged);B.onKeyUp.add(function(s,t){var D=t.keyCode;if((D>=33&&D<=36)||(D>=37&&D<=40)||D==13||D==45||D==46||D==8||(m.isMac&&(D==91||D==93))||t.ctrlKey){B.nodeChanged()}});B.onKeyDown.add(function(t,D){if(D.keyCode!=8){return}var F=t.selection.getRng().startContainer;var E=t.selection.getRng().startOffset;while(F&&F.nodeType&&F.nodeType!=1&&F.parentNode){F=F.parentNode}if(F&&F.parentNode&&F.parentNode.tagName==="BLOCKQUOTE"&&F.parentNode.firstChild==F&&E==0){t.formatter.toggle("blockquote",null,F.parentNode);var s=t.selection.getRng();s.setStart(F,0);s.setEnd(F,0);t.selection.setRng(s);t.selection.collapse(false)}});B.onReset.add(function(){B.setContent(B.startContent,{format:"raw"})});if(C.custom_shortcuts){if(C.custom_undo_redo_keyboard_shortcuts){B.addShortcut("ctrl+z",B.getLang("undo_desc"),"Undo");B.addShortcut("ctrl+y",B.getLang("redo_desc"),"Redo")}B.addShortcut("ctrl+b",B.getLang("bold_desc"),"Bold");B.addShortcut("ctrl+i",B.getLang("italic_desc"),"Italic");B.addShortcut("ctrl+u",B.getLang("underline_desc"),"Underline");for(r=1;r<=6;r++){B.addShortcut("ctrl+"+r,"",["FormatBlock",false,"h"+r])}B.addShortcut("ctrl+7","",["FormatBlock",false,"p"]);B.addShortcut("ctrl+8","",["FormatBlock",false,"div"]);B.addShortcut("ctrl+9","",["FormatBlock",false,"address"]);function v(t){var s=null;if(!t.altKey&&!t.ctrlKey&&!t.metaKey){return s}i(B.shortcuts,function(D){if(m.isMac&&D.ctrl!=t.metaKey){return}else{if(!m.isMac&&D.ctrl!=t.ctrlKey){return}}if(D.alt!=t.altKey){return}if(D.shift!=t.shiftKey){return}if(t.keyCode==D.keyCode||(t.charCode&&t.charCode==D.charCode)){s=D;return false}});return s}B.onKeyUp.add(function(s,t){var D=v(t);if(D){return j.cancel(t)}});B.onKeyPress.add(function(s,t){var D=v(t);if(D){return j.cancel(t)}});B.onKeyDown.add(function(s,t){var D=v(t);if(D){D.func.call(D.scope);return j.cancel(t)}})}if(m.isIE){q.bind(B.getDoc(),"controlselect",function(D){var t=B.resizeInfo,s;D=D.target;if(D.nodeName!=="IMG"){return}if(t){q.unbind(t.node,t.ev,t.cb)}if(!q.hasClass(D,"mceItemNoResize")){ev="resizeend";s=q.bind(D,ev,function(F){var E;F=F.target;if(E=q.getStyle(F,"width")){q.setAttrib(F,"width",E.replace(/[^0-9%]+/g,""));q.setStyle(F,"width","")}if(E=q.getStyle(F,"height")){q.setAttrib(F,"height",E.replace(/[^0-9%]+/g,""));q.setStyle(F,"height","")}})}else{ev="resizestart";s=q.bind(D,"resizestart",j.cancel,j)}t=B.resizeInfo={node:D,ev:ev,cb:s}})}if(m.isOpera){B.onClick.add(function(s,t){j.prevent(t)})}if(C.custom_undo_redo){function y(){B.undoManager.typing=false;B.undoManager.add()}q.bind(B.getDoc(),"focusout",function(s){if(!B.removed&&B.undoManager.typing){y()}});B.dom.bind(B.dom.getRoot(),"dragend",function(s){y()});B.onKeyUp.add(function(s,D){var t=D.keyCode;if((t>=33&&t<=36)||(t>=37&&t<=40)||t==13||t==45||D.ctrlKey){y()}});B.onKeyDown.add(function(s,E){var D=E.keyCode,t;if(D==8){t=B.getDoc().selection;if(t&&t.createRange&&t.createRange().item){B.undoManager.beforeChange();s.dom.remove(t.createRange().item(0));y();return j.cancel(E)}}if((D>=33&&D<=36)||(D>=37&&D<=40)||D==13||D==45){if(m.isIE&&D==13){B.undoManager.beforeChange()}if(B.undoManager.typing){y()}return}if((D<16||D>20)&&D!=224&&D!=91&&!B.undoManager.typing){B.undoManager.beforeChange();B.undoManager.typing=true;B.undoManager.add()}});B.onMouseDown.add(function(){if(B.undoManager.typing){y()}})}if(m.isWebKit){q.bind(B.getDoc(),"selectionchange",function(){if(B.selectionTimer){clearTimeout(B.selectionTimer);B.selectionTimer=0}B.selectionTimer=window.setTimeout(function(){B.nodeChanged()},50)})}if(m.isGecko){function A(){var s=B.dom.getAttribs(B.selection.getStart().cloneNode(false));return function(){var t=B.selection.getStart();if(t!==B.getBody()){B.dom.removeAllAttribs(t);i(s,function(D){t.setAttributeNode(D.cloneNode(true))})}}}function z(){var t=B.selection;return !t.isCollapsed()&&t.getStart()!=t.getEnd()}B.onKeyPress.add(function(s,D){var t;if((D.keyCode==8||D.keyCode==46)&&z()){t=A();B.getDoc().execCommand("delete",false,null);t();return j.cancel(D)}});B.dom.bind(B.getDoc(),"cut",function(t){var s;if(z()){s=A();B.onKeyUp.addToTop(j.cancel,j);setTimeout(function(){s();B.onKeyUp.remove(j.cancel,j)},0)}})}},_refreshContentEditable:function(){var q=this,p,r;if(q._isHidden()){p=q.getBody();r=p.parentNode;r.removeChild(p);r.appendChild(p);p.focus()}},_isHidden:function(){var p;if(!a){return 0}p=this.selection.getSel();return(!p||!p.rangeCount||p.rangeCount==0)}})})(tinymce);(function(c){var d=c.each,e,a=true,b=false;c.EditorCommands=function(n){var m=n.dom,p=n.selection,j={state:{},exec:{},value:{}},k=n.settings,q=n.formatter,o;function r(z,y,x){var v;z=z.toLowerCase();if(v=j.exec[z]){v(z,y,x);return a}return b}function l(x){var v;x=x.toLowerCase();if(v=j.state[x]){return v(x)}return -1}function h(x){var v;x=x.toLowerCase();if(v=j.value[x]){return v(x)}return b}function u(v,x){x=x||"exec";d(v,function(z,y){d(y.toLowerCase().split(","),function(A){j[x][A]=z})})}c.extend(this,{execCommand:r,queryCommandState:l,queryCommandValue:h,addCommands:u});function f(y,x,v){if(x===e){x=b}if(v===e){v=null}return n.getDoc().execCommand(y,x,v)}function t(v){return q.match(v)}function s(v,x){q.toggle(v,x?{value:x}:e)}function i(v){o=p.getBookmark(v)}function g(){p.moveToBookmark(o)}u({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){n.undoManager.add()},"Cut,Copy,Paste":function(z){var y=n.getDoc(),v;try{f(z)}catch(x){v=a}if(v||!y.queryCommandSupported(z)){if(c.isGecko){n.windowManager.confirm(n.getLang("clipboard_msg"),function(A){if(A){open("http://www.mozilla.org/editor/midasdemo/securityprefs.html","_blank")}})}else{n.windowManager.alert(n.getLang("clipboard_no_support"))}}},unlink:function(v){if(p.isCollapsed()){p.select(p.getNode())}f(v);p.collapse(b)},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(v){var x=v.substring(7);d("left,center,right,full".split(","),function(y){if(x!=y){q.remove("align"+y)}});s("align"+x);r("mceRepaint")},"InsertUnorderedList,InsertOrderedList":function(y){var v,x;f(y);v=m.getParent(p.getNode(),"ol,ul");if(v){x=v.parentNode;if(/^(H[1-6]|P|ADDRESS|PRE)$/.test(x.nodeName)){i();m.split(x,v);g()}}},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){s(v)},"ForeColor,HiliteColor,FontName":function(y,x,v){s(y,v)},FontSize:function(z,y,x){var v,A;if(x>=1&&x<=7){A=c.explode(k.font_size_style_values);v=c.explode(k.font_size_classes);if(v){x=v[x-1]||x}else{x=A[x-1]||x}}s(z,x)},RemoveFormat:function(v){q.remove(v)},mceBlockQuote:function(v){s("blockquote")},FormatBlock:function(y,x,v){return s(v||"p")},mceCleanup:function(){var v=p.getBookmark();n.setContent(n.getContent({cleanup:a}),{cleanup:a});p.moveToBookmark(v)},mceRemoveNode:function(z,y,x){var v=x||p.getNode();if(v!=n.getBody()){i();n.dom.remove(v,a);g()}},mceSelectNodeDepth:function(z,y,x){var v=0;m.getParent(p.getNode(),function(A){if(A.nodeType==1&&v++==x){p.select(A);return b}},n.getBody())},mceSelectNode:function(y,x,v){p.select(v)},mceInsertContent:function(B,I,K){var y,J,E,z,F,G,D,C,L,x,A,M,v,H;y=n.parser;J=new c.html.Serializer({},n.schema);v='<span id="mce_marker" data-mce-type="bookmark">\uFEFF</span>';G={content:K,format:"html"};p.onBeforeSetContent.dispatch(p,G);K=G.content;if(K.indexOf("{$caret}")==-1){K+="{$caret}"}K=K.replace(/\{\$caret\}/,v);if(!p.isCollapsed()){n.getDoc().execCommand("Delete",false,null)}E=p.getNode();G={context:E.nodeName.toLowerCase()};F=y.parse(K,G);A=F.lastChild;if(A.attr("id")=="mce_marker"){D=A;for(A=A.prev;A;A=A.walk(true)){if(A.type==3||!m.isBlock(A.name)){A.parent.insert(D,A,A.name==="br");break}}}if(!G.invalid){K=J.serialize(F);A=E.firstChild;M=E.lastChild;if(!A||(A===M&&A.nodeName==="BR")){m.setHTML(E,K)}else{p.setContent(K)}}else{p.setContent(v);E=n.selection.getNode();z=n.getBody();if(E.nodeType==9){E=A=z}else{A=E}while(A!==z){E=A;A=A.parentNode}K=E==z?z.innerHTML:m.getOuterHTML(E);K=J.serialize(y.parse(K.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return J.serialize(F)})));if(E==z){m.setHTML(z,K)}else{m.setOuterHTML(E,K)}}D=m.get("mce_marker");C=m.getRect(D);L=m.getViewPort(n.getWin());if((C.y+C.h>L.y+L.h||C.y<L.y)||(C.x>L.x+L.w||C.x<L.x)){H=c.isIE?n.getDoc().documentElement:n.getBody();H.scrollLeft=C.x;H.scrollTop=C.y-L.h+25}x=m.createRng();A=D.previousSibling;if(A&&A.nodeType==3){x.setStart(A,A.nodeValue.length)}else{x.setStartBefore(D);x.setEndBefore(D)}m.remove(D);p.setRng(x);p.onSetContent.dispatch(p,G);n.addVisual()},mceInsertRawHTML:function(y,x,v){p.setContent("tiny_mce_marker");n.setContent(n.getContent().replace(/tiny_mce_marker/g,function(){return v}))},mceSetContent:function(y,x,v){n.setContent(v)},"Indent,Outdent":function(z){var x,v,y;x=k.indentation;v=/[a-z%]+$/i.exec(x);x=parseInt(x);if(!l("InsertUnorderedList")&&!l("InsertOrderedList")){d(p.getSelectedBlocks(),function(A){if(z=="outdent"){y=Math.max(0,parseInt(A.style.paddingLeft||0)-x);m.setStyle(A,"paddingLeft",y?y+v:"")}else{m.setStyle(A,"paddingLeft",(parseInt(A.style.paddingLeft||0)+x)+v)}})}else{f(z)}},mceRepaint:function(){var x;if(c.isGecko){try{i(a);if(p.getSel()){p.getSel().selectAllChildren(n.getBody())}p.collapse(a);g()}catch(v){}}},mceToggleFormat:function(y,x,v){q.toggle(v)},InsertHorizontalRule:function(){n.execCommand("mceInsertContent",false,"<hr />")},mceToggleVisualAid:function(){n.hasVisual=!n.hasVisual;n.addVisual()},mceReplaceContent:function(y,x,v){n.execCommand("mceInsertContent",false,v.replace(/\{\$selection\}/g,p.getContent({format:"text"})))},mceInsertLink:function(z,y,x){var v;if(typeof(x)=="string"){x={href:x}}v=m.getParent(p.getNode(),"a");x.href=x.href.replace(" ","%20");if(!v||!x.href){q.remove("link")}if(x.href){q.apply("link",x,v)}},selectAll:function(){var x=m.getRoot(),v=m.createRng();v.setStart(x,0);v.setEnd(x,x.childNodes.length);n.selection.setRng(v)}});u({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(v){return t("align"+v.substring(7))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){return t(v)},mceBlockQuote:function(){return t("blockquote")},Outdent:function(){var v;if(k.inline_styles){if((v=m.getParent(p.getStart(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}if((v=m.getParent(p.getEnd(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}}return l("InsertUnorderedList")||l("InsertOrderedList")||(!k.inline_styles&&!!m.getParent(p.getNode(),"BLOCKQUOTE"))},"InsertUnorderedList,InsertOrderedList":function(v){return m.getParent(p.getNode(),v=="insertunorderedlist"?"UL":"OL")}},"state");u({"FontSize,FontName":function(y){var x=0,v;if(v=m.getParent(p.getNode(),"span")){if(y=="fontsize"){x=v.style.fontSize}else{x=v.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()}}return x}},"value");if(k.custom_undo_redo){u({Undo:function(){n.undoManager.undo()},Redo:function(){n.undoManager.redo()}})}}})(tinymce);(function(b){var a=b.util.Dispatcher;b.UndoManager=function(f){var d,e=0,h=[],c;function g(){return b.trim(f.getContent({format:"raw",no_events:1}))}return d={typing:false,onAdd:new a(d),onUndo:new a(d),onRedo:new a(d),beforeChange:function(){c=f.selection.getBookmark(2,true)},add:function(m){var j,k=f.settings,l;m=m||{};m.content=g();l=h[e];if(l&&l.content==m.content){return null}if(h[e]){h[e].beforeBookmark=c}if(k.custom_undo_redo_levels){if(h.length>k.custom_undo_redo_levels){for(j=0;j<h.length-1;j++){h[j]=h[j+1]}h.length--;e=h.length}}m.bookmark=f.selection.getBookmark(2,true);if(e<h.length-1){h.length=e+1}h.push(m);e=h.length-1;d.onAdd.dispatch(d,m);f.isNotDirty=0;return m},undo:function(){var k,j;if(d.typing){d.add();d.typing=false}if(e>0){k=h[--e];f.setContent(k.content,{format:"raw"});f.selection.moveToBookmark(k.beforeBookmark);d.onUndo.dispatch(d,k)}return k},redo:function(){var i;if(e<h.length-1){i=h[++e];f.setContent(i.content,{format:"raw"});f.selection.moveToBookmark(i.bookmark);d.onRedo.dispatch(d,i)}return i},clear:function(){h=[];e=0;d.typing=false},hasUndo:function(){return e>0||this.typing},hasRedo:function(){return e<h.length-1&&!this.typing}}}})(tinymce);(function(l){var j=l.dom.Event,c=l.isIE,a=l.isGecko,b=l.isOpera,i=l.each,h=l.extend,d=true,g=false;function k(o){var p,n,m;do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(o.nodeName)){if(p){n=o.cloneNode(false);n.appendChild(p);p=n}else{p=m=o.cloneNode(false)}p.removeAttribute("id")}}while(o=o.parentNode);if(p){return{wrapper:p,inner:m}}}function f(n,o){var m=o.ownerDocument.createRange();m.setStart(n.endContainer,n.endOffset);m.setEndAfter(o);return m.cloneContents().textContent.length==0}function e(o,q,m){var n,p;if(q.isEmpty(m)){n=q.getParent(m,"ul,ol");if(!q.getParent(n.parentNode,"ul,ol")){q.split(n,m);p=q.create("p",0,'<br data-mce-bogus="1" />');q.replace(p,m);o.select(p,1)}return g}return d}l.create("tinymce.ForceBlocks",{ForceBlocks:function(m){var n=this,o=m.settings,p;n.editor=m;n.dom=m.dom;p=(o.forced_root_block||"p").toLowerCase();o.element=p.toUpperCase();m.onPreInit.add(n.setup,n)},setup:function(){var n=this,m=n.editor,p=m.settings,u=m.dom,o=m.selection,q=m.schema.getBlockElements();if(p.forced_root_block){function v(){var y=o.getStart(),t=m.getBody(),s,z,D,F,E,x,A,B=-16777215;if(!y||y.nodeType!==1){return}while(y!=t){if(q[y.nodeName]){return}y=y.parentNode}s=o.getRng();if(s.setStart){z=s.startContainer;D=s.startOffset;F=s.endContainer;E=s.endOffset}else{if(s.item){s=m.getDoc().body.createTextRange();s.moveToElementText(s.item(0))}tmpRng=s.duplicate();tmpRng.collapse(true);D=tmpRng.move("character",B)*-1;if(!tmpRng.collapsed){tmpRng=s.duplicate();tmpRng.collapse(false);E=(tmpRng.move("character",B)*-1)-D}}for(y=t.firstChild;y;y){if(y.nodeType===3||(y.nodeType==1&&!q[y.nodeName])){if(!x){x=u.create(p.forced_root_block);y.parentNode.insertBefore(x,y)}A=y;y=y.nextSibling;x.appendChild(A)}else{x=null;y=y.nextSibling}}if(s.setStart){s.setStart(z,D);s.setEnd(F,E);o.setRng(s)}else{try{s=m.getDoc().body.createTextRange();s.moveToElementText(t);s.collapse(true);s.moveStart("character",D);if(E>0){s.moveEnd("character",E)}s.select()}catch(C){}}m.nodeChanged()}m.onKeyUp.add(v);m.onClick.add(v)}if(p.force_br_newlines){if(c){m.onKeyPress.add(function(s,t){var x;if(t.keyCode==13&&o.getNode().nodeName!="LI"){o.setContent('<br id="__" /> ',{format:"raw"});x=u.get("__");x.removeAttribute("id");o.select(x);o.collapse();return j.cancel(t)}})}}if(p.force_p_newlines){if(!c){m.onKeyPress.add(function(s,t){if(t.keyCode==13&&!t.shiftKey&&!n.insertPara(t)){j.cancel(t)}})}else{l.addUnload(function(){n._previousFormats=0});m.onKeyPress.add(function(s,t){n._previousFormats=0;if(t.keyCode==13&&!t.shiftKey&&s.selection.isCollapsed()&&p.keep_styles){n._previousFormats=k(s.selection.getStart())}});m.onKeyUp.add(function(t,y){if(y.keyCode==13&&!y.shiftKey){var x=t.selection.getStart(),s=n._previousFormats;if(!x.hasChildNodes()&&s){x=u.getParent(x,u.isBlock);if(x&&x.nodeName!="LI"){x.innerHTML="";if(n._previousFormats){x.appendChild(s.wrapper);s.inner.innerHTML="\uFEFF"}else{x.innerHTML="\uFEFF"}o.select(x,1);o.collapse(true);t.getDoc().execCommand("Delete",false,null);n._previousFormats=0}}}})}if(a){m.onKeyDown.add(function(s,t){if((t.keyCode==8||t.keyCode==46)&&!t.shiftKey){n.backspaceDelete(t,t.keyCode==8)}})}}if(l.isWebKit){function r(t){var s=o.getRng(),x,A=u.create("div",null," "),z,y=u.getViewPort(t.getWin()).h;s.insertNode(x=u.create("br"));s.setStartAfter(x);s.setEndAfter(x);o.setRng(s);if(o.getSel().focusNode==x.previousSibling){o.select(u.insertAfter(u.doc.createTextNode("\u00a0"),x));o.collapse(d)}u.insertAfter(A,x);z=u.getPos(A).y;u.remove(A);if(z>y){t.getWin().scrollTo(0,z)}}m.onKeyPress.add(function(s,t){if(t.keyCode==13&&(t.shiftKey||(p.force_br_newlines&&!u.getParent(o.getNode(),"h1,h2,h3,h4,h5,h6,ol,ul")))){r(s);j.cancel(t)}})}if(c){if(p.element!="P"){m.onKeyPress.add(function(s,t){n.lastElm=o.getNode().nodeName});m.onKeyUp.add(function(t,x){var z,y=o.getNode(),s=t.getBody();if(s.childNodes.length===1&&y.nodeName=="P"){y=u.rename(y,p.element);o.select(y);o.collapse();t.nodeChanged()}else{if(x.keyCode==13&&!x.shiftKey&&n.lastElm!="P"){z=u.getParent(y,"p");if(z){u.rename(z,p.element);t.nodeChanged()}}}})}}},getParentBlock:function(o){var m=this.dom;return m.getParent(o,m.isBlock)},insertPara:function(Q){var E=this,v=E.editor,M=v.dom,R=v.getDoc(),V=v.settings,F=v.selection.getSel(),G=F.getRangeAt(0),U=R.body;var J,K,H,O,N,q,o,u,z,m,C,T,p,x,I,L=M.getViewPort(v.getWin()),B,D,A;v.undoManager.beforeChange();J=R.createRange();J.setStart(F.anchorNode,F.anchorOffset);J.collapse(d);K=R.createRange();K.setStart(F.focusNode,F.focusOffset);K.collapse(d);H=J.compareBoundaryPoints(J.START_TO_END,K)<0;O=H?F.anchorNode:F.focusNode;N=H?F.anchorOffset:F.focusOffset;q=H?F.focusNode:F.anchorNode;o=H?F.focusOffset:F.anchorOffset;if(O===q&&/^(TD|TH)$/.test(O.nodeName)){if(O.firstChild.nodeName=="BR"){M.remove(O.firstChild)}if(O.childNodes.length==0){v.dom.add(O,V.element,null,"<br />");T=v.dom.add(O,V.element,null,"<br />")}else{I=O.innerHTML;O.innerHTML="";v.dom.add(O,V.element,null,I);T=v.dom.add(O,V.element,null,"<br />")}G=R.createRange();G.selectNodeContents(T);G.collapse(1);v.selection.setRng(G);return g}if(O==U&&q==U&&U.firstChild&&v.dom.isBlock(U.firstChild)){O=q=O.firstChild;N=o=0;J=R.createRange();J.setStart(O,0);K=R.createRange();K.setStart(q,0)}if(!R.body.hasChildNodes()){R.body.appendChild(M.create("br"))}O=O.nodeName=="HTML"?R.body:O;O=O.nodeName=="BODY"?O.firstChild:O;q=q.nodeName=="HTML"?R.body:q;q=q.nodeName=="BODY"?q.firstChild:q;u=E.getParentBlock(O);z=E.getParentBlock(q);m=u?u.nodeName:V.element;if(I=E.dom.getParent(u,"li,pre")){if(I.nodeName=="LI"){return e(v.selection,E.dom,I)}return d}if(u&&(u.nodeName=="CAPTION"||/absolute|relative|fixed/gi.test(M.getStyle(u,"position",1)))){m=V.element;u=null}if(z&&(z.nodeName=="CAPTION"||/absolute|relative|fixed/gi.test(M.getStyle(u,"position",1)))){m=V.element;z=null}if(/(TD|TABLE|TH|CAPTION)/.test(m)||(u&&m=="DIV"&&/left|right/gi.test(M.getStyle(u,"float",1)))){m=V.element;u=z=null}C=(u&&u.nodeName==m)?u.cloneNode(0):v.dom.create(m);T=(z&&z.nodeName==m)?z.cloneNode(0):v.dom.create(m);T.removeAttribute("id");if(/^(H[1-6])$/.test(m)&&f(G,u)){T=v.dom.create(V.element)}I=p=O;do{if(I==U||I.nodeType==9||E.dom.isBlock(I)||/(TD|TABLE|TH|CAPTION)/.test(I.nodeName)){break}p=I}while((I=I.previousSibling?I.previousSibling:I.parentNode));I=x=q;do{if(I==U||I.nodeType==9||E.dom.isBlock(I)||/(TD|TABLE|TH|CAPTION)/.test(I.nodeName)){break}x=I}while((I=I.nextSibling?I.nextSibling:I.parentNode));if(p.nodeName==m){J.setStart(p,0)}else{J.setStartBefore(p)}J.setEnd(O,N);C.appendChild(J.cloneContents()||R.createTextNode(""));try{K.setEndAfter(x)}catch(P){}K.setStart(q,o);T.appendChild(K.cloneContents()||R.createTextNode(""));G=R.createRange();if(!p.previousSibling&&p.parentNode.nodeName==m){G.setStartBefore(p.parentNode)}else{if(J.startContainer.nodeName==m&&J.startOffset==0){G.setStartBefore(J.startContainer)}else{G.setStart(J.startContainer,J.startOffset)}}if(!x.nextSibling&&x.parentNode.nodeName==m){G.setEndAfter(x.parentNode)}else{G.setEnd(K.endContainer,K.endOffset)}G.deleteContents();if(b){v.getWin().scrollTo(0,L.y)}if(C.firstChild&&C.firstChild.nodeName==m){C.innerHTML=C.firstChild.innerHTML}if(T.firstChild&&T.firstChild.nodeName==m){T.innerHTML=T.firstChild.innerHTML}function S(y,s){var r=[],X,W,t;y.innerHTML="";if(V.keep_styles){W=s;do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(W.nodeName)){X=W.cloneNode(g);M.setAttrib(X,"id","");r.push(X)}}while(W=W.parentNode)}if(r.length>0){for(t=r.length-1,X=y;t>=0;t--){X=X.appendChild(r[t])}r[0].innerHTML=b?"\u00a0":"<br />";return r[0]}else{y.innerHTML=b?"\u00a0":"<br />"}}if(M.isEmpty(C)){S(C,O)}if(M.isEmpty(T)){A=S(T,q)}if(b&&parseFloat(opera.version())<9.5){G.insertNode(C);G.insertNode(T)}else{G.insertNode(T);G.insertNode(C)}T.normalize();C.normalize();v.selection.select(T,true);v.selection.collapse(true);B=v.dom.getPos(T).y;if(B<L.y||B+25>L.y+L.h){v.getWin().scrollTo(0,B<L.y?B:B-L.h+25)}v.undoManager.add();return g},backspaceDelete:function(u,B){var C=this,s=C.editor,y=s.getBody(),q=s.dom,p,v=s.selection,o=v.getRng(),x=o.startContainer,p,z,A,m;if(!B&&o.collapsed&&x.nodeType==1&&o.startOffset==x.childNodes.length){m=new l.dom.TreeWalker(x.lastChild,x);for(p=x.lastChild;p;p=m.prev()){if(p.nodeType==3){o.setStart(p,p.nodeValue.length);o.collapse(true);v.setRng(o);return}}}if(x&&s.dom.isBlock(x)&&!/^(TD|TH)$/.test(x.nodeName)&&B){if(x.childNodes.length==0||(x.childNodes.length==1&&x.firstChild.nodeName=="BR")){p=x;while((p=p.previousSibling)&&!s.dom.isBlock(p)){}if(p){if(x!=y.firstChild){z=s.dom.doc.createTreeWalker(p,NodeFilter.SHOW_TEXT,null,g);while(A=z.nextNode()){p=A}o=s.getDoc().createRange();o.setStart(p,p.nodeValue?p.nodeValue.length:0);o.setEnd(p,p.nodeValue?p.nodeValue.length:0);v.setRng(o);s.dom.remove(x)}return j.cancel(u)}}}}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each,e=c.extend;c.create("tinymce.ControlManager",{ControlManager:function(f,j){var h=this,g;j=j||{};h.editor=f;h.controls={};h.onAdd=new c.util.Dispatcher(h);h.onPostRender=new c.util.Dispatcher(h);h.prefix=j.prefix||f.id+"_";h._cls={};h.onPostRender.add(function(){d(h.controls,function(i){i.postRender()})})},get:function(f){return this.controls[this.prefix+f]||this.controls[f]},setActive:function(h,f){var g=null;if(g=this.get(h)){g.setActive(f)}return g},setDisabled:function(h,f){var g=null;if(g=this.get(h)){g.setDisabled(f)}return g},add:function(g){var f=this;if(g){f.controls[g.id]=g;f.onAdd.dispatch(g,f)}return g},createControl:function(i){var h,g=this,f=g.editor;d(f.plugins,function(j){if(j.createControl){h=j.createControl(i,g);if(h){return false}}});switch(i){case"|":case"separator":return g.createSeparator()}if(!h&&f.buttons&&(h=f.buttons[i])){return g.createButton(i,h)}return g.add(h)},createDropMenu:function(f,n,h){var m=this,i=m.editor,j,g,k,l;n=e({"class":"mceDropDown",constrain:i.settings.constrain_menus},n);n["class"]=n["class"]+" "+i.getParam("skin")+"Skin";if(k=i.getParam("skin_variant")){n["class"]+=" "+i.getParam("skin")+"Skin"+k.substring(0,1).toUpperCase()+k.substring(1)}f=m.prefix+f;l=h||m._cls.dropmenu||c.ui.DropMenu;j=m.controls[f]=new l(f,n);j.onAddItem.add(function(r,q){var p=q.settings;p.title=i.getLang(p.title,p.title);if(!p.onclick){p.onclick=function(o){if(p.cmd){i.execCommand(p.cmd,p.ui||false,p.value)}}}});i.onRemove.add(function(){j.destroy()});if(c.isIE){j.onShowMenu.add(function(){i.focus();g=i.selection.getBookmark(1)});j.onHideMenu.add(function(){if(g){i.selection.moveToBookmark(g);g=0}})}return m.add(j)},createListBox:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.scope=i.scope||g;if(!i.onselect){i.onselect=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}i=e({title:i.title,"class":"mce_"+m,scope:i.scope,control_manager:h},i);m=h.prefix+m;if(g.settings.use_native_selects){k=new c.ui.NativeListBox(m,i)}else{f=l||h._cls.listbox||c.ui.ListBox;k=new f(m,i,g)}h.controls[m]=k;if(c.isWebKit){k.onPostRender.add(function(p,o){a.add(o,"mousedown",function(){g.bookmark=g.selection.getBookmark(1)});a.add(o,"focus",function(){g.selection.moveToBookmark(g.bookmark);g.bookmark=null})})}if(k.hideMenu){g.onMouseDown.add(k.hideMenu,k)}return h.add(k)},createButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.label=g.translate(i.label);i.scope=i.scope||g;if(!i.onclick&&!i.menu_button){i.onclick=function(){g.execCommand(i.cmd,i.ui||false,i.value)}}i=e({title:i.title,"class":"mce_"+m,unavailable_prefix:g.getLang("unavailable",""),scope:i.scope,control_manager:h},i);m=h.prefix+m;if(i.menu_button){f=l||h._cls.menubutton||c.ui.MenuButton;k=new f(m,i,g);g.onMouseDown.add(k.hideMenu,k)}else{f=h._cls.button||c.ui.Button;k=new f(m,i,g)}return h.add(k)},createMenuButton:function(h,f,g){f=f||{};f.menu_button=1;return this.createButton(h,f,g)},createSplitButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.scope=i.scope||g;if(!i.onclick){i.onclick=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}if(!i.onselect){i.onselect=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}i=e({title:i.title,"class":"mce_"+m,scope:i.scope,control_manager:h},i);m=h.prefix+m;f=l||h._cls.splitbutton||c.ui.SplitButton;k=h.add(new f(m,i,g));g.onMouseDown.add(k.hideMenu,k);return k},createColorSplitButton:function(f,n,h){var l=this,j=l.editor,i,k,m,g;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onclick){n.onclick=function(o){if(c.isIE){g=j.selection.getBookmark(1)}j.execCommand(n.cmd,n.ui||false,o||n.value)}}if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,menu_class:j.getParam("skin")+"Skin",scope:n.scope,more_colors_title:j.getLang("more_colors")},n);f=l.prefix+f;m=h||l._cls.colorsplitbutton||c.ui.ColorSplitButton;k=new m(f,n,j);j.onMouseDown.add(k.hideMenu,k);j.onRemove.add(function(){k.destroy()});if(c.isIE){k.onShowMenu.add(function(){j.focus();g=j.selection.getBookmark(1)});k.onHideMenu.add(function(){if(g){j.selection.moveToBookmark(g);g=0}})}return l.add(k)},createToolbar:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||g._cls.toolbar||c.ui.Toolbar;i=new f(k,h,g.editor);if(g.get(k)){return null}return g.add(i)},createToolbarGroup:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||this._cls.toolbarGroup||c.ui.ToolbarGroup;i=new f(k,h,g.editor);if(g.get(k)){return null}return g.add(i)},createSeparator:function(g){var f=g||this._cls.separator||c.ui.Separator;return new f()},setControlType:function(g,f){return this._cls[g.toLowerCase()]=f},destroy:function(){d(this.controls,function(f){f.destroy()});this.controls=null}})})(tinymce);(function(d){var a=d.util.Dispatcher,e=d.each,c=d.isIE,b=d.isOpera;d.create("tinymce.WindowManager",{WindowManager:function(f){var g=this;g.editor=f;g.onOpen=new a(g);g.onClose=new a(g);g.params={};g.features={}},open:function(z,h){var v=this,k="",n,m,i=v.editor.settings.dialog_type=="modal",q,o,j,g=d.DOM.getViewPort(),r;z=z||{};h=h||{};o=b?g.w:screen.width;j=b?g.h:screen.height;z.name=z.name||"mc_"+new Date().getTime();z.width=parseInt(z.width||320);z.height=parseInt(z.height||240);z.resizable=true;z.left=z.left||parseInt(o/2)-(z.width/2);z.top=z.top||parseInt(j/2)-(z.height/2);h.inline=false;h.mce_width=z.width;h.mce_height=z.height;h.mce_auto_focus=z.auto_focus;if(i){if(c){z.center=true;z.help=false;z.dialogWidth=z.width+"px";z.dialogHeight=z.height+"px";z.scroll=z.scrollbars||false}}e(z,function(p,f){if(d.is(p,"boolean")){p=p?"yes":"no"}if(!/^(name|url)$/.test(f)){if(c&&i){k+=(k?";":"")+f+":"+p}else{k+=(k?",":"")+f+"="+p}}});v.features=z;v.params=h;v.onOpen.dispatch(v,z,h);r=z.url||z.file;r=d._addVer(r);try{if(c&&i){q=1;window.showModalDialog(r,window,k)}else{q=window.open(r,z.name,k)}}catch(l){}if(!q){alert(v.editor.getLang("popup_blocked"))}},close:function(f){f.close();this.onClose.dispatch(this)},createInstance:function(i,h,g,m,l,k){var j=d.resolve(i);return new j(h,g,m,l,k)},confirm:function(h,f,i,g){g=g||window;f.call(i||this,g.confirm(this._decode(this.editor.getLang(h,h))))},alert:function(h,f,j,g){var i=this;g=g||window;g.alert(i._decode(i.editor.getLang(h,h)));if(f){f.call(j||i)}},resizeBy:function(f,g,h){h.resizeBy(f,g)},_decode:function(f){return d.DOM.decode(f).replace(/\\n/g,"\n")}})}(tinymce));(function(a){a.Formatter=function(V){var M={},O=a.each,c=V.dom,q=V.selection,t=a.dom.TreeWalker,K=new a.dom.RangeUtils(c),d=V.schema.isValidChild,F=c.isBlock,l=V.settings.forced_root_block,s=c.nodeIndex,E="\uFEFF",e=/^(src|href|style)$/,S=false,B=true,p,P={apply:[],remove:[]};function z(W){return W instanceof Array}function m(X,W){return c.getParents(X,W,c.getRoot())}function b(W){return W.nodeType===1&&(W.face==="mceinline"||W.style.fontFamily==="mceinline")}function R(W){return W?M[W]:M}function k(W,X){if(W){if(typeof(W)!=="string"){O(W,function(Z,Y){k(Y,Z)})}else{X=X.length?X:[X];O(X,function(Y){if(Y.deep===p){Y.deep=!Y.selector}if(Y.split===p){Y.split=!Y.selector||Y.inline}if(Y.remove===p&&Y.selector&&!Y.inline){Y.remove="none"}if(Y.selector&&Y.inline){Y.mixed=true;Y.block_expand=true}if(typeof(Y.classes)==="string"){Y.classes=Y.classes.split(/\s+/)}});M[W]=X}}}var i=function(X){var W;V.dom.getParent(X,function(Y){W=V.dom.getStyle(Y,"text-decoration");return W&&W!=="none"});return W};var I=function(W){var X;if(W.nodeType===1&&W.parentNode&&W.parentNode.nodeType===1){X=i(W.parentNode);if(V.dom.getStyle(W,"color")&&X){V.dom.setStyle(W,"text-decoration",X)}else{if(V.dom.getStyle(W,"textdecoration")===X){V.dom.setStyle(W,"text-decoration",null)}}}};function T(Z,ah,ac){var ad=R(Z),ai=ad[0],ag,X,af,ae=q.isCollapsed();function aa(am){var al=am.startContainer,ap=am.startOffset,ao,an;if(al.nodeType==1||al.nodeValue===""){al=al.nodeType==1?al.childNodes[ap]:al;if(al){ao=new t(al,al.parentNode);for(an=ao.current();an;an=ao.next()){if(an.nodeType==3&&!f(an)){am.setStart(an,0);break}}}}return am}function W(am,al){al=al||ai;if(am){if(al.onformat){al.onformat(am,al,ah,ac)}O(al.styles,function(ao,an){c.setStyle(am,an,r(ao,ah))});O(al.attributes,function(ao,an){c.setAttrib(am,an,r(ao,ah))});O(al.classes,function(an){an=r(an,ah);if(!c.hasClass(am,an)){c.addClass(am,an)}})}}function ab(){function an(au,ar){var at=new t(ar);for(ac=at.current();ac;ac=at.prev()){if(ac.childNodes.length>1||ac==au){return ac}}}var am=V.selection.getRng();var aq=am.startContainer;var al=am.endContainer;if(aq!=al&&am.endOffset==0){var ap=an(aq,al);var ao=ap.nodeType==3?ap.length:ap.childNodes.length;am.setEnd(ap,ao)}return am}function Y(ao,au,ar,aq,am){var al=[],an=-1,at,aw=-1,ap=-1,av;O(ao.childNodes,function(ay,ax){if(ay.nodeName==="UL"||ay.nodeName==="OL"){an=ax;at=ay;return false}});O(ao.childNodes,function(ay,ax){if(ay.nodeName==="SPAN"&&c.getAttrib(ay,"data-mce-type")=="bookmark"){if(ay.id==au.id+"_start"){aw=ax}else{if(ay.id==au.id+"_end"){ap=ax}}}});if(an<=0||(aw<an&&ap>an)){O(a.grep(ao.childNodes),am);return 0}else{av=ar.cloneNode(S);O(a.grep(ao.childNodes),function(ay,ax){if((aw<an&&ax<an)||(aw>an&&ax>an)){al.push(ay);ay.parentNode.removeChild(ay)}});if(aw<an){ao.insertBefore(av,at)}else{if(aw>an){ao.insertBefore(av,at.nextSibling)}}aq.push(av);O(al,function(ax){av.appendChild(ax)});return av}}function aj(am,ao){var al=[],ap,an;ap=ai.inline||ai.block;an=c.create(ap);W(an);K.walk(am,function(aq){var ar;function at(au){var ax=au.nodeName.toLowerCase(),aw=au.parentNode.nodeName.toLowerCase(),av;if(g(ax,"br")){ar=0;if(ai.block){c.remove(au)}return}if(ai.wrapper&&x(au,Z,ah)){ar=0;return}if(ai.block&&!ai.wrapper&&G(ax)){au=c.rename(au,ap);W(au);al.push(au);ar=0;return}if(ai.selector){O(ad,function(ay){if("collapsed" in ay&&ay.collapsed!==ae){return}if(c.is(au,ay.selector)&&!b(au)){W(au,ay);av=true}});if(!ai.inline||av){ar=0;return}}if(d(ap,ax)&&d(aw,ap)&&!(au.nodeType===3&&au.nodeValue.length===1&&au.nodeValue.charCodeAt(0)===65279)){if(!ar){ar=an.cloneNode(S);au.parentNode.insertBefore(ar,au);al.push(ar)}ar.appendChild(au)}else{if(ax=="li"&&ao){ar=Y(au,ao,an,al,at)}else{ar=0;O(a.grep(au.childNodes),at);ar=0}}}O(aq,at)});if(ai.wrap_links===false){O(al,function(aq){function ar(aw){var av,au,at;if(aw.nodeName==="A"){au=an.cloneNode(S);al.push(au);at=a.grep(aw.childNodes);for(av=0;av<at.length;av++){au.appendChild(at[av])}aw.appendChild(au)}O(a.grep(aw.childNodes),ar)}ar(aq)})}O(al,function(at){var aq;function au(aw){var av=0;O(aw.childNodes,function(ax){if(!f(ax)&&!H(ax)){av++}});return av}function ar(av){var ax,aw;O(av.childNodes,function(ay){if(ay.nodeType==1&&!H(ay)&&!b(ay)){ax=ay;return S}});if(ax&&h(ax,ai)){aw=ax.cloneNode(S);W(aw);c.replace(aw,av,B);c.remove(ax,1)}return aw||av}aq=au(at);if((al.length>1||!F(at))&&aq===0){c.remove(at,1);return}if(ai.inline||ai.wrapper){if(!ai.exact&&aq===1){at=ar(at)}O(ad,function(av){O(c.select(av.inline,at),function(ax){var aw;if(av.wrap_links===false){aw=ax.parentNode;do{if(aw.nodeName==="A"){return}}while(aw=aw.parentNode)}U(av,ah,ax,av.exact?ax:null)})});if(x(at.parentNode,Z,ah)){c.remove(at,1);at=0;return B}if(ai.merge_with_parents){c.getParent(at.parentNode,function(av){if(x(av,Z,ah)){c.remove(at,1);at=0;return B}})}if(at&&ai.merge_siblings!==false){at=u(C(at),at);at=u(at,C(at,B))}}})}if(ai){if(ac){X=c.createRng();X.setStartBefore(ac);X.setEndAfter(ac);aj(o(X,ad))}else{if(!ae||!ai.inline||c.select("td.mceSelected,th.mceSelected").length){var ak=V.selection.getNode();V.selection.setRng(ab());ag=q.getBookmark();aj(o(q.getRng(B),ad),ag);if(ai.styles&&(ai.styles.color||ai.styles.textDecoration)){a.walk(ak,I,"childNodes");I(ak)}q.moveToBookmark(ag);q.setRng(aa(q.getRng(B)));V.nodeChanged()}else{Q("apply",Z,ah)}}}}function A(Y,ah,ab){var ac=R(Y),aj=ac[0],ag,af,X;function aa(am){var al=am.startContainer,ar=am.startOffset,aq,ap,an,ao;if(al.nodeType==3&&ar>=al.nodeValue.length-1){al=al.parentNode;ar=s(al)+1}if(al.nodeType==1){an=al.childNodes;al=an[Math.min(ar,an.length-1)];aq=new t(al);if(ar>an.length-1){aq.next()}for(ap=aq.current();ap;ap=aq.next()){if(ap.nodeType==3&&!f(ap)){ao=c.create("a",null,E);ap.parentNode.insertBefore(ao,ap);am.setStart(ap,0);q.setRng(am);c.remove(ao);return}}}}function Z(ao){var an,am,al;an=a.grep(ao.childNodes);for(am=0,al=ac.length;am<al;am++){if(U(ac[am],ah,ao,ao)){break}}if(aj.deep){for(am=0,al=an.length;am<al;am++){Z(an[am])}}}function ad(al){var am;O(m(al.parentNode).reverse(),function(an){var ao;if(!am&&an.id!="_start"&&an.id!="_end"){ao=x(an,Y,ah);if(ao&&ao.split!==false){am=an}}});return am}function W(ao,al,aq,au){var av,at,ar,an,ap,am;if(ao){am=ao.parentNode;for(av=al.parentNode;av&&av!=am;av=av.parentNode){at=av.cloneNode(S);for(ap=0;ap<ac.length;ap++){if(U(ac[ap],ah,at,at)){at=0;break}}if(at){if(ar){at.appendChild(ar)}if(!an){an=at}ar=at}}if(au&&(!aj.mixed||!F(ao))){al=c.split(ao,al)}if(ar){aq.parentNode.insertBefore(ar,aq);an.appendChild(aq)}}return al}function ai(al){return W(ad(al),al,al,true)}function ae(an){var am=c.get(an?"_start":"_end"),al=am[an?"firstChild":"lastChild"];if(H(al)){al=al[an?"firstChild":"lastChild"]}c.remove(am,true);return al}function ak(al){var am,an;al=o(al,ac,B);if(aj.split){am=J(al,B);an=J(al);if(am!=an){am=N(am,"span",{id:"_start","data-mce-type":"bookmark"});an=N(an,"span",{id:"_end","data-mce-type":"bookmark"});ai(am);ai(an);am=ae(B);an=ae()}else{am=an=ai(am)}al.startContainer=am.parentNode;al.startOffset=s(am);al.endContainer=an.parentNode;al.endOffset=s(an)+1}K.walk(al,function(ao){O(ao,function(ap){Z(ap);if(ap.nodeType===1&&V.dom.getStyle(ap,"text-decoration")==="underline"&&ap.parentNode&&i(ap.parentNode)==="underline"){U({deep:false,exact:true,inline:"span",styles:{textDecoration:"underline"}},null,ap)}})})}if(ab){X=c.createRng();X.setStartBefore(ab);X.setEndAfter(ab);ak(X);return}if(!q.isCollapsed()||!aj.inline||c.select("td.mceSelected,th.mceSelected").length){ag=q.getBookmark();ak(q.getRng(B));q.moveToBookmark(ag);if(j(Y,ah,q.getStart())){aa(q.getRng(true))}V.nodeChanged()}else{Q("remove",Y,ah)}}function D(X,Z,Y){var W=R(X);if(j(X,Z,Y)&&(!("toggle" in W[0])||W[0]["toggle"])){A(X,Z,Y)}else{T(X,Z,Y)}}function x(X,W,ac,aa){var Y=R(W),ad,ab,Z;function ae(ai,ak,al){var ah,aj,af=ak[al],ag;if(ak.onmatch){return ak.onmatch(ai,ak,al)}if(af){if(af.length===p){for(ah in af){if(af.hasOwnProperty(ah)){if(al==="attributes"){aj=c.getAttrib(ai,ah)}else{aj=L(ai,ah)}if(aa&&!aj&&!ak.exact){return}if((!aa||ak.exact)&&!g(aj,r(af[ah],ac))){return}}}}else{for(ag=0;ag<af.length;ag++){if(al==="attributes"?c.getAttrib(ai,af[ag]):L(ai,af[ag])){return ak}}}}return ak}if(Y&&X){for(ab=0;ab<Y.length;ab++){ad=Y[ab];if(h(X,ad)&&ae(X,ad,"attributes")&&ae(X,ad,"styles")){if(Z=ad.classes){for(ab=0;ab<Z.length;ab++){if(!c.hasClass(X,Z[ab])){return}}}return ad}}}}function j(Y,ab,aa){var X,Z;function W(ac){ac=c.getParent(ac,function(ad){return !!x(ad,Y,ab,true)});return x(ac,Y,ab)}if(aa){return W(aa)}if(q.isCollapsed()){for(Z=P.apply.length-1;Z>=0;Z--){if(P.apply[Z].name==Y){return true}}for(Z=P.remove.length-1;Z>=0;Z--){if(P.remove[Z].name==Y){return false}}return W(q.getNode())}aa=q.getNode();if(W(aa)){return B}X=q.getStart();if(X!=aa){if(W(X)){return B}}return S}function v(ad,ac){var aa,ab=[],Z={},Y,X,W;if(q.isCollapsed()){for(X=0;X<ad.length;X++){for(Y=P.remove.length-1;Y>=0;Y--){W=ad[X];if(P.remove[Y].name==W){Z[W]=true;break}}}for(Y=P.apply.length-1;Y>=0;Y--){for(X=0;X<ad.length;X++){W=ad[X];if(!Z[W]&&P.apply[Y].name==W){Z[W]=true;ab.push(W)}}}}aa=q.getStart();c.getParent(aa,function(ag){var af,ae;for(af=0;af<ad.length;af++){ae=ad[af];if(!Z[ae]&&x(ag,ae,ac)){Z[ae]=true;ab.push(ae)}}});return ab}function y(aa){var ac=R(aa),Z,Y,ab,X,W;if(ac){Z=q.getStart();Y=m(Z);for(X=ac.length-1;X>=0;X--){W=ac[X].selector;if(!W){return B}for(ab=Y.length-1;ab>=0;ab--){if(c.is(Y[ab],W)){return B}}}}return S}a.extend(this,{get:R,register:k,apply:T,remove:A,toggle:D,match:j,matchAll:v,matchNode:x,canApply:y});function h(W,X){if(g(W,X.inline)){return B}if(g(W,X.block)){return B}if(X.selector){return c.is(W,X.selector)}}function g(X,W){X=X||"";W=W||"";X=""+(X.nodeName||X);W=""+(W.nodeName||W);return X.toLowerCase()==W.toLowerCase()}function L(X,W){var Y=c.getStyle(X,W);if(W=="color"||W=="backgroundColor"){Y=c.toHex(Y)}if(W=="fontWeight"&&Y==700){Y="bold"}return""+Y}function r(W,X){if(typeof(W)!="string"){W=W(X)}else{if(X){W=W.replace(/%(\w+)/g,function(Z,Y){return X[Y]||Z})}}return W}function f(W){return W&&W.nodeType===3&&/^([\s\r\n]+|)$/.test(W.nodeValue)}function N(Y,X,W){var Z=c.create(X,W);Y.parentNode.insertBefore(Z,Y);Z.appendChild(Y);return Z}function o(W,ag,Z){var Y=W.startContainer,ad=W.startOffset,aj=W.endContainer,ae=W.endOffset,ai,af,ac;function ah(am,an,ak,al){var ao,ap;al=al||c.getRoot();for(;;){ao=am.parentNode;if(ao==al||(!ag[0].block_expand&&F(ao))){return am}for(ai=ao[an];ai&&ai!=am;ai=ai[ak]){if(ai.nodeType==1&&!H(ai)){return am}if(ai.nodeType==3&&!f(ai)){return am}}am=am.parentNode}return am}function ab(ak,al){if(al===p){al=ak.nodeType===3?ak.length:ak.childNodes.length}while(ak&&ak.hasChildNodes()){ak=ak.childNodes[al];if(ak){al=ak.nodeType===3?ak.length:ak.childNodes.length}}return{node:ak,offset:al}}if(Y.nodeType==1&&Y.hasChildNodes()){af=Y.childNodes.length-1;Y=Y.childNodes[ad>af?af:ad];if(Y.nodeType==3){ad=0}}if(aj.nodeType==1&&aj.hasChildNodes()){af=aj.childNodes.length-1;aj=aj.childNodes[ae>af?af:ae-1];if(aj.nodeType==3){ae=aj.nodeValue.length}}if(H(Y.parentNode)){Y=Y.parentNode}if(H(Y)){Y=Y.nextSibling||Y}if(H(aj.parentNode)){ae=c.nodeIndex(aj);aj=aj.parentNode}if(H(aj)&&aj.previousSibling){aj=aj.previousSibling;ae=aj.length}if(ag[0].inline){ac=ab(aj,ae);if(ac.node){while(ac.node&&ac.offset===0&&ac.node.previousSibling){ac=ab(ac.node.previousSibling)}if(ac.node&&ac.offset>0&&ac.node.nodeType===3&&ac.node.nodeValue.charAt(ac.offset-1)===" "){if(ac.offset>1){aj=ac.node;aj.splitText(ac.offset-1)}else{if(ac.node.previousSibling){aj=ac.node.previousSibling}}}}}if(ag[0].inline||ag[0].block_expand){Y=ah(Y,"firstChild","nextSibling");aj=ah(aj,"lastChild","previousSibling")}if(ag[0].selector&&ag[0].expand!==S&&!ag[0].inline){function aa(al,ak){var am,an,ap,ao;if(al.nodeType==3&&al.nodeValue.length==0&&al[ak]){al=al[ak]}am=m(al);for(an=0;an<am.length;an++){for(ap=0;ap<ag.length;ap++){ao=ag[ap];if("collapsed" in ao&&ao.collapsed!==W.collapsed){continue}if(c.is(am[an],ao.selector)){return am[an]}}}return al}Y=aa(Y,"previousSibling");aj=aa(aj,"nextSibling")}if(ag[0].block||ag[0].selector){function X(al,ak,an){var am;if(!ag[0].wrapper){am=c.getParent(al,ag[0].block)}if(!am){am=c.getParent(al.nodeType==3?al.parentNode:al,F)}if(am&&ag[0].wrapper){am=m(am,"ul,ol").reverse()[0]||am}if(!am){am=al;while(am[ak]&&!F(am[ak])){am=am[ak];if(g(am,"br")){break}}}return am||al}Y=X(Y,"previousSibling");aj=X(aj,"nextSibling");if(ag[0].block){if(!F(Y)){Y=ah(Y,"firstChild","nextSibling")}if(!F(aj)){aj=ah(aj,"lastChild","previousSibling")}}}if(Y.nodeType==1){ad=s(Y);Y=Y.parentNode}if(aj.nodeType==1){ae=s(aj)+1;aj=aj.parentNode}return{startContainer:Y,startOffset:ad,endContainer:aj,endOffset:ae}}function U(ac,ab,Z,W){var Y,X,aa;if(!h(Z,ac)){return S}if(ac.remove!="all"){O(ac.styles,function(ae,ad){ae=r(ae,ab);if(typeof(ad)==="number"){ad=ae;W=0}if(!W||g(L(W,ad),ae)){c.setStyle(Z,ad,"")}aa=1});if(aa&&c.getAttrib(Z,"style")==""){Z.removeAttribute("style");Z.removeAttribute("data-mce-style")}O(ac.attributes,function(af,ad){var ae;af=r(af,ab);if(typeof(ad)==="number"){ad=af;W=0}if(!W||g(c.getAttrib(W,ad),af)){if(ad=="class"){af=c.getAttrib(Z,ad);if(af){ae="";O(af.split(/\s+/),function(ag){if(/mce\w+/.test(ag)){ae+=(ae?" ":"")+ag}});if(ae){c.setAttrib(Z,ad,ae);return}}}if(ad=="class"){Z.removeAttribute("className")}if(e.test(ad)){Z.removeAttribute("data-mce-"+ad)}Z.removeAttribute(ad)}});O(ac.classes,function(ad){ad=r(ad,ab);if(!W||c.hasClass(W,ad)){c.removeClass(Z,ad)}});X=c.getAttribs(Z);for(Y=0;Y<X.length;Y++){if(X[Y].nodeName.indexOf("_")!==0){return S}}}if(ac.remove!="none"){n(Z,ac);return B}}function n(Y,Z){var W=Y.parentNode,X;if(Z.block){if(!l){function aa(ac,ab,ad){ac=C(ac,ab,ad);return !ac||(ac.nodeName=="BR"||F(ac))}if(F(Y)&&!F(W)){if(!aa(Y,S)&&!aa(Y.firstChild,B,1)){Y.insertBefore(c.create("br"),Y.firstChild)}if(!aa(Y,B)&&!aa(Y.lastChild,S,1)){Y.appendChild(c.create("br"))}}}else{if(W==c.getRoot()){if(!Z.list_block||!g(Y,Z.list_block)){O(a.grep(Y.childNodes),function(ab){if(d(l,ab.nodeName.toLowerCase())){if(!X){X=N(ab,l)}else{X.appendChild(ab)}}else{X=0}})}}}}if(Z.selector&&Z.inline&&!g(Z.inline,Y)){return}c.remove(Y,1)}function C(X,W,Y){if(X){W=W?"nextSibling":"previousSibling";for(X=Y?X:X[W];X;X=X[W]){if(X.nodeType==1||!f(X)){return X}}}}function H(W){return W&&W.nodeType==1&&W.getAttribute("data-mce-type")=="bookmark"}function u(aa,Z){var W,Y,X;function ac(af,ae){if(af.nodeName!=ae.nodeName){return S}function ad(ah){var ai={};O(c.getAttribs(ah),function(aj){var ak=aj.nodeName.toLowerCase();if(ak.indexOf("_")!==0&&ak!=="style"){ai[ak]=c.getAttrib(ah,ak)}});return ai}function ag(ak,aj){var ai,ah;for(ah in ak){if(ak.hasOwnProperty(ah)){ai=aj[ah];if(ai===p){return S}if(ak[ah]!=ai){return S}delete aj[ah]}}for(ah in aj){if(aj.hasOwnProperty(ah)){return S}}return B}if(!ag(ad(af),ad(ae))){return S}if(!ag(c.parseStyle(c.getAttrib(af,"style")),c.parseStyle(c.getAttrib(ae,"style")))){return S}return B}if(aa&&Z){function ab(ae,ad){for(Y=ae;Y;Y=Y[ad]){if(Y.nodeType==3&&Y.nodeValue.length!==0){return ae}if(Y.nodeType==1&&!H(Y)){return Y}}return ae}aa=ab(aa,"previousSibling");Z=ab(Z,"nextSibling");if(ac(aa,Z)){for(Y=aa.nextSibling;Y&&Y!=Z;){X=Y;Y=Y.nextSibling;aa.appendChild(X)}c.remove(Z);O(a.grep(Z.childNodes),function(ad){aa.appendChild(ad)});return aa}}return Z}function G(W){return/^(h[1-6]|p|div|pre|address|dl|dt|dd)$/.test(W)}function J(X,aa){var W,Z,Y;W=X[aa?"startContainer":"endContainer"];Z=X[aa?"startOffset":"endOffset"];if(W.nodeType==1){Y=W.childNodes.length-1;if(!aa&&Z){Z--}W=W.childNodes[Z>Y?Y:Z]}return W}function Q(ad,Y,ac){var aa,X=P[ad],ae=P[ad=="apply"?"remove":"apply"];function af(){return P.apply.length||P.remove.length}function ab(){P.apply=[];P.remove=[]}function ag(ah){O(P.apply.reverse(),function(ai){T(ai.name,ai.vars,ah);if(ai.name==="forecolor"&&ai.vars.value){I(ah.parentNode)}});O(P.remove.reverse(),function(ai){A(ai.name,ai.vars,ah)});c.remove(ah,1);ab()}for(aa=X.length-1;aa>=0;aa--){if(X[aa].name==Y){return}}X.push({name:Y,vars:ac});for(aa=ae.length-1;aa>=0;aa--){if(ae[aa].name==Y){ae.splice(aa,1)}}if(af()){V.getDoc().execCommand("FontName",false,"mceinline");P.lastRng=q.getRng();O(c.select("font,span"),function(ai){var ah;if(b(ai)){ah=q.getBookmark();ag(ai);q.moveToBookmark(ah);V.nodeChanged()}});if(!P.isListening&&af()){P.isListening=true;function W(ai,aj){var ah=c.createRng();ag(ai);ah.setStart(aj,aj.nodeValue.length);ah.setEnd(aj,aj.nodeValue.length);q.setRng(ah);V.nodeChanged()}var Z=false;O("onKeyDown,onKeyUp,onKeyPress,onMouseUp".split(","),function(ah){V[ah].addToTop(function(ai,al){if(al.keyCode==13&&!al.shiftKey){Z=true;return}if(af()&&!a.dom.RangeUtils.compareRanges(P.lastRng,q.getRng())){var aj=false;O(c.select("font,span"),function(ao){var ap,an;if(b(ao)){aj=true;ap=ao.firstChild;while(ap&&ap.nodeType!=3){ap=ap.firstChild}if(ap){W(ao,ap)}else{c.remove(ao)}}});if(Z&&!aj){var ak=q.getNode();var am=ak;while(am&&am.nodeType!=3){am=am.firstChild}if(am){ak=am.parentNode;while(!F(ak)){ak=ak.parentNode}W(ak,am)}}if(al.type=="keyup"||al.type=="mouseup"){ab();Z=false}}})})}}}}})(tinymce);tinymce.onAddEditor.add(function(e,a){var d,h,g,c=a.settings;if(c.inline_styles){h=e.explode(c.font_size_style_values);function b(j,i){e.each(i,function(l,k){if(l){g.setStyle(j,k,l)}});g.rename(j,"span")}d={font:function(j,i){b(i,{backgroundColor:i.style.backgroundColor,color:i.color,fontFamily:i.face,fontSize:h[parseInt(i.size)-1]})},u:function(j,i){b(i,{textDecoration:"underline"})},strike:function(j,i){b(i,{textDecoration:"line-through"})}};function f(i,j){g=i.dom;if(c.convert_fonts_to_spans){e.each(g.select("font,u,strike",j.node),function(k){d[k.nodeName.toLowerCase()](a.dom,k)})}}a.onPreProcess.add(f);a.onSetContent.add(f);a.onInit.add(function(){a.selection.onSetContent.add(f)})}});
\ No newline at end of file
+(function(d){var a=/^\s*|\s*$/g,e,c="B".replace(/A(.)|B/,"$1")==="$1";var b={majorVersion:"3",minorVersion:"4.9",releaseDate:"2012-02-23",_init:function(){var s=this,q=document,o=navigator,g=o.userAgent,m,f,l,k,j,r;s.isOpera=d.opera&&opera.buildNumber;s.isWebKit=/WebKit/.test(g);s.isIE=!s.isWebKit&&!s.isOpera&&(/MSIE/gi).test(g)&&(/Explorer/gi).test(o.appName);s.isIE6=s.isIE&&/MSIE [56]/.test(g);s.isIE7=s.isIE&&/MSIE [7]/.test(g);s.isIE8=s.isIE&&/MSIE [8]/.test(g);s.isIE9=s.isIE&&/MSIE [9]/.test(g);s.isGecko=!s.isWebKit&&/Gecko/.test(g);s.isMac=g.indexOf("Mac")!=-1;s.isAir=/adobeair/i.test(g);s.isIDevice=/(iPad|iPhone)/.test(g);s.isIOS5=s.isIDevice&&g.match(/AppleWebKit\/(\d*)/)[1]>=534;if(d.tinyMCEPreInit){s.suffix=tinyMCEPreInit.suffix;s.baseURL=tinyMCEPreInit.base;s.query=tinyMCEPreInit.query;return}s.suffix="";f=q.getElementsByTagName("base");for(m=0;m<f.length;m++){if(r=f[m].href){if(/^https?:\/\/[^\/]+$/.test(r)){r+="/"}k=r?r.match(/.*\//)[0]:""}}function h(i){if(i.src&&/tiny_mce(|_gzip|_jquery|_prototype|_full)(_dev|_src)?.js/.test(i.src)){if(/_(src|dev)\.js/g.test(i.src)){s.suffix="_src"}if((j=i.src.indexOf("?"))!=-1){s.query=i.src.substring(j+1)}s.baseURL=i.src.substring(0,i.src.lastIndexOf("/"));if(k&&s.baseURL.indexOf("://")==-1&&s.baseURL.indexOf("/")!==0){s.baseURL=k+s.baseURL}return s.baseURL}return null}f=q.getElementsByTagName("script");for(m=0;m<f.length;m++){if(h(f[m])){return}}l=q.getElementsByTagName("head")[0];if(l){f=l.getElementsByTagName("script");for(m=0;m<f.length;m++){if(h(f[m])){return}}}return},is:function(g,f){if(!f){return g!==e}if(f=="array"&&(g.hasOwnProperty&&g instanceof Array)){return true}return typeof(g)==f},makeMap:function(f,j,h){var g;f=f||[];j=j||",";if(typeof(f)=="string"){f=f.split(j)}h=h||{};g=f.length;while(g--){h[f[g]]={}}return h},each:function(i,f,h){var j,g;if(!i){return 0}h=h||i;if(i.length!==e){for(j=0,g=i.length;j<g;j++){if(f.call(h,i[j],j,i)===false){return 0}}}else{for(j in i){if(i.hasOwnProperty(j)){if(f.call(h,i[j],j,i)===false){return 0}}}}return 1},map:function(g,h){var i=[];b.each(g,function(f){i.push(h(f))});return i},grep:function(g,h){var i=[];b.each(g,function(f){if(!h||h(f)){i.push(f)}});return i},inArray:function(g,h){var j,f;if(g){for(j=0,f=g.length;j<f;j++){if(g[j]===h){return j}}}return -1},extend:function(k,j){var h,g,f=arguments;for(h=1,g=f.length;h<g;h++){j=f[h];b.each(j,function(i,l){if(i!==e){k[l]=i}})}return k},trim:function(f){return(f?""+f:"").replace(a,"")},create:function(o,f,j){var n=this,g,i,k,l,h,m=0;o=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(o);k=o[3].match(/(^|\.)(\w+)$/i)[2];i=n.createNS(o[3].replace(/\.\w+$/,""),j);if(i[k]){return}if(o[2]=="static"){i[k]=f;if(this.onCreate){this.onCreate(o[2],o[3],i[k])}return}if(!f[k]){f[k]=function(){};m=1}i[k]=f[k];n.extend(i[k].prototype,f);if(o[5]){g=n.resolve(o[5]).prototype;l=o[5].match(/\.(\w+)$/i)[1];h=i[k];if(m){i[k]=function(){return g[l].apply(this,arguments)}}else{i[k]=function(){this.parent=g[l];return h.apply(this,arguments)}}i[k].prototype[k]=i[k];n.each(g,function(p,q){i[k].prototype[q]=g[q]});n.each(f,function(p,q){if(g[q]){i[k].prototype[q]=function(){this.parent=g[q];return p.apply(this,arguments)}}else{if(q!=k){i[k].prototype[q]=p}}})}n.each(f["static"],function(p,q){i[k][q]=p});if(this.onCreate){this.onCreate(o[2],o[3],i[k].prototype)}},walk:function(i,h,j,g){g=g||this;if(i){if(j){i=i[j]}b.each(i,function(k,f){if(h.call(g,k,f,j)===false){return false}b.walk(k,h,j,g)})}},createNS:function(j,h){var g,f;h=h||d;j=j.split(".");for(g=0;g<j.length;g++){f=j[g];if(!h[f]){h[f]={}}h=h[f]}return h},resolve:function(j,h){var g,f;h=h||d;j=j.split(".");for(g=0,f=j.length;g<f;g++){h=h[j[g]];if(!h){break}}return h},addUnload:function(j,i){var h=this;j={func:j,scope:i||this};if(!h.unloads){function g(){var f=h.unloads,l,m;if(f){for(m in f){l=f[m];if(l&&l.func){l.func.call(l.scope,1)}}if(d.detachEvent){d.detachEvent("onbeforeunload",k);d.detachEvent("onunload",g)}else{if(d.removeEventListener){d.removeEventListener("unload",g,false)}}h.unloads=l=f=w=g=0;if(d.CollectGarbage){CollectGarbage()}}}function k(){var l=document;if(l.readyState=="interactive"){function f(){l.detachEvent("onstop",f);if(g){g()}l=0}if(l){l.attachEvent("onstop",f)}d.setTimeout(function(){if(l){l.detachEvent("onstop",f)}},0)}}if(d.attachEvent){d.attachEvent("onunload",g);d.attachEvent("onbeforeunload",k)}else{if(d.addEventListener){d.addEventListener("unload",g,false)}}h.unloads=[j]}else{h.unloads.push(j)}return j},removeUnload:function(i){var g=this.unloads,h=null;b.each(g,function(j,f){if(j&&j.func==i){g.splice(f,1);h=i;return false}});return h},explode:function(f,g){return f?b.map(f.split(g||","),b.trim):f},_addVer:function(g){var f;if(!this.query){return g}f=(g.indexOf("?")==-1?"?":"&")+this.query;if(g.indexOf("#")==-1){return g+f}return g.replace("#",f+"#")},_replace:function(h,f,g){if(c){return g.replace(h,function(){var l=f,j=arguments,k;for(k=0;k<j.length-2;k++){if(j[k]===e){l=l.replace(new RegExp("\\$"+k,"g"),"")}else{l=l.replace(new RegExp("\\$"+k,"g"),j[k])}}return l})}return g.replace(h,f)}};b._init();d.tinymce=d.tinyMCE=b})(window);tinymce.create("tinymce.util.Dispatcher",{scope:null,listeners:null,Dispatcher:function(a){this.scope=a||this;this.listeners=[]},add:function(a,b){this.listeners.push({cb:a,scope:b||this.scope});return a},addToTop:function(a,b){this.listeners.unshift({cb:a,scope:b||this.scope});return a},remove:function(a){var b=this.listeners,c=null;tinymce.each(b,function(e,d){if(a==e.cb){c=a;b.splice(d,1);return false}});return c},dispatch:function(){var f,d=arguments,e,b=this.listeners,g;for(e=0;e<b.length;e++){g=b[e];f=g.cb.apply(g.scope,d.length>0?d:[g.scope]);if(f===false){break}}return f}});(function(){var a=tinymce.each;tinymce.create("tinymce.util.URI",{URI:function(e,g){var f=this,i,d,c,h;e=tinymce.trim(e);g=f.settings=g||{};if(/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e)){f.source=e;return}if(e.indexOf("/")===0&&e.indexOf("//")!==0){e=(g.base_uri?g.base_uri.protocol||"http":"http")+"://mce_host"+e}if(!/^[\w-]*:?\/\//.test(e)){h=g.base_uri?g.base_uri.path:new tinymce.util.URI(location.href).directory;e=((g.base_uri&&g.base_uri.protocol)||"http")+"://mce_host"+f.toAbsPath(h,e)}e=e.replace(/@@/g,"(mce_at)");e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e);a(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(b,j){var k=e[j];if(k){k=k.replace(/\(mce_at\)/g,"@@")}f[b]=k});if(c=g.base_uri){if(!f.protocol){f.protocol=c.protocol}if(!f.userInfo){f.userInfo=c.userInfo}if(!f.port&&f.host=="mce_host"){f.port=c.port}if(!f.host||f.host=="mce_host"){f.host=c.host}f.source=""}},setPath:function(c){var b=this;c=/^(.*?)\/?(\w+)?$/.exec(c);b.path=c[0];b.directory=c[1];b.file=c[2];b.source="";b.getURI()},toRelative:function(b){var c=this,d;if(b==="./"){return b}b=new tinymce.util.URI(b,{base_uri:c});if((b.host!="mce_host"&&c.host!=b.host&&b.host)||c.port!=b.port||c.protocol!=b.protocol){return b.getURI()}d=c.toRelPath(c.path,b.path);if(b.query){d+="?"+b.query}if(b.anchor){d+="#"+b.anchor}return d},toAbsolute:function(b,c){var b=new tinymce.util.URI(b,{base_uri:this});return b.getURI(this.host==b.host&&this.protocol==b.protocol?c:0)},toRelPath:function(g,h){var c,f=0,d="",e,b;g=g.substring(0,g.lastIndexOf("/"));g=g.split("/");c=h.split("/");if(g.length>=c.length){for(e=0,b=g.length;e<b;e++){if(e>=c.length||g[e]!=c[e]){f=e+1;break}}}if(g.length<c.length){for(e=0,b=c.length;e<b;e++){if(e>=g.length||g[e]!=c[e]){f=e+1;break}}}if(f==1){return h}for(e=0,b=g.length-(f-1);e<b;e++){d+="../"}for(e=f-1,b=c.length;e<b;e++){if(e!=f-1){d+="/"+c[e]}else{d+=c[e]}}return d},toAbsPath:function(e,f){var c,b=0,h=[],d,g;d=/\/$/.test(f)?"/":"";e=e.split("/");f=f.split("/");a(e,function(i){if(i){h.push(i)}});e=h;for(c=f.length-1,h=[];c>=0;c--){if(f[c].length==0||f[c]=="."){continue}if(f[c]==".."){b++;continue}if(b>0){b--;continue}h.push(f[c])}c=e.length-b;if(c<=0){g=h.reverse().join("/")}else{g=e.slice(0,c).join("/")+"/"+h.reverse().join("/")}if(g.indexOf("/")!==0){g="/"+g}if(d&&g.lastIndexOf("/")!==g.length-1){g+=d}return g},getURI:function(d){var c,b=this;if(!b.source||d){c="";if(!d){if(b.protocol){c+=b.protocol+"://"}if(b.userInfo){c+=b.userInfo+"@"}if(b.host){c+=b.host}if(b.port){c+=":"+b.port}}if(b.path){c+=b.path}if(b.query){c+="?"+b.query}if(b.anchor){c+="#"+b.anchor}b.source=c}return b.source}})})();(function(){var a=tinymce.each;tinymce.create("static tinymce.util.Cookie",{getHash:function(d){var b=this.get(d),c;if(b){a(b.split("&"),function(e){e=e.split("=");c=c||{};c[unescape(e[0])]=unescape(e[1])})}return c},setHash:function(j,b,g,f,i,c){var h="";a(b,function(e,d){h+=(!h?"":"&")+escape(d)+"="+escape(e)});this.set(j,h,g,f,i,c)},get:function(i){var h=document.cookie,g,f=i+"=",d;if(!h){return}d=h.indexOf("; "+f);if(d==-1){d=h.indexOf(f);if(d!=0){return null}}else{d+=2}g=h.indexOf(";",d);if(g==-1){g=h.length}return unescape(h.substring(d+f.length,g))},set:function(i,b,g,f,h,c){document.cookie=i+"="+escape(b)+((g)?"; expires="+g.toGMTString():"")+((f)?"; path="+escape(f):"")+((h)?"; domain="+h:"")+((c)?"; secure":"")},remove:function(e,b){var c=new Date();c.setTime(c.getTime()-1000);this.set(e,"",c,b,c)}})})();(function(){function serialize(o,quote){var i,v,t;quote=quote||'"';if(o==null){return"null"}t=typeof o;if(t=="string"){v="\bb\tt\nn\ff\rr\"\"''\\\\";return quote+o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(a,b){if(quote==='"'&&a==="'"){return a}i=v.indexOf(b);if(i+1){return"\\"+v.charAt(i+1)}a=b.charCodeAt().toString(16);return"\\u"+"0000".substring(a.length)+a})+quote}if(t=="object"){if(o.hasOwnProperty&&o instanceof Array){for(i=0,v="[";i<o.length;i++){v+=(i>0?",":"")+serialize(o[i],quote)}return v+"]"}v="{";for(i in o){if(o.hasOwnProperty(i)){v+=typeof o[i]!="function"?(v.length>1?","+quote:quote)+i+quote+":"+serialize(o[i],quote):""}}return v+"}"}return""+o}tinymce.util.JSON={serialize:serialize,parse:function(s){try{return eval("("+s+")")}catch(ex){}}}})();tinymce.create("static tinymce.util.XHR",{send:function(g){var a,e,b=window,h=0;g.scope=g.scope||this;g.success_scope=g.success_scope||g.scope;g.error_scope=g.error_scope||g.scope;g.async=g.async===false?false:true;g.data=g.data||"";function d(i){a=0;try{a=new ActiveXObject(i)}catch(c){}return a}a=b.XMLHttpRequest?new XMLHttpRequest():d("Microsoft.XMLHTTP")||d("Msxml2.XMLHTTP");if(a){if(a.overrideMimeType){a.overrideMimeType(g.content_type)}a.open(g.type||(g.data?"POST":"GET"),g.url,g.async);if(g.content_type){a.setRequestHeader("Content-Type",g.content_type)}a.setRequestHeader("X-Requested-With","XMLHttpRequest");a.send(g.data);function f(){if(!g.async||a.readyState==4||h++>10000){if(g.success&&h<10000&&a.status==200){g.success.call(g.success_scope,""+a.responseText,a,g)}else{if(g.error){g.error.call(g.error_scope,h>10000?"TIMED_OUT":"GENERAL",a,g)}}a=null}else{b.setTimeout(f,10)}}if(!g.async){return f()}e=b.setTimeout(f,10)}}});(function(){var c=tinymce.extend,b=tinymce.util.JSON,a=tinymce.util.XHR;tinymce.create("tinymce.util.JSONRequest",{JSONRequest:function(d){this.settings=c({},d);this.count=0},send:function(f){var e=f.error,d=f.success;f=c(this.settings,f);f.success=function(h,g){h=b.parse(h);if(typeof(h)=="undefined"){h={error:"JSON Parse error."}}if(h.error){e.call(f.error_scope||f.scope,h.error,g)}else{d.call(f.success_scope||f.scope,h.result)}};f.error=function(h,g){if(e){e.call(f.error_scope||f.scope,h,g)}};f.data=b.serialize({id:f.id||"c"+(this.count++),method:f.method,params:f.params});f.content_type="application/json";a.send(f)},"static":{sendRPC:function(d){return new tinymce.util.JSONRequest().send(d)}}})}());(function(a){a.VK={DELETE:46,BACKSPACE:8,ENTER:13,TAB:9,SPACEBAR:32,UP:38,DOWN:40,modifierPressed:function(b){return b.shiftKey||b.ctrlKey||b.altKey}}})(tinymce);(function(l){var j=l.VK,k=j.BACKSPACE,h=j.DELETE;function c(n){var p=n.dom,o=n.selection;n.onKeyDown.add(function(r,v){var q,x,t,u,s;s=v.keyCode==h;if((s||v.keyCode==k)&&!j.modifierPressed(v)){v.preventDefault();q=o.getRng();x=p.getParent(q.startContainer,p.isBlock);if(s){x=p.getNext(x,p.isBlock)}if(x){t=x.firstChild;while(t&&t.nodeType==3&&t.nodeValue.length==0){t=t.nextSibling}if(t&&t.nodeName==="SPAN"){u=t.cloneNode(false)}}r.getDoc().execCommand(s?"ForwardDelete":"Delete",false,null);x=p.getParent(q.startContainer,p.isBlock);l.each(p.select("span.Apple-style-span,font.Apple-style-span",x),function(y){var z=o.getBookmark();if(u){p.replace(u.cloneNode(false),y,true)}else{p.remove(y,true)}o.moveToBookmark(z)})}})}function d(n){function o(r){var q=n.dom.create("body");var s=r.cloneContents();q.appendChild(s);return n.selection.serializer.serialize(q,{format:"html"})}function p(q){var s=o(q);var t=n.dom.createRng();t.selectNode(n.getBody());var r=o(t);return s===r}n.onKeyDown.addToTop(function(r,t){var s=t.keyCode;if(s==h||s==k){var q=r.selection.getRng(true);if(!q.collapsed&&p(q)){r.setContent("",{format:"raw"});r.nodeChanged();t.preventDefault()}}})}function b(n){n.dom.bind(n.getDoc(),"focusin",function(){n.selection.setRng(n.selection.getRng())})}function e(n){n.onKeyDown.add(function(o,r){if(r.keyCode===k){if(o.selection.isCollapsed()&&o.selection.getRng(true).startOffset===0){var q=o.selection.getNode();var p=q.previousSibling;if(p&&p.nodeName&&p.nodeName.toLowerCase()==="hr"){o.dom.remove(p);l.dom.Event.cancel(r)}}}})}function g(n){if(!Range.prototype.getClientRects){n.onMouseDown.add(function(p,q){if(q.target.nodeName==="HTML"){var o=p.getBody();o.blur();setTimeout(function(){o.focus()},0)}})}}function f(n){n.onClick.add(function(o,p){p=p.target;if(/^(IMG|HR)$/.test(p.nodeName)){o.selection.getSel().setBaseAndExtent(p,0,p,1)}if(p.nodeName=="A"&&o.dom.hasClass(p,"mceItemAnchor")){o.selection.select(p)}o.nodeChanged()})}function i(n){n.onKeyDown.add(function(o,p){function q(r){var s=r.selection.getNode();var t="h1,h2,h3,h4,h5,h6";return r.dom.is(s,t)||r.dom.getParent(s,t)!==null}if(p.keyCode===j.ENTER&&!j.modifierPressed(p)&&q(o)){setTimeout(function(){var r=o.selection.getNode();if(o.dom.is(r,"p")){o.dom.setAttrib(r,"style",null);o.execCommand("mceCleanup")}},0)}})}function m(n){var p,o;n.dom.bind(n.getDoc(),"selectionchange",function(){if(o){clearTimeout(o);o=0}o=window.setTimeout(function(){var q=n.selection.getRng();if(!p||!l.dom.RangeUtils.compareRanges(q,p)){n.nodeChanged();p=q}},50)})}function a(n){document.body.setAttribute("role","application")}l.create("tinymce.util.Quirks",{Quirks:function(n){if(l.isWebKit){c(n);d(n);b(n);f(n);if(l.isIDevice){m(n)}}if(l.isIE){e(n);d(n);a(n);i(n)}if(l.isGecko){e(n);g(n)}}})})(tinymce);(function(j){var a,g,d,k=/[&<>\"\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,b=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,f=/[<>&\"\']/g,c=/&(#x|#)?([\w]+);/g,i={128:"\u20AC",130:"\u201A",131:"\u0192",132:"\u201E",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02C6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017D",145:"\u2018",146:"\u2019",147:"\u201C",148:"\u201D",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02DC",153:"\u2122",154:"\u0161",155:"\u203A",156:"\u0153",158:"\u017E",159:"\u0178"};g={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;"};d={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"};function h(l){var m;m=document.createElement("div");m.innerHTML=l;return m.textContent||m.innerText||l}function e(m,p){var n,o,l,q={};if(m){m=m.split(",");p=p||10;for(n=0;n<m.length;n+=2){o=String.fromCharCode(parseInt(m[n],p));if(!g[o]){l="&"+m[n+1]+";";q[o]=l;q[l]=o}}return q}}a=e("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);j.html=j.html||{};j.html.Entities={encodeRaw:function(m,l){return m.replace(l?k:b,function(n){return g[n]||n})},encodeAllRaw:function(l){return(""+l).replace(f,function(m){return g[m]||m})},encodeNumeric:function(m,l){return m.replace(l?k:b,function(n){if(n.length>1){return"&#"+(((n.charCodeAt(0)-55296)*1024)+(n.charCodeAt(1)-56320)+65536)+";"}return g[n]||"&#"+n.charCodeAt(0)+";"})},encodeNamed:function(n,l,m){m=m||a;return n.replace(l?k:b,function(o){return g[o]||m[o]||o})},getEncodeFunc:function(l,o){var p=j.html.Entities;o=e(o)||a;function m(r,q){return r.replace(q?k:b,function(s){return g[s]||o[s]||"&#"+s.charCodeAt(0)+";"||s})}function n(r,q){return p.encodeNamed(r,q,o)}l=j.makeMap(l.replace(/\+/g,","));if(l.named&&l.numeric){return m}if(l.named){if(o){return n}return p.encodeNamed}if(l.numeric){return p.encodeNumeric}return p.encodeRaw},decode:function(l){return l.replace(c,function(n,m,o){if(m){o=parseInt(o,m.length===2?16:10);if(o>65535){o-=65536;return String.fromCharCode(55296+(o>>10),56320+(o&1023))}else{return i[o]||String.fromCharCode(o)}}return d[n]||a[n]||h(n)})}}})(tinymce);tinymce.html.Styles=function(d,f){var k=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,h=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,b=/\s*([^:]+):\s*([^;]+);?/g,l=/\s+$/,m=/rgb/,e,g,a={},j;d=d||{};j="\\\" \\' \\; \\: ; : \uFEFF".split(" ");for(g=0;g<j.length;g++){a[j[g]]="\uFEFF"+g;a["\uFEFF"+g]=j[g]}function c(n,q,p,i){function o(r){r=parseInt(r).toString(16);return r.length>1?r:"0"+r}return"#"+o(q)+o(p)+o(i)}return{toHex:function(i){return i.replace(k,c)},parse:function(r){var y={},p,n,v,q,u=d.url_converter,x=d.url_converter_scope||this;function o(C,F){var E,B,A,D;E=y[C+"-top"+F];if(!E){return}B=y[C+"-right"+F];if(E!=B){return}A=y[C+"-bottom"+F];if(B!=A){return}D=y[C+"-left"+F];if(A!=D){return}y[C+F]=D;delete y[C+"-top"+F];delete y[C+"-right"+F];delete y[C+"-bottom"+F];delete y[C+"-left"+F]}function t(B){var C=y[B],A;if(!C||C.indexOf(" ")<0){return}C=C.split(" ");A=C.length;while(A--){if(C[A]!==C[0]){return false}}y[B]=C[0];return true}function z(C,B,A,D){if(!t(B)){return}if(!t(A)){return}if(!t(D)){return}y[C]=y[B]+" "+y[A]+" "+y[D];delete y[B];delete y[A];delete y[D]}function s(A){q=true;return a[A]}function i(B,A){if(q){B=B.replace(/\uFEFF[0-9]/g,function(C){return a[C]})}if(!A){B=B.replace(/\\([\'\";:])/g,"$1")}return B}if(r){r=r.replace(/\\[\"\';:\uFEFF]/g,s).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(A){return A.replace(/[;:]/g,s)});while(p=b.exec(r)){n=p[1].replace(l,"").toLowerCase();v=p[2].replace(l,"");if(n&&v.length>0){if(n==="font-weight"&&v==="700"){v="bold"}else{if(n==="color"||n==="background-color"){v=v.toLowerCase()}}v=v.replace(k,c);v=v.replace(h,function(B,A,E,D,F,C){F=F||C;if(F){F=i(F);return"'"+F.replace(/\'/g,"\\'")+"'"}A=i(A||E||D);if(u){A=u.call(x,A,"style")}return"url('"+A.replace(/\'/g,"\\'")+"')"});y[n]=q?i(v,true):v}b.lastIndex=p.index+p[0].length}o("border","");o("border","-width");o("border","-color");o("border","-style");o("padding","");o("margin","");z("border","border-width","border-style","border-color");if(y.border==="medium none"){delete y.border}}return y},serialize:function(p,r){var o="",n,q;function i(t){var x,u,s,v;x=f.styles[t];if(x){for(u=0,s=x.length;u<s;u++){t=x[u];v=p[t];if(v!==e&&v.length>0){o+=(o.length>0?" ":"")+t+": "+v+";"}}}}if(r&&f&&f.styles){i("*");i(r)}else{for(n in p){q=p[n];if(q!==e&&q.length>0){o+=(o.length>0?" ":"")+n+": "+q+";"}}}return o}}};(function(m){var h={},j,l,g,f,c={},b,e,d=m.makeMap,k=m.each;function i(o,n){return o.split(n||",")}function a(r,q){var o,p={};function n(s){return s.replace(/[A-Z]+/g,function(t){return n(r[t])})}for(o in r){if(r.hasOwnProperty(o)){r[o]=n(r[o])}}n(q).replace(/#/g,"#text").replace(/(\w+)\[([^\]]+)\]\[([^\]]*)\]/g,function(v,t,s,u){s=i(s,"|");p[t]={attributes:d(s),attributesOrder:s,children:d(u,"|",{"#comment":{}})}});return p}l="h1,h2,h3,h4,h5,h6,hr,p,div,address,pre,form,table,tbody,thead,tfoot,th,tr,td,li,ol,ul,caption,blockquote,center,dl,dt,dd,dir,fieldset,noscript,menu,isindex,samp,header,footer,article,section,hgroup,aside,audio,canvas,figcaption,figure,nav,output,video";l=d(l,",",d(l.toUpperCase()));h=a({Z:"H|K|N|O|P",Y:"X|form|R|Q",ZG:"E|span|width|align|char|charoff|valign",X:"p|T|div|U|W|isindex|fieldset|table",ZF:"E|align|char|charoff|valign",W:"pre|hr|blockquote|address|center|noframes",ZE:"abbr|axis|headers|scope|rowspan|colspan|align|char|charoff|valign|nowrap|bgcolor|width|height",ZD:"[E][S]",U:"ul|ol|dl|menu|dir",ZC:"p|Y|div|U|W|table|br|span|bdo|object|applet|img|map|K|N|Q",T:"h1|h2|h3|h4|h5|h6",ZB:"X|S|Q",S:"R|P",ZA:"a|G|J|M|O|P",R:"a|H|K|N|O",Q:"noscript|P",P:"ins|del|script",O:"input|select|textarea|label|button",N:"M|L",M:"em|strong|dfn|code|q|samp|kbd|var|cite|abbr|acronym",L:"sub|sup",K:"J|I",J:"tt|i|b|u|s|strike",I:"big|small|font|basefont",H:"G|F",G:"br|span|bdo",F:"object|applet|img|map|iframe",E:"A|B|C",D:"accesskey|tabindex|onfocus|onblur",C:"onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup",B:"lang|xml:lang|dir",A:"id|class|style|title"},"script[id|charset|type|language|src|defer|xml:space][]style[B|id|type|media|title|xml:space][]object[E|declare|classid|codebase|data|type|codetype|archive|standby|width|height|usemap|name|tabindex|align|border|hspace|vspace][#|param|Y]param[id|name|value|valuetype|type][]p[E|align][#|S]a[E|D|charset|type|name|href|hreflang|rel|rev|shape|coords|target][#|Z]br[A|clear][]span[E][#|S]bdo[A|C|B][#|S]applet[A|codebase|archive|code|object|alt|name|width|height|align|hspace|vspace][#|param|Y]h1[E|align][#|S]img[E|src|alt|name|longdesc|width|height|usemap|ismap|align|border|hspace|vspace][]map[B|C|A|name][X|form|Q|area]h2[E|align][#|S]iframe[A|longdesc|name|src|frameborder|marginwidth|marginheight|scrolling|align|width|height][#|Y]h3[E|align][#|S]tt[E][#|S]i[E][#|S]b[E][#|S]u[E][#|S]s[E][#|S]strike[E][#|S]big[E][#|S]small[E][#|S]font[A|B|size|color|face][#|S]basefont[id|size|color|face][]em[E][#|S]strong[E][#|S]dfn[E][#|S]code[E][#|S]q[E|cite][#|S]samp[E][#|S]kbd[E][#|S]var[E][#|S]cite[E][#|S]abbr[E][#|S]acronym[E][#|S]sub[E][#|S]sup[E][#|S]input[E|D|type|name|value|checked|disabled|readonly|size|maxlength|src|alt|usemap|onselect|onchange|accept|align][]select[E|name|size|multiple|disabled|tabindex|onfocus|onblur|onchange][optgroup|option]optgroup[E|disabled|label][option]option[E|selected|disabled|label|value][]textarea[E|D|name|rows|cols|disabled|readonly|onselect|onchange][]label[E|for|accesskey|onfocus|onblur][#|S]button[E|D|name|value|type|disabled][#|p|T|div|U|W|table|G|object|applet|img|map|K|N|Q]h4[E|align][#|S]ins[E|cite|datetime][#|Y]h5[E|align][#|S]del[E|cite|datetime][#|Y]h6[E|align][#|S]div[E|align][#|Y]ul[E|type|compact][li]li[E|type|value][#|Y]ol[E|type|compact|start][li]dl[E|compact][dt|dd]dt[E][#|S]dd[E][#|Y]menu[E|compact][li]dir[E|compact][li]pre[E|width|xml:space][#|ZA]hr[E|align|noshade|size|width][]blockquote[E|cite][#|Y]address[E][#|S|p]center[E][#|Y]noframes[E][#|Y]isindex[A|B|prompt][]fieldset[E][#|legend|Y]legend[E|accesskey|align][#|S]table[E|summary|width|border|frame|rules|cellspacing|cellpadding|align|bgcolor][caption|col|colgroup|thead|tfoot|tbody|tr]caption[E|align][#|S]col[ZG][]colgroup[ZG][col]thead[ZF][tr]tr[ZF|bgcolor][th|td]th[E|ZE][#|Y]form[E|action|method|name|enctype|onsubmit|onreset|accept|accept-charset|target][#|X|R|Q]noscript[E][#|Y]td[E|ZE][#|Y]tfoot[ZF][tr]tbody[ZF][tr]area[E|D|shape|coords|href|nohref|alt|target][]base[id|href|target][]body[E|onload|onunload|background|bgcolor|text|link|vlink|alink][#|Y]");j=d("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected,autoplay,loop,controls");g=d("area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed,source");f=m.extend(d("td,th,iframe,video,audio,object"),g);b=d("pre,script,style,textarea");e=d("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr");m.html.Schema=function(r){var A=this,n={},o={},y=[],q,p;r=r||{};if(r.verify_html===false){r.valid_elements="*[*]"}if(r.valid_styles){q={};k(r.valid_styles,function(C,B){q[B]=m.explode(C)})}p=r.whitespace_elements?d(r.whitespace_elements):b;function z(B){return new RegExp("^"+B.replace(/([?+*])/g,".$1")+"$")}function t(I){var H,D,W,S,X,C,F,R,U,N,V,Z,L,G,T,B,P,E,Y,aa,M,Q,K=/^([#+-])?([^\[\/]+)(?:\/([^\[]+))?(?:\[([^\]]+)\])?$/,O=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,J=/[*?+]/;if(I){I=i(I);if(n["@"]){P=n["@"].attributes;E=n["@"].attributesOrder}for(H=0,D=I.length;H<D;H++){C=K.exec(I[H]);if(C){T=C[1];N=C[2];B=C[3];U=C[4];L={};G=[];F={attributes:L,attributesOrder:G};if(T==="#"){F.paddEmpty=true}if(T==="-"){F.removeEmpty=true}if(P){for(aa in P){L[aa]=P[aa]}G.push.apply(G,E)}if(U){U=i(U,"|");for(W=0,S=U.length;W<S;W++){C=O.exec(U[W]);if(C){R={};Z=C[1];V=C[2].replace(/::/g,":");T=C[3];Q=C[4];if(Z==="!"){F.attributesRequired=F.attributesRequired||[];F.attributesRequired.push(V);R.required=true}if(Z==="-"){delete L[V];G.splice(m.inArray(G,V),1);continue}if(T){if(T==="="){F.attributesDefault=F.attributesDefault||[];F.attributesDefault.push({name:V,value:Q});R.defaultValue=Q}if(T===":"){F.attributesForced=F.attributesForced||[];F.attributesForced.push({name:V,value:Q});R.forcedValue=Q}if(T==="<"){R.validValues=d(Q,"?")}}if(J.test(V)){F.attributePatterns=F.attributePatterns||[];R.pattern=z(V);F.attributePatterns.push(R)}else{if(!L[V]){G.push(V)}L[V]=R}}}}if(!P&&N=="@"){P=L;E=G}if(B){F.outputName=N;n[B]=F}if(J.test(N)){F.pattern=z(N);y.push(F)}else{n[N]=F}}}}}function v(B){n={};y=[];t(B);k(h,function(D,C){o[C]=D.children})}function s(C){var B=/^(~)?(.+)$/;if(C){k(i(C),function(G){var E=B.exec(G),F=E[1]==="~",H=F?"span":"div",D=E[2];o[D]=o[H];c[D]=H;if(!F){l[D]={}}k(o,function(I,J){if(I[H]){I[D]=I[H]}})})}}function u(C){var B=/^([+\-]?)(\w+)\[([^\]]+)\]$/;if(C){k(i(C),function(G){var F=B.exec(G),D,E;if(F){E=F[1];if(E){D=o[F[2]]}else{D=o[F[2]]={"#comment":{}}}D=o[F[2]];k(i(F[3],"|"),function(H){if(E==="-"){delete D[H]}else{D[H]={}}})}})}}function x(B){var D=n[B],C;if(D){return D}C=y.length;while(C--){D=y[C];if(D.pattern.test(B)){return D}}}if(!r.valid_elements){k(h,function(C,B){n[B]={attributes:C.attributes,attributesOrder:C.attributesOrder};o[B]=C.children});k(i("strong/b,em/i"),function(B){B=i(B,"/");n[B[1]].outputName=B[0]});n.img.attributesDefault=[{name:"alt",value:""}];k(i("ol,ul,sub,sup,blockquote,span,font,a,table,tbody,tr"),function(B){n[B].removeEmpty=true});k(i("p,h1,h2,h3,h4,h5,h6,th,td,pre,div,address,caption"),function(B){n[B].paddEmpty=true})}else{v(r.valid_elements)}s(r.custom_elements);u(r.valid_children);t(r.extended_valid_elements);u("+ol[ul|ol],+ul[ul|ol]");if(!x("span")){t("span[!data-mce-type|*]")}if(r.invalid_elements){m.each(m.explode(r.invalid_elements),function(B){if(n[B]){delete n[B]}})}A.children=o;A.styles=q;A.getBoolAttrs=function(){return j};A.getBlockElements=function(){return l};A.getShortEndedElements=function(){return g};A.getSelfClosingElements=function(){return e};A.getNonEmptyElements=function(){return f};A.getWhiteSpaceElements=function(){return p};A.isValidChild=function(B,D){var C=o[B];return !!(C&&C[D])};A.getElementRule=x;A.getCustomElements=function(){return c};A.addValidElements=t;A.setValidElements=v;A.addCustomElements=s;A.addValidChildren=u};m.html.Schema.boolAttrMap=j;m.html.Schema.blockElementsMap=l})(tinymce);(function(a){a.html.SaxParser=function(c,e){var b=this,d=function(){};c=c||{};b.schema=e=e||new a.html.Schema();if(c.fix_self_closing!==false){c.fix_self_closing=true}a.each("comment cdata text start end pi doctype".split(" "),function(f){if(f){b[f]=c[f]||d}});b.parse=function(D){var n=this,g,F=0,H,A,z=[],M,P,B,q,y,r,L,G,N,u,m,k,s,Q,o,O,E,R,K,f,I,l,C,J,h,v=0,j=a.html.Entities.decode,x,p;function t(S){var U,T;U=z.length;while(U--){if(z[U].name===S){break}}if(U>=0){for(T=z.length-1;T>=U;T--){S=z[T];if(S.valid){n.end(S.name)}}z.length=U}}l=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([^\\s\\/<>]+)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/)>))","g");C=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:\\.|[^\"])*)\")|(?:\'((?:\\.|[^\'])*)\')|([^>\s]+)))?/g;J={script:/<\/script[^>]*>/gi,style:/<\/style[^>]*>/gi,noscript:/<\/noscript[^>]*>/gi};L=e.getShortEndedElements();I=e.getSelfClosingElements();G=e.getBoolAttrs();u=c.validate;r=c.remove_internals;x=c.fix_self_closing;p=a.isIE;o=/^:/;while(g=l.exec(D)){if(F<g.index){n.text(j(D.substr(F,g.index-F)))}if(H=g[6]){H=H.toLowerCase();if(p&&o.test(H)){H=H.substr(1)}t(H)}else{if(H=g[7]){H=H.toLowerCase();if(p&&o.test(H)){H=H.substr(1)}N=H in L;if(x&&I[H]&&z.length>0&&z[z.length-1].name===H){t(H)}if(!u||(m=e.getElementRule(H))){k=true;if(u){O=m.attributes;E=m.attributePatterns}if(Q=g[8]){y=Q.indexOf("data-mce-type")!==-1;if(y&&r){k=false}M=[];M.map={};Q.replace(C,function(T,S,X,W,V){var Y,U;S=S.toLowerCase();X=S in G?S:j(X||W||V||"");if(u&&!y&&S.indexOf("data-")!==0){Y=O[S];if(!Y&&E){U=E.length;while(U--){Y=E[U];if(Y.pattern.test(S)){break}}if(U===-1){Y=null}}if(!Y){return}if(Y.validValues&&!(X in Y.validValues)){return}}M.map[S]=X;M.push({name:S,value:X})})}else{M=[];M.map={}}if(u&&!y){R=m.attributesRequired;K=m.attributesDefault;f=m.attributesForced;if(f){P=f.length;while(P--){s=f[P];q=s.name;h=s.value;if(h==="{$uid}"){h="mce_"+v++}M.map[q]=h;M.push({name:q,value:h})}}if(K){P=K.length;while(P--){s=K[P];q=s.name;if(!(q in M.map)){h=s.value;if(h==="{$uid}"){h="mce_"+v++}M.map[q]=h;M.push({name:q,value:h})}}}if(R){P=R.length;while(P--){if(R[P] in M.map){break}}if(P===-1){k=false}}if(M.map["data-mce-bogus"]){k=false}}if(k){n.start(H,M,N)}}else{k=false}if(A=J[H]){A.lastIndex=F=g.index+g[0].length;if(g=A.exec(D)){if(k){B=D.substr(F,g.index-F)}F=g.index+g[0].length}else{B=D.substr(F);F=D.length}if(k&&B.length>0){n.text(B,true)}if(k){n.end(H)}l.lastIndex=F;continue}if(!N){if(!Q||Q.indexOf("/")!=Q.length-1){z.push({name:H,valid:k})}else{if(k){n.end(H)}}}}else{if(H=g[1]){n.comment(H)}else{if(H=g[2]){n.cdata(H)}else{if(H=g[3]){n.doctype(H)}else{if(H=g[4]){n.pi(H,g[5])}}}}}}F=g.index+g[0].length}if(F<D.length){n.text(j(D.substr(F)))}for(P=z.length-1;P>=0;P--){H=z[P];if(H.valid){n.end(H.name)}}}}})(tinymce);(function(d){var c=/^[ \t\r\n]*$/,e={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};function a(k,l,j){var i,h,f=j?"lastChild":"firstChild",g=j?"prev":"next";if(k[f]){return k[f]}if(k!==l){i=k[g];if(i){return i}for(h=k.parent;h&&h!==l;h=h.parent){i=h[g];if(i){return i}}}}function b(f,g){this.name=f;this.type=g;if(g===1){this.attributes=[];this.attributes.map={}}}d.extend(b.prototype,{replace:function(g){var f=this;if(g.parent){g.remove()}f.insert(g,f);f.remove();return f},attr:function(h,l){var f=this,g,j,k;if(typeof h!=="string"){for(j in h){f.attr(j,h[j])}return f}if(g=f.attributes){if(l!==k){if(l===null){if(h in g.map){delete g.map[h];j=g.length;while(j--){if(g[j].name===h){g=g.splice(j,1);return f}}}return f}if(h in g.map){j=g.length;while(j--){if(g[j].name===h){g[j].value=l;break}}}else{g.push({name:h,value:l})}g.map[h]=l;return f}else{return g.map[h]}}},clone:function(){var g=this,n=new b(g.name,g.type),h,f,m,j,k;if(m=g.attributes){k=[];k.map={};for(h=0,f=m.length;h<f;h++){j=m[h];if(j.name!=="id"){k[k.length]={name:j.name,value:j.value};k.map[j.name]=j.value}}n.attributes=k}n.value=g.value;n.shortEnded=g.shortEnded;return n},wrap:function(g){var f=this;f.parent.insert(g,f);g.append(f);return f},unwrap:function(){var f=this,h,g;for(h=f.firstChild;h;){g=h.next;f.insert(h,f,true);h=g}f.remove()},remove:function(){var f=this,h=f.parent,g=f.next,i=f.prev;if(h){if(h.firstChild===f){h.firstChild=g;if(g){g.prev=null}}else{i.next=g}if(h.lastChild===f){h.lastChild=i;if(i){i.next=null}}else{g.prev=i}f.parent=f.next=f.prev=null}return f},append:function(h){var f=this,g;if(h.parent){h.remove()}g=f.lastChild;if(g){g.next=h;h.prev=g;f.lastChild=h}else{f.lastChild=f.firstChild=h}h.parent=f;return h},insert:function(h,f,i){var g;if(h.parent){h.remove()}g=f.parent||this;if(i){if(f===g.firstChild){g.firstChild=h}else{f.prev.next=h}h.prev=f.prev;h.next=f;f.prev=h}else{if(f===g.lastChild){g.lastChild=h}else{f.next.prev=h}h.next=f.next;h.prev=f;f.next=h}h.parent=g;return h},getAll:function(g){var f=this,h,i=[];for(h=f.firstChild;h;h=a(h,f)){if(h.name===g){i.push(h)}}return i},empty:function(){var g=this,f,h,j;if(g.firstChild){f=[];for(j=g.firstChild;j;j=a(j,g)){f.push(j)}h=f.length;while(h--){j=f[h];j.parent=j.firstChild=j.lastChild=j.next=j.prev=null}}g.firstChild=g.lastChild=null;return g},isEmpty:function(k){var f=this,j=f.firstChild,h,g;if(j){do{if(j.type===1){if(j.attributes.map["data-mce-bogus"]){continue}if(k[j.name]){return false}h=j.attributes.length;while(h--){g=j.attributes[h].name;if(g==="name"||g.indexOf("data-")===0){return false}}}if(j.type===8){return false}if((j.type===3&&!c.test(j.value))){return false}}while(j=a(j,f))}return true},walk:function(f){return a(this,null,f)}});d.extend(b,{create:function(g,f){var i,h;i=new b(g,e[g]||1);if(f){for(h in f){i.attr(h,f[h])}}return i}});d.html.Node=b})(tinymce);(function(b){var a=b.html.Node;b.html.DomParser=function(g,h){var f=this,e={},d=[],i={},c={};g=g||{};g.validate="validate" in g?g.validate:true;g.root_name=g.root_name||"body";f.schema=h=h||new b.html.Schema();function j(m){var o,p,x,v,z,n,q,l,t,u,k,s,y,r;s=b.makeMap("tr,td,th,tbody,thead,tfoot,table");k=h.getNonEmptyElements();for(o=0;o<m.length;o++){p=m[o];if(!p.parent){continue}v=[p];for(x=p.parent;x&&!h.isValidChild(x.name,p.name)&&!s[x.name];x=x.parent){v.push(x)}if(x&&v.length>1){v.reverse();z=n=f.filterNode(v[0].clone());for(t=0;t<v.length-1;t++){if(h.isValidChild(n.name,v[t].name)){q=f.filterNode(v[t].clone());n.append(q)}else{q=n}for(l=v[t].firstChild;l&&l!=v[t+1];){r=l.next;q.append(l);l=r}n=q}if(!z.isEmpty(k)){x.insert(z,v[0],true);x.insert(p,z)}else{x.insert(p,v[0],true)}x=v[0];if(x.isEmpty(k)||x.firstChild===x.lastChild&&x.firstChild.name==="br"){x.empty().remove()}}else{if(p.parent){if(p.name==="li"){y=p.prev;if(y&&(y.name==="ul"||y.name==="ul")){y.append(p);continue}y=p.next;if(y&&(y.name==="ul"||y.name==="ul")){y.insert(p,y.firstChild,true);continue}p.wrap(f.filterNode(new a("ul",1)));continue}if(h.isValidChild(p.parent.name,"div")&&h.isValidChild("div",p.name)){p.wrap(f.filterNode(new a("div",1)))}else{if(p.name==="style"||p.name==="script"){p.empty().remove()}else{p.unwrap()}}}}}}f.filterNode=function(m){var l,k,n;if(k in e){n=i[k];if(n){n.push(m)}else{i[k]=[m]}}l=d.length;while(l--){k=d[l].name;if(k in m.attributes.map){n=c[k];if(n){n.push(m)}else{c[k]=[m]}}}return m};f.addNodeFilter=function(k,l){b.each(b.explode(k),function(m){var n=e[m];if(!n){e[m]=n=[]}n.push(l)})};f.addAttributeFilter=function(k,l){b.each(b.explode(k),function(m){var n;for(n=0;n<d.length;n++){if(d[n].name===m){d[n].callbacks.push(l);return}}d.push({name:m,callbacks:[l]})})};f.parse=function(v,m){var n,H,A,z,C,B,x,r,E,K,y,o,D,J=[],t,k,s,p,u,q;m=m||{};i={};c={};o=b.extend(b.makeMap("script,style,head,html,body,title,meta,param"),h.getBlockElements());u=h.getNonEmptyElements();p=h.children;y=g.validate;q="forced_root_block" in m?m.forced_root_block:g.forced_root_block;s=h.getWhiteSpaceElements();D=/^[ \t\r\n]+/;t=/[ \t\r\n]+$/;k=/[ \t\r\n]+/g;function F(){var L=H.firstChild,l,M;while(L){l=L.next;if(L.type==3||(L.type==1&&L.name!=="p"&&!o[L.name]&&!L.attr("data-mce-type"))){if(!M){M=I(q,1);H.insert(M,L);M.append(L)}else{M.append(L)}}else{M=null}L=l}}function I(l,L){var M=new a(l,L),N;if(l in e){N=i[l];if(N){N.push(M)}else{i[l]=[M]}}return M}function G(M){var N,l,L;for(N=M.prev;N&&N.type===3;){l=N.value.replace(t,"");if(l.length>0){N.value=l;N=N.prev}else{L=N.prev;N.remove();N=L}}}n=new b.html.SaxParser({validate:y,fix_self_closing:!y,cdata:function(l){A.append(I("#cdata",4)).value=l},text:function(M,l){var L;if(!s[A.name]){M=M.replace(k," ");if(A.lastChild&&o[A.lastChild.name]){M=M.replace(D,"")}}if(M.length!==0){L=I("#text",3);L.raw=!!l;A.append(L).value=M}},comment:function(l){A.append(I("#comment",8)).value=l},pi:function(l,L){A.append(I(l,7)).value=L;G(A)},doctype:function(L){var l;l=A.append(I("#doctype",10));l.value=L;G(A)},start:function(l,T,M){var R,O,N,L,P,U,S,Q;N=y?h.getElementRule(l):{};if(N){R=I(N.outputName||l,1);R.attributes=T;R.shortEnded=M;A.append(R);Q=p[A.name];if(Q&&p[R.name]&&!Q[R.name]){J.push(R)}O=d.length;while(O--){P=d[O].name;if(P in T.map){E=c[P];if(E){E.push(R)}else{c[P]=[R]}}}if(o[l]){G(R)}if(!M){A=R}}},end:function(l){var P,M,O,L,N;M=y?h.getElementRule(l):{};if(M){if(o[l]){if(!s[A.name]){for(P=A.firstChild;P&&P.type===3;){O=P.value.replace(D,"");if(O.length>0){P.value=O;P=P.next}else{L=P.next;P.remove();P=L}}for(P=A.lastChild;P&&P.type===3;){O=P.value.replace(t,"");if(O.length>0){P.value=O;P=P.prev}else{L=P.prev;P.remove();P=L}}}P=A.prev;if(P&&P.type===3){O=P.value.replace(D,"");if(O.length>0){P.value=O}else{P.remove()}}}if(M.removeEmpty||M.paddEmpty){if(A.isEmpty(u)){if(M.paddEmpty){A.empty().append(new a("#text","3")).value="\u00a0"}else{if(!A.attributes.map.name){N=A.parent;A.empty().remove();A=N;return}}}}A=A.parent}}},h);H=A=new a(m.context||g.root_name,11);n.parse(v);if(y&&J.length){if(!m.context){j(J)}else{m.invalid=true}}if(q&&H.name=="body"){F()}if(!m.invalid){for(K in i){E=e[K];z=i[K];x=z.length;while(x--){if(!z[x].parent){z.splice(x,1)}}for(C=0,B=E.length;C<B;C++){E[C](z,K,m)}}for(C=0,B=d.length;C<B;C++){E=d[C];if(E.name in c){z=c[E.name];x=z.length;while(x--){if(!z[x].parent){z.splice(x,1)}}for(x=0,r=E.callbacks.length;x<r;x++){E.callbacks[x](z,E.name,m)}}}}return H};if(g.remove_trailing_brs){f.addNodeFilter("br",function(n,m){var r,q=n.length,o,u=h.getBlockElements(),k=h.getNonEmptyElements(),s,p,t;u.body=1;for(r=0;r<q;r++){o=n[r];s=o.parent;if(u[o.parent.name]&&o===s.lastChild){p=o.prev;while(p){t=p.name;if(t!=="span"||p.attr("data-mce-type")!=="bookmark"){if(t!=="br"){break}if(t==="br"){o=null;break}}p=p.prev}if(o){o.remove();if(s.isEmpty(k)){elementRule=h.getElementRule(s.name);if(elementRule){if(elementRule.removeEmpty){s.remove()}else{if(elementRule.paddEmpty){s.empty().append(new b.html.Node("#text",3)).value="\u00a0"}}}}}}}})}}})(tinymce);tinymce.html.Writer=function(e){var c=[],a,b,d,f,g;e=e||{};a=e.indent;b=tinymce.makeMap(e.indent_before||"");d=tinymce.makeMap(e.indent_after||"");f=tinymce.html.Entities.getEncodeFunc(e.entity_encoding||"raw",e.entities);g=e.element_format=="html";return{start:function(m,k,p){var n,j,h,o;if(a&&b[m]&&c.length>0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}c.push("<",m);if(k){for(n=0,j=k.length;n<j;n++){h=k[n];c.push(" ",h.name,'="',f(h.value,true),'"')}}if(!p||g){c[c.length]=">"}else{c[c.length]=" />"}if(p&&a&&d[m]&&c.length>0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}},end:function(h){var i;c.push("</",h,">");if(a&&d[h]&&c.length>0){i=c[c.length-1];if(i.length>0&&i!=="\n"){c.push("\n")}}},text:function(i,h){if(i.length>0){c[c.length]=h?i:f(i)}},cdata:function(h){c.push("<![CDATA[",h,"]]>")},comment:function(h){c.push("<!--",h,"-->")},pi:function(h,i){if(i){c.push("<?",h," ",i,"?>")}else{c.push("<?",h,"?>")}if(a){c.push("\n")}},doctype:function(h){c.push("<!DOCTYPE",h,">",a?"\n":"")},reset:function(){c.length=0},getContent:function(){return c.join("").replace(/\n$/,"")}}};(function(a){a.html.Serializer=function(c,d){var b=this,e=new a.html.Writer(c);c=c||{};c.validate="validate" in c?c.validate:true;b.schema=d=d||new a.html.Schema();b.writer=e;b.serialize=function(h){var g,i;i=c.validate;g={3:function(k,j){e.text(k.value,k.raw)},8:function(j){e.comment(j.value)},7:function(j){e.pi(j.name,j.value)},10:function(j){e.doctype(j.value)},4:function(j){e.cdata(j.value)},11:function(j){if((j=j.firstChild)){do{f(j)}while(j=j.next)}}};e.reset();function f(k){var t=g[k.type],j,o,s,r,p,u,n,m,q;if(!t){j=k.name;o=k.shortEnded;s=k.attributes;if(i&&s&&s.length>1){u=[];u.map={};q=d.getElementRule(k.name);for(n=0,m=q.attributesOrder.length;n<m;n++){r=q.attributesOrder[n];if(r in s.map){p=s.map[r];u.map[r]=p;u.push({name:r,value:p})}}for(n=0,m=s.length;n<m;n++){r=s[n].name;if(!(r in u.map)){p=s.map[r];u.map[r]=p;u.push({name:r,value:p})}}s=u}e.start(k.name,s,o);if(!o){if((k=k.firstChild)){do{f(k)}while(k=k.next)}e.end(j)}}else{t(k)}}if(h.type==1&&!c.inner){f(h)}else{g[11](h)}return e.getContent()}}})(tinymce);(function(h){var f=h.each,e=h.is,d=h.isWebKit,b=h.isIE,c=h.html.Entities,a=/^([a-z0-9],?)+$/i,g=h.html.Schema.blockElementsMap,i=/^[ \t\r\n]*$/;h.create("tinymce.dom.DOMUtils",{doc:null,root:null,files:null,pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},DOMUtils:function(o,m){var l=this,j,k;l.doc=o;l.win=window;l.files={};l.cssFlicker=false;l.counter=0;l.stdMode=!h.isIE||o.documentMode>=8;l.boxModel=!h.isIE||o.compatMode=="CSS1Compat"||l.stdMode;l.hasOuterHTML="outerHTML" in o.createElement("a");l.settings=m=h.extend({keep_values:false,hex_colors:1},m);l.schema=m.schema;l.styles=new h.html.Styles({url_converter:m.url_converter,url_converter_scope:m.url_converter_scope},m.schema);if(h.isIE6){try{o.execCommand("BackgroundImageCache",false,true)}catch(n){l.cssFlicker=true}}if(b&&m.schema){("abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video").replace(/\w+/g,function(p){o.createElement(p)});for(k in m.schema.getCustomElements()){o.createElement(k)}}h.addUnload(l.destroy,l)},getRoot:function(){var j=this,k=j.settings;return(k&&j.get(k.root_element))||j.doc.body},getViewPort:function(k){var l,j;k=!k?this.win:k;l=k.document;j=this.boxModel?l.documentElement:l.body;return{x:k.pageXOffset||j.scrollLeft,y:k.pageYOffset||j.scrollTop,w:k.innerWidth||j.clientWidth,h:k.innerHeight||j.clientHeight}},getRect:function(m){var l,j=this,k;m=j.get(m);l=j.getPos(m);k=j.getSize(m);return{x:l.x,y:l.y,w:k.w,h:k.h}},getSize:function(m){var k=this,j,l;m=k.get(m);j=k.getStyle(m,"width");l=k.getStyle(m,"height");if(j.indexOf("px")===-1){j=0}if(l.indexOf("px")===-1){l=0}return{w:parseInt(j)||m.offsetWidth||m.clientWidth,h:parseInt(l)||m.offsetHeight||m.clientHeight}},getParent:function(l,k,j){return this.getParents(l,k,j,false)},getParents:function(u,p,l,s){var k=this,j,m=k.settings,q=[];u=k.get(u);s=s===undefined;if(m.strict_root){l=l||k.getRoot()}if(e(p,"string")){j=p;if(p==="*"){p=function(o){return o.nodeType==1}}else{p=function(o){return k.is(o,j)}}}while(u){if(u==l||!u.nodeType||u.nodeType===9){break}if(!p||p(u)){if(s){q.push(u)}else{return u}}u=u.parentNode}return s?q:null},get:function(j){var k;if(j&&this.doc&&typeof(j)=="string"){k=j;j=this.doc.getElementById(j);if(j&&j.id!==k){return this.doc.getElementsByName(k)[1]}}return j},getNext:function(k,j){return this._findSib(k,j,"nextSibling")},getPrev:function(k,j){return this._findSib(k,j,"previousSibling")},select:function(l,k){var j=this;return h.dom.Sizzle(l,j.get(k)||j.get(j.settings.root_element)||j.doc,[])},is:function(l,j){var k;if(l.length===undefined){if(j==="*"){return l.nodeType==1}if(a.test(j)){j=j.toLowerCase().split(/,/);l=l.nodeName.toLowerCase();for(k=j.length-1;k>=0;k--){if(j[k]==l){return true}}return false}}return h.dom.Sizzle.matches(j,l.nodeType?[l]:l).length>0},add:function(m,q,j,l,o){var k=this;return this.run(m,function(s){var r,n;r=e(q,"string")?k.doc.createElement(q):q;k.setAttribs(r,j);if(l){if(l.nodeType){r.appendChild(l)}else{k.setHTML(r,l)}}return !o?s.appendChild(r):r})},create:function(l,j,k){return this.add(this.doc.createElement(l),l,j,k,1)},createHTML:function(r,j,p){var q="",m=this,l;q+="<"+r;for(l in j){if(j.hasOwnProperty(l)){q+=" "+l+'="'+m.encode(j[l])+'"'}}if(typeof(p)!="undefined"){return q+">"+p+"</"+r+">"}return q+" />"},remove:function(j,k){return this.run(j,function(m){var n,l=m.parentNode;if(!l){return null}if(k){while(n=m.firstChild){if(!h.isIE||n.nodeType!==3||n.nodeValue){l.insertBefore(n,m)}else{m.removeChild(n)}}}return l.removeChild(m)})},setStyle:function(m,j,k){var l=this;return l.run(m,function(p){var o,n;o=p.style;j=j.replace(/-(\D)/g,function(r,q){return q.toUpperCase()});if(l.pixelStyles.test(j)&&(h.is(k,"number")||/^[\-0-9\.]+$/.test(k))){k+="px"}switch(j){case"opacity":if(b){o.filter=k===""?"":"alpha(opacity="+(k*100)+")";if(!m.currentStyle||!m.currentStyle.hasLayout){o.display="inline-block"}}o[j]=o["-moz-opacity"]=o["-khtml-opacity"]=k||"";break;case"float":b?o.styleFloat=k:o.cssFloat=k;break;default:o[j]=k||""}if(l.settings.update_styles){l.setAttrib(p,"data-mce-style")}})},getStyle:function(m,j,l){m=this.get(m);if(!m){return}if(this.doc.defaultView&&l){j=j.replace(/[A-Z]/g,function(n){return"-"+n});try{return this.doc.defaultView.getComputedStyle(m,null).getPropertyValue(j)}catch(k){return null}}j=j.replace(/-(\D)/g,function(o,n){return n.toUpperCase()});if(j=="float"){j=b?"styleFloat":"cssFloat"}if(m.currentStyle&&l){return m.currentStyle[j]}return m.style?m.style[j]:undefined},setStyles:function(m,n){var k=this,l=k.settings,j;j=l.update_styles;l.update_styles=0;f(n,function(o,p){k.setStyle(m,p,o)});l.update_styles=j;if(l.update_styles){k.setAttrib(m,l.cssText)}},removeAllAttribs:function(j){return this.run(j,function(m){var l,k=m.attributes;for(l=k.length-1;l>=0;l--){m.removeAttributeNode(k.item(l))}})},setAttrib:function(l,m,j){var k=this;if(!l||!m){return}if(k.settings.strict){m=m.toLowerCase()}return this.run(l,function(q){var p=k.settings;var n=q.getAttribute(m);if(j!==null){switch(m){case"style":if(!e(j,"string")){f(j,function(r,s){k.setStyle(q,s,r)});return}if(p.keep_values){if(j&&!k._isRes(j)){q.setAttribute("data-mce-style",j,2)}else{q.removeAttribute("data-mce-style",2)}}q.style.cssText=j;break;case"class":q.className=j||"";break;case"src":case"href":if(p.keep_values){if(p.url_converter){j=p.url_converter.call(p.url_converter_scope||k,j,m,q)}k.setAttrib(q,"data-mce-"+m,j,2)}break;case"shape":q.setAttribute("data-mce-style",j);break}}if(e(j)&&j!==null&&j.length!==0){q.setAttribute(m,""+j,2)}else{q.removeAttribute(m,2)}if(tinyMCE.activeEditor&&n!=j){var o=tinyMCE.activeEditor;o.onSetAttrib.dispatch(o,q,m,j)}})},setAttribs:function(k,l){var j=this;return this.run(k,function(m){f(l,function(o,p){j.setAttrib(m,p,o)})})},getAttrib:function(o,p,l){var j,k=this,m;o=k.get(o);if(!o||o.nodeType!==1){return l===m?false:l}if(!e(l)){l=""}if(/^(src|href|style|coords|shape)$/.test(p)){j=o.getAttribute("data-mce-"+p);if(j){return j}}if(b&&k.props[p]){j=o[k.props[p]];j=j&&j.nodeValue?j.nodeValue:j}if(!j){j=o.getAttribute(p,2)}if(/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(p)){if(o[k.props[p]]===true&&j===""){return p}return j?p:""}if(o.nodeName==="FORM"&&o.getAttributeNode(p)){return o.getAttributeNode(p).nodeValue}if(p==="style"){j=j||o.style.cssText;if(j){j=k.serializeStyle(k.parseStyle(j),o.nodeName);if(k.settings.keep_values&&!k._isRes(j)){o.setAttribute("data-mce-style",j)}}}if(d&&p==="class"&&j){j=j.replace(/(apple|webkit)\-[a-z\-]+/gi,"")}if(b){switch(p){case"rowspan":case"colspan":if(j===1){j=""}break;case"size":if(j==="+0"||j===20||j===0){j=""}break;case"width":case"height":case"vspace":case"checked":case"disabled":case"readonly":if(j===0){j=""}break;case"hspace":if(j===-1){j=""}break;case"maxlength":case"tabindex":if(j===32768||j===2147483647||j==="32768"){j=""}break;case"multiple":case"compact":case"noshade":case"nowrap":if(j===65535){return p}return l;case"shape":j=j.toLowerCase();break;default:if(p.indexOf("on")===0&&j){j=h._replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1",""+j)}}}return(j!==m&&j!==null&&j!=="")?""+j:l},getPos:function(s,m){var k=this,j=0,q=0,o,p=k.doc,l;s=k.get(s);m=m||p.body;if(s){if(s.getBoundingClientRect){s=s.getBoundingClientRect();o=k.boxModel?p.documentElement:p.body;j=s.left+(p.documentElement.scrollLeft||p.body.scrollLeft)-o.clientTop;q=s.top+(p.documentElement.scrollTop||p.body.scrollTop)-o.clientLeft;return{x:j,y:q}}l=s;while(l&&l!=m&&l.nodeType){j+=l.offsetLeft||0;q+=l.offsetTop||0;l=l.offsetParent}l=s.parentNode;while(l&&l!=m&&l.nodeType){j-=l.scrollLeft||0;q-=l.scrollTop||0;l=l.parentNode}}return{x:j,y:q}},parseStyle:function(j){return this.styles.parse(j)},serializeStyle:function(k,j){return this.styles.serialize(k,j)},loadCSS:function(j){var l=this,m=l.doc,k;if(!j){j=""}k=l.select("head")[0];f(j.split(","),function(n){var o;if(l.files[n]){return}l.files[n]=true;o=l.create("link",{rel:"stylesheet",href:h._addVer(n)});if(b&&m.documentMode&&m.recalc){o.onload=function(){if(m.recalc){m.recalc()}o.onload=null}}k.appendChild(o)})},addClass:function(j,k){return this.run(j,function(l){var m;if(!k){return 0}if(this.hasClass(l,k)){return l.className}m=this.removeClass(l,k);return l.className=(m!=""?(m+" "):"")+k})},removeClass:function(l,m){var j=this,k;return j.run(l,function(o){var n;if(j.hasClass(o,m)){if(!k){k=new RegExp("(^|\\s+)"+m+"(\\s+|$)","g")}n=o.className.replace(k," ");n=h.trim(n!=" "?n:"");o.className=n;if(!n){o.removeAttribute("class");o.removeAttribute("className")}return n}return o.className})},hasClass:function(k,j){k=this.get(k);if(!k||!j){return false}return(" "+k.className+" ").indexOf(" "+j+" ")!==-1},show:function(j){return this.setStyle(j,"display","block")},hide:function(j){return this.setStyle(j,"display","none")},isHidden:function(j){j=this.get(j);return !j||j.style.display=="none"||this.getStyle(j,"display")=="none"},uniqueId:function(j){return(!j?"mce_":j)+(this.counter++)},setHTML:function(l,k){var j=this;return j.run(l,function(n){if(b){while(n.firstChild){n.removeChild(n.firstChild)}try{n.innerHTML="<br />"+k;n.removeChild(n.firstChild)}catch(m){n=j.create("div");n.innerHTML="<br />"+k;f(n.childNodes,function(p,o){if(o){n.appendChild(p)}})}}else{n.innerHTML=k}return k})},getOuterHTML:function(l){var k,j=this;l=j.get(l);if(!l){return null}if(l.nodeType===1&&j.hasOuterHTML){return l.outerHTML}k=(l.ownerDocument||j.doc).createElement("body");k.appendChild(l.cloneNode(true));return k.innerHTML},setOuterHTML:function(m,k,n){var j=this;function l(p,o,r){var s,q;q=r.createElement("body");q.innerHTML=o;s=q.lastChild;while(s){j.insertAfter(s.cloneNode(true),p);s=s.previousSibling}j.remove(p)}return this.run(m,function(p){p=j.get(p);if(p.nodeType==1){n=n||p.ownerDocument||j.doc;if(b){try{if(b&&p.nodeType==1){p.outerHTML=k}else{l(p,k,n)}}catch(o){l(p,k,n)}}else{l(p,k,n)}}})},decode:c.decode,encode:c.encodeAllRaw,insertAfter:function(j,k){k=this.get(k);return this.run(j,function(m){var l,n;l=k.parentNode;n=k.nextSibling;if(n){l.insertBefore(m,n)}else{l.appendChild(m)}return m})},isBlock:function(k){var j=k.nodeType;if(j){return !!(j===1&&g[k.nodeName])}return !!g[k]},replace:function(p,m,j){var l=this;if(e(m,"array")){p=p.cloneNode(true)}return l.run(m,function(k){if(j){f(h.grep(k.childNodes),function(n){p.appendChild(n)})}return k.parentNode.replaceChild(p,k)})},rename:function(m,j){var l=this,k;if(m.nodeName!=j.toUpperCase()){k=l.create(j);f(l.getAttribs(m),function(n){l.setAttrib(k,n.nodeName,l.getAttrib(m,n.nodeName))});l.replace(k,m,1)}return k||m},findCommonAncestor:function(l,j){var m=l,k;while(m){k=j;while(k&&m!=k){k=k.parentNode}if(m==k){break}m=m.parentNode}if(!m&&l.ownerDocument){return l.ownerDocument.documentElement}return m},toHex:function(j){var l=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(j);function k(m){m=parseInt(m).toString(16);return m.length>1?m:"0"+m}if(l){j="#"+k(l[1])+k(l[2])+k(l[3]);return j}return j},getClasses:function(){var n=this,j=[],m,o={},p=n.settings.class_filter,l;if(n.classes){return n.classes}function q(r){f(r.imports,function(s){q(s)});f(r.cssRules||r.rules,function(s){switch(s.type||1){case 1:if(s.selectorText){f(s.selectorText.split(","),function(t){t=t.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(t)||!/\.[\w\-]+$/.test(t)){return}l=t;t=h._replace(/.*\.([a-z0-9_\-]+).*/i,"$1",t);if(p&&!(t=p(t,l))){return}if(!o[t]){j.push({"class":t});o[t]=1}})}break;case 3:q(s.styleSheet);break}})}try{f(n.doc.styleSheets,q)}catch(k){}if(j.length>0){n.classes=j}return j},run:function(m,l,k){var j=this,n;if(j.doc&&typeof(m)==="string"){m=j.get(m)}if(!m){return false}k=k||this;if(!m.nodeType&&(m.length||m.length===0)){n=[];f(m,function(p,o){if(p){if(typeof(p)=="string"){p=j.doc.getElementById(p)}n.push(l.call(k,p,o))}});return n}return l.call(k,m)},getAttribs:function(k){var j;k=this.get(k);if(!k){return[]}if(b){j=[];if(k.nodeName=="OBJECT"){return k.attributes}if(k.nodeName==="OPTION"&&this.getAttrib(k,"selected")){j.push({specified:1,nodeName:"selected"})}k.cloneNode(false).outerHTML.replace(/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi,"").replace(/[\w:\-]+/gi,function(l){j.push({specified:1,nodeName:l})});return j}return k.attributes},isEmpty:function(m,k){var r=this,o,n,q,j,l,p;m=m.firstChild;if(m){j=new h.dom.TreeWalker(m);k=k||r.schema?r.schema.getNonEmptyElements():null;do{q=m.nodeType;if(q===1){if(m.getAttribute("data-mce-bogus")){continue}l=m.nodeName.toLowerCase();if(k&&k[l]){p=m.parentNode;if(l==="br"&&r.isBlock(p)&&p.firstChild===m&&p.lastChild===m){continue}return false}n=r.getAttribs(m);o=m.attributes.length;while(o--){l=m.attributes[o].nodeName;if(l==="name"||l==="data-mce-bookmark"){return false}}}if(q==8){return false}if((q===3&&!i.test(m.nodeValue))){return false}}while(m=j.next())}return true},destroy:function(k){var j=this;if(j.events){j.events.destroy()}j.win=j.doc=j.root=j.events=null;if(!k){h.removeUnload(j.destroy)}},createRng:function(){var j=this.doc;return j.createRange?j.createRange():new h.dom.Range(this)},nodeIndex:function(n,o){var j=0,l,m,k;if(n){for(l=n.nodeType,n=n.previousSibling,m=n;n;n=n.previousSibling){k=n.nodeType;if(o&&k==3){if(k==l||!n.nodeValue.length){continue}}j++;l=k}}return j},split:function(n,m,q){var s=this,j=s.createRng(),o,l,p;function k(x){var u,t=x.childNodes,v=x.nodeType;function y(B){var A=B.previousSibling&&B.previousSibling.nodeName=="SPAN";var z=B.nextSibling&&B.nextSibling.nodeName=="SPAN";return A&&z}if(v==1&&x.getAttribute("data-mce-type")=="bookmark"){return}for(u=t.length-1;u>=0;u--){k(t[u])}if(v!=9){if(v==3&&x.nodeValue.length>0){var r=h.trim(x.nodeValue).length;if(!s.isBlock(x.parentNode)||r>0||r==0&&y(x)){return}}else{if(v==1){t=x.childNodes;if(t.length==1&&t[0]&&t[0].nodeType==1&&t[0].getAttribute("data-mce-type")=="bookmark"){x.parentNode.insertBefore(t[0],x)}if(t.length||/^(br|hr|input|img)$/i.test(x.nodeName)){return}}}s.remove(x)}return x}if(n&&m){j.setStart(n.parentNode,s.nodeIndex(n));j.setEnd(m.parentNode,s.nodeIndex(m));o=j.extractContents();j=s.createRng();j.setStart(m.parentNode,s.nodeIndex(m)+1);j.setEnd(n.parentNode,s.nodeIndex(n)+1);l=j.extractContents();p=n.parentNode;p.insertBefore(k(o),n);if(q){p.replaceChild(q,m)}else{p.insertBefore(m,n)}p.insertBefore(k(l),n);s.remove(n);return q||m}},bind:function(n,j,m,l){var k=this;if(!k.events){k.events=new h.dom.EventUtils()}return k.events.add(n,j,m,l||this)},unbind:function(m,j,l){var k=this;if(!k.events){k.events=new h.dom.EventUtils()}return k.events.remove(m,j,l)},_findSib:function(m,j,k){var l=this,n=j;if(m){if(e(n,"string")){n=function(o){return l.is(o,j)}}for(m=m[k];m;m=m[k]){if(n(m)){return m}}}return null},_isRes:function(j){return/^(top|left|bottom|right|width|height)/i.test(j)||/;\s*(top|left|bottom|right|width|height)/i.test(j)}});h.DOM=new h.dom.DOMUtils(document,{process_html:0})})(tinymce);(function(a){function b(c){var N=this,e=c.doc,S=0,E=1,j=2,D=true,R=false,U="startOffset",h="startContainer",P="endContainer",z="endOffset",k=tinymce.extend,n=c.nodeIndex;k(N,{startContainer:e,startOffset:0,endContainer:e,endOffset:0,collapsed:D,commonAncestorContainer:e,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:q,setEnd:s,setStartBefore:g,setStartAfter:I,setEndBefore:J,setEndAfter:u,collapse:A,selectNode:x,selectNodeContents:F,compareBoundaryPoints:v,deleteContents:p,extractContents:H,cloneContents:d,insertNode:C,surroundContents:M,cloneRange:K});function q(V,t){B(D,V,t)}function s(V,t){B(R,V,t)}function g(t){q(t.parentNode,n(t))}function I(t){q(t.parentNode,n(t)+1)}function J(t){s(t.parentNode,n(t))}function u(t){s(t.parentNode,n(t)+1)}function A(t){if(t){N[P]=N[h];N[z]=N[U]}else{N[h]=N[P];N[U]=N[z]}N.collapsed=D}function x(t){g(t);u(t)}function F(t){q(t,0);s(t,t.nodeType===1?t.childNodes.length:t.nodeValue.length)}function v(Y,t){var ab=N[h],W=N[U],aa=N[P],V=N[z],Z=t.startContainer,ad=t.startOffset,X=t.endContainer,ac=t.endOffset;if(Y===0){return G(ab,W,Z,ad)}if(Y===1){return G(aa,V,Z,ad)}if(Y===2){return G(aa,V,X,ac)}if(Y===3){return G(ab,W,X,ac)}}function p(){m(j)}function H(){return m(S)}function d(){return m(E)}function C(Y){var V=this[h],t=this[U],X,W;if((V.nodeType===3||V.nodeType===4)&&V.nodeValue){if(!t){V.parentNode.insertBefore(Y,V)}else{if(t>=V.nodeValue.length){c.insertAfter(Y,V)}else{X=V.splitText(t);V.parentNode.insertBefore(Y,X)}}}else{if(V.childNodes.length>0){W=V.childNodes[t]}if(W){V.insertBefore(Y,W)}else{V.appendChild(Y)}}}function M(V){var t=N.extractContents();N.insertNode(V);V.appendChild(t);N.selectNode(V)}function K(){return k(new b(c),{startContainer:N[h],startOffset:N[U],endContainer:N[P],endOffset:N[z],collapsed:N.collapsed,commonAncestorContainer:N.commonAncestorContainer})}function O(t,V){var W;if(t.nodeType==3){return t}if(V<0){return t}W=t.firstChild;while(W&&V>0){--V;W=W.nextSibling}if(W){return W}return t}function l(){return(N[h]==N[P]&&N[U]==N[z])}function G(X,Z,V,Y){var aa,W,t,ab,ad,ac;if(X==V){if(Z==Y){return 0}if(Z<Y){return -1}return 1}aa=V;while(aa&&aa.parentNode!=X){aa=aa.parentNode}if(aa){W=0;t=X.firstChild;while(t!=aa&&W<Z){W++;t=t.nextSibling}if(Z<=W){return -1}return 1}aa=X;while(aa&&aa.parentNode!=V){aa=aa.parentNode}if(aa){W=0;t=V.firstChild;while(t!=aa&&W<Y){W++;t=t.nextSibling}if(W<Y){return -1}return 1}ab=c.findCommonAncestor(X,V);ad=X;while(ad&&ad.parentNode!=ab){ad=ad.parentNode}if(!ad){ad=ab}ac=V;while(ac&&ac.parentNode!=ab){ac=ac.parentNode}if(!ac){ac=ab}if(ad==ac){return 0}t=ab.firstChild;while(t){if(t==ad){return -1}if(t==ac){return 1}t=t.nextSibling}}function B(V,Y,X){var t,W;if(V){N[h]=Y;N[U]=X}else{N[P]=Y;N[z]=X}t=N[P];while(t.parentNode){t=t.parentNode}W=N[h];while(W.parentNode){W=W.parentNode}if(W==t){if(G(N[h],N[U],N[P],N[z])>0){N.collapse(V)}}else{N.collapse(V)}N.collapsed=l();N.commonAncestorContainer=c.findCommonAncestor(N[h],N[P])}function m(ab){var aa,X=0,ad=0,V,Z,W,Y,t,ac;if(N[h]==N[P]){return f(ab)}for(aa=N[P],V=aa.parentNode;V;aa=V,V=V.parentNode){if(V==N[h]){return r(aa,ab)}++X}for(aa=N[h],V=aa.parentNode;V;aa=V,V=V.parentNode){if(V==N[P]){return T(aa,ab)}++ad}Z=ad-X;W=N[h];while(Z>0){W=W.parentNode;Z--}Y=N[P];while(Z<0){Y=Y.parentNode;Z++}for(t=W.parentNode,ac=Y.parentNode;t!=ac;t=t.parentNode,ac=ac.parentNode){W=t;Y=ac}return o(W,Y,ab)}function f(Z){var ab,Y,X,aa,t,W,V;if(Z!=j){ab=e.createDocumentFragment()}if(N[U]==N[z]){return ab}if(N[h].nodeType==3){Y=N[h].nodeValue;X=Y.substring(N[U],N[z]);if(Z!=E){N[h].deleteData(N[U],N[z]-N[U]);N.collapse(D)}if(Z==j){return}ab.appendChild(e.createTextNode(X));return ab}aa=O(N[h],N[U]);t=N[z]-N[U];while(t>0){W=aa.nextSibling;V=y(aa,Z);if(ab){ab.appendChild(V)}--t;aa=W}if(Z!=E){N.collapse(D)}return ab}function r(ab,Y){var aa,Z,V,t,X,W;if(Y!=j){aa=e.createDocumentFragment()}Z=i(ab,Y);if(aa){aa.appendChild(Z)}V=n(ab);t=V-N[U];if(t<=0){if(Y!=E){N.setEndBefore(ab);N.collapse(R)}return aa}Z=ab.previousSibling;while(t>0){X=Z.previousSibling;W=y(Z,Y);if(aa){aa.insertBefore(W,aa.firstChild)}--t;Z=X}if(Y!=E){N.setEndBefore(ab);N.collapse(R)}return aa}function T(Z,Y){var ab,V,aa,t,X,W;if(Y!=j){ab=e.createDocumentFragment()}aa=Q(Z,Y);if(ab){ab.appendChild(aa)}V=n(Z);++V;t=N[z]-V;aa=Z.nextSibling;while(t>0){X=aa.nextSibling;W=y(aa,Y);if(ab){ab.appendChild(W)}--t;aa=X}if(Y!=E){N.setStartAfter(Z);N.collapse(D)}return ab}function o(Z,t,ac){var W,ae,Y,aa,ab,V,ad,X;if(ac!=j){ae=e.createDocumentFragment()}W=Q(Z,ac);if(ae){ae.appendChild(W)}Y=Z.parentNode;aa=n(Z);ab=n(t);++aa;V=ab-aa;ad=Z.nextSibling;while(V>0){X=ad.nextSibling;W=y(ad,ac);if(ae){ae.appendChild(W)}ad=X;--V}W=i(t,ac);if(ae){ae.appendChild(W)}if(ac!=E){N.setStartAfter(Z);N.collapse(D)}return ae}function i(aa,ab){var W=O(N[P],N[z]-1),ac,Z,Y,t,V,X=W!=N[P];if(W==aa){return L(W,X,R,ab)}ac=W.parentNode;Z=L(ac,R,R,ab);while(ac){while(W){Y=W.previousSibling;t=L(W,X,R,ab);if(ab!=j){Z.insertBefore(t,Z.firstChild)}X=D;W=Y}if(ac==aa){return Z}W=ac.previousSibling;ac=ac.parentNode;V=L(ac,R,R,ab);if(ab!=j){V.appendChild(Z)}Z=V}}function Q(aa,ab){var X=O(N[h],N[U]),Y=X!=N[h],ac,Z,W,t,V;if(X==aa){return L(X,Y,D,ab)}ac=X.parentNode;Z=L(ac,R,D,ab);while(ac){while(X){W=X.nextSibling;t=L(X,Y,D,ab);if(ab!=j){Z.appendChild(t)}Y=D;X=W}if(ac==aa){return Z}X=ac.nextSibling;ac=ac.parentNode;V=L(ac,R,D,ab);if(ab!=j){V.appendChild(Z)}Z=V}}function L(t,Y,ab,ac){var X,W,Z,V,aa;if(Y){return y(t,ac)}if(t.nodeType==3){X=t.nodeValue;if(ab){V=N[U];W=X.substring(V);Z=X.substring(0,V)}else{V=N[z];W=X.substring(0,V);Z=X.substring(V)}if(ac!=E){t.nodeValue=Z}if(ac==j){return}aa=t.cloneNode(R);aa.nodeValue=W;return aa}if(ac==j){return}return t.cloneNode(R)}function y(V,t){if(t!=j){return t==E?V.cloneNode(D):V}V.parentNode.removeChild(V)}}a.Range=b})(tinymce.dom);(function(){function a(d){var b=this,h=d.dom,c=true,f=false;function e(i,j){var k,t=0,q,n,m,l,o,r,p=-1,s;k=i.duplicate();k.collapse(j);s=k.parentElement();if(s.ownerDocument!==d.dom.doc){return}while(s.contentEditable==="false"){s=s.parentNode}if(!s.hasChildNodes()){return{node:s,inside:1}}m=s.children;q=m.length-1;while(t<=q){r=Math.floor((t+q)/2);l=m[r];k.moveToElementText(l);p=k.compareEndPoints(j?"StartToStart":"EndToEnd",i);if(p>0){q=r-1}else{if(p<0){t=r+1}else{return{node:l}}}}if(p<0){if(!l){k.moveToElementText(s);k.collapse(true);l=s;n=true}else{k.collapse(false)}k.setEndPoint(j?"EndToStart":"EndToEnd",i);if(k.compareEndPoints(j?"StartToStart":"StartToEnd",i)>0){k=i.duplicate();k.collapse(j);o=-1;while(s==k.parentElement()){if(k.move("character",-1)==0){break}o++}}o=o||k.text.replace("\r\n"," ").length}else{k.collapse(true);k.setEndPoint(j?"StartToStart":"StartToEnd",i);o=k.text.replace("\r\n"," ").length}return{node:l,position:p,offset:o,inside:n}}function g(){var i=d.getRng(),r=h.createRng(),l,k,p,q,m,j;l=i.item?i.item(0):i.parentElement();if(l.ownerDocument!=h.doc){return r}k=d.isCollapsed();if(i.item){r.setStart(l.parentNode,h.nodeIndex(l));r.setEnd(r.startContainer,r.startOffset+1);return r}function o(A){var u=e(i,A),s,y,z=0,x,v,t;s=u.node;y=u.offset;if(u.inside&&!s.hasChildNodes()){r[A?"setStart":"setEnd"](s,0);return}if(y===v){r[A?"setStartBefore":"setEndAfter"](s);return}if(u.position<0){x=u.inside?s.firstChild:s.nextSibling;if(!x){r[A?"setStartAfter":"setEndAfter"](s);return}if(!y){if(x.nodeType==3){r[A?"setStart":"setEnd"](x,0)}else{r[A?"setStartBefore":"setEndBefore"](x)}return}while(x){t=x.nodeValue;z+=t.length;if(z>=y){s=x;z-=y;z=t.length-z;break}x=x.nextSibling}}else{x=s.previousSibling;if(!x){return r[A?"setStartBefore":"setEndBefore"](s)}if(!y){if(s.nodeType==3){r[A?"setStart":"setEnd"](x,s.nodeValue.length)}else{r[A?"setStartAfter":"setEndAfter"](x)}return}while(x){z+=x.nodeValue.length;if(z>=y){s=x;z-=y;break}x=x.previousSibling}}r[A?"setStart":"setEnd"](s,z)}try{o(true);if(!k){o()}}catch(n){if(n.number==-2147024809){m=b.getBookmark(2);p=i.duplicate();p.collapse(true);l=p.parentElement();if(!k){p=i.duplicate();p.collapse(false);q=p.parentElement();q.innerHTML=q.innerHTML}l.innerHTML=l.innerHTML;b.moveToBookmark(m);i=d.getRng();o(true);if(!k){o()}}else{throw n}}return r}this.getBookmark=function(m){var j=d.getRng(),o,i,l={};function n(u){var u,t,p,s,r,q=[];t=u.parentNode;p=h.getRoot().parentNode;while(t!=p&&t.nodeType!==9){s=t.children;r=s.length;while(r--){if(u===s[r]){q.push(r);break}}u=t;t=t.parentNode}return q}function k(q){var p;p=e(j,q);if(p){return{position:p.position,offset:p.offset,indexes:n(p.node),inside:p.inside}}}if(m===2){if(!j.item){l.start=k(true);if(!d.isCollapsed()){l.end=k()}}else{l.start={ctrl:true,indexes:n(j.item(0))}}}return l};this.moveToBookmark=function(k){var j,i=h.doc.body;function m(o){var r,q,n,p;r=h.getRoot();for(q=o.length-1;q>=0;q--){p=r.children;n=o[q];if(n<=p.length-1){r=p[n]}}return r}function l(r){var n=k[r?"start":"end"],q,p,o;if(n){q=n.position>0;p=i.createTextRange();p.moveToElementText(m(n.indexes));offset=n.offset;if(offset!==o){p.collapse(n.inside||q);p.moveStart("character",q?-offset:offset)}else{p.collapse(r)}j.setEndPoint(r?"StartToStart":"EndToStart",p);if(r){j.collapse(true)}}}if(k.start){if(k.start.ctrl){j=i.createControlRange();j.addElement(m(k.start.indexes));j.select()}else{j=i.createTextRange();l(true);l();j.select()}}};this.addRange=function(i){var n,l,k,p,s,q,r=d.dom.doc,m=r.body;function j(z){var u,y,t,x,v;t=h.create("a");u=z?k:s;y=z?p:q;x=n.duplicate();if(u==r||u==r.documentElement){u=m;y=0}if(u.nodeType==3){u.parentNode.insertBefore(t,u);x.moveToElementText(t);x.moveStart("character",y);h.remove(t);n.setEndPoint(z?"StartToStart":"EndToEnd",x)}else{v=u.childNodes;if(v.length){if(y>=v.length){h.insertAfter(t,v[v.length-1])}else{u.insertBefore(t,v[y])}x.moveToElementText(t)}else{t=r.createTextNode("\uFEFF");u.appendChild(t);x.moveToElementText(t.parentNode);x.collapse(c)}n.setEndPoint(z?"StartToStart":"EndToEnd",x);h.remove(t)}}k=i.startContainer;p=i.startOffset;s=i.endContainer;q=i.endOffset;n=m.createTextRange();if(k==s&&k.nodeType==1&&p==q-1){if(p==q-1){try{l=m.createControlRange();l.addElement(k.childNodes[p]);l.select();return}catch(o){}}}j(true);j();n.select()};this.getRangeAt=g}tinymce.dom.TridentSelection=a})();(function(){var p=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,j=0,d=Object.prototype.toString,o=false,i=true;[0,0].sort(function(){i=false;return 0});var b=function(v,e,z,A){z=z||[];e=e||document;var C=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!v||typeof v!=="string"){return z}var x=[],s,E,H,r,u=true,t=b.isXML(e),B=v,D,G,F,y;do{p.exec("");s=p.exec(B);if(s){B=s[3];x.push(s[1]);if(s[2]){r=s[3];break}}}while(s);if(x.length>1&&k.exec(v)){if(x.length===2&&f.relative[x[0]]){E=h(x[0]+x[1],e)}else{E=f.relative[x[0]]?[e]:b(x.shift(),e);while(x.length){v=x.shift();if(f.relative[v]){v+=x.shift()}E=h(v,E)}}}else{if(!A&&x.length>1&&e.nodeType===9&&!t&&f.match.ID.test(x[0])&&!f.match.ID.test(x[x.length-1])){D=b.find(x.shift(),e,t);e=D.expr?b.filter(D.expr,D.set)[0]:D.set[0]}if(e){D=A?{expr:x.pop(),set:a(A)}:b.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&e.parentNode?e.parentNode:e,t);E=D.expr?b.filter(D.expr,D.set):D.set;if(x.length>0){H=a(E)}else{u=false}while(x.length){G=x.pop();F=G;if(!f.relative[G]){G=""}else{F=x.pop()}if(F==null){F=e}f.relative[G](H,F,t)}}else{H=x=[]}}if(!H){H=E}if(!H){b.error(G||v)}if(d.call(H)==="[object Array]"){if(!u){z.push.apply(z,H)}else{if(e&&e.nodeType===1){for(y=0;H[y]!=null;y++){if(H[y]&&(H[y]===true||H[y].nodeType===1&&b.contains(e,H[y]))){z.push(E[y])}}}else{for(y=0;H[y]!=null;y++){if(H[y]&&H[y].nodeType===1){z.push(E[y])}}}}}else{a(H,z)}if(r){b(r,C,z,A);b.uniqueSort(z)}return z};b.uniqueSort=function(r){if(c){o=i;r.sort(c);if(o){for(var e=1;e<r.length;e++){if(r[e]===r[e-1]){r.splice(e--,1)}}}}return r};b.matches=function(e,r){return b(e,null,null,r)};b.find=function(y,e,z){var x;if(!y){return[]}for(var t=0,s=f.order.length;t<s;t++){var v=f.order[t],u;if((u=f.leftMatch[v].exec(y))){var r=u[1];u.splice(1,1);if(r.substr(r.length-1)!=="\\"){u[1]=(u[1]||"").replace(/\\/g,"");x=f.find[v](u,e,z);if(x!=null){y=y.replace(f.match[v],"");break}}}}if(!x){x=e.getElementsByTagName("*")}return{set:x,expr:y}};b.filter=function(C,B,F,u){var s=C,H=[],z=B,x,e,y=B&&B[0]&&b.isXML(B[0]);while(C&&B.length){for(var A in f.filter){if((x=f.leftMatch[A].exec(C))!=null&&x[2]){var r=f.filter[A],G,E,t=x[1];e=false;x.splice(1,1);if(t.substr(t.length-1)==="\\"){continue}if(z===H){H=[]}if(f.preFilter[A]){x=f.preFilter[A](x,z,F,H,u,y);if(!x){e=G=true}else{if(x===true){continue}}}if(x){for(var v=0;(E=z[v])!=null;v++){if(E){G=r(E,x,v,z);var D=u^!!G;if(F&&G!=null){if(D){e=true}else{z[v]=false}}else{if(D){H.push(E);e=true}}}}}if(G!==undefined){if(!F){z=H}C=C.replace(f.match[A],"");if(!e){return[]}break}}}if(C===s){if(e==null){b.error(C)}else{break}}s=C}return z};b.error=function(e){throw"Syntax error, unrecognized expression: "+e};var f=b.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")}},relative:{"+":function(x,r){var t=typeof r==="string",v=t&&!/\W/.test(r),y=t&&!v;if(v){r=r.toLowerCase()}for(var s=0,e=x.length,u;s<e;s++){if((u=x[s])){while((u=u.previousSibling)&&u.nodeType!==1){}x[s]=y||u&&u.nodeName.toLowerCase()===r?u||false:u===r}}if(y){b.filter(r,x,true)}},">":function(x,r){var u=typeof r==="string",v,s=0,e=x.length;if(u&&!/\W/.test(r)){r=r.toLowerCase();for(;s<e;s++){v=x[s];if(v){var t=v.parentNode;x[s]=t.nodeName.toLowerCase()===r?t:false}}}else{for(;s<e;s++){v=x[s];if(v){x[s]=u?v.parentNode:v.parentNode===r}}if(u){b.filter(r,x,true)}}},"":function(t,r,v){var s=j++,e=q,u;if(typeof r==="string"&&!/\W/.test(r)){r=r.toLowerCase();u=r;e=n}e("parentNode",r,s,t,u,v)},"~":function(t,r,v){var s=j++,e=q,u;if(typeof r==="string"&&!/\W/.test(r)){r=r.toLowerCase();u=r;e=n}e("previousSibling",r,s,t,u,v)}},find:{ID:function(r,s,t){if(typeof s.getElementById!=="undefined"&&!t){var e=s.getElementById(r[1]);return e?[e]:[]}},NAME:function(s,v){if(typeof v.getElementsByName!=="undefined"){var r=[],u=v.getElementsByName(s[1]);for(var t=0,e=u.length;t<e;t++){if(u[t].getAttribute("name")===s[1]){r.push(u[t])}}return r.length===0?null:r}},TAG:function(e,r){return r.getElementsByTagName(e[1])}},preFilter:{CLASS:function(t,r,s,e,x,y){t=" "+t[1].replace(/\\/g,"")+" ";if(y){return t}for(var u=0,v;(v=r[u])!=null;u++){if(v){if(x^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(t)>=0)){if(!s){e.push(v)}}else{if(s){r[u]=false}}}}return false},ID:function(e){return e[1].replace(/\\/g,"")},TAG:function(r,e){return r[1].toLowerCase()},CHILD:function(e){if(e[1]==="nth"){var r=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(r[1]+(r[2]||1))-0;e[3]=r[3]-0}e[0]=j++;return e},ATTR:function(u,r,s,e,v,x){var t=u[1].replace(/\\/g,"");if(!x&&f.attrMap[t]){u[1]=f.attrMap[t]}if(u[2]==="~="){u[4]=" "+u[4]+" "}return u},PSEUDO:function(u,r,s,e,v){if(u[1]==="not"){if((p.exec(u[3])||"").length>1||/^\w/.test(u[3])){u[3]=b(u[3],null,null,r)}else{var t=b.filter(u[3],r,s,true^v);if(!s){e.push.apply(e,t)}return false}}else{if(f.match.POS.test(u[0])||f.match.CHILD.test(u[0])){return true}}return u},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){e.parentNode.selectedIndex;return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(s,r,e){return !!b(e[3],s).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(e){return"text"===e.type},radio:function(e){return"radio"===e.type},checkbox:function(e){return"checkbox"===e.type},file:function(e){return"file"===e.type},password:function(e){return"password"===e.type},submit:function(e){return"submit"===e.type},image:function(e){return"image"===e.type},reset:function(e){return"reset"===e.type},button:function(e){return"button"===e.type||e.nodeName.toLowerCase()==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)}},setFilters:{first:function(r,e){return e===0},last:function(s,r,e,t){return r===t.length-1},even:function(r,e){return e%2===0},odd:function(r,e){return e%2===1},lt:function(s,r,e){return r<e[3]-0},gt:function(s,r,e){return r>e[3]-0},nth:function(s,r,e){return e[3]-0===r},eq:function(s,r,e){return e[3]-0===r}},filter:{PSEUDO:function(s,y,x,z){var e=y[1],r=f.filters[e];if(r){return r(s,x,y,z)}else{if(e==="contains"){return(s.textContent||s.innerText||b.getText([s])||"").indexOf(y[3])>=0}else{if(e==="not"){var t=y[3];for(var v=0,u=t.length;v<u;v++){if(t[v]===s){return false}}return true}else{b.error("Syntax error, unrecognized expression: "+e)}}}},CHILD:function(e,t){var x=t[1],r=e;switch(x){case"only":case"first":while((r=r.previousSibling)){if(r.nodeType===1){return false}}if(x==="first"){return true}r=e;case"last":while((r=r.nextSibling)){if(r.nodeType===1){return false}}return true;case"nth":var s=t[2],A=t[3];if(s===1&&A===0){return true}var v=t[0],z=e.parentNode;if(z&&(z.sizcache!==v||!e.nodeIndex)){var u=0;for(r=z.firstChild;r;r=r.nextSibling){if(r.nodeType===1){r.nodeIndex=++u}}z.sizcache=v}var y=e.nodeIndex-A;if(s===0){return y===0}else{return(y%s===0&&y/s>=0)}}},ID:function(r,e){return r.nodeType===1&&r.getAttribute("id")===e},TAG:function(r,e){return(e==="*"&&r.nodeType===1)||r.nodeName.toLowerCase()===e},CLASS:function(r,e){return(" "+(r.className||r.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(v,t){var s=t[1],e=f.attrHandle[s]?f.attrHandle[s](v):v[s]!=null?v[s]:v.getAttribute(s),x=e+"",u=t[2],r=t[4];return e==null?u==="!=":u==="="?x===r:u==="*="?x.indexOf(r)>=0:u==="~="?(" "+x+" ").indexOf(r)>=0:!r?x&&e!==false:u==="!="?x!==r:u==="^="?x.indexOf(r)===0:u==="$="?x.substr(x.length-r.length)===r:u==="|="?x===r||x.substr(0,r.length+1)===r+"-":false},POS:function(u,r,s,v){var e=r[2],t=f.setFilters[e];if(t){return t(u,s,r,v)}}}};var k=f.match.POS,g=function(r,e){return"\\"+(e-0+1)};for(var m in f.match){f.match[m]=new RegExp(f.match[m].source+(/(?![^\[]*\])(?![^\(]*\))/.source));f.leftMatch[m]=new RegExp(/(^(?:.|\r|\n)*?)/.source+f.match[m].source.replace(/\\(\d+)/g,g))}var a=function(r,e){r=Array.prototype.slice.call(r,0);if(e){e.push.apply(e,r);return e}return r};try{Array.prototype.slice.call(document.documentElement.childNodes,0)[0].nodeType}catch(l){a=function(u,t){var r=t||[],s=0;if(d.call(u)==="[object Array]"){Array.prototype.push.apply(r,u)}else{if(typeof u.length==="number"){for(var e=u.length;s<e;s++){r.push(u[s])}}else{for(;u[s];s++){r.push(u[s])}}}return r}}var c;if(document.documentElement.compareDocumentPosition){c=function(r,e){if(!r.compareDocumentPosition||!e.compareDocumentPosition){if(r==e){o=true}return r.compareDocumentPosition?-1:1}var s=r.compareDocumentPosition(e)&4?-1:r===e?0:1;if(s===0){o=true}return s}}else{if("sourceIndex" in document.documentElement){c=function(r,e){if(!r.sourceIndex||!e.sourceIndex){if(r==e){o=true}return r.sourceIndex?-1:1}var s=r.sourceIndex-e.sourceIndex;if(s===0){o=true}return s}}else{if(document.createRange){c=function(t,r){if(!t.ownerDocument||!r.ownerDocument){if(t==r){o=true}return t.ownerDocument?-1:1}var s=t.ownerDocument.createRange(),e=r.ownerDocument.createRange();s.setStart(t,0);s.setEnd(t,0);e.setStart(r,0);e.setEnd(r,0);var u=s.compareBoundaryPoints(Range.START_TO_END,e);if(u===0){o=true}return u}}}}b.getText=function(e){var r="",t;for(var s=0;e[s];s++){t=e[s];if(t.nodeType===3||t.nodeType===4){r+=t.nodeValue}else{if(t.nodeType!==8){r+=b.getText(t.childNodes)}}}return r};(function(){var r=document.createElement("div"),s="script"+(new Date()).getTime();r.innerHTML="<a name='"+s+"'/>";var e=document.documentElement;e.insertBefore(r,e.firstChild);if(document.getElementById(s)){f.find.ID=function(u,v,x){if(typeof v.getElementById!=="undefined"&&!x){var t=v.getElementById(u[1]);return t?t.id===u[1]||typeof t.getAttributeNode!=="undefined"&&t.getAttributeNode("id").nodeValue===u[1]?[t]:undefined:[]}};f.filter.ID=function(v,t){var u=typeof v.getAttributeNode!=="undefined"&&v.getAttributeNode("id");return v.nodeType===1&&u&&u.nodeValue===t}}e.removeChild(r);e=r=null})();(function(){var e=document.createElement("div");e.appendChild(document.createComment(""));if(e.getElementsByTagName("*").length>0){f.find.TAG=function(r,v){var u=v.getElementsByTagName(r[1]);if(r[1]==="*"){var t=[];for(var s=0;u[s];s++){if(u[s].nodeType===1){t.push(u[s])}}u=t}return u}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){f.attrHandle.href=function(r){return r.getAttribute("href",2)}}e=null})();if(document.querySelectorAll){(function(){var e=b,s=document.createElement("div");s.innerHTML="<p class='TEST'></p>";if(s.querySelectorAll&&s.querySelectorAll(".TEST").length===0){return}b=function(x,v,t,u){v=v||document;if(!u&&v.nodeType===9&&!b.isXML(v)){try{return a(v.querySelectorAll(x),t)}catch(y){}}return e(x,v,t,u)};for(var r in e){b[r]=e[r]}s=null})()}(function(){var e=document.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}f.order.splice(1,0,"CLASS");f.find.CLASS=function(r,s,t){if(typeof s.getElementsByClassName!=="undefined"&&!t){return s.getElementsByClassName(r[1])}};e=null})();function n(r,x,v,A,y,z){for(var t=0,s=A.length;t<s;t++){var e=A[t];if(e){e=e[r];var u=false;while(e){if(e.sizcache===v){u=A[e.sizset];break}if(e.nodeType===1&&!z){e.sizcache=v;e.sizset=t}if(e.nodeName.toLowerCase()===x){u=e;break}e=e[r]}A[t]=u}}}function q(r,x,v,A,y,z){for(var t=0,s=A.length;t<s;t++){var e=A[t];if(e){e=e[r];var u=false;while(e){if(e.sizcache===v){u=A[e.sizset];break}if(e.nodeType===1){if(!z){e.sizcache=v;e.sizset=t}if(typeof x!=="string"){if(e===x){u=true;break}}else{if(b.filter(x,[e]).length>0){u=e;break}}}e=e[r]}A[t]=u}}}b.contains=document.compareDocumentPosition?function(r,e){return !!(r.compareDocumentPosition(e)&16)}:function(r,e){return r!==e&&(r.contains?r.contains(e):true)};b.isXML=function(e){var r=(e?e.ownerDocument||e:0).documentElement;return r?r.nodeName!=="HTML":false};var h=function(e,y){var t=[],u="",v,s=y.nodeType?[y]:y;while((v=f.match.PSEUDO.exec(e))){u+=v[0];e=e.replace(f.match.PSEUDO,"")}e=f.relative[e]?e+"*":e;for(var x=0,r=s.length;x<r;x++){b(e,s[x],t)}return b.filter(u,t)};window.tinymce.dom.Sizzle=b})();(function(d){var f=d.each,c=d.DOM,b=d.isIE,e=d.isWebKit,a;d.create("tinymce.dom.EventUtils",{EventUtils:function(){this.inits=[];this.events=[]},add:function(m,p,l,j){var g,h=this,i=h.events,k;if(p instanceof Array){k=[];f(p,function(o){k.push(h.add(m,o,l,j))});return k}if(m&&m.hasOwnProperty&&m instanceof Array){k=[];f(m,function(n){n=c.get(n);k.push(h.add(n,p,l,j))});return k}m=c.get(m);if(!m){return}g=function(n){if(h.disabled){return}n=n||window.event;if(n&&b){if(!n.target){n.target=n.srcElement}d.extend(n,h._stoppers)}if(!j){return l(n)}return l.call(j,n)};if(p=="unload"){d.unloads.unshift({func:g});return g}if(p=="init"){if(h.domLoaded){g()}else{h.inits.push(g)}return g}i.push({obj:m,name:p,func:l,cfunc:g,scope:j});h._add(m,p,g);return l},remove:function(l,m,k){var h=this,g=h.events,i=false,j;if(l&&l.hasOwnProperty&&l instanceof Array){j=[];f(l,function(n){n=c.get(n);j.push(h.remove(n,m,k))});return j}l=c.get(l);f(g,function(o,n){if(o.obj==l&&o.name==m&&(!k||(o.func==k||o.cfunc==k))){g.splice(n,1);h._remove(l,m,o.cfunc);i=true;return false}});return i},clear:function(l){var j=this,g=j.events,h,k;if(l){l=c.get(l);for(h=g.length-1;h>=0;h--){k=g[h];if(k.obj===l){j._remove(k.obj,k.name,k.cfunc);k.obj=k.cfunc=null;g.splice(h,1)}}}},cancel:function(g){if(!g){return false}this.stop(g);return this.prevent(g)},stop:function(g){if(g.stopPropagation){g.stopPropagation()}else{g.cancelBubble=true}return false},prevent:function(g){if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}return false},destroy:function(){var g=this;f(g.events,function(j,h){g._remove(j.obj,j.name,j.cfunc);j.obj=j.cfunc=null});g.events=[];g=null},_add:function(h,i,g){if(h.attachEvent){h.attachEvent("on"+i,g)}else{if(h.addEventListener){h.addEventListener(i,g,false)}else{h["on"+i]=g}}},_remove:function(i,j,h){if(i){try{if(i.detachEvent){i.detachEvent("on"+j,h)}else{if(i.removeEventListener){i.removeEventListener(j,h,false)}else{i["on"+j]=null}}}catch(g){}}},_pageInit:function(h){var g=this;if(g.domLoaded){return}g.domLoaded=true;f(g.inits,function(i){i()});g.inits=[]},_wait:function(i){var g=this,h=i.document;if(i.tinyMCE_GZ&&tinyMCE_GZ.loaded){g.domLoaded=1;return}if(h.readyState==="complete"){g._pageInit(i);return}if(h.attachEvent){h.attachEvent("onreadystatechange",function(){if(h.readyState==="complete"){h.detachEvent("onreadystatechange",arguments.callee);g._pageInit(i)}});if(h.documentElement.doScroll&&i==i.top){(function(){if(g.domLoaded){return}try{h.documentElement.doScroll("left")}catch(j){setTimeout(arguments.callee,0);return}g._pageInit(i)})()}}else{if(h.addEventListener){g._add(i,"DOMContentLoaded",function(){g._pageInit(i)})}}g._add(i,"load",function(){g._pageInit(i)})},_stoppers:{preventDefault:function(){this.returnValue=false},stopPropagation:function(){this.cancelBubble=true}}});a=d.dom.Event=new d.dom.EventUtils();a._wait(window);d.addUnload(function(){a.destroy()})})(tinymce);(function(a){a.dom.Element=function(f,d){var b=this,e,c;b.settings=d=d||{};b.id=f;b.dom=e=d.dom||a.DOM;if(!a.isIE){c=e.get(b.id)}a.each(("getPos,getRect,getParent,add,setStyle,getStyle,setStyles,setAttrib,setAttribs,getAttrib,addClass,removeClass,hasClass,getOuterHTML,setOuterHTML,remove,show,hide,isHidden,setHTML,get").split(/,/),function(g){b[g]=function(){var h=[f],j;for(j=0;j<arguments.length;j++){h.push(arguments[j])}h=e[g].apply(e,h);b.update(g);return h}});a.extend(b,{on:function(i,h,g){return a.dom.Event.add(b.id,i,h,g)},getXY:function(){return{x:parseInt(b.getStyle("left")),y:parseInt(b.getStyle("top"))}},getSize:function(){var g=e.get(b.id);return{w:parseInt(b.getStyle("width")||g.clientWidth),h:parseInt(b.getStyle("height")||g.clientHeight)}},moveTo:function(g,h){b.setStyles({left:g,top:h})},moveBy:function(g,i){var h=b.getXY();b.moveTo(h.x+g,h.y+i)},resizeTo:function(g,i){b.setStyles({width:g,height:i})},resizeBy:function(g,j){var i=b.getSize();b.resizeTo(i.w+g,i.h+j)},update:function(h){var g;if(a.isIE6&&d.blocker){h=h||"";if(h.indexOf("get")===0||h.indexOf("has")===0||h.indexOf("is")===0){return}if(h=="remove"){e.remove(b.blocker);return}if(!b.blocker){b.blocker=e.uniqueId();g=e.add(d.container||e.getRoot(),"iframe",{id:b.blocker,style:"position:absolute;",frameBorder:0,src:'javascript:""'});e.setStyle(g,"opacity",0)}else{g=e.get(b.blocker)}e.setStyles(g,{left:b.getStyle("left",1),top:b.getStyle("top",1),width:b.getStyle("width",1),height:b.getStyle("height",1),display:b.getStyle("display",1),zIndex:parseInt(b.getStyle("zIndex",1)||0)-1})}}})}})(tinymce);(function(c){function e(f){return f.replace(/[\n\r]+/g,"")}var b=c.is,a=c.isIE,d=c.each;c.create("tinymce.dom.Selection",{Selection:function(i,h,g){var f=this;f.dom=i;f.win=h;f.serializer=g;d(["onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent"],function(j){f[j]=new c.util.Dispatcher(f)});if(!f.win.getSelection){f.tridentSel=new c.dom.TridentSelection(f)}if(c.isIE&&i.boxModel){this._fixIESelection()}c.addUnload(f.destroy,f)},setCursorLocation:function(h,i){var f=this;var g=f.dom.createRng();g.setStart(h,i);g.setEnd(h,i);f.setRng(g);f.collapse(false)},getContent:function(g){var f=this,h=f.getRng(),l=f.dom.create("body"),j=f.getSel(),i,k,m;g=g||{};i=k="";g.get=true;g.format=g.format||"html";g.forced_root_block="";f.onBeforeGetContent.dispatch(f,g);if(g.format=="text"){return f.isCollapsed()?"":(h.text||(j.toString?j.toString():""))}if(h.cloneContents){m=h.cloneContents();if(m){l.appendChild(m)}}else{if(b(h.item)||b(h.htmlText)){l.innerHTML="<br>"+(h.item?h.item(0).outerHTML:h.htmlText);l.removeChild(l.firstChild)}else{l.innerHTML=h.toString()}}if(/^\s/.test(l.innerHTML)){i=" "}if(/\s+$/.test(l.innerHTML)){k=" "}g.getInner=true;g.content=f.isCollapsed()?"":i+f.serializer.serialize(l,g)+k;f.onGetContent.dispatch(f,g);return g.content},setContent:function(g,i){var n=this,f=n.getRng(),j,k=n.win.document,m,l;i=i||{format:"html"};i.set=true;g=i.content=g;if(!i.no_events){n.onBeforeSetContent.dispatch(n,i)}g=i.content;if(f.insertNode){g+='<span id="__caret">_</span>';if(f.startContainer==k&&f.endContainer==k){k.body.innerHTML=g}else{f.deleteContents();if(k.body.childNodes.length==0){k.body.innerHTML=g}else{if(f.createContextualFragment){f.insertNode(f.createContextualFragment(g))}else{m=k.createDocumentFragment();l=k.createElement("div");m.appendChild(l);l.outerHTML=g;f.insertNode(m)}}}j=n.dom.get("__caret");f=k.createRange();f.setStartBefore(j);f.setEndBefore(j);n.setRng(f);n.dom.remove("__caret");try{n.setRng(f)}catch(h){}}else{if(f.item){k.execCommand("Delete",false,null);f=n.getRng()}if(/^\s+/.test(g)){f.pasteHTML('<span id="__mce_tmp">_</span>'+g);n.dom.remove("__mce_tmp")}else{f.pasteHTML(g)}}if(!i.no_events){n.onSetContent.dispatch(n,i)}},getStart:function(){var g=this.getRng(),h,f,j,i;if(g.duplicate||g.item){if(g.item){return g.item(0)}j=g.duplicate();j.collapse(1);h=j.parentElement();f=i=g.parentElement();while(i=i.parentNode){if(i==h){h=f;break}}return h}else{h=g.startContainer;if(h.nodeType==1&&h.hasChildNodes()){h=h.childNodes[Math.min(h.childNodes.length-1,g.startOffset)]}if(h&&h.nodeType==3){return h.parentNode}return h}},getEnd:function(){var g=this,h=g.getRng(),i,f;if(h.duplicate||h.item){if(h.item){return h.item(0)}h=h.duplicate();h.collapse(0);i=h.parentElement();if(i&&i.nodeName=="BODY"){return i.lastChild||i}return i}else{i=h.endContainer;f=h.endOffset;if(i.nodeType==1&&i.hasChildNodes()){i=i.childNodes[f>0?f-1:f]}if(i&&i.nodeType==3){return i.parentNode}return i}},getBookmark:function(r,s){var v=this,m=v.dom,g,j,i,n,h,o,p,l="\uFEFF",u;function f(x,y){var t=0;d(m.select(x),function(A,z){if(A==y){t=z}});return t}if(r==2){function k(){var x=v.getRng(true),t=m.getRoot(),y={};function z(C,H){var B=C[H?"startContainer":"endContainer"],G=C[H?"startOffset":"endOffset"],A=[],D,F,E=0;if(B.nodeType==3){if(s){for(D=B.previousSibling;D&&D.nodeType==3;D=D.previousSibling){G+=D.nodeValue.length}}A.push(G)}else{F=B.childNodes;if(G>=F.length&&F.length){E=1;G=Math.max(0,F.length-1)}A.push(v.dom.nodeIndex(F[G],s)+E)}for(;B&&B!=t;B=B.parentNode){A.push(v.dom.nodeIndex(B,s))}return A}y.start=z(x,true);if(!v.isCollapsed()){y.end=z(x)}return y}if(v.tridentSel){return v.tridentSel.getBookmark(r)}return k()}if(r){return{rng:v.getRng()}}g=v.getRng();i=m.uniqueId();n=tinyMCE.activeEditor.selection.isCollapsed();u="overflow:hidden;line-height:0px";if(g.duplicate||g.item){if(!g.item){j=g.duplicate();try{g.collapse();g.pasteHTML('<span data-mce-type="bookmark" id="'+i+'_start" style="'+u+'">'+l+"</span>");if(!n){j.collapse(false);g.moveToElementText(j.parentElement());if(g.compareEndPoints("StartToEnd",j)==0){j.move("character",-1)}j.pasteHTML('<span data-mce-type="bookmark" id="'+i+'_end" style="'+u+'">'+l+"</span>")}}catch(q){return null}}else{o=g.item(0);h=o.nodeName;return{name:h,index:f(h,o)}}}else{o=v.getNode();h=o.nodeName;if(h=="IMG"){return{name:h,index:f(h,o)}}j=g.cloneRange();if(!n){j.collapse(false);j.insertNode(m.create("span",{"data-mce-type":"bookmark",id:i+"_end",style:u},l))}g.collapse(true);g.insertNode(m.create("span",{"data-mce-type":"bookmark",id:i+"_start",style:u},l))}v.moveToBookmark({id:i,keep:1});return{id:i}},moveToBookmark:function(n){var r=this,l=r.dom,i,h,f,q,j,s,o,p;if(n){if(n.start){f=l.createRng();q=l.getRoot();function g(z){var t=n[z?"start":"end"],v,x,y,u;if(t){y=t[0];for(x=q,v=t.length-1;v>=1;v--){u=x.childNodes;if(t[v]>u.length-1){return}x=u[t[v]]}if(x.nodeType===3){y=Math.min(t[0],x.nodeValue.length)}if(x.nodeType===1){y=Math.min(t[0],x.childNodes.length)}if(z){f.setStart(x,y)}else{f.setEnd(x,y)}}return true}if(r.tridentSel){return r.tridentSel.moveToBookmark(n)}if(g(true)&&g()){r.setRng(f)}}else{if(n.id){function k(A){var u=l.get(n.id+"_"+A),z,t,x,y,v=n.keep;if(u){z=u.parentNode;if(A=="start"){if(!v){t=l.nodeIndex(u)}else{z=u.firstChild;t=1}j=s=z;o=p=t}else{if(!v){t=l.nodeIndex(u)}else{z=u.firstChild;t=1}s=z;p=t}if(!v){y=u.previousSibling;x=u.nextSibling;d(c.grep(u.childNodes),function(B){if(B.nodeType==3){B.nodeValue=B.nodeValue.replace(/\uFEFF/g,"")}});while(u=l.get(n.id+"_"+A)){l.remove(u,1)}if(y&&x&&y.nodeType==x.nodeType&&y.nodeType==3&&!c.isOpera){t=y.nodeValue.length;y.appendData(x.nodeValue);l.remove(x);if(A=="start"){j=s=y;o=p=t}else{s=y;p=t}}}}}function m(t){if(l.isBlock(t)&&!t.innerHTML){t.innerHTML=!a?'<br data-mce-bogus="1" />':" "}return t}k("start");k("end");if(j){f=l.createRng();f.setStart(m(j),o);f.setEnd(m(s),p);r.setRng(f)}}else{if(n.name){r.select(l.select(n.name)[n.index])}else{if(n.rng){r.setRng(n.rng)}}}}}},select:function(k,j){var i=this,l=i.dom,g=l.createRng(),f;if(k){f=l.nodeIndex(k);g.setStart(k.parentNode,f);g.setEnd(k.parentNode,f+1);if(j){function h(m,o){var n=new c.dom.TreeWalker(m,m);do{if(m.nodeType==3&&c.trim(m.nodeValue).length!=0){if(o){g.setStart(m,0)}else{g.setEnd(m,m.nodeValue.length)}return}if(m.nodeName=="BR"){if(o){g.setStartBefore(m)}else{g.setEndBefore(m)}return}}while(m=(o?n.next():n.prev()))}h(k,1);h(k)}i.setRng(g)}return k},isCollapsed:function(){var f=this,h=f.getRng(),g=f.getSel();if(!h||h.item){return false}if(h.compareEndPoints){return h.compareEndPoints("StartToEnd",h)===0}return !g||h.collapsed},collapse:function(f){var h=this,g=h.getRng(),i;if(g.item){i=g.item(0);g=h.win.document.body.createTextRange();g.moveToElementText(i)}g.collapse(!!f);h.setRng(g)},getSel:function(){var g=this,f=this.win;return f.getSelection?f.getSelection():f.document.selection},getRng:function(l){var g=this,h,i,k,j=g.win.document;if(l&&g.tridentSel){return g.tridentSel.getRangeAt(0)}try{if(h=g.getSel()){i=h.rangeCount>0?h.getRangeAt(0):(h.createRange?h.createRange():j.createRange())}}catch(f){}if(c.isIE&&i&&i.setStart&&j.selection.createRange().item){k=j.selection.createRange().item(0);i=j.createRange();i.setStartBefore(k);i.setEndAfter(k)}if(!i){i=j.createRange?j.createRange():j.body.createTextRange()}if(g.selectedRange&&g.explicitRange){if(i.compareBoundaryPoints(i.START_TO_START,g.selectedRange)===0&&i.compareBoundaryPoints(i.END_TO_END,g.selectedRange)===0){i=g.explicitRange}else{g.selectedRange=null;g.explicitRange=null}}return i},setRng:function(i){var h,g=this;if(!g.tridentSel){h=g.getSel();if(h){g.explicitRange=i;try{h.removeAllRanges()}catch(f){}h.addRange(i);g.selectedRange=h.rangeCount>0?h.getRangeAt(0):null}}else{if(i.cloneRange){g.tridentSel.addRange(i);return}try{i.select()}catch(f){}}},setNode:function(g){var f=this;f.setContent(f.dom.getOuterHTML(g));return g},getNode:function(){var h=this,g=h.getRng(),i=h.getSel(),l,k=g.startContainer,f=g.endContainer;if(!g){return h.dom.getRoot()}if(g.setStart){l=g.commonAncestorContainer;if(!g.collapsed){if(g.startContainer==g.endContainer){if(g.endOffset-g.startOffset<2){if(g.startContainer.hasChildNodes()){l=g.startContainer.childNodes[g.startOffset]}}}if(k.nodeType===3&&f.nodeType===3){function j(p,m){var o=p;while(p&&p.nodeType===3&&p.length===0){p=m?p.nextSibling:p.previousSibling}return p||o}if(k.length===g.startOffset){k=j(k.nextSibling,true)}else{k=k.parentNode}if(g.endOffset===0){f=j(f.previousSibling,false)}else{f=f.parentNode}if(k&&k===f){return k}}}if(l&&l.nodeType==3){return l.parentNode}return l}return g.item?g.item(0):g.parentElement()},getSelectedBlocks:function(o,g){var m=this,j=m.dom,l,k,h,i=[];l=j.getParent(o||m.getStart(),j.isBlock);k=j.getParent(g||m.getEnd(),j.isBlock);if(l){i.push(l)}if(l&&k&&l!=k){h=l;var f=new c.dom.TreeWalker(l,j.getRoot());while((h=f.next())&&h!=k){if(j.isBlock(h)){i.push(h)}}}if(k&&l!=k){i.push(k)}return i},normalize:function(){var g=this,f,i;if(c.isIE){return}function h(p){var k,o,n,m=g.dom,j=m.getRoot(),l;k=f[(p?"start":"end")+"Container"];o=f[(p?"start":"end")+"Offset"];if(k.nodeType===9){k=k.body;o=0}if(k===j){if(k.hasChildNodes()){k=k.childNodes[Math.min(!p&&o>0?o-1:o,k.childNodes.length-1)];o=0;if(k.hasChildNodes()){l=k;n=new c.dom.TreeWalker(k,j);do{if(l.nodeType===3){o=p?0:l.nodeValue.length-1;k=l;i=true;break}if(/^(BR|IMG)$/.test(l.nodeName)){o=m.nodeIndex(l);k=l.parentNode;if(l.nodeName=="IMG"&&!p){o++}i=true;break}}while(l=(p?n.next():n.prev()))}}}if(i){f["set"+(p?"Start":"End")](k,o)}}f=g.getRng();h(true);if(!f.collapsed){h()}if(i){g.setRng(f)}},destroy:function(g){var f=this;f.win=null;if(!g){c.removeUnload(f.destroy)}},_fixIESelection:function(){var g=this.dom,m=g.doc,h=m.body,j,n,f;m.documentElement.unselectable=true;function i(o,r){var p=h.createTextRange();try{p.moveToPoint(o,r)}catch(q){p=null}return p}function l(p){var o;if(p.button){o=i(p.x,p.y);if(o){if(o.compareEndPoints("StartToStart",n)>0){o.setEndPoint("StartToStart",n)}else{o.setEndPoint("EndToEnd",n)}o.select()}}else{k()}}function k(){var o=m.selection.createRange();if(n&&!o.item&&o.compareEndPoints("StartToEnd",o)===0){n.select()}g.unbind(m,"mouseup",k);g.unbind(m,"mousemove",l);n=j=0}g.bind(m,["mousedown","contextmenu"],function(o){if(o.target.nodeName==="HTML"){if(j){k()}f=m.documentElement;if(f.scrollHeight>f.clientHeight){return}j=1;n=i(o.x,o.y);if(n){g.bind(m,"mouseup",k);g.bind(m,"mousemove",l);g.win.focus();n.select()}}})}})})(tinymce);(function(a){a.dom.Serializer=function(e,i,f){var h,b,d=a.isIE,g=a.each,c;if(!e.apply_source_formatting){e.indent=false}i=i||a.DOM;f=f||new a.html.Schema(e);e.entity_encoding=e.entity_encoding||"named";e.remove_trailing_brs="remove_trailing_brs" in e?e.remove_trailing_brs:true;h=new a.util.Dispatcher(self);b=new a.util.Dispatcher(self);c=new a.html.DomParser(e,f);c.addAttributeFilter("src,href,style",function(k,j){var o=k.length,l,q,n="data-mce-"+j,p=e.url_converter,r=e.url_converter_scope,m;while(o--){l=k[o];q=l.attributes.map[n];if(q!==m){l.attr(j,q.length>0?q:null);l.attr(n,null)}else{q=l.attributes.map[j];if(j==="style"){q=i.serializeStyle(i.parseStyle(q),l.name)}else{if(p){q=p.call(r,q,j,l.name)}}l.attr(j,q.length>0?q:null)}}});c.addAttributeFilter("class",function(j,k){var l=j.length,m,n;while(l--){m=j[l];n=m.attr("class").replace(/\s*mce(Item\w+|Selected)\s*/g,"");m.attr("class",n.length>0?n:null)}});c.addAttributeFilter("data-mce-type",function(j,l,k){var m=j.length,n;while(m--){n=j[m];if(n.attributes.map["data-mce-type"]==="bookmark"&&!k.cleanup){n.remove()}}});c.addNodeFilter("script,style",function(k,l){var m=k.length,n,o;function j(p){return p.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")}while(m--){n=k[m];o=n.firstChild?n.firstChild.value:"";if(l==="script"){n.attr("type",(n.attr("type")||"text/javascript").replace(/^mce\-/,""));if(o.length>0){n.firstChild.value="// <![CDATA[\n"+j(o)+"\n// ]]>"}}else{if(o.length>0){n.firstChild.value="<!--\n"+j(o)+"\n-->"}}}});c.addNodeFilter("#comment",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.value.indexOf("[CDATA[")===0){m.name="#cdata";m.type=4;m.value=m.value.replace(/^\[CDATA\[|\]\]$/g,"")}else{if(m.value.indexOf("mce:protected ")===0){m.name="#text";m.type=3;m.raw=true;m.value=unescape(m.value).substr(14)}}}});c.addNodeFilter("xml:namespace,input",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.type===7){m.remove()}else{if(m.type===1){if(k==="input"&&!("type" in m.attributes.map)){m.attr("type","text")}}}}});if(e.fix_list_elements){c.addNodeFilter("ul,ol",function(k,l){var m=k.length,n,j;while(m--){n=k[m];j=n.parent;if(j.name==="ul"||j.name==="ol"){if(n.prev&&n.prev.name==="li"){n.prev.append(n)}}}})}c.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style",function(j,k){var l=j.length;while(l--){j[l].attr(k,null)}});return{schema:f,addNodeFilter:c.addNodeFilter,addAttributeFilter:c.addAttributeFilter,onPreProcess:h,onPostProcess:b,serialize:function(o,m){var l,p,k,j,n;if(d&&i.select("script,style,select,map").length>0){n=o.innerHTML;o=o.cloneNode(false);i.setHTML(o,n)}else{o=o.cloneNode(true)}l=o.ownerDocument.implementation;if(l.createHTMLDocument){p=l.createHTMLDocument("");g(o.nodeName=="BODY"?o.childNodes:[o],function(q){p.body.appendChild(p.importNode(q,true))});if(o.nodeName!="BODY"){o=p.body.firstChild}else{o=p.body}k=i.doc;i.doc=p}m=m||{};m.format=m.format||"html";if(!m.no_events){m.node=o;h.dispatch(self,m)}j=new a.html.Serializer(e,f);m.content=j.serialize(c.parse(m.getInner?o.innerHTML:a.trim(i.getOuterHTML(o),m),m));if(!m.cleanup){m.content=m.content.replace(/\uFEFF|\u200B/g,"")}if(!m.no_events){b.dispatch(self,m)}if(k){i.doc=k}m.node=null;return m.content},addRules:function(j){f.addValidElements(j)},setRules:function(j){f.setValidElements(j)}}}})(tinymce);(function(a){a.dom.ScriptLoader=function(h){var c=0,k=1,i=2,l={},j=[],f={},d=[],g=0,e;function b(m,v){var x=this,q=a.DOM,s,o,r,n;function p(){q.remove(n);if(s){s.onreadystatechange=s.onload=s=null}v()}function u(){if(typeof(console)!=="undefined"&&console.log){console.log("Failed to load: "+m)}}n=q.uniqueId();if(a.isIE6){o=new a.util.URI(m);r=location;if(o.host==r.hostname&&o.port==r.port&&(o.protocol+":")==r.protocol&&o.protocol.toLowerCase()!="file"){a.util.XHR.send({url:a._addVer(o.getURI()),success:function(y){var t=q.create("script",{type:"text/javascript"});t.text=y;document.getElementsByTagName("head")[0].appendChild(t);q.remove(t);p()},error:u});return}}s=q.create("script",{id:n,type:"text/javascript",src:a._addVer(m)});if(!a.isIE){s.onload=p}s.onerror=u;if(!a.isOpera){s.onreadystatechange=function(){var t=s.readyState;if(t=="complete"||t=="loaded"){p()}}}(document.getElementsByTagName("head")[0]||document.body).appendChild(s)}this.isDone=function(m){return l[m]==i};this.markDone=function(m){l[m]=i};this.add=this.load=function(m,q,n){var o,p=l[m];if(p==e){j.push(m);l[m]=c}if(q){if(!f[m]){f[m]=[]}f[m].push({func:q,scope:n||this})}};this.loadQueue=function(n,m){this.loadScripts(j,n,m)};this.loadScripts=function(m,q,p){var o;function n(r){a.each(f[r],function(s){s.func.call(s.scope)});f[r]=e}d.push({func:q,scope:p||this});o=function(){var r=a.grep(m);m.length=0;a.each(r,function(s){if(l[s]==i){n(s);return}if(l[s]!=k){l[s]=k;g++;b(s,function(){l[s]=i;g--;n(s);o()})}});if(!g){a.each(d,function(s){s.func.call(s.scope)});d.length=0}};o()}};a.ScriptLoader=new a.dom.ScriptLoader()})(tinymce);tinymce.dom.TreeWalker=function(a,c){var b=a;function d(i,f,e,j){var h,g;if(i){if(!j&&i[f]){return i[f]}if(i!=c){h=i[e];if(h){return h}for(g=i.parentNode;g&&g!=c;g=g.parentNode){h=g[e];if(h){return h}}}}}this.current=function(){return b};this.next=function(e){return(b=d(b,"firstChild","nextSibling",e))};this.prev=function(e){return(b=d(b,"lastChild","previousSibling",e))}};(function(a){a.dom.RangeUtils=function(c){var b="\uFEFF";this.walk=function(d,s){var i=d.startContainer,l=d.startOffset,t=d.endContainer,m=d.endOffset,j,g,o,h,r,q,e;e=c.select("td.mceSelected,th.mceSelected");if(e.length>0){a.each(e,function(u){s([u])});return}function f(u){var v;v=u[0];if(v.nodeType===3&&v===i&&l>=v.nodeValue.length){u.splice(0,1)}v=u[u.length-1];if(m===0&&u.length>0&&v===t&&v.nodeType===3){u.splice(u.length-1,1)}return u}function p(x,v,u){var y=[];for(;x&&x!=u;x=x[v]){y.push(x)}return y}function n(v,u){do{if(v.parentNode==u){return v}v=v.parentNode}while(v)}function k(x,v,y){var u=y?"nextSibling":"previousSibling";for(h=x,r=h.parentNode;h&&h!=v;h=r){r=h.parentNode;q=p(h==x?h:h[u],u);if(q.length){if(!y){q.reverse()}s(f(q))}}}if(i.nodeType==1&&i.hasChildNodes()){i=i.childNodes[l]}if(t.nodeType==1&&t.hasChildNodes()){t=t.childNodes[Math.min(m-1,t.childNodes.length-1)]}if(i==t){return s(f([i]))}j=c.findCommonAncestor(i,t);for(h=i;h;h=h.parentNode){if(h===t){return k(i,j,true)}if(h===j){break}}for(h=t;h;h=h.parentNode){if(h===i){return k(t,j)}if(h===j){break}}g=n(i,j)||i;o=n(t,j)||t;k(i,g,true);q=p(g==i?g:g.nextSibling,"nextSibling",o==t?o.nextSibling:o);if(q.length){s(f(q))}k(t,o)};this.split=function(e){var h=e.startContainer,d=e.startOffset,i=e.endContainer,g=e.endOffset;function f(j,k){return j.splitText(k)}if(h==i&&h.nodeType==3){if(d>0&&d<h.nodeValue.length){i=f(h,d);h=i.previousSibling;if(g>d){g=g-d;h=i=f(i,g).previousSibling;g=i.nodeValue.length;d=0}else{g=0}}}else{if(h.nodeType==3&&d>0&&d<h.nodeValue.length){h=f(h,d);d=0}if(i.nodeType==3&&g>0&&g<i.nodeValue.length){i=f(i,g).previousSibling;g=i.nodeValue.length}}return{startContainer:h,startOffset:d,endContainer:i,endOffset:g}}};a.dom.RangeUtils.compareRanges=function(c,b){if(c&&b){if(c.item||c.duplicate){if(c.item&&b.item&&c.item(0)===b.item(0)){return true}if(c.isEqual&&b.isEqual&&b.isEqual(c)){return true}}else{return c.startContainer==b.startContainer&&c.startOffset==b.startOffset}}return false}})(tinymce);(function(b){var a=b.dom.Event,c=b.each;b.create("tinymce.ui.KeyboardNavigation",{KeyboardNavigation:function(e,f){var p=this,m=e.root,l=e.items,n=e.enableUpDown,i=e.enableLeftRight||!e.enableUpDown,k=e.excludeFromTabOrder,j,h,o,d,g;f=f||b.DOM;j=function(q){g=q.target.id};h=function(q){f.setAttrib(q.target.id,"tabindex","-1")};d=function(q){var r=f.get(g);f.setAttrib(r,"tabindex","0");r.focus()};p.focus=function(){f.get(g).focus()};p.destroy=function(){c(l,function(q){f.unbind(f.get(q.id),"focus",j);f.unbind(f.get(q.id),"blur",h)});f.unbind(f.get(m),"focus",d);f.unbind(f.get(m),"keydown",o);l=f=m=p.focus=j=h=o=d=null;p.destroy=function(){}};p.moveFocus=function(u,r){var q=-1,t=p.controls,s;if(!g){return}c(l,function(x,v){if(x.id===g){q=v;return false}});q+=u;if(q<0){q=l.length-1}else{if(q>=l.length){q=0}}s=l[q];f.setAttrib(g,"tabindex","-1");f.setAttrib(s.id,"tabindex","0");f.get(s.id).focus();if(e.actOnFocus){e.onAction(s.id)}if(r){a.cancel(r)}};o=function(y){var u=37,t=39,x=38,z=40,q=27,s=14,r=13,v=32;switch(y.keyCode){case u:if(i){p.moveFocus(-1)}break;case t:if(i){p.moveFocus(1)}break;case x:if(n){p.moveFocus(-1)}break;case z:if(n){p.moveFocus(1)}break;case q:if(e.onCancel){e.onCancel();a.cancel(y)}break;case s:case r:case v:if(e.onAction){e.onAction(g);a.cancel(y)}break}};c(l,function(s,q){var r;if(!s.id){s.id=f.uniqueId("_mce_item_")}if(k){f.bind(s.id,"blur",h);r="-1"}else{r=(q===0?"0":"-1")}f.setAttrib(s.id,"tabindex",r);f.bind(f.get(s.id),"focus",j)});if(l[0]){g=l[0].id}f.setAttrib(m,"tabindex","-1");f.bind(f.get(m),"focus",d);f.bind(f.get(m),"keydown",o)}})})(tinymce);(function(c){var b=c.DOM,a=c.is;c.create("tinymce.ui.Control",{Control:function(f,e,d){this.id=f;this.settings=e=e||{};this.rendered=false;this.onRender=new c.util.Dispatcher(this);this.classPrefix="";this.scope=e.scope||this;this.disabled=0;this.active=0;this.editor=d},setAriaProperty:function(f,e){var d=b.get(this.id+"_aria")||b.get(this.id);if(d){b.setAttrib(d,"aria-"+f,!!e)}},focus:function(){b.get(this.id).focus()},setDisabled:function(d){if(d!=this.disabled){this.setAriaProperty("disabled",d);this.setState("Disabled",d);this.setState("Enabled",!d);this.disabled=d}},isDisabled:function(){return this.disabled},setActive:function(d){if(d!=this.active){this.setState("Active",d);this.active=d;this.setAriaProperty("pressed",d)}},isActive:function(){return this.active},setState:function(f,d){var e=b.get(this.id);f=this.classPrefix+f;if(d){b.addClass(e,f)}else{b.removeClass(e,f)}},isRendered:function(){return this.rendered},renderHTML:function(){},renderTo:function(d){b.setHTML(d,this.renderHTML())},postRender:function(){var e=this,d;if(a(e.disabled)){d=e.disabled;e.disabled=-1;e.setDisabled(d)}if(a(e.active)){d=e.active;e.active=-1;e.setActive(d)}},remove:function(){b.remove(this.id);this.destroy()},destroy:function(){c.dom.Event.clear(this.id)}})})(tinymce);tinymce.create("tinymce.ui.Container:tinymce.ui.Control",{Container:function(c,b,a){this.parent(c,b,a);this.controls=[];this.lookup={}},add:function(a){this.lookup[a.id]=a;this.controls.push(a);return a},get:function(a){return this.lookup[a]}});tinymce.create("tinymce.ui.Separator:tinymce.ui.Control",{Separator:function(b,a){this.parent(b,a);this.classPrefix="mceSeparator";this.setDisabled(true)},renderHTML:function(){return tinymce.DOM.createHTML("span",{"class":this.classPrefix,role:"separator","aria-orientation":"vertical",tabindex:"-1"})}});(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.MenuItem:tinymce.ui.Control",{MenuItem:function(g,f){this.parent(g,f);this.classPrefix="mceMenuItem"},setSelected:function(f){this.setState("Selected",f);this.setAriaProperty("checked",!!f);this.selected=f},isSelected:function(){return this.selected},postRender:function(){var f=this;f.parent();if(c(f.selected)){f.setSelected(f.selected)}}})})(tinymce);(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.Menu:tinymce.ui.MenuItem",{Menu:function(h,g){var f=this;f.parent(h,g);f.items={};f.collapsed=false;f.menuCount=0;f.onAddItem=new d.util.Dispatcher(this)},expand:function(g){var f=this;if(g){a(f,function(h){if(h.expand){h.expand()}},"items",f)}f.collapsed=false},collapse:function(g){var f=this;if(g){a(f,function(h){if(h.collapse){h.collapse()}},"items",f)}f.collapsed=true},isCollapsed:function(){return this.collapsed},add:function(f){if(!f.settings){f=new d.ui.MenuItem(f.id||b.uniqueId(),f)}this.onAddItem.dispatch(this,f);return this.items[f.id]=f},addSeparator:function(){return this.add({separator:true})},addMenu:function(f){if(!f.collapse){f=this.createMenu(f)}this.menuCount++;return this.add(f)},hasMenus:function(){return this.menuCount!==0},remove:function(f){delete this.items[f.id]},removeAll:function(){var f=this;a(f,function(g){if(g.removeAll){g.removeAll()}else{g.remove()}g.destroy()},"items",f);f.items={}},createMenu:function(g){var f=new d.ui.Menu(g.id||b.uniqueId(),g);f.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return f}})})(tinymce);(function(e){var d=e.is,c=e.DOM,f=e.each,a=e.dom.Event,b=e.dom.Element;e.create("tinymce.ui.DropMenu:tinymce.ui.Menu",{DropMenu:function(h,g){g=g||{};g.container=g.container||c.doc.body;g.offset_x=g.offset_x||0;g.offset_y=g.offset_y||0;g.vp_offset_x=g.vp_offset_x||0;g.vp_offset_y=g.vp_offset_y||0;if(d(g.icons)&&!g.icons){g["class"]+=" mceNoIcons"}this.parent(h,g);this.onShowMenu=new e.util.Dispatcher(this);this.onHideMenu=new e.util.Dispatcher(this);this.classPrefix="mceMenu"},createMenu:function(j){var h=this,i=h.settings,g;j.container=j.container||i.container;j.parent=h;j.constrain=j.constrain||i.constrain;j["class"]=j["class"]||i["class"];j.vp_offset_x=j.vp_offset_x||i.vp_offset_x;j.vp_offset_y=j.vp_offset_y||i.vp_offset_y;j.keyboard_focus=i.keyboard_focus;g=new e.ui.DropMenu(j.id||c.uniqueId(),j);g.onAddItem.add(h.onAddItem.dispatch,h.onAddItem);return g},focus:function(){var g=this;if(g.keyboardNav){g.keyboardNav.focus()}},update:function(){var i=this,j=i.settings,g=c.get("menu_"+i.id+"_tbl"),l=c.get("menu_"+i.id+"_co"),h,k;h=j.max_width?Math.min(g.clientWidth,j.max_width):g.clientWidth;k=j.max_height?Math.min(g.clientHeight,j.max_height):g.clientHeight;if(!c.boxModel){i.element.setStyles({width:h+2,height:k+2})}else{i.element.setStyles({width:h,height:k})}if(j.max_width){c.setStyle(l,"width",h)}if(j.max_height){c.setStyle(l,"height",k);if(g.clientHeight<j.max_height){c.setStyle(l,"overflow","hidden")}}},showMenu:function(p,n,r){var z=this,A=z.settings,o,g=c.getViewPort(),u,l,v,q,i=2,k,j,m=z.classPrefix;z.collapse(1);if(z.isMenuVisible){return}if(!z.rendered){o=c.add(z.settings.container,z.renderNode());f(z.items,function(h){h.postRender()});z.element=new b("menu_"+z.id,{blocker:1,container:A.container})}else{o=c.get("menu_"+z.id)}if(!e.isOpera){c.setStyles(o,{left:-65535,top:-65535})}c.show(o);z.update();p+=A.offset_x||0;n+=A.offset_y||0;g.w-=4;g.h-=4;if(A.constrain){u=o.clientWidth-i;l=o.clientHeight-i;v=g.x+g.w;q=g.y+g.h;if((p+A.vp_offset_x+u)>v){p=r?r-u:Math.max(0,(v-A.vp_offset_x)-u)}if((n+A.vp_offset_y+l)>q){n=Math.max(0,(q-A.vp_offset_y)-l)}}c.setStyles(o,{left:p,top:n});z.element.update();z.isMenuVisible=1;z.mouseClickFunc=a.add(o,"click",function(s){var h;s=s.target;if(s&&(s=c.getParent(s,"tr"))&&!c.hasClass(s,m+"ItemSub")){h=z.items[s.id];if(h.isDisabled()){return}k=z;while(k){if(k.hideMenu){k.hideMenu()}k=k.settings.parent}if(h.settings.onclick){h.settings.onclick(s)}return a.cancel(s)}});if(z.hasMenus()){z.mouseOverFunc=a.add(o,"mouseover",function(x){var h,t,s;x=x.target;if(x&&(x=c.getParent(x,"tr"))){h=z.items[x.id];if(z.lastMenu){z.lastMenu.collapse(1)}if(h.isDisabled()){return}if(x&&c.hasClass(x,m+"ItemSub")){t=c.getRect(x);h.showMenu((t.x+t.w-i),t.y-i,t.x);z.lastMenu=h;c.addClass(c.get(h.id).firstChild,m+"ItemActive")}}})}a.add(o,"keydown",z._keyHandler,z);z.onShowMenu.dispatch(z);if(A.keyboard_focus){z._setupKeyboardNav()}},hideMenu:function(j){var g=this,i=c.get("menu_"+g.id),h;if(!g.isMenuVisible){return}if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(i,"mouseover",g.mouseOverFunc);a.remove(i,"click",g.mouseClickFunc);a.remove(i,"keydown",g._keyHandler);c.hide(i);g.isMenuVisible=0;if(!j){g.collapse(1)}if(g.element){g.element.hide()}if(h=c.get(g.id)){c.removeClass(h.firstChild,g.classPrefix+"ItemActive")}g.onHideMenu.dispatch(g)},add:function(i){var g=this,h;i=g.parent(i);if(g.isRendered&&(h=c.get("menu_"+g.id))){g._add(c.select("tbody",h)[0],i)}return i},collapse:function(g){this.parent(g);this.hideMenu(1)},remove:function(g){c.remove(g.id);this.destroy();return this.parent(g)},destroy:function(){var g=this,h=c.get("menu_"+g.id);if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(h,"mouseover",g.mouseOverFunc);a.remove(c.select("a",h),"focus",g.mouseOverFunc);a.remove(h,"click",g.mouseClickFunc);a.remove(h,"keydown",g._keyHandler);if(g.element){g.element.remove()}c.remove(h)},renderNode:function(){var i=this,j=i.settings,l,h,k,g;g=c.create("div",{role:"listbox",id:"menu_"+i.id,"class":j["class"],style:"position:absolute;left:0;top:0;z-index:200000;outline:0"});if(i.settings.parent){c.setAttrib(g,"aria-parent","menu_"+i.settings.parent.id)}k=c.add(g,"div",{role:"presentation",id:"menu_"+i.id+"_co","class":i.classPrefix+(j["class"]?" "+j["class"]:"")});i.element=new b("menu_"+i.id,{blocker:1,container:j.container});if(j.menu_line){c.add(k,"span",{"class":i.classPrefix+"Line"})}l=c.add(k,"table",{role:"presentation",id:"menu_"+i.id+"_tbl",border:0,cellPadding:0,cellSpacing:0});h=c.add(l,"tbody");f(i.items,function(m){i._add(h,m)});i.rendered=true;return g},_setupKeyboardNav:function(){var i,h,g=this;i=c.get("menu_"+g.id);h=c.select("a[role=option]","menu_"+g.id);h.splice(0,0,i);g.keyboardNav=new e.ui.KeyboardNavigation({root:"menu_"+g.id,items:h,onCancel:function(){g.hideMenu()},enableUpDown:true});i.focus()},_keyHandler:function(g){var h=this,i;switch(g.keyCode){case 37:if(h.settings.parent){h.hideMenu();h.settings.parent.focus();a.cancel(g)}break;case 39:if(h.mouseOverFunc){h.mouseOverFunc(g)}break}},_add:function(j,h){var i,q=h.settings,p,l,k,m=this.classPrefix,g;if(q.separator){l=c.add(j,"tr",{id:h.id,"class":m+"ItemSeparator"});c.add(l,"td",{"class":m+"ItemSeparator"});if(i=l.previousSibling){c.addClass(i,"mceLast")}return}i=l=c.add(j,"tr",{id:h.id,"class":m+"Item "+m+"ItemEnabled"});i=k=c.add(i,q.titleItem?"th":"td");i=p=c.add(i,"a",{id:h.id+"_aria",role:q.titleItem?"presentation":"option",href:"javascript:;",onclick:"return false;",onmousedown:"return false;"});if(q.parent){c.setAttrib(p,"aria-haspopup","true");c.setAttrib(p,"aria-owns","menu_"+h.id)}c.addClass(k,q["class"]);g=c.add(i,"span",{"class":"mceIcon"+(q.icon?" mce_"+q.icon:"")});if(q.icon_src){c.add(g,"img",{src:q.icon_src})}i=c.add(i,q.element||"span",{"class":"mceText",title:h.settings.title},h.settings.title);if(h.settings.style){c.setAttrib(i,"style",h.settings.style)}if(j.childNodes.length==1){c.addClass(l,"mceFirst")}if((i=l.previousSibling)&&c.hasClass(i,m+"ItemSeparator")){c.addClass(l,"mceFirst")}if(h.collapse){c.addClass(l,m+"ItemSub")}if(i=l.previousSibling){c.removeClass(i,"mceLast")}c.addClass(l,"mceLast")}})})(tinymce);(function(b){var a=b.DOM;b.create("tinymce.ui.Button:tinymce.ui.Control",{Button:function(e,d,c){this.parent(e,d,c);this.classPrefix="mceButton"},renderHTML:function(){var f=this.classPrefix,e=this.settings,d,c;c=a.encode(e.label||"");d='<a role="button" id="'+this.id+'" href="javascript:;" class="'+f+" "+f+"Enabled "+e["class"]+(c?" "+f+"Labeled":"")+'" onmousedown="return false;" onclick="return false;" aria-labelledby="'+this.id+'_voice" title="'+a.encode(e.title)+'">';if(e.image&&!(this.editor&&this.editor.forcedHighContrastMode)){d+='<img class="mceIcon" src="'+e.image+'" alt="'+a.encode(e.title)+'" />'+c}else{d+='<span class="mceIcon '+e["class"]+'"></span>'+(c?'<span class="'+f+'Label">'+c+"</span>":"")}d+='<span class="mceVoiceLabel mceIconOnly" style="display: none;" id="'+this.id+'_voice">'+e.title+"</span>";d+="</a>";return d},postRender:function(){var d=this,e=d.settings,c;if(b.isIE&&d.editor){b.dom.Event.add(d.id,"mousedown",function(f){var g=d.editor.selection.getNode().nodeName;c=g==="IMG"?d.editor.selection.getBookmark():null})}b.dom.Event.add(d.id,"click",function(f){if(!d.isDisabled()){if(b.isIE&&d.editor&&c!==null){d.editor.selection.moveToBookmark(c)}return e.onclick.call(e.scope,f)}});b.dom.Event.add(d.id,"keyup",function(f){if(!d.isDisabled()&&f.keyCode==b.VK.SPACEBAR){return e.onclick.call(e.scope,f)}})}})})(tinymce);(function(d){var c=d.DOM,b=d.dom.Event,e=d.each,a=d.util.Dispatcher;d.create("tinymce.ui.ListBox:tinymce.ui.Control",{ListBox:function(i,h,f){var g=this;g.parent(i,h,f);g.items=[];g.onChange=new a(g);g.onPostRender=new a(g);g.onAdd=new a(g);g.onRenderMenu=new d.util.Dispatcher(this);g.classPrefix="mceListBox"},select:function(h){var g=this,j,i;if(h==undefined){return g.selectByIndex(-1)}if(h&&typeof(h)=="function"){i=h}else{i=function(f){return f==h}}if(h!=g.selectedValue){e(g.items,function(k,f){if(i(k.value)){j=1;g.selectByIndex(f);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){var h=this,i,j,g;if(f!=h.selectedIndex){i=c.get(h.id+"_text");g=c.get(h.id+"_voiceDesc");j=h.items[f];if(j){h.selectedValue=j.value;h.selectedIndex=f;c.setHTML(i,c.encode(j.title));c.setHTML(g,h.settings.title+" - "+j.title);c.removeClass(i,"mceTitle");c.setAttrib(h.id,"aria-valuenow",j.title)}else{c.setHTML(i,c.encode(h.settings.title));c.setHTML(g,c.encode(h.settings.title));c.addClass(i,"mceTitle");h.selectedValue=h.selectedIndex=null;c.setAttrib(h.id,"aria-valuenow",h.settings.title)}i=0}},add:function(i,f,h){var g=this;h=h||{};h=d.extend(h,{title:i,value:f});g.items.push(h);g.onAdd.dispatch(g,h)},getLength:function(){return this.items.length},renderHTML:function(){var i="",f=this,g=f.settings,j=f.classPrefix;i='<span role="listbox" aria-haspopup="true" aria-labelledby="'+f.id+'_voiceDesc" aria-describedby="'+f.id+'_voiceDesc"><table role="presentation" tabindex="0" id="'+f.id+'" cellpadding="0" cellspacing="0" class="'+j+" "+j+"Enabled"+(g["class"]?(" "+g["class"]):"")+'"><tbody><tr>';i+="<td>"+c.createHTML("span",{id:f.id+"_voiceDesc","class":"voiceLabel",style:"display:none;"},f.settings.title);i+=c.createHTML("a",{id:f.id+"_text",tabindex:-1,href:"javascript:;","class":"mceText",onclick:"return false;",onmousedown:"return false;"},c.encode(f.settings.title))+"</td>";i+="<td>"+c.createHTML("a",{id:f.id+"_open",tabindex:-1,href:"javascript:;","class":"mceOpen",onclick:"return false;",onmousedown:"return false;"},'<span><span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span></span>')+"</td>";i+="</tr></tbody></table></span>";return i},showMenu:function(){var g=this,i,h=c.get(this.id),f;if(g.isDisabled()||g.items.length==0){return}if(g.menu&&g.menu.isMenuVisible){return g.hideMenu()}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}i=c.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.keyboard_focus=!d.isOpera;if(g.oldID){f.items[g.oldID].setSelected(0)}e(g.items,function(j){if(j.value===g.selectedValue){f.items[j.id].setSelected(1);g.oldID=j.id}});f.showMenu(0,h.clientHeight);b.add(c.doc,"mousedown",g.hideMenu,g);c.addClass(g.id,g.classPrefix+"Selected")},hideMenu:function(g){var f=this;if(f.menu&&f.menu.isMenuVisible){c.removeClass(f.id,f.classPrefix+"Selected");if(g&&g.type=="mousedown"&&(g.target.id==f.id+"_text"||g.target.id==f.id+"_open")){return}if(!g||!c.getParent(g.target,".mceMenu")){c.removeClass(f.id,f.classPrefix+"Selected");b.remove(c.doc,"mousedown",f.hideMenu,f);f.menu.hideMenu()}}},renderMenu:function(){var g=this,f;f=g.settings.control_manager.createDropMenu(g.id+"_menu",{menu_line:1,"class":g.classPrefix+"Menu mceNoIcons",max_width:150,max_height:150});f.onHideMenu.add(function(){g.hideMenu();g.focus()});f.add({title:g.settings.title,"class":"mceMenuItemTitle",onclick:function(){if(g.settings.onselect("")!==false){g.select("")}}});e(g.items,function(h){if(h.value===undefined){f.add({title:h.title,role:"option","class":"mceMenuItemTitle",onclick:function(){if(g.settings.onselect("")!==false){g.select("")}}})}else{h.id=c.uniqueId();h.role="option";h.onclick=function(){if(g.settings.onselect(h.value)!==false){g.select(h.value)}};f.add(h)}});g.onRenderMenu.dispatch(g,f);g.menu=f},postRender:function(){var f=this,g=f.classPrefix;b.add(f.id,"click",f.showMenu,f);b.add(f.id,"keydown",function(h){if(h.keyCode==32){f.showMenu(h);b.cancel(h)}});b.add(f.id,"focus",function(){if(!f._focused){f.keyDownHandler=b.add(f.id,"keydown",function(h){if(h.keyCode==40){f.showMenu();b.cancel(h)}});f.keyPressHandler=b.add(f.id,"keypress",function(i){var h;if(i.keyCode==13){h=f.selectedValue;f.selectedValue=null;b.cancel(i);f.settings.onselect(h)}})}f._focused=1});b.add(f.id,"blur",function(){b.remove(f.id,"keydown",f.keyDownHandler);b.remove(f.id,"keypress",f.keyPressHandler);f._focused=0});if(d.isIE6||!c.boxModel){b.add(f.id,"mouseover",function(){if(!c.hasClass(f.id,g+"Disabled")){c.addClass(f.id,g+"Hover")}});b.add(f.id,"mouseout",function(){if(!c.hasClass(f.id,g+"Disabled")){c.removeClass(f.id,g+"Hover")}})}f.onPostRender.dispatch(f,c.get(f.id))},destroy:function(){this.parent();b.clear(this.id+"_text");b.clear(this.id+"_open")}})})(tinymce);(function(d){var c=d.DOM,b=d.dom.Event,e=d.each,a=d.util.Dispatcher;d.create("tinymce.ui.NativeListBox:tinymce.ui.ListBox",{NativeListBox:function(g,f){this.parent(g,f);this.classPrefix="mceNativeListBox"},setDisabled:function(f){c.get(this.id).disabled=f;this.setAriaProperty("disabled",f)},isDisabled:function(){return c.get(this.id).disabled},select:function(h){var g=this,j,i;if(h==undefined){return g.selectByIndex(-1)}if(h&&typeof(h)=="function"){i=h}else{i=function(f){return f==h}}if(h!=g.selectedValue){e(g.items,function(k,f){if(i(k.value)){j=1;g.selectByIndex(f);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){c.get(this.id).selectedIndex=f+1;this.selectedValue=this.items[f]?this.items[f].value:null},add:function(j,g,f){var i,h=this;f=f||{};f.value=g;if(h.isRendered()){c.add(c.get(this.id),"option",f,j)}i={title:j,value:g,attribs:f};h.items.push(i);h.onAdd.dispatch(h,i)},getLength:function(){return this.items.length},renderHTML:function(){var g,f=this;g=c.createHTML("option",{value:""},"-- "+f.settings.title+" --");e(f.items,function(h){g+=c.createHTML("option",{value:h.value},h.title)});g=c.createHTML("select",{id:f.id,"class":"mceNativeListBox","aria-labelledby":f.id+"_aria"},g);g+=c.createHTML("span",{id:f.id+"_aria",style:"display: none"},f.settings.title);return g},postRender:function(){var g=this,h,i=true;g.rendered=true;function f(k){var j=g.items[k.target.selectedIndex-1];if(j&&(j=j.value)){g.onChange.dispatch(g,j);if(g.settings.onselect){g.settings.onselect(j)}}}b.add(g.id,"change",f);b.add(g.id,"keydown",function(k){var j;b.remove(g.id,"change",h);i=false;j=b.add(g.id,"blur",function(){if(i){return}i=true;b.add(g.id,"change",f);b.remove(g.id,"blur",j)});if(d.isWebKit&&(k.keyCode==37||k.keyCode==39)){return b.prevent(k)}if(k.keyCode==13||k.keyCode==32){f(k);return b.cancel(k)}});g.onPostRender.dispatch(g,c.get(g.id))}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.MenuButton:tinymce.ui.Button",{MenuButton:function(g,f,e){this.parent(g,f,e);this.onRenderMenu=new c.util.Dispatcher(this);f.menu_container=f.menu_container||b.doc.body},showMenu:function(){var g=this,j,i,h=b.get(g.id),f;if(g.isDisabled()){return}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}if(g.isMenuVisible){return g.hideMenu()}j=b.getPos(g.settings.menu_container);i=b.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.vp_offset_x=i.x;f.settings.vp_offset_y=i.y;f.settings.keyboard_focus=g._focused;f.showMenu(0,h.clientHeight);a.add(b.doc,"mousedown",g.hideMenu,g);g.setState("Selected",1);g.isMenuVisible=1},renderMenu:function(){var f=this,e;e=f.settings.control_manager.createDropMenu(f.id+"_menu",{menu_line:1,"class":this.classPrefix+"Menu",icons:f.settings.icons});e.onHideMenu.add(function(){f.hideMenu();f.focus()});f.onRenderMenu.dispatch(f,e);f.menu=e},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&b.getParent(g.target,function(h){return h.id===f.id||h.id===f.id+"_open"})){return}if(!g||!b.getParent(g.target,".mceMenu")){f.setState("Selected",0);a.remove(b.doc,"mousedown",f.hideMenu,f);if(f.menu){f.menu.hideMenu()}}f.isMenuVisible=0},postRender:function(){var e=this,f=e.settings;a.add(e.id,"click",function(){if(!e.isDisabled()){if(f.onclick){f.onclick(e.value)}e.showMenu()}})}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.SplitButton:tinymce.ui.MenuButton",{SplitButton:function(g,f,e){this.parent(g,f,e);this.classPrefix="mceSplitButton"},renderHTML:function(){var i,f=this,g=f.settings,e;i="<tbody><tr>";if(g.image){e=b.createHTML("img ",{src:g.image,role:"presentation","class":"mceAction "+g["class"]})}else{e=b.createHTML("span",{"class":"mceAction "+g["class"]},"")}e+=b.createHTML("span",{"class":"mceVoiceLabel mceIconOnly",id:f.id+"_voice",style:"display:none;"},g.title);i+="<td >"+b.createHTML("a",{role:"button",id:f.id+"_action",tabindex:"-1",href:"javascript:;","class":"mceAction "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";e=b.createHTML("span",{"class":"mceOpen "+g["class"]},'<span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span>');i+="<td >"+b.createHTML("a",{role:"button",id:f.id+"_open",tabindex:"-1",href:"javascript:;","class":"mceOpen "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";i+="</tr></tbody>";i=b.createHTML("table",{role:"presentation","class":"mceSplitButton mceSplitButtonEnabled "+g["class"],cellpadding:"0",cellspacing:"0",title:g.title},i);return b.createHTML("div",{id:f.id,role:"button",tabindex:"0","aria-labelledby":f.id+"_voice","aria-haspopup":"true"},i)},postRender:function(){var e=this,g=e.settings,f;if(g.onclick){f=function(h){if(!e.isDisabled()){g.onclick(e.value);a.cancel(h)}};a.add(e.id+"_action","click",f);a.add(e.id,["click","keydown"],function(h){var k=32,m=14,i=13,j=38,l=40;if((h.keyCode===32||h.keyCode===13||h.keyCode===14)&&!h.altKey&&!h.ctrlKey&&!h.metaKey){f();a.cancel(h)}else{if(h.type==="click"||h.keyCode===l){e.showMenu();a.cancel(h)}}})}a.add(e.id+"_open","click",function(h){e.showMenu();a.cancel(h)});a.add([e.id,e.id+"_open"],"focus",function(){e._focused=1});a.add([e.id,e.id+"_open"],"blur",function(){e._focused=0});if(c.isIE6||!b.boxModel){a.add(e.id,"mouseover",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.addClass(e.id,"mceSplitButtonHover")}});a.add(e.id,"mouseout",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.removeClass(e.id,"mceSplitButtonHover")}})}},destroy:function(){this.parent();a.clear(this.id+"_action");a.clear(this.id+"_open");a.clear(this.id)}})})(tinymce);(function(d){var c=d.DOM,a=d.dom.Event,b=d.is,e=d.each;d.create("tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton",{ColorSplitButton:function(i,h,f){var g=this;g.parent(i,h,f);g.settings=h=d.extend({colors:"000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",grid_width:8,default_color:"#888888"},g.settings);g.onShowMenu=new d.util.Dispatcher(g);g.onHideMenu=new d.util.Dispatcher(g);g.value=h.default_color},showMenu:function(){var f=this,g,j,i,h;if(f.isDisabled()){return}if(!f.isMenuRendered){f.renderMenu();f.isMenuRendered=true}if(f.isMenuVisible){return f.hideMenu()}i=c.get(f.id);c.show(f.id+"_menu");c.addClass(i,"mceSplitButtonSelected");h=c.getPos(i);c.setStyles(f.id+"_menu",{left:h.x,top:h.y+i.clientHeight,zIndex:200000});i=0;a.add(c.doc,"mousedown",f.hideMenu,f);f.onShowMenu.dispatch(f);if(f._focused){f._keyHandler=a.add(f.id+"_menu","keydown",function(k){if(k.keyCode==27){f.hideMenu()}});c.select("a",f.id+"_menu")[0].focus()}f.isMenuVisible=1},hideMenu:function(g){var f=this;if(f.isMenuVisible){if(g&&g.type=="mousedown"&&c.getParent(g.target,function(h){return h.id===f.id+"_open"})){return}if(!g||!c.getParent(g.target,".mceSplitButtonMenu")){c.removeClass(f.id,"mceSplitButtonSelected");a.remove(c.doc,"mousedown",f.hideMenu,f);a.remove(f.id+"_menu","keydown",f._keyHandler);c.hide(f.id+"_menu")}f.isMenuVisible=0;f.onHideMenu.dispatch()}},renderMenu:function(){var p=this,h,k=0,q=p.settings,g,j,l,o,f;o=c.add(q.menu_container,"div",{role:"listbox",id:p.id+"_menu","class":q.menu_class+" "+q["class"],style:"position:absolute;left:0;top:-1000px;"});h=c.add(o,"div",{"class":q["class"]+" mceSplitButtonMenu"});c.add(h,"span",{"class":"mceMenuLine"});g=c.add(h,"table",{role:"presentation","class":"mceColorSplitMenu"});j=c.add(g,"tbody");k=0;e(b(q.colors,"array")?q.colors:q.colors.split(","),function(m){m=m.replace(/^#/,"");if(!k--){l=c.add(j,"tr");k=q.grid_width-1}g=c.add(l,"td");var i={href:"javascript:;",style:{backgroundColor:"#"+m},title:p.editor.getLang("colors."+m,m),"data-mce-color":"#"+m};if(!d.isIE){i.role="option"}g=c.add(g,"a",i);if(p.editor.forcedHighContrastMode){g=c.add(g,"canvas",{width:16,height:16,"aria-hidden":"true"});if(g.getContext&&(f=g.getContext("2d"))){f.fillStyle="#"+m;f.fillRect(0,0,16,16)}else{c.remove(g)}}});if(q.more_colors_func){g=c.add(j,"tr");g=c.add(g,"td",{colspan:q.grid_width,"class":"mceMoreColors"});g=c.add(g,"a",{role:"option",id:p.id+"_more",href:"javascript:;",onclick:"return false;","class":"mceMoreColors"},q.more_colors_title);a.add(g,"click",function(i){q.more_colors_func.call(q.more_colors_scope||this);return a.cancel(i)})}c.addClass(h,"mceColorSplitMenu");new d.ui.KeyboardNavigation({root:p.id+"_menu",items:c.select("a",p.id+"_menu"),onCancel:function(){p.hideMenu();p.focus()}});a.add(p.id+"_menu","mousedown",function(i){return a.cancel(i)});a.add(p.id+"_menu","click",function(i){var m;i=c.getParent(i.target,"a",j);if(i&&i.nodeName.toLowerCase()=="a"&&(m=i.getAttribute("data-mce-color"))){p.setColor(m)}return a.cancel(i)});return o},setColor:function(f){this.displayColor(f);this.hideMenu();this.settings.onselect(f)},displayColor:function(g){var f=this;c.setStyle(f.id+"_preview","backgroundColor",g);f.value=g},postRender:function(){var f=this,g=f.id;f.parent();c.add(g+"_action","div",{id:g+"_preview","class":"mceColorPreview"});c.setStyle(f.id+"_preview","backgroundColor",f.value)},destroy:function(){this.parent();a.clear(this.id+"_menu");a.clear(this.id+"_more");c.remove(this.id+"_menu")}})})(tinymce);(function(b){var d=b.DOM,c=b.each,a=b.dom.Event;b.create("tinymce.ui.ToolbarGroup:tinymce.ui.Container",{renderHTML:function(){var f=this,i=[],e=f.controls,j=b.each,g=f.settings;i.push('<div id="'+f.id+'" role="group" aria-labelledby="'+f.id+'_voice">');i.push("<span role='application'>");i.push('<span id="'+f.id+'_voice" class="mceVoiceLabel" style="display:none;">'+d.encode(g.name)+"</span>");j(e,function(h){i.push(h.renderHTML())});i.push("</span>");i.push("</div>");return i.join("")},focus:function(){var e=this;d.get(e.id).focus()},postRender:function(){var f=this,e=[];c(f.controls,function(g){c(g.controls,function(h){if(h.id){e.push(h)}})});f.keyNav=new b.ui.KeyboardNavigation({root:f.id,items:e,onCancel:function(){if(b.isWebKit){d.get(f.editor.id+"_ifr").focus()}f.editor.focus()},excludeFromTabOrder:!f.settings.tab_focus_toolbar})},destroy:function(){var e=this;e.parent();e.keyNav.destroy();a.clear(e.id)}})})(tinymce);(function(a){var c=a.DOM,b=a.each;a.create("tinymce.ui.Toolbar:tinymce.ui.Container",{renderHTML:function(){var m=this,f="",j,k,n=m.settings,e,d,g,l;l=m.controls;for(e=0;e<l.length;e++){k=l[e];d=l[e-1];g=l[e+1];if(e===0){j="mceToolbarStart";if(k.Button){j+=" mceToolbarStartButton"}else{if(k.SplitButton){j+=" mceToolbarStartSplitButton"}else{if(k.ListBox){j+=" mceToolbarStartListBox"}}}f+=c.createHTML("td",{"class":j},c.createHTML("span",null,"<!-- IE -->"))}if(d&&k.ListBox){if(d.Button||d.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarEnd"},c.createHTML("span",null,"<!-- IE -->"))}}if(c.stdMode){f+='<td style="position: relative">'+k.renderHTML()+"</td>"}else{f+="<td>"+k.renderHTML()+"</td>"}if(g&&k.ListBox){if(g.Button||g.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarStart"},c.createHTML("span",null,"<!-- IE -->"))}}}j="mceToolbarEnd";if(k.Button){j+=" mceToolbarEndButton"}else{if(k.SplitButton){j+=" mceToolbarEndSplitButton"}else{if(k.ListBox){j+=" mceToolbarEndListBox"}}}f+=c.createHTML("td",{"class":j},c.createHTML("span",null,"<!-- IE -->"));return c.createHTML("table",{id:m.id,"class":"mceToolbar"+(n["class"]?" "+n["class"]:""),cellpadding:"0",cellspacing:"0",align:m.settings.align||"",role:"presentation",tabindex:"-1"},"<tbody><tr>"+f+"</tr></tbody>")}})})(tinymce);(function(b){var a=b.util.Dispatcher,c=b.each;b.create("tinymce.AddOnManager",{AddOnManager:function(){var d=this;d.items=[];d.urls={};d.lookup={};d.onAdd=new a(d)},get:function(d){if(this.lookup[d]){return this.lookup[d].instance}else{return undefined}},dependencies:function(e){var d;if(this.lookup[e]){d=this.lookup[e].dependencies}return d||[]},requireLangPack:function(e){var d=b.settings;if(d&&d.language&&d.language_load!==false){b.ScriptLoader.add(this.urls[e]+"/langs/"+d.language+".js")}},add:function(f,e,d){this.items.push(e);this.lookup[f]={instance:e,dependencies:d};this.onAdd.dispatch(this,f,e);return e},createUrl:function(d,e){if(typeof e==="object"){return e}else{return{prefix:d.prefix,resource:e,suffix:d.suffix}}},addComponents:function(f,d){var e=this.urls[f];b.each(d,function(g){b.ScriptLoader.add(e+"/"+g)})},load:function(j,f,d,h){var g=this,e=f;function i(){var k=g.dependencies(j);b.each(k,function(m){var l=g.createUrl(f,m);g.load(l.resource,l,undefined,undefined)});if(d){if(h){d.call(h)}else{d.call(b.ScriptLoader)}}}if(g.urls[j]){return}if(typeof f==="object"){e=f.prefix+f.resource+f.suffix}if(e.indexOf("/")!=0&&e.indexOf("://")==-1){e=b.baseURL+"/"+e}g.urls[j]=e.substring(0,e.lastIndexOf("/"));if(g.lookup[j]){i()}else{b.ScriptLoader.add(e,i,h)}}});b.PluginManager=new b.AddOnManager();b.ThemeManager=new b.AddOnManager()}(tinymce));(function(j){var g=j.each,d=j.extend,k=j.DOM,i=j.dom.Event,f=j.ThemeManager,b=j.PluginManager,e=j.explode,h=j.util.Dispatcher,a,c=0;j.documentBaseURL=window.location.href.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(j.documentBaseURL)){j.documentBaseURL+="/"}j.baseURL=new j.util.URI(j.documentBaseURL).toAbsolute(j.baseURL);j.baseURI=new j.util.URI(j.baseURL);j.onBeforeUnload=new h(j);i.add(window,"beforeunload",function(l){j.onBeforeUnload.dispatch(j,l)});j.onAddEditor=new h(j);j.onRemoveEditor=new h(j);j.EditorManager=d(j,{editors:[],i18n:{},activeEditor:null,init:function(q){var n=this,p,l=j.ScriptLoader,u,o=[],m;function r(x,y,t){var v=x[y];if(!v){return}if(j.is(v,"string")){t=v.replace(/\.\w+$/,"");t=t?j.resolve(t):0;v=j.resolve(v)}return v.apply(t||this,Array.prototype.slice.call(arguments,2))}q=d({theme:"simple",language:"en"},q);n.settings=q;i.add(document,"init",function(){var s,v;r(q,"onpageload");switch(q.mode){case"exact":s=q.elements||"";if(s.length>0){g(e(s),function(x){if(k.get(x)){m=new j.Editor(x,q);o.push(m);m.render(1)}else{g(document.forms,function(y){g(y.elements,function(z){if(z.name===x){x="mce_editor_"+c++;k.setAttrib(z,"id",x);m=new j.Editor(x,q);o.push(m);m.render(1)}})})}})}break;case"textareas":case"specific_textareas":function t(y,x){return x.constructor===RegExp?x.test(y.className):k.hasClass(y,x)}g(k.select("textarea"),function(x){if(q.editor_deselector&&t(x,q.editor_deselector)){return}if(!q.editor_selector||t(x,q.editor_selector)){u=k.get(x.name);if(!x.id&&!u){x.id=x.name}if(!x.id||n.get(x.id)){x.id=k.uniqueId()}m=new j.Editor(x.id,q);o.push(m);m.render(1)}});break}if(q.oninit){s=v=0;g(o,function(x){v++;if(!x.initialized){x.onInit.add(function(){s++;if(s==v){r(q,"oninit")}})}else{s++}if(s==v){r(q,"oninit")}})}})},get:function(l){if(l===a){return this.editors}return this.editors[l]},getInstanceById:function(l){return this.get(l)},add:function(m){var l=this,n=l.editors;n[m.id]=m;n.push(m);l._setActive(m);l.onAddEditor.dispatch(l,m);return m},remove:function(n){var m=this,l,o=m.editors;if(!o[n.id]){return null}delete o[n.id];for(l=0;l<o.length;l++){if(o[l]==n){o.splice(l,1);break}}if(m.activeEditor==n){m._setActive(o[0])}n.destroy();m.onRemoveEditor.dispatch(m,n);return n},execCommand:function(r,p,o){var q=this,n=q.get(o),l;switch(r){case"mceFocus":n.focus();return true;case"mceAddEditor":case"mceAddControl":if(!q.get(o)){new j.Editor(o,q.settings).render()}return true;case"mceAddFrameControl":l=o.window;l.tinyMCE=tinyMCE;l.tinymce=j;j.DOM.doc=l.document;j.DOM.win=l;n=new j.Editor(o.element_id,o);n.render();if(j.isIE){function m(){n.destroy();l.detachEvent("onunload",m);l=l.tinyMCE=l.tinymce=null}l.attachEvent("onunload",m)}o.page_window=null;return true;case"mceRemoveEditor":case"mceRemoveControl":if(n){n.remove()}return true;case"mceToggleEditor":if(!n){q.execCommand("mceAddControl",0,o);return true}if(n.isHidden()){n.show()}else{n.hide()}return true}if(q.activeEditor){return q.activeEditor.execCommand(r,p,o)}return false},execInstanceCommand:function(p,o,n,m){var l=this.get(p);if(l){return l.execCommand(o,n,m)}return false},triggerSave:function(){g(this.editors,function(l){l.save()})},addI18n:function(n,q){var l,m=this.i18n;if(!j.is(n,"string")){g(n,function(r,p){g(r,function(t,s){g(t,function(v,u){if(s==="common"){m[p+"."+u]=v}else{m[p+"."+s+"."+u]=v}})})})}else{g(q,function(r,p){m[n+"."+p]=r})}},_setActive:function(l){this.selectedInstance=this.activeEditor=l}})})(tinymce);(function(n){var o=n.DOM,k=n.dom.Event,f=n.extend,l=n.util.Dispatcher,i=n.each,a=n.isGecko,b=n.isIE,e=n.isWebKit,d=n.is,h=n.ThemeManager,c=n.PluginManager,p=n.inArray,m=n.grep,g=n.explode,j=n.VK;n.create("tinymce.Editor",{Editor:function(u,r){var q=this;q.id=q.editorId=u;q.execCommands={};q.queryStateCommands={};q.queryValueCommands={};q.isNotDirty=false;q.plugins={};i(["onPreInit","onBeforeRenderUI","onPostRender","onLoad","onInit","onRemove","onActivate","onDeactivate","onClick","onEvent","onMouseUp","onMouseDown","onDblClick","onKeyDown","onKeyUp","onKeyPress","onContextMenu","onSubmit","onReset","onPaste","onPreProcess","onPostProcess","onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent","onLoadContent","onSaveContent","onNodeChange","onChange","onBeforeExecCommand","onExecCommand","onUndo","onRedo","onVisualAid","onSetProgressState","onSetAttrib"],function(s){q[s]=new l(q)});q.settings=r=f({id:u,language:"en",docs_language:"en",theme:"simple",skin:"default",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:n.documentBaseURL,add_form_submit_trigger:1,submit_patch:1,add_unload_trigger:1,convert_urls:1,relative_urls:1,remove_script_host:1,table_inline_editing:0,object_resizing:1,cleanup:1,accessibility_focus:1,custom_shortcuts:1,custom_undo_redo_keyboard_shortcuts:1,custom_undo_redo_restore_selection:1,custom_undo_redo:1,doctype:n.isIE6?'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">':"<!DOCTYPE>",visual_table_class:"mceItemTable",visual:1,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",apply_source_formatting:1,directionality:"ltr",forced_root_block:"p",hidden_input:1,padd_empty_editor:1,render_ui:1,init_theme:1,force_p_newlines:1,indentation:"30px",keep_styles:1,fix_table_elements:1,inline_styles:1,convert_fonts_to_spans:true,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr",validate:true,entity_encoding:"named",url_converter:q.convertURL,url_converter_scope:q,ie7_compat:true},r);q.documentBaseURI=new n.util.URI(r.document_base_url||n.documentBaseURL,{base_uri:tinyMCE.baseURI});q.baseURI=n.baseURI;q.contentCSS=[];q.execCallback("setup",q)},render:function(u){var v=this,x=v.settings,y=v.id,q=n.ScriptLoader;if(!k.domLoaded){k.add(document,"init",function(){v.render()});return}tinyMCE.settings=x;if(!v.getElement()){return}if(n.isIDevice&&!n.isIOS5){return}if(!/TEXTAREA|INPUT/i.test(v.getElement().nodeName)&&x.hidden_input&&o.getParent(y,"form")){o.insertAfter(o.create("input",{type:"hidden",name:y}),y)}if(n.WindowManager){v.windowManager=new n.WindowManager(v)}if(x.encoding=="xml"){v.onGetContent.add(function(s,t){if(t.save){t.content=o.encode(t.content)}})}if(x.add_form_submit_trigger){v.onSubmit.addToTop(function(){if(v.initialized){v.save();v.isNotDirty=1}})}if(x.add_unload_trigger){v._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(v.initialized&&!v.destroyed&&!v.isHidden()){v.save({format:"raw",no_events:true})}})}n.addUnload(v.destroy,v);if(x.submit_patch){v.onBeforeRenderUI.add(function(){var s=v.getElement().form;if(!s){return}if(s._mceOldSubmit){return}if(!s.submit.nodeType&&!s.submit.length){v.formElement=s;s._mceOldSubmit=s.submit;s.submit=function(){n.triggerSave();v.isNotDirty=1;return v.formElement._mceOldSubmit(v.formElement)}}s=null})}function r(){if(x.language&&x.language_load!==false){q.add(n.baseURL+"/langs/"+x.language+".js")}if(x.theme&&x.theme.charAt(0)!="-"&&!h.urls[x.theme]){h.load(x.theme,"themes/"+x.theme+"/editor_template"+n.suffix+".js")}i(g(x.plugins),function(t){if(t&&!c.urls[t]){if(t.charAt(0)=="-"){t=t.substr(1,t.length);var s=c.dependencies(t);i(s,function(A){var z={prefix:"plugins/",resource:A,suffix:"/editor_plugin"+n.suffix+".js"};var A=c.createUrl(z,A);c.load(A.resource,A)})}else{if(t=="safari"){return}c.load(t,{prefix:"plugins/",resource:t,suffix:"/editor_plugin"+n.suffix+".js"})}}});q.loadQueue(function(){if(!v.removed){v.init()}})}r()},init:function(){var v,I=this,J=I.settings,F,B,E=I.getElement(),r,q,G,z,D,H,A,x=[];n.add(I);J.aria_label=J.aria_label||o.getAttrib(E,"aria-label",I.getLang("aria.rich_text_area"));if(J.theme){J.theme=J.theme.replace(/-/,"");r=h.get(J.theme);I.theme=new r();if(I.theme.init&&J.init_theme){I.theme.init(I,h.urls[J.theme]||n.documentBaseURL.replace(/\/$/,""))}}function C(K){var L=c.get(K),t=c.urls[K]||n.documentBaseURL.replace(/\/$/,""),s;if(L&&n.inArray(x,K)===-1){i(c.dependencies(K),function(u){C(u)});s=new L(I,t);I.plugins[K]=s;if(s.init){s.init(I,t);x.push(K)}}}i(g(J.plugins.replace(/\-/g,"")),C);if(J.popup_css!==false){if(J.popup_css){J.popup_css=I.documentBaseURI.toAbsolute(J.popup_css)}else{J.popup_css=I.baseURI.toAbsolute("themes/"+J.theme+"/skins/"+J.skin+"/dialog.css")}}if(J.popup_css_add){J.popup_css+=","+I.documentBaseURI.toAbsolute(J.popup_css_add)}I.controlManager=new n.ControlManager(I);if(J.custom_undo_redo){I.onBeforeExecCommand.add(function(t,K,u,L,s){if(K!="Undo"&&K!="Redo"&&K!="mceRepaint"&&(!s||!s.skip_undo)){I.undoManager.beforeChange()}});I.onExecCommand.add(function(t,K,u,L,s){if(K!="Undo"&&K!="Redo"&&K!="mceRepaint"&&(!s||!s.skip_undo)){I.undoManager.add()}})}I.onExecCommand.add(function(s,t){if(!/^(FontName|FontSize)$/.test(t)){I.nodeChanged()}});if(a){function y(s,t){if(!t||!t.initial){I.execCommand("mceRepaint")}}I.onUndo.add(y);I.onRedo.add(y);I.onSetContent.add(y)}I.onBeforeRenderUI.dispatch(I,I.controlManager);if(J.render_ui){F=J.width||E.style.width||E.offsetWidth;B=J.height||E.style.height||E.offsetHeight;I.orgDisplay=E.style.display;H=/^[0-9\.]+(|px)$/i;if(H.test(""+F)){F=Math.max(parseInt(F)+(r.deltaWidth||0),100)}if(H.test(""+B)){B=Math.max(parseInt(B)+(r.deltaHeight||0),100)}r=I.theme.renderUI({targetNode:E,width:F,height:B,deltaWidth:J.delta_width,deltaHeight:J.delta_height});I.editorContainer=r.editorContainer}if(document.domain&&location.hostname!=document.domain){n.relaxedDomain=document.domain}o.setStyles(r.sizeContainer||r.editorContainer,{width:F,height:B});if(J.content_css){n.each(g(J.content_css),function(s){I.contentCSS.push(I.documentBaseURI.toAbsolute(s))})}B=(r.iframeHeight||B)+(typeof(B)=="number"?(r.deltaHeight||0):"");if(B<100){B=100}I.iframeHTML=J.doctype+'<html><head xmlns="http://www.w3.org/1999/xhtml">';if(J.document_base_url!=n.documentBaseURL){I.iframeHTML+='<base href="'+I.documentBaseURI.getURI()+'" />'}if(J.ie7_compat){I.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=7" />'}else{I.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=edge" />'}I.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';for(A=0;A<I.contentCSS.length;A++){I.iframeHTML+='<link type="text/css" rel="stylesheet" href="'+I.contentCSS[A]+'" />'}I.contentCSS=[];z=J.body_id||"tinymce";if(z.indexOf("=")!=-1){z=I.getParam("body_id","","hash");z=z[I.id]||z}D=J.body_class||"";if(D.indexOf("=")!=-1){D=I.getParam("body_class","","hash");D=D[I.id]||""}I.iframeHTML+='</head><body id="'+z+'" class="mceContentBody '+D+'" onload="window.parent.tinyMCE.get(\''+I.id+"').onLoad.dispatch();\"><br></body></html>";if(n.relaxedDomain&&(b||(n.isOpera&&parseFloat(opera.version())<11))){G='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+I.id+'");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()'}v=o.add(r.iframeContainer,"iframe",{id:I.id+"_ifr",src:G||'javascript:""',frameBorder:"0",allowTransparency:"true",title:J.aria_label,style:{width:"100%",height:B,display:"block"}});I.contentAreaContainer=r.iframeContainer;o.get(r.editorContainer).style.display=I.orgDisplay;o.get(I.id).style.display="none";o.setAttrib(I.id,"aria-hidden",true);if(!n.relaxedDomain||!G){I.setupIframe()}E=v=r=null},setupIframe:function(){var r=this,x=r.settings,y=o.get(r.id),z=r.getDoc(),v,q;if(!b||!n.relaxedDomain){z.open();z.write(r.iframeHTML);z.close();if(n.relaxedDomain){z.domain=n.relaxedDomain}}q=r.getBody();q.disabled=true;if(!x.readonly){q.contentEditable=true}q.disabled=false;r.schema=new n.html.Schema(x);r.dom=new n.dom.DOMUtils(r.getDoc(),{keep_values:true,url_converter:r.convertURL,url_converter_scope:r,hex_colors:x.force_hex_style_colors,class_filter:x.class_filter,update_styles:1,fix_ie_paragraphs:1,schema:r.schema});r.parser=new n.html.DomParser(x,r.schema);if(!r.settings.allow_html_in_named_anchor){r.parser.addAttributeFilter("name",function(s,t){var B=s.length,D,A,C,E;while(B--){E=s[B];if(E.name==="a"&&E.firstChild){C=E.parent;D=E.lastChild;do{A=D.prev;C.insert(D,E);D=A}while(D)}}})}r.parser.addAttributeFilter("src,href,style",function(s,t){var A=s.length,C,E=r.dom,D,B;while(A--){C=s[A];D=C.attr(t);B="data-mce-"+t;if(!C.attributes.map[B]){if(t==="style"){C.attr(B,E.serializeStyle(E.parseStyle(D),C.name))}else{C.attr(B,r.convertURL(D,t,C.name))}}}});r.parser.addNodeFilter("script",function(s,t){var A=s.length,B;while(A--){B=s[A];B.attr("type","mce-"+(B.attr("type")||"text/javascript"))}});r.parser.addNodeFilter("#cdata",function(s,t){var A=s.length,B;while(A--){B=s[A];B.type=8;B.name="#comment";B.value="[CDATA["+B.value+"]]"}});r.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(t,A){var B=t.length,C,s=r.schema.getNonEmptyElements();while(B--){C=t[B];if(C.isEmpty(s)){C.empty().append(new n.html.Node("br",1)).shortEnded=true}}});r.serializer=new n.dom.Serializer(x,r.dom,r.schema);r.selection=new n.dom.Selection(r.dom,r.getWin(),r.serializer);r.formatter=new n.Formatter(this);r.formatter.register({alignleft:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"left"}},{selector:"img,table",collapsed:false,styles:{"float":"left"}}],aligncenter:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"center"}},{selector:"img",collapsed:false,styles:{display:"block",marginLeft:"auto",marginRight:"auto"}},{selector:"table",collapsed:false,styles:{marginLeft:"auto",marginRight:"auto"}}],alignright:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"right"}},{selector:"img,table",collapsed:false,styles:{"float":"right"}}],alignfull:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"justify"}}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:true},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:true},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},wrap_links:false},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},wrap_links:false},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},link:{inline:"a",selector:"a",remove:"all",split:true,deep:true,onmatch:function(s){return true},onformat:function(A,s,t){i(t,function(C,B){r.dom.setAttrib(A,B,C)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike",remove:"all",split:true,expand:false,block_expand:true,deep:true},{selector:"span",attributes:["style","class"],remove:"empty",split:true,expand:false,deep:true},{selector:"*",attributes:["style","class"],split:false,expand:false,deep:true}]});i("p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp".split(/\s/),function(s){r.formatter.register(s,{block:s,remove:"all"})});r.formatter.register(r.settings.formats);r.undoManager=new n.UndoManager(r);r.undoManager.onAdd.add(function(t,s){if(t.hasUndo()){return r.onChange.dispatch(r,s,t)}});r.undoManager.onUndo.add(function(t,s){return r.onUndo.dispatch(r,s,t)});r.undoManager.onRedo.add(function(t,s){return r.onRedo.dispatch(r,s,t)});r.forceBlocks=new n.ForceBlocks(r,{forced_root_block:x.forced_root_block});r.editorCommands=new n.EditorCommands(r);r.serializer.onPreProcess.add(function(s,t){return r.onPreProcess.dispatch(r,t,s)});r.serializer.onPostProcess.add(function(s,t){return r.onPostProcess.dispatch(r,t,s)});r.onPreInit.dispatch(r);if(!x.gecko_spellcheck){r.getBody().spellcheck=0}if(!x.readonly){r._addEvents()}r.controlManager.onPostRender.dispatch(r,r.controlManager);r.onPostRender.dispatch(r);r.quirks=new n.util.Quirks(this);if(x.directionality){r.getBody().dir=x.directionality}if(x.nowrap){r.getBody().style.whiteSpace="nowrap"}if(x.handle_node_change_callback){r.onNodeChange.add(function(t,s,A){r.execCallback("handle_node_change_callback",r.id,A,-1,-1,true,r.selection.isCollapsed())})}if(x.save_callback){r.onSaveContent.add(function(s,A){var t=r.execCallback("save_callback",r.id,A.content,r.getBody());if(t){A.content=t}})}if(x.onchange_callback){r.onChange.add(function(t,s){r.execCallback("onchange_callback",r,s)})}if(x.protect){r.onBeforeSetContent.add(function(s,t){if(x.protect){i(x.protect,function(A){t.content=t.content.replace(A,function(B){return"<!--mce:protected "+escape(B)+"-->"})})}})}if(x.convert_newlines_to_brs){r.onBeforeSetContent.add(function(s,t){if(t.initial){t.content=t.content.replace(/\r?\n/g,"<br />")}})}if(x.preformatted){r.onPostProcess.add(function(s,t){t.content=t.content.replace(/^\s*<pre.*?>/,"");t.content=t.content.replace(/<\/pre>\s*$/,"");if(t.set){t.content='<pre class="mceItemHidden">'+t.content+"</pre>"}})}if(x.verify_css_classes){r.serializer.attribValueFilter=function(C,A){var B,t;if(C=="class"){if(!r.classesRE){t=r.dom.getClasses();if(t.length>0){B="";i(t,function(s){B+=(B?"|":"")+s["class"]});r.classesRE=new RegExp("("+B+")","gi")}}return !r.classesRE||/(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(A)||r.classesRE.test(A)?A:""}return A}}if(x.cleanup_callback){r.onBeforeSetContent.add(function(s,t){t.content=r.execCallback("cleanup_callback","insert_to_editor",t.content,t)});r.onPreProcess.add(function(s,t){if(t.set){r.execCallback("cleanup_callback","insert_to_editor_dom",t.node,t)}if(t.get){r.execCallback("cleanup_callback","get_from_editor_dom",t.node,t)}});r.onPostProcess.add(function(s,t){if(t.set){t.content=r.execCallback("cleanup_callback","insert_to_editor",t.content,t)}if(t.get){t.content=r.execCallback("cleanup_callback","get_from_editor",t.content,t)}})}if(x.save_callback){r.onGetContent.add(function(s,t){if(t.save){t.content=r.execCallback("save_callback",r.id,t.content,r.getBody())}})}if(x.handle_event_callback){r.onEvent.add(function(s,t,A){if(r.execCallback("handle_event_callback",t,s,A)===false){k.cancel(t)}})}r.onSetContent.add(function(){r.addVisual(r.getBody())});if(x.padd_empty_editor){r.onPostProcess.add(function(s,t){t.content=t.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")})}if(a){function u(s,t){i(s.dom.select("a"),function(B){var A=B.parentNode;if(s.dom.isBlock(A)&&A.lastChild===B){s.dom.add(A,"br",{"data-mce-bogus":1})}})}r.onExecCommand.add(function(s,t){if(t==="CreateLink"){u(s)}});r.onSetContent.add(r.selection.onSetContent.add(u))}r.load({initial:true,format:"html"});r.startContent=r.getContent({format:"raw"});r.undoManager.add();r.initialized=true;r.onInit.dispatch(r);r.execCallback("setupcontent_callback",r.id,r.getBody(),r.getDoc());r.execCallback("init_instance_callback",r);r.focus(true);r.nodeChanged({initial:1});i(r.contentCSS,function(s){r.dom.loadCSS(s)});if(x.auto_focus){setTimeout(function(){var s=n.get(x.auto_focus);s.selection.select(s.getBody(),1);s.selection.collapse(1);s.getBody().focus();s.getWin().focus()},100)}y=null},focus:function(v){var z,r=this,u=r.selection,y=r.settings.content_editable,s,q,x=r.getDoc();if(!v){s=u.getRng();if(s.item){q=s.item(0)}r._refreshContentEditable();if(!y){r.getWin().focus()}if(n.isGecko){r.getBody().focus()}if(q&&q.ownerDocument==x){s=x.body.createControlRange();s.addElement(q);s.select()}}if(n.activeEditor!=r){if((z=n.activeEditor)!=null){z.onDeactivate.dispatch(z,r)}r.onActivate.dispatch(r,z)}n._setActive(r)},execCallback:function(v){var q=this,u=q.settings[v],r;if(!u){return}if(q.callbackLookup&&(r=q.callbackLookup[v])){u=r.func;r=r.scope}if(d(u,"string")){r=u.replace(/\.\w+$/,"");r=r?n.resolve(r):0;u=n.resolve(u);q.callbackLookup=q.callbackLookup||{};q.callbackLookup[v]={func:u,scope:r}}return u.apply(r||q,Array.prototype.slice.call(arguments,1))},translate:function(q){var t=this.settings.language||"en",r=n.i18n;if(!q){return""}return r[t+"."+q]||q.replace(/{\#([^}]+)\}/g,function(u,s){return r[t+"."+s]||"{#"+s+"}"})},getLang:function(r,q){return n.i18n[(this.settings.language||"en")+"."+r]||(d(q)?q:"{#"+r+"}")},getParam:function(x,s,q){var t=n.trim,r=d(this.settings[x])?this.settings[x]:s,u;if(q==="hash"){u={};if(d(r,"string")){i(r.indexOf("=")>0?r.split(/[;,](?![^=;,]*(?:[;,]|$))/):r.split(","),function(y){y=y.split("=");if(y.length>1){u[t(y[0])]=t(y[1])}else{u[t(y[0])]=t(y)}})}else{u=r}return u}return r},nodeChanged:function(u){var q=this,r=q.selection,v=r.getStart()||q.getBody();if(q.initialized){u=u||{};v=b&&v.ownerDocument!=q.getDoc()?q.getBody():v;u.parents=[];q.dom.getParent(v,function(s){if(s.nodeName=="BODY"){return true}u.parents.push(s)});q.onNodeChange.dispatch(q,u?u.controlManager||q.controlManager:q.controlManager,v,r.isCollapsed(),u)}},addButton:function(u,r){var q=this;q.buttons=q.buttons||{};q.buttons[u]=r},addCommand:function(q,s,r){this.execCommands[q]={func:s,scope:r||this}},addQueryStateHandler:function(q,s,r){this.queryStateCommands[q]={func:s,scope:r||this}},addQueryValueHandler:function(q,s,r){this.queryValueCommands[q]={func:s,scope:r||this}},addShortcut:function(s,v,q,u){var r=this,x;if(!r.settings.custom_shortcuts){return false}r.shortcuts=r.shortcuts||{};if(d(q,"string")){x=q;q=function(){r.execCommand(x,false,null)}}if(d(q,"object")){x=q;q=function(){r.execCommand(x[0],x[1],x[2])}}i(g(s),function(t){var y={func:q,scope:u||this,desc:v,alt:false,ctrl:false,shift:false};i(g(t,"+"),function(z){switch(z){case"alt":case"ctrl":case"shift":y[z]=true;break;default:y.charCode=z.charCodeAt(0);y.keyCode=z.toUpperCase().charCodeAt(0)}});r.shortcuts[(y.ctrl?"ctrl":"")+","+(y.alt?"alt":"")+","+(y.shift?"shift":"")+","+y.keyCode]=y});return true},execCommand:function(y,x,A,q){var u=this,v=0,z,r;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(y)&&(!q||!q.skip_focus)){u.focus()}q=f({},q);u.onBeforeExecCommand.dispatch(u,y,x,A,q);if(q.terminate){return false}if(u.execCallback("execcommand_callback",u.id,u.selection.getNode(),y,x,A)){u.onExecCommand.dispatch(u,y,x,A,q);return true}if(z=u.execCommands[y]){r=z.func.call(z.scope,x,A);if(r!==true){u.onExecCommand.dispatch(u,y,x,A,q);return r}}i(u.plugins,function(s){if(s.execCommand&&s.execCommand(y,x,A)){u.onExecCommand.dispatch(u,y,x,A,q);v=1;return false}});if(v){return true}if(u.theme&&u.theme.execCommand&&u.theme.execCommand(y,x,A)){u.onExecCommand.dispatch(u,y,x,A,q);return true}if(u.editorCommands.execCommand(y,x,A)){u.onExecCommand.dispatch(u,y,x,A,q);return true}u.getDoc().execCommand(y,x,A);u.onExecCommand.dispatch(u,y,x,A,q)},queryCommandState:function(v){var r=this,x,u;if(r._isHidden()){return}if(x=r.queryStateCommands[v]){u=x.func.call(x.scope);if(u!==true){return u}}x=r.editorCommands.queryCommandState(v);if(x!==-1){return x}try{return this.getDoc().queryCommandState(v)}catch(q){}},queryCommandValue:function(x){var r=this,v,u;if(r._isHidden()){return}if(v=r.queryValueCommands[x]){u=v.func.call(v.scope);if(u!==true){return u}}v=r.editorCommands.queryCommandValue(x);if(d(v)){return v}try{return this.getDoc().queryCommandValue(x)}catch(q){}},show:function(){var q=this;o.show(q.getContainer());o.hide(q.id);q.load()},hide:function(){var q=this,r=q.getDoc();if(b&&r){r.execCommand("SelectAll")}q.save();o.hide(q.getContainer());o.setStyle(q.id,"display",q.orgDisplay)},isHidden:function(){return !o.isHidden(this.id)},setProgressState:function(q,r,s){this.onSetProgressState.dispatch(this,q,r,s);return q},load:function(u){var q=this,s=q.getElement(),r;if(s){u=u||{};u.load=true;r=q.setContent(d(s.value)?s.value:s.innerHTML,u);u.element=s;if(!u.no_events){q.onLoadContent.dispatch(q,u)}u.element=s=null;return r}},save:function(v){var q=this,u=q.getElement(),r,s;if(!u||!q.initialized){return}v=v||{};v.save=true;if(!v.no_events){q.undoManager.typing=false;q.undoManager.add()}v.element=u;r=v.content=q.getContent(v);if(!v.no_events){q.onSaveContent.dispatch(q,v)}r=v.content;if(!/TEXTAREA|INPUT/i.test(u.nodeName)){u.innerHTML=r;if(s=o.getParent(q.id,"form")){i(s.elements,function(t){if(t.name==q.id){t.value=r;return false}})}}else{u.value=r}v.element=u=null;return r},setContent:function(v,t){var s=this,r,q=s.getBody(),u;t=t||{};t.format=t.format||"html";t.set=true;t.content=v;if(!t.no_events){s.onBeforeSetContent.dispatch(s,t)}v=t.content;if(!n.isIE&&(v.length===0||/^\s+$/.test(v))){u=s.settings.forced_root_block;if(u){v="<"+u+'><br data-mce-bogus="1"></'+u+">"}else{v='<br data-mce-bogus="1">'}q.innerHTML=v;s.selection.select(q,true);s.selection.collapse(true);return}if(t.format!=="raw"){v=new n.html.Serializer({},s.schema).serialize(s.parser.parse(v))}t.content=n.trim(v);s.dom.setHTML(q,t.content);if(!t.no_events){s.onSetContent.dispatch(s,t)}s.selection.normalize();return t.content},getContent:function(r){var q=this,s;r=r||{};r.format=r.format||"html";r.get=true;if(!r.no_events){q.onBeforeGetContent.dispatch(q,r)}if(r.format=="raw"){s=q.getBody().innerHTML}else{s=q.serializer.serialize(q.getBody(),r)}r.content=n.trim(s);if(!r.no_events){q.onGetContent.dispatch(q,r)}return r.content},isDirty:function(){var q=this;return n.trim(q.startContent)!=n.trim(q.getContent({format:"raw",no_events:1}))&&!q.isNotDirty},getContainer:function(){var q=this;if(!q.container){q.container=o.get(q.editorContainer||q.id+"_parent")}return q.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return o.get(this.settings.content_element||this.id)},getWin:function(){var q=this,r;if(!q.contentWindow){r=o.get(q.id+"_ifr");if(r){q.contentWindow=r.contentWindow}}return q.contentWindow},getDoc:function(){var r=this,q;if(!r.contentDocument){q=r.getWin();if(q){r.contentDocument=q.document}}return r.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(q,y,x){var r=this,v=r.settings;if(v.urlconverter_callback){return r.execCallback("urlconverter_callback",q,x,true,y)}if(!v.convert_urls||(x&&x.nodeName=="LINK")||q.indexOf("file:")===0){return q}if(v.relative_urls){return r.documentBaseURI.toRelative(q)}q=r.documentBaseURI.toAbsolute(q,v.remove_script_host);return q},addVisual:function(u){var q=this,r=q.settings;u=u||q.getBody();if(!d(q.hasVisual)){q.hasVisual=r.visual}i(q.dom.select("table,a",u),function(t){var s;switch(t.nodeName){case"TABLE":s=q.dom.getAttrib(t,"border");if(!s||s=="0"){if(q.hasVisual){q.dom.addClass(t,r.visual_table_class)}else{q.dom.removeClass(t,r.visual_table_class)}}return;case"A":s=q.dom.getAttrib(t,"name");if(s){if(q.hasVisual){q.dom.addClass(t,"mceItemAnchor")}else{q.dom.removeClass(t,"mceItemAnchor")}}return}});q.onVisualAid.dispatch(q,u,q.hasVisual)},remove:function(){var q=this,r=q.getContainer();q.removed=1;q.hide();q.execCallback("remove_instance_callback",q);q.onRemove.dispatch(q);q.onExecCommand.listeners=[];n.remove(q);o.remove(r)},destroy:function(r){var q=this;if(q.destroyed){return}if(!r){n.removeUnload(q.destroy);tinyMCE.onBeforeUnload.remove(q._beforeUnload);if(q.theme&&q.theme.destroy){q.theme.destroy()}q.controlManager.destroy();q.selection.destroy();q.dom.destroy();if(!q.settings.content_editable){k.clear(q.getWin());k.clear(q.getDoc())}k.clear(q.getBody());k.clear(q.formElement)}if(q.formElement){q.formElement.submit=q.formElement._mceOldSubmit;q.formElement._mceOldSubmit=null}q.contentAreaContainer=q.formElement=q.container=q.settings.content_element=q.bodyElement=q.contentDocument=q.contentWindow=null;if(q.selection){q.selection=q.selection.win=q.selection.dom=q.selection.dom.doc=null}q.destroyed=1},_addEvents:function(){var D=this,u,E=D.settings,r=D.dom,y={mouseup:"onMouseUp",mousedown:"onMouseDown",click:"onClick",keyup:"onKeyUp",keydown:"onKeyDown",keypress:"onKeyPress",submit:"onSubmit",reset:"onReset",contextmenu:"onContextMenu",dblclick:"onDblClick",paste:"onPaste"};function q(t,F){var s=t.type;if(D.removed){return}if(D.onEvent.dispatch(D,t,F)!==false){D[y[t.fakeType||t.type]].dispatch(D,t,F)}}i(y,function(t,s){switch(s){case"contextmenu":r.bind(D.getDoc(),s,q);break;case"paste":r.bind(D.getBody(),s,function(F){q(F)});break;case"submit":case"reset":r.bind(D.getElement().form||o.getParent(D.id,"form"),s,q);break;default:r.bind(E.content_editable?D.getBody():D.getDoc(),s,q)}});r.bind(E.content_editable?D.getBody():(a?D.getDoc():D.getWin()),"focus",function(s){D.focus(true)});if(n.isGecko){r.bind(D.getDoc(),"DOMNodeInserted",function(t){var s;t=t.target;if(t.nodeType===1&&t.nodeName==="IMG"&&(s=t.getAttribute("data-mce-src"))){t.src=D.documentBaseURI.toAbsolute(s)}})}if(a){function v(){var G=this,I=G.getDoc(),H=G.settings;if(a&&!H.readonly){G._refreshContentEditable();try{I.execCommand("styleWithCSS",0,false)}catch(F){if(!G._isHidden()){try{I.execCommand("useCSS",0,true)}catch(F){}}}if(!H.table_inline_editing){try{I.execCommand("enableInlineTableEditing",false,false)}catch(F){}}if(!H.object_resizing){try{I.execCommand("enableObjectResizing",false,false)}catch(F){}}}}D.onBeforeExecCommand.add(v);D.onMouseDown.add(v)}D.onMouseUp.add(D.nodeChanged);D.onKeyUp.add(function(s,t){var F=t.keyCode;if((F>=33&&F<=36)||(F>=37&&F<=40)||F==13||F==45||F==46||F==8||(n.isMac&&(F==91||F==93))||t.ctrlKey){D.nodeChanged()}});D.onKeyDown.add(function(t,F){if(F.keyCode!=j.BACKSPACE){return}var s=t.selection.getRng();if(!s.collapsed){return}var H=s.startContainer;var G=s.startOffset;while(H&&H.nodeType&&H.nodeType!=1&&H.parentNode){H=H.parentNode}if(H&&H.parentNode&&H.parentNode.tagName==="BLOCKQUOTE"&&H.parentNode.firstChild==H&&G==0){t.formatter.toggle("blockquote",null,H.parentNode);s.setStart(H,0);s.setEnd(H,0);t.selection.setRng(s);t.selection.collapse(false)}});D.onReset.add(function(){D.setContent(D.startContent,{format:"raw"})});if(E.custom_shortcuts){if(E.custom_undo_redo_keyboard_shortcuts){D.addShortcut("ctrl+z",D.getLang("undo_desc"),"Undo");D.addShortcut("ctrl+y",D.getLang("redo_desc"),"Redo")}D.addShortcut("ctrl+b",D.getLang("bold_desc"),"Bold");D.addShortcut("ctrl+i",D.getLang("italic_desc"),"Italic");D.addShortcut("ctrl+u",D.getLang("underline_desc"),"Underline");for(u=1;u<=6;u++){D.addShortcut("ctrl+"+u,"",["FormatBlock",false,"h"+u])}D.addShortcut("ctrl+7","",["FormatBlock",false,"p"]);D.addShortcut("ctrl+8","",["FormatBlock",false,"div"]);D.addShortcut("ctrl+9","",["FormatBlock",false,"address"]);function x(t){var s=null;if(!t.altKey&&!t.ctrlKey&&!t.metaKey){return s}i(D.shortcuts,function(F){if(n.isMac&&F.ctrl!=t.metaKey){return}else{if(!n.isMac&&F.ctrl!=t.ctrlKey){return}}if(F.alt!=t.altKey){return}if(F.shift!=t.shiftKey){return}if(t.keyCode==F.keyCode||(t.charCode&&t.charCode==F.charCode)){s=F;return false}});return s}D.onKeyUp.add(function(s,t){var F=x(t);if(F){return k.cancel(t)}});D.onKeyPress.add(function(s,t){var F=x(t);if(F){return k.cancel(t)}});D.onKeyDown.add(function(s,t){var F=x(t);if(F){F.func.call(F.scope);return k.cancel(t)}})}if(n.isIE){r.bind(D.getDoc(),"controlselect",function(F){var t=D.resizeInfo,s;F=F.target;if(F.nodeName!=="IMG"){return}if(t){r.unbind(t.node,t.ev,t.cb)}if(!r.hasClass(F,"mceItemNoResize")){ev="resizeend";s=r.bind(F,ev,function(H){var G;H=H.target;if(G=r.getStyle(H,"width")){r.setAttrib(H,"width",G.replace(/[^0-9%]+/g,""));r.setStyle(H,"width","")}if(G=r.getStyle(H,"height")){r.setAttrib(H,"height",G.replace(/[^0-9%]+/g,""));r.setStyle(H,"height","")}})}else{ev="resizestart";s=r.bind(F,"resizestart",k.cancel,k)}t=D.resizeInfo={node:F,ev:ev,cb:s}})}if(n.isOpera){D.onClick.add(function(s,t){k.prevent(t)})}if(E.custom_undo_redo){function A(){D.undoManager.typing=false;D.undoManager.add()}var z=n.isGecko?"blur":"focusout";r.bind(D.getDoc(),z,function(s){if(!D.removed&&D.undoManager.typing){A()}});D.dom.bind(D.dom.getRoot(),"dragend",function(s){A()});D.onKeyUp.add(function(s,F){var t=F.keyCode;if((t>=33&&t<=36)||(t>=37&&t<=40)||t==13||t==45||F.ctrlKey){A()}});D.onKeyDown.add(function(s,G){var F=G.keyCode,t;if(F==8){t=D.getDoc().selection;if(t&&t.createRange&&t.createRange().item){D.undoManager.beforeChange();s.dom.remove(t.createRange().item(0));A();return k.cancel(G)}}if((F>=33&&F<=36)||(F>=37&&F<=40)||F==13||F==45){if(n.isIE&&F==13){D.undoManager.beforeChange()}if(D.undoManager.typing){A()}return}if((F<16||F>20)&&F!=224&&F!=91&&!D.undoManager.typing){D.undoManager.beforeChange();D.undoManager.typing=true;D.undoManager.add()}});D.onMouseDown.add(function(){if(D.undoManager.typing){A()}})}if(n.isGecko){function C(){var s=D.dom.getAttribs(D.selection.getStart().cloneNode(false));return function(){var t=D.selection.getStart();if(t!==D.getBody()){D.dom.setAttrib(t,"style",null);i(s,function(F){t.setAttributeNode(F.cloneNode(true))})}}}function B(){var t=D.selection;return !t.isCollapsed()&&t.getStart()!=t.getEnd()}D.onKeyPress.add(function(s,F){var t;if((F.keyCode==8||F.keyCode==46)&&B()){t=C();D.getDoc().execCommand("delete",false,null);t();return k.cancel(F)}});D.dom.bind(D.getDoc(),"cut",function(t){var s;if(B()){s=C();D.onKeyUp.addToTop(k.cancel,k);setTimeout(function(){s();D.onKeyUp.remove(k.cancel,k)},0)}})}},_refreshContentEditable:function(){var r=this,q,s;if(r._isHidden()){q=r.getBody();s=q.parentNode;s.removeChild(q);s.appendChild(q);q.focus()}},_isHidden:function(){var q;if(!a){return 0}q=this.selection.getSel();return(!q||!q.rangeCount||q.rangeCount==0)}})})(tinymce);(function(c){var d=c.each,e,a=true,b=false;c.EditorCommands=function(n){var m=n.dom,p=n.selection,j={state:{},exec:{},value:{}},k=n.settings,q=n.formatter,o;function r(z,y,x){var v;z=z.toLowerCase();if(v=j.exec[z]){v(z,y,x);return a}return b}function l(x){var v;x=x.toLowerCase();if(v=j.state[x]){return v(x)}return -1}function h(x){var v;x=x.toLowerCase();if(v=j.value[x]){return v(x)}return b}function u(v,x){x=x||"exec";d(v,function(z,y){d(y.toLowerCase().split(","),function(A){j[x][A]=z})})}c.extend(this,{execCommand:r,queryCommandState:l,queryCommandValue:h,addCommands:u});function f(y,x,v){if(x===e){x=b}if(v===e){v=null}return n.getDoc().execCommand(y,x,v)}function t(v){return q.match(v)}function s(v,x){q.toggle(v,x?{value:x}:e)}function i(v){o=p.getBookmark(v)}function g(){p.moveToBookmark(o)}u({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){n.undoManager.add()},"Cut,Copy,Paste":function(z){var y=n.getDoc(),v;try{f(z)}catch(x){v=a}if(v||!y.queryCommandSupported(z)){if(c.isGecko){n.windowManager.confirm(n.getLang("clipboard_msg"),function(A){if(A){open("http://www.mozilla.org/editor/midasdemo/securityprefs.html","_blank")}})}else{n.windowManager.alert(n.getLang("clipboard_no_support"))}}},unlink:function(v){if(p.isCollapsed()){p.select(p.getNode())}f(v);p.collapse(b)},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(v){var x=v.substring(7);d("left,center,right,full".split(","),function(y){if(x!=y){q.remove("align"+y)}});s("align"+x);r("mceRepaint")},"InsertUnorderedList,InsertOrderedList":function(y){var v,x;f(y);v=m.getParent(p.getNode(),"ol,ul");if(v){x=v.parentNode;if(/^(H[1-6]|P|ADDRESS|PRE)$/.test(x.nodeName)){i();m.split(x,v);g()}}},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){s(v)},"ForeColor,HiliteColor,FontName":function(y,x,v){s(y,v)},FontSize:function(z,y,x){var v,A;if(x>=1&&x<=7){A=c.explode(k.font_size_style_values);v=c.explode(k.font_size_classes);if(v){x=v[x-1]||x}else{x=A[x-1]||x}}s(z,x)},RemoveFormat:function(v){q.remove(v)},mceBlockQuote:function(v){s("blockquote")},FormatBlock:function(y,x,v){return s(v||"p")},mceCleanup:function(){var v=p.getBookmark();n.setContent(n.getContent({cleanup:a}),{cleanup:a});p.moveToBookmark(v)},mceRemoveNode:function(z,y,x){var v=x||p.getNode();if(v!=n.getBody()){i();n.dom.remove(v,a);g()}},mceSelectNodeDepth:function(z,y,x){var v=0;m.getParent(p.getNode(),function(A){if(A.nodeType==1&&v++==x){p.select(A);return b}},n.getBody())},mceSelectNode:function(y,x,v){p.select(v)},mceInsertContent:function(B,I,K){var y,J,E,z,F,G,D,C,L,x,A,M,v,H;y=n.parser;J=new c.html.Serializer({},n.schema);v='<span id="mce_marker" data-mce-type="bookmark">\uFEFF</span>';G={content:K,format:"html"};p.onBeforeSetContent.dispatch(p,G);K=G.content;if(K.indexOf("{$caret}")==-1){K+="{$caret}"}K=K.replace(/\{\$caret\}/,v);if(!p.isCollapsed()){n.getDoc().execCommand("Delete",false,null)}E=p.getNode();G={context:E.nodeName.toLowerCase()};F=y.parse(K,G);A=F.lastChild;if(A.attr("id")=="mce_marker"){D=A;for(A=A.prev;A;A=A.walk(true)){if(A.type==3||!m.isBlock(A.name)){A.parent.insert(D,A,A.name==="br");break}}}if(!G.invalid){K=J.serialize(F);A=E.firstChild;M=E.lastChild;if(!A||(A===M&&A.nodeName==="BR")){m.setHTML(E,K)}else{p.setContent(K)}}else{p.setContent(v);E=n.selection.getNode();z=n.getBody();if(E.nodeType==9){E=A=z}else{A=E}while(A!==z){E=A;A=A.parentNode}K=E==z?z.innerHTML:m.getOuterHTML(E);K=J.serialize(y.parse(K.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return J.serialize(F)})));if(E==z){m.setHTML(z,K)}else{m.setOuterHTML(E,K)}}D=m.get("mce_marker");C=m.getRect(D);L=m.getViewPort(n.getWin());if((C.y+C.h>L.y+L.h||C.y<L.y)||(C.x>L.x+L.w||C.x<L.x)){H=c.isIE?n.getDoc().documentElement:n.getBody();H.scrollLeft=C.x;H.scrollTop=C.y-L.h+25}x=m.createRng();A=D.previousSibling;if(A&&A.nodeType==3){x.setStart(A,A.nodeValue.length)}else{x.setStartBefore(D);x.setEndBefore(D)}m.remove(D);p.setRng(x);p.onSetContent.dispatch(p,G);n.addVisual()},mceInsertRawHTML:function(y,x,v){p.setContent("tiny_mce_marker");n.setContent(n.getContent().replace(/tiny_mce_marker/g,function(){return v}))},mceSetContent:function(y,x,v){n.setContent(v)},"Indent,Outdent":function(z){var x,v,y;x=k.indentation;v=/[a-z%]+$/i.exec(x);x=parseInt(x);if(!l("InsertUnorderedList")&&!l("InsertOrderedList")){d(p.getSelectedBlocks(),function(A){if(z=="outdent"){y=Math.max(0,parseInt(A.style.paddingLeft||0)-x);m.setStyle(A,"paddingLeft",y?y+v:"")}else{m.setStyle(A,"paddingLeft",(parseInt(A.style.paddingLeft||0)+x)+v)}})}else{f(z)}},mceRepaint:function(){var x;if(c.isGecko){try{i(a);if(p.getSel()){p.getSel().selectAllChildren(n.getBody())}p.collapse(a);g()}catch(v){}}},mceToggleFormat:function(y,x,v){q.toggle(v)},InsertHorizontalRule:function(){n.execCommand("mceInsertContent",false,"<hr />")},mceToggleVisualAid:function(){n.hasVisual=!n.hasVisual;n.addVisual()},mceReplaceContent:function(y,x,v){n.execCommand("mceInsertContent",false,v.replace(/\{\$selection\}/g,p.getContent({format:"text"})))},mceInsertLink:function(z,y,x){var v;if(typeof(x)=="string"){x={href:x}}v=m.getParent(p.getNode(),"a");x.href=x.href.replace(" ","%20");if(!v||!x.href){q.remove("link")}if(x.href){q.apply("link",x,v)}},selectAll:function(){var x=m.getRoot(),v=m.createRng();v.setStart(x,0);v.setEnd(x,x.childNodes.length);n.selection.setRng(v)}});u({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(z){var x="align"+z.substring(7);var v=p.isCollapsed()?[p.getNode()]:p.getSelectedBlocks();var y=c.map(v,function(A){return !!q.matchNode(A,x)});return c.inArray(y,a)!==-1},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){return t(v)},mceBlockQuote:function(){return t("blockquote")},Outdent:function(){var v;if(k.inline_styles){if((v=m.getParent(p.getStart(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}if((v=m.getParent(p.getEnd(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}}return l("InsertUnorderedList")||l("InsertOrderedList")||(!k.inline_styles&&!!m.getParent(p.getNode(),"BLOCKQUOTE"))},"InsertUnorderedList,InsertOrderedList":function(v){return m.getParent(p.getNode(),v=="insertunorderedlist"?"UL":"OL")}},"state");u({"FontSize,FontName":function(y){var x=0,v;if(v=m.getParent(p.getNode(),"span")){if(y=="fontsize"){x=v.style.fontSize}else{x=v.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()}}return x}},"value");if(k.custom_undo_redo){u({Undo:function(){n.undoManager.undo()},Redo:function(){n.undoManager.redo()}})}}})(tinymce);(function(b){var a=b.util.Dispatcher;b.UndoManager=function(f){var d,e=0,h=[],c;function g(){return b.trim(f.getContent({format:"raw",no_events:1}))}return d={typing:false,onAdd:new a(d),onUndo:new a(d),onRedo:new a(d),beforeChange:function(){c=f.selection.getBookmark(2,true)},add:function(m){var j,k=f.settings,l;m=m||{};m.content=g();l=h[e];if(l&&l.content==m.content){return null}if(h[e]){h[e].beforeBookmark=c}if(k.custom_undo_redo_levels){if(h.length>k.custom_undo_redo_levels){for(j=0;j<h.length-1;j++){h[j]=h[j+1]}h.length--;e=h.length}}m.bookmark=f.selection.getBookmark(2,true);if(e<h.length-1){h.length=e+1}h.push(m);e=h.length-1;d.onAdd.dispatch(d,m);f.isNotDirty=0;return m},undo:function(){var k,j;if(d.typing){d.add();d.typing=false}if(e>0){k=h[--e];f.setContent(k.content,{format:"raw"});f.selection.moveToBookmark(k.beforeBookmark);d.onUndo.dispatch(d,k)}return k},redo:function(){var i;if(e<h.length-1){i=h[++e];f.setContent(i.content,{format:"raw"});f.selection.moveToBookmark(i.bookmark);d.onRedo.dispatch(d,i)}return i},clear:function(){h=[];e=0;d.typing=false},hasUndo:function(){return e>0||this.typing},hasRedo:function(){return e<h.length-1&&!this.typing}}}})(tinymce);(function(l){var j=l.dom.Event,c=l.isIE,a=l.isGecko,b=l.isOpera,i=l.each,h=l.extend,d=true,g=false;function k(o){var p,n,m;do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(o.nodeName)){if(p){n=o.cloneNode(false);n.appendChild(p);p=n}else{p=m=o.cloneNode(false)}p.removeAttribute("id")}}while(o=o.parentNode);if(p){return{wrapper:p,inner:m}}}function f(n,o){var m=o.ownerDocument.createRange();m.setStart(n.endContainer,n.endOffset);m.setEndAfter(o);return m.cloneContents().textContent.length==0}function e(o,q,m){var n,p;if(q.isEmpty(m)){n=q.getParent(m,"ul,ol");if(!q.getParent(n.parentNode,"ul,ol")){q.split(n,m);p=q.create("p",0,'<br data-mce-bogus="1" />');q.replace(p,m);o.select(p,1)}return g}return d}l.create("tinymce.ForceBlocks",{ForceBlocks:function(m){var n=this,o=m.settings,p;n.editor=m;n.dom=m.dom;p=(o.forced_root_block||"p").toLowerCase();o.element=p.toUpperCase();m.onPreInit.add(n.setup,n)},setup:function(){var n=this,m=n.editor,p=m.settings,u=m.dom,o=m.selection,q=m.schema.getBlockElements();if(p.forced_root_block){function v(){var y=o.getStart(),t=m.getBody(),s,z,D,F,E,x,A,B=-16777215;if(!y||y.nodeType!==1){return}while(y!=t){if(q[y.nodeName]){return}y=y.parentNode}s=o.getRng();if(s.setStart){z=s.startContainer;D=s.startOffset;F=s.endContainer;E=s.endOffset}else{if(s.item){s=m.getDoc().body.createTextRange();s.moveToElementText(s.item(0))}tmpRng=s.duplicate();tmpRng.collapse(true);D=tmpRng.move("character",B)*-1;if(!tmpRng.collapsed){tmpRng=s.duplicate();tmpRng.collapse(false);E=(tmpRng.move("character",B)*-1)-D}}for(y=t.firstChild;y;y){if(y.nodeType===3||(y.nodeType==1&&!q[y.nodeName])){if(!x){x=u.create(p.forced_root_block);y.parentNode.insertBefore(x,y)}A=y;y=y.nextSibling;x.appendChild(A)}else{x=null;y=y.nextSibling}}if(s.setStart){s.setStart(z,D);s.setEnd(F,E);o.setRng(s)}else{try{s=m.getDoc().body.createTextRange();s.moveToElementText(t);s.collapse(true);s.moveStart("character",D);if(E>0){s.moveEnd("character",E)}s.select()}catch(C){}}m.nodeChanged()}m.onKeyUp.add(v);m.onClick.add(v)}if(p.force_br_newlines){if(c){m.onKeyPress.add(function(s,t){var x;if(t.keyCode==13&&o.getNode().nodeName!="LI"){o.setContent('<br id="__" /> ',{format:"raw"});x=u.get("__");x.removeAttribute("id");o.select(x);o.collapse();return j.cancel(t)}})}}if(p.force_p_newlines){if(!c){m.onKeyPress.add(function(s,t){if(t.keyCode==13&&!t.shiftKey&&!n.insertPara(t)){j.cancel(t)}})}else{l.addUnload(function(){n._previousFormats=0});m.onKeyPress.add(function(s,t){n._previousFormats=0;if(t.keyCode==13&&!t.shiftKey&&s.selection.isCollapsed()&&p.keep_styles){n._previousFormats=k(s.selection.getStart())}});m.onKeyUp.add(function(t,y){if(y.keyCode==13&&!y.shiftKey){var x=t.selection.getStart(),s=n._previousFormats;if(!x.hasChildNodes()&&s){x=u.getParent(x,u.isBlock);if(x&&x.nodeName!="LI"){x.innerHTML="";if(n._previousFormats){x.appendChild(s.wrapper);s.inner.innerHTML="\uFEFF"}else{x.innerHTML="\uFEFF"}o.select(x,1);o.collapse(true);t.getDoc().execCommand("Delete",false,null);n._previousFormats=0}}}})}if(a){m.onKeyDown.add(function(s,t){if((t.keyCode==8||t.keyCode==46)&&!t.shiftKey){n.backspaceDelete(t,t.keyCode==8)}})}}if(l.isWebKit){function r(t){var s=o.getRng(),x,A=u.create("div",null," "),z,y=u.getViewPort(t.getWin()).h;s.insertNode(x=u.create("br"));s.setStartAfter(x);s.setEndAfter(x);o.setRng(s);if(o.getSel().focusNode==x.previousSibling){o.select(u.insertAfter(u.doc.createTextNode("\u00a0"),x));o.collapse(d)}u.insertAfter(A,x);z=u.getPos(A).y;u.remove(A);if(z>y){t.getWin().scrollTo(0,z)}}m.onKeyPress.add(function(s,t){if(t.keyCode==13&&(t.shiftKey||(p.force_br_newlines&&!u.getParent(o.getNode(),"h1,h2,h3,h4,h5,h6,ol,ul")))){r(s);j.cancel(t)}})}if(c){if(p.element!="P"){m.onKeyPress.add(function(s,t){n.lastElm=o.getNode().nodeName});m.onKeyUp.add(function(t,x){var z,y=o.getNode(),s=t.getBody();if(s.childNodes.length===1&&y.nodeName=="P"){y=u.rename(y,p.element);o.select(y);o.collapse();t.nodeChanged()}else{if(x.keyCode==13&&!x.shiftKey&&n.lastElm!="P"){z=u.getParent(y,"p");if(z){u.rename(z,p.element);t.nodeChanged()}}}})}}},getParentBlock:function(o){var m=this.dom;return m.getParent(o,m.isBlock)},insertPara:function(Q){var E=this,v=E.editor,M=v.dom,R=v.getDoc(),V=v.settings,F=v.selection.getSel(),G=F.getRangeAt(0),U=R.body;var J,K,H,O,N,q,o,u,z,m,C,T,p,x,I,L=M.getViewPort(v.getWin()),B,D,A;v.undoManager.beforeChange();J=R.createRange();J.setStart(F.anchorNode,F.anchorOffset);J.collapse(d);K=R.createRange();K.setStart(F.focusNode,F.focusOffset);K.collapse(d);H=J.compareBoundaryPoints(J.START_TO_END,K)<0;O=H?F.anchorNode:F.focusNode;N=H?F.anchorOffset:F.focusOffset;q=H?F.focusNode:F.anchorNode;o=H?F.focusOffset:F.anchorOffset;if(O===q&&/^(TD|TH)$/.test(O.nodeName)){if(O.firstChild.nodeName=="BR"){M.remove(O.firstChild)}if(O.childNodes.length==0){v.dom.add(O,V.element,null,"<br />");T=v.dom.add(O,V.element,null,"<br />")}else{I=O.innerHTML;O.innerHTML="";v.dom.add(O,V.element,null,I);T=v.dom.add(O,V.element,null,"<br />")}G=R.createRange();G.selectNodeContents(T);G.collapse(1);v.selection.setRng(G);return g}if(O==U&&q==U&&U.firstChild&&v.dom.isBlock(U.firstChild)){O=q=O.firstChild;N=o=0;J=R.createRange();J.setStart(O,0);K=R.createRange();K.setStart(q,0)}if(!R.body.hasChildNodes()){R.body.appendChild(M.create("br"))}O=O.nodeName=="HTML"?R.body:O;O=O.nodeName=="BODY"?O.firstChild:O;q=q.nodeName=="HTML"?R.body:q;q=q.nodeName=="BODY"?q.firstChild:q;u=E.getParentBlock(O);z=E.getParentBlock(q);m=u?u.nodeName:V.element;if(I=E.dom.getParent(u,"li,pre")){if(I.nodeName=="LI"){return e(v.selection,E.dom,I)}return d}if(u&&(u.nodeName=="CAPTION"||/absolute|relative|fixed/gi.test(M.getStyle(u,"position",1)))){m=V.element;u=null}if(z&&(z.nodeName=="CAPTION"||/absolute|relative|fixed/gi.test(M.getStyle(u,"position",1)))){m=V.element;z=null}if(/(TD|TABLE|TH|CAPTION)/.test(m)||(u&&m=="DIV"&&/left|right/gi.test(M.getStyle(u,"float",1)))){m=V.element;u=z=null}C=(u&&u.nodeName==m)?u.cloneNode(0):v.dom.create(m);T=(z&&z.nodeName==m)?z.cloneNode(0):v.dom.create(m);T.removeAttribute("id");if(/^(H[1-6])$/.test(m)&&f(G,u)){T=v.dom.create(V.element)}I=p=O;do{if(I==U||I.nodeType==9||E.dom.isBlock(I)||/(TD|TABLE|TH|CAPTION)/.test(I.nodeName)){break}p=I}while((I=I.previousSibling?I.previousSibling:I.parentNode));I=x=q;do{if(I==U||I.nodeType==9||E.dom.isBlock(I)||/(TD|TABLE|TH|CAPTION)/.test(I.nodeName)){break}x=I}while((I=I.nextSibling?I.nextSibling:I.parentNode));if(p.nodeName==m){J.setStart(p,0)}else{J.setStartBefore(p)}J.setEnd(O,N);C.appendChild(J.cloneContents()||R.createTextNode(""));try{K.setEndAfter(x)}catch(P){}K.setStart(q,o);T.appendChild(K.cloneContents()||R.createTextNode(""));G=R.createRange();if(!p.previousSibling&&p.parentNode.nodeName==m){G.setStartBefore(p.parentNode)}else{if(J.startContainer.nodeName==m&&J.startOffset==0){G.setStartBefore(J.startContainer)}else{G.setStart(J.startContainer,J.startOffset)}}if(!x.nextSibling&&x.parentNode.nodeName==m){G.setEndAfter(x.parentNode)}else{G.setEnd(K.endContainer,K.endOffset)}G.deleteContents();if(b){v.getWin().scrollTo(0,L.y)}if(C.firstChild&&C.firstChild.nodeName==m){C.innerHTML=C.firstChild.innerHTML}if(T.firstChild&&T.firstChild.nodeName==m){T.innerHTML=T.firstChild.innerHTML}function S(y,s){var r=[],X,W,t;y.innerHTML="";if(V.keep_styles){W=s;do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(W.nodeName)){X=W.cloneNode(g);M.setAttrib(X,"id","");r.push(X)}}while(W=W.parentNode)}if(r.length>0){for(t=r.length-1,X=y;t>=0;t--){X=X.appendChild(r[t])}r[0].innerHTML=b?"\u00a0":"<br />";return r[0]}else{y.innerHTML=b?"\u00a0":"<br />"}}if(M.isEmpty(C)){S(C,O)}if(M.isEmpty(T)){A=S(T,q)}if(b&&parseFloat(opera.version())<9.5){G.insertNode(C);G.insertNode(T)}else{G.insertNode(T);G.insertNode(C)}T.normalize();C.normalize();v.selection.select(T,true);v.selection.collapse(true);B=v.dom.getPos(T).y;if(B<L.y||B+25>L.y+L.h){v.getWin().scrollTo(0,B<L.y?B:B-L.h+25)}v.undoManager.add();return g},backspaceDelete:function(u,B){var C=this,s=C.editor,y=s.getBody(),q=s.dom,p,v=s.selection,o=v.getRng(),x=o.startContainer,p,z,A,m;if(!B&&o.collapsed&&x.nodeType==1&&o.startOffset==x.childNodes.length){m=new l.dom.TreeWalker(x.lastChild,x);for(p=x.lastChild;p;p=m.prev()){if(p.nodeType==3){o.setStart(p,p.nodeValue.length);o.collapse(true);v.setRng(o);return}}}if(x&&s.dom.isBlock(x)&&!/^(TD|TH)$/.test(x.nodeName)&&B){if(x.childNodes.length==0||(x.childNodes.length==1&&x.firstChild.nodeName=="BR")){p=x;while((p=p.previousSibling)&&!s.dom.isBlock(p)){}if(p){if(x!=y.firstChild){z=s.dom.doc.createTreeWalker(p,NodeFilter.SHOW_TEXT,null,g);while(A=z.nextNode()){p=A}o=s.getDoc().createRange();o.setStart(p,p.nodeValue?p.nodeValue.length:0);o.setEnd(p,p.nodeValue?p.nodeValue.length:0);v.setRng(o);s.dom.remove(x)}return j.cancel(u)}}}}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each,e=c.extend;c.create("tinymce.ControlManager",{ControlManager:function(f,j){var h=this,g;j=j||{};h.editor=f;h.controls={};h.onAdd=new c.util.Dispatcher(h);h.onPostRender=new c.util.Dispatcher(h);h.prefix=j.prefix||f.id+"_";h._cls={};h.onPostRender.add(function(){d(h.controls,function(i){i.postRender()})})},get:function(f){return this.controls[this.prefix+f]||this.controls[f]},setActive:function(h,f){var g=null;if(g=this.get(h)){g.setActive(f)}return g},setDisabled:function(h,f){var g=null;if(g=this.get(h)){g.setDisabled(f)}return g},add:function(g){var f=this;if(g){f.controls[g.id]=g;f.onAdd.dispatch(g,f)}return g},createControl:function(i){var h,g=this,f=g.editor;d(f.plugins,function(j){if(j.createControl){h=j.createControl(i,g);if(h){return false}}});switch(i){case"|":case"separator":return g.createSeparator()}if(!h&&f.buttons&&(h=f.buttons[i])){return g.createButton(i,h)}return g.add(h)},createDropMenu:function(f,n,h){var m=this,i=m.editor,j,g,k,l;n=e({"class":"mceDropDown",constrain:i.settings.constrain_menus},n);n["class"]=n["class"]+" "+i.getParam("skin")+"Skin";if(k=i.getParam("skin_variant")){n["class"]+=" "+i.getParam("skin")+"Skin"+k.substring(0,1).toUpperCase()+k.substring(1)}f=m.prefix+f;l=h||m._cls.dropmenu||c.ui.DropMenu;j=m.controls[f]=new l(f,n);j.onAddItem.add(function(r,q){var p=q.settings;p.title=i.getLang(p.title,p.title);if(!p.onclick){p.onclick=function(o){if(p.cmd){i.execCommand(p.cmd,p.ui||false,p.value)}}}});i.onRemove.add(function(){j.destroy()});if(c.isIE){j.onShowMenu.add(function(){i.focus();g=i.selection.getBookmark(1)});j.onHideMenu.add(function(){if(g){i.selection.moveToBookmark(g);g=0}})}return m.add(j)},createListBox:function(f,n,h){var l=this,j=l.editor,i,k,m;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,scope:n.scope,control_manager:l},n);f=l.prefix+f;function g(o){return o.settings.use_accessible_selects&&!c.isGecko}if(j.settings.use_native_selects||g(j)){k=new c.ui.NativeListBox(f,n)}else{m=h||l._cls.listbox||c.ui.ListBox;k=new m(f,n,j)}l.controls[f]=k;if(c.isWebKit){k.onPostRender.add(function(p,o){a.add(o,"mousedown",function(){j.bookmark=j.selection.getBookmark(1)});a.add(o,"focus",function(){j.selection.moveToBookmark(j.bookmark);j.bookmark=null})})}if(k.hideMenu){j.onMouseDown.add(k.hideMenu,k)}return l.add(k)},createButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.label=g.translate(i.label);i.scope=i.scope||g;if(!i.onclick&&!i.menu_button){i.onclick=function(){g.execCommand(i.cmd,i.ui||false,i.value)}}i=e({title:i.title,"class":"mce_"+m,unavailable_prefix:g.getLang("unavailable",""),scope:i.scope,control_manager:h},i);m=h.prefix+m;if(i.menu_button){f=l||h._cls.menubutton||c.ui.MenuButton;k=new f(m,i,g);g.onMouseDown.add(k.hideMenu,k)}else{f=h._cls.button||c.ui.Button;k=new f(m,i,g)}return h.add(k)},createMenuButton:function(h,f,g){f=f||{};f.menu_button=1;return this.createButton(h,f,g)},createSplitButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.scope=i.scope||g;if(!i.onclick){i.onclick=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}if(!i.onselect){i.onselect=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}i=e({title:i.title,"class":"mce_"+m,scope:i.scope,control_manager:h},i);m=h.prefix+m;f=l||h._cls.splitbutton||c.ui.SplitButton;k=h.add(new f(m,i,g));g.onMouseDown.add(k.hideMenu,k);return k},createColorSplitButton:function(f,n,h){var l=this,j=l.editor,i,k,m,g;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onclick){n.onclick=function(o){if(c.isIE){g=j.selection.getBookmark(1)}j.execCommand(n.cmd,n.ui||false,o||n.value)}}if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,menu_class:j.getParam("skin")+"Skin",scope:n.scope,more_colors_title:j.getLang("more_colors")},n);f=l.prefix+f;m=h||l._cls.colorsplitbutton||c.ui.ColorSplitButton;k=new m(f,n,j);j.onMouseDown.add(k.hideMenu,k);j.onRemove.add(function(){k.destroy()});if(c.isIE){k.onShowMenu.add(function(){j.focus();g=j.selection.getBookmark(1)});k.onHideMenu.add(function(){if(g){j.selection.moveToBookmark(g);g=0}})}return l.add(k)},createToolbar:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||g._cls.toolbar||c.ui.Toolbar;i=new f(k,h,g.editor);if(g.get(k)){return null}return g.add(i)},createToolbarGroup:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||this._cls.toolbarGroup||c.ui.ToolbarGroup;i=new f(k,h,g.editor);if(g.get(k)){return null}return g.add(i)},createSeparator:function(g){var f=g||this._cls.separator||c.ui.Separator;return new f()},setControlType:function(g,f){return this._cls[g.toLowerCase()]=f},destroy:function(){d(this.controls,function(f){f.destroy()});this.controls=null}})})(tinymce);(function(d){var a=d.util.Dispatcher,e=d.each,c=d.isIE,b=d.isOpera;d.create("tinymce.WindowManager",{WindowManager:function(f){var g=this;g.editor=f;g.onOpen=new a(g);g.onClose=new a(g);g.params={};g.features={}},open:function(z,h){var v=this,k="",n,m,i=v.editor.settings.dialog_type=="modal",q,o,j,g=d.DOM.getViewPort(),r;z=z||{};h=h||{};o=b?g.w:screen.width;j=b?g.h:screen.height;z.name=z.name||"mc_"+new Date().getTime();z.width=parseInt(z.width||320);z.height=parseInt(z.height||240);z.resizable=true;z.left=z.left||parseInt(o/2)-(z.width/2);z.top=z.top||parseInt(j/2)-(z.height/2);h.inline=false;h.mce_width=z.width;h.mce_height=z.height;h.mce_auto_focus=z.auto_focus;if(i){if(c){z.center=true;z.help=false;z.dialogWidth=z.width+"px";z.dialogHeight=z.height+"px";z.scroll=z.scrollbars||false}}e(z,function(p,f){if(d.is(p,"boolean")){p=p?"yes":"no"}if(!/^(name|url)$/.test(f)){if(c&&i){k+=(k?";":"")+f+":"+p}else{k+=(k?",":"")+f+"="+p}}});v.features=z;v.params=h;v.onOpen.dispatch(v,z,h);r=z.url||z.file;r=d._addVer(r);try{if(c&&i){q=1;window.showModalDialog(r,window,k)}else{q=window.open(r,z.name,k)}}catch(l){}if(!q){alert(v.editor.getLang("popup_blocked"))}},close:function(f){f.close();this.onClose.dispatch(this)},createInstance:function(i,h,g,m,l,k){var j=d.resolve(i);return new j(h,g,m,l,k)},confirm:function(h,f,i,g){g=g||window;f.call(i||this,g.confirm(this._decode(this.editor.getLang(h,h))))},alert:function(h,f,j,g){var i=this;g=g||window;g.alert(i._decode(i.editor.getLang(h,h)));if(f){f.call(j||i)}},resizeBy:function(f,g,h){h.resizeBy(f,g)},_decode:function(f){return d.DOM.decode(f).replace(/\\n/g,"\n")}})}(tinymce));(function(a){a.Formatter=function(V){var M={},P=a.each,c=V.dom,q=V.selection,t=a.dom.TreeWalker,K=new a.dom.RangeUtils(c),d=V.schema.isValidChild,F=c.isBlock,l=V.settings.forced_root_block,s=c.nodeIndex,E="\uFEFF",e=/^(src|href|style)$/,S=false,B=true,p;function z(W){return W instanceof Array}function m(X,W){return c.getParents(X,W,c.getRoot())}function b(W){return W.nodeType===1&&W.id==="_mce_caret"}function R(W){return W?M[W]:M}function k(W,X){if(W){if(typeof(W)!=="string"){P(W,function(Z,Y){k(Y,Z)})}else{X=X.length?X:[X];P(X,function(Y){if(Y.deep===p){Y.deep=!Y.selector}if(Y.split===p){Y.split=!Y.selector||Y.inline}if(Y.remove===p&&Y.selector&&!Y.inline){Y.remove="none"}if(Y.selector&&Y.inline){Y.mixed=true;Y.block_expand=true}if(typeof(Y.classes)==="string"){Y.classes=Y.classes.split(/\s+/)}});M[W]=X}}}var i=function(X){var W;V.dom.getParent(X,function(Y){W=V.dom.getStyle(Y,"text-decoration");return W&&W!=="none"});return W};var I=function(W){var X;if(W.nodeType===1&&W.parentNode&&W.parentNode.nodeType===1){X=i(W.parentNode);if(V.dom.getStyle(W,"color")&&X){V.dom.setStyle(W,"text-decoration",X)}else{if(V.dom.getStyle(W,"textdecoration")===X){V.dom.setStyle(W,"text-decoration",null)}}}};function T(Z,ag,ab){var ac=R(Z),ah=ac[0],af,X,ae,ad=q.isCollapsed();function W(al,ak){ak=ak||ah;if(al){if(ak.onformat){ak.onformat(al,ak,ag,ab)}P(ak.styles,function(an,am){c.setStyle(al,am,r(an,ag))});P(ak.attributes,function(an,am){c.setAttrib(al,am,r(an,ag))});P(ak.classes,function(am){am=r(am,ag);if(!c.hasClass(al,am)){c.addClass(al,am)}})}}function aa(){function am(at,aq){var ar=new t(aq);for(ab=ar.current();ab;ab=ar.prev()){if(ab.childNodes.length>1||ab==at){return ab}}}var al=V.selection.getRng();var ap=al.startContainer;var ak=al.endContainer;if(ap!=ak&&al.endOffset==0){var ao=am(ap,ak);var an=ao.nodeType==3?ao.length:ao.childNodes.length;al.setEnd(ao,an)}return al}function Y(an,at,aq,ap,al){var ak=[],am=-1,ar,av=-1,ao=-1,au;P(an.childNodes,function(ax,aw){if(ax.nodeName==="UL"||ax.nodeName==="OL"){am=aw;ar=ax;return false}});P(an.childNodes,function(ax,aw){if(ax.nodeName==="SPAN"&&c.getAttrib(ax,"data-mce-type")=="bookmark"){if(ax.id==at.id+"_start"){av=aw}else{if(ax.id==at.id+"_end"){ao=aw}}}});if(am<=0||(av<am&&ao>am)){P(a.grep(an.childNodes),al);return 0}else{au=aq.cloneNode(S);P(a.grep(an.childNodes),function(ax,aw){if((av<am&&aw<am)||(av>am&&aw>am)){ak.push(ax);ax.parentNode.removeChild(ax)}});if(av<am){an.insertBefore(au,ar)}else{if(av>am){an.insertBefore(au,ar.nextSibling)}}ap.push(au);P(ak,function(aw){au.appendChild(aw)});return au}}function ai(al,an,ap){var ak=[],ao,am;ao=ah.inline||ah.block;am=c.create(ao);W(am);K.walk(al,function(aq){var ar;function at(au){var ax=au.nodeName.toLowerCase(),aw=au.parentNode.nodeName.toLowerCase(),av;if(g(ax,"br")){ar=0;if(ah.block){c.remove(au)}return}if(ah.wrapper&&x(au,Z,ag)){ar=0;return}if(ah.block&&!ah.wrapper&&G(ax)){au=c.rename(au,ao);W(au);ak.push(au);ar=0;return}if(ah.selector){P(ac,function(ay){if("collapsed" in ay&&ay.collapsed!==ad){return}if(c.is(au,ay.selector)&&!b(au)){W(au,ay);av=true}});if(!ah.inline||av){ar=0;return}}if(d(ao,ax)&&d(aw,ao)&&!(!ap&&au.nodeType===3&&au.nodeValue.length===1&&au.nodeValue.charCodeAt(0)===65279)&&!b(au)){if(!ar){ar=am.cloneNode(S);au.parentNode.insertBefore(ar,au);ak.push(ar)}ar.appendChild(au)}else{if(ax=="li"&&an){ar=Y(au,an,am,ak,at)}else{ar=0;P(a.grep(au.childNodes),at);ar=0}}}P(aq,at)});if(ah.wrap_links===false){P(ak,function(aq){function ar(aw){var av,au,at;if(aw.nodeName==="A"){au=am.cloneNode(S);ak.push(au);at=a.grep(aw.childNodes);for(av=0;av<at.length;av++){au.appendChild(at[av])}aw.appendChild(au)}P(a.grep(aw.childNodes),ar)}ar(aq)})}P(ak,function(at){var aq;function au(aw){var av=0;P(aw.childNodes,function(ax){if(!f(ax)&&!H(ax)){av++}});return av}function ar(av){var ax,aw;P(av.childNodes,function(ay){if(ay.nodeType==1&&!H(ay)&&!b(ay)){ax=ay;return S}});if(ax&&h(ax,ah)){aw=ax.cloneNode(S);W(aw);c.replace(aw,av,B);c.remove(ax,1)}return aw||av}aq=au(at);if((ak.length>1||!F(at))&&aq===0){c.remove(at,1);return}if(ah.inline||ah.wrapper){if(!ah.exact&&aq===1){at=ar(at)}P(ac,function(av){P(c.select(av.inline,at),function(ax){var aw;if(av.wrap_links===false){aw=ax.parentNode;do{if(aw.nodeName==="A"){return}}while(aw=aw.parentNode)}U(av,ag,ax,av.exact?ax:null)})});if(x(at.parentNode,Z,ag)){c.remove(at,1);at=0;return B}if(ah.merge_with_parents){c.getParent(at.parentNode,function(av){if(x(av,Z,ag)){c.remove(at,1);at=0;return B}})}if(at&&ah.merge_siblings!==false){at=u(C(at),at);at=u(at,C(at,B))}}})}if(ah){if(ab){if(ab.nodeType){X=c.createRng();X.setStartBefore(ab);X.setEndAfter(ab);ai(o(X,ac),null,true)}else{ai(ab,null,true)}}else{if(!ad||!ah.inline||c.select("td.mceSelected,th.mceSelected").length){var aj=V.selection.getNode();V.selection.setRng(aa());af=q.getBookmark();ai(o(q.getRng(B),ac),af);if(ah.styles&&(ah.styles.color||ah.styles.textDecoration)){a.walk(aj,I,"childNodes");I(aj)}q.moveToBookmark(af);N(q.getRng(B));V.nodeChanged()}else{Q("apply",Z,ag)}}}}function A(Y,ag,aa){var ab=R(Y),ai=ab[0],af,ae,X;function Z(an){var am,al,ak;am=a.grep(an.childNodes);for(al=0,ak=ab.length;al<ak;al++){if(U(ab[al],ag,an,an)){break}}if(ai.deep){for(al=0,ak=am.length;al<ak;al++){Z(am[al])}}}function ac(ak){var al;P(m(ak.parentNode).reverse(),function(am){var an;if(!al&&am.id!="_start"&&am.id!="_end"){an=x(am,Y,ag);if(an&&an.split!==false){al=am}}});return al}function W(an,ak,ap,at){var au,ar,aq,am,ao,al;if(an){al=an.parentNode;for(au=ak.parentNode;au&&au!=al;au=au.parentNode){ar=au.cloneNode(S);for(ao=0;ao<ab.length;ao++){if(U(ab[ao],ag,ar,ar)){ar=0;break}}if(ar){if(aq){ar.appendChild(aq)}if(!am){am=ar}aq=ar}}if(at&&(!ai.mixed||!F(an))){ak=c.split(an,ak)}if(aq){ap.parentNode.insertBefore(aq,ap);am.appendChild(ap)}}return ak}function ah(ak){return W(ac(ak),ak,ak,true)}function ad(am){var al=c.get(am?"_start":"_end"),ak=al[am?"firstChild":"lastChild"];if(H(ak)){ak=ak[am?"firstChild":"lastChild"]}c.remove(al,true);return ak}function aj(ak){var al,am;ak=o(ak,ab,B);if(ai.split){al=J(ak,B);am=J(ak);if(al!=am){al=O(al,"span",{id:"_start","data-mce-type":"bookmark"});am=O(am,"span",{id:"_end","data-mce-type":"bookmark"});ah(al);ah(am);al=ad(B);am=ad()}else{al=am=ah(al)}ak.startContainer=al.parentNode;ak.startOffset=s(al);ak.endContainer=am.parentNode;ak.endOffset=s(am)+1}K.walk(ak,function(an){P(an,function(ao){Z(ao);if(ao.nodeType===1&&V.dom.getStyle(ao,"text-decoration")==="underline"&&ao.parentNode&&i(ao.parentNode)==="underline"){U({deep:false,exact:true,inline:"span",styles:{textDecoration:"underline"}},null,ao)}})})}if(aa){if(aa.nodeType){X=c.createRng();X.setStartBefore(aa);X.setEndAfter(aa);aj(X)}else{aj(aa)}return}if(!q.isCollapsed()||!ai.inline||c.select("td.mceSelected,th.mceSelected").length){af=q.getBookmark();aj(q.getRng(B));q.moveToBookmark(af);if(ai.inline&&j(Y,ag,q.getStart())){N(q.getRng(true))}V.nodeChanged()}else{Q("remove",Y,ag)}if(a.isWebKit){V.execCommand("mceCleanup")}}function D(X,Z,Y){var W=R(X);if(j(X,Z,Y)&&(!("toggle" in W[0])||W[0]["toggle"])){A(X,Z,Y)}else{T(X,Z,Y)}}function x(X,W,ac,aa){var Y=R(W),ad,ab,Z;function ae(ai,ak,al){var ah,aj,af=ak[al],ag;if(ak.onmatch){return ak.onmatch(ai,ak,al)}if(af){if(af.length===p){for(ah in af){if(af.hasOwnProperty(ah)){if(al==="attributes"){aj=c.getAttrib(ai,ah)}else{aj=L(ai,ah)}if(aa&&!aj&&!ak.exact){return}if((!aa||ak.exact)&&!g(aj,r(af[ah],ac))){return}}}}else{for(ag=0;ag<af.length;ag++){if(al==="attributes"?c.getAttrib(ai,af[ag]):L(ai,af[ag])){return ak}}}}return ak}if(Y&&X){for(ab=0;ab<Y.length;ab++){ad=Y[ab];if(h(X,ad)&&ae(X,ad,"attributes")&&ae(X,ad,"styles")){if(Z=ad.classes){for(ab=0;ab<Z.length;ab++){if(!c.hasClass(X,Z[ab])){return}}}return ad}}}}function j(Y,aa,Z){var X;function W(ab){ab=c.getParent(ab,function(ac){return !!x(ac,Y,aa,true)});return x(ab,Y,aa)}if(Z){return W(Z)}Z=q.getNode();if(W(Z)){return B}X=q.getStart();if(X!=Z){if(W(X)){return B}}return S}function v(ad,ac){var aa,ab=[],Z={},Y,X,W;aa=q.getStart();c.getParent(aa,function(ag){var af,ae;for(af=0;af<ad.length;af++){ae=ad[af];if(!Z[ae]&&x(ag,ae,ac)){Z[ae]=true;ab.push(ae)}}});return ab}function y(aa){var ac=R(aa),Z,Y,ab,X,W;if(ac){Z=q.getStart();Y=m(Z);for(X=ac.length-1;X>=0;X--){W=ac[X].selector;if(!W){return B}for(ab=Y.length-1;ab>=0;ab--){if(c.is(Y[ab],W)){return B}}}}return S}a.extend(this,{get:R,register:k,apply:T,remove:A,toggle:D,match:j,matchAll:v,matchNode:x,canApply:y});function h(W,X){if(g(W,X.inline)){return B}if(g(W,X.block)){return B}if(X.selector){return c.is(W,X.selector)}}function g(X,W){X=X||"";W=W||"";X=""+(X.nodeName||X);W=""+(W.nodeName||W);return X.toLowerCase()==W.toLowerCase()}function L(X,W){var Y=c.getStyle(X,W);if(W=="color"||W=="backgroundColor"){Y=c.toHex(Y)}if(W=="fontWeight"&&Y==700){Y="bold"}return""+Y}function r(W,X){if(typeof(W)!="string"){W=W(X)}else{if(X){W=W.replace(/%(\w+)/g,function(Z,Y){return X[Y]||Z})}}return W}function f(W){return W&&W.nodeType===3&&/^([\t \r\n]+|)$/.test(W.nodeValue)}function O(Y,X,W){var Z=c.create(X,W);Y.parentNode.insertBefore(Z,Y);Z.appendChild(Y);return Z}function o(W,ai,Z){var Y=W.startContainer,ad=W.startOffset,al=W.endContainer,af=W.endOffset,ak,ah,ac,ag;function aj(ar){var am,ap,aq,ao,an;am=ap=ar?Y:al;an=ar?"previousSibling":"nextSibling";root=c.getRoot();if(am.nodeType==3&&!f(am)){if(ar?ad>0:af<am.nodeValue.length){return am}}for(;;){if(!ai[0].block_expand&&F(ap)){return ap}for(ao=ap[an];ao;ao=ao[an]){if(!H(ao)&&!f(ao)){return ap}}if(ap.parentNode==root){am=ap;break}ap=ap.parentNode}return am}function ab(am,an){if(an===p){an=am.nodeType===3?am.length:am.childNodes.length}while(am&&am.hasChildNodes()){am=am.childNodes[an];if(am){an=am.nodeType===3?am.length:am.childNodes.length}}return{node:am,offset:an}}if(Y.nodeType==1&&Y.hasChildNodes()){ah=Y.childNodes.length-1;Y=Y.childNodes[ad>ah?ah:ad];if(Y.nodeType==3){ad=0}}if(al.nodeType==1&&al.hasChildNodes()){ah=al.childNodes.length-1;al=al.childNodes[af>ah?ah:af-1];if(al.nodeType==3){af=al.nodeValue.length}}if(H(Y.parentNode)||H(Y)){Y=H(Y)?Y:Y.parentNode;Y=Y.nextSibling||Y;if(Y.nodeType==3){ad=0}}if(H(al.parentNode)||H(al)){al=H(al)?al:al.parentNode;al=al.previousSibling||al;if(al.nodeType==3){af=al.length}}if(ai[0].inline){if(W.collapsed){function ae(an,ar,au){var aq,ao,at,am;function ap(aw,ay){var az,av,ax=aw.nodeValue;if(typeof(ay)=="undefined"){ay=au?ax.length:0}if(au){az=ax.lastIndexOf(" ",ay);av=ax.lastIndexOf("\u00a0",ay);az=az>av?az:av;if(az!==-1&&!Z){az++}}else{az=ax.indexOf(" ",ay);av=ax.indexOf("\u00a0",ay);az=az!==-1&&(av===-1||az<av)?az:av}return az}if(an.nodeType===3){at=ap(an,ar);if(at!==-1){return{container:an,offset:at}}am=an}aq=new t(an,c.getParent(an,F)||V.getBody());while(ao=aq[au?"prev":"next"]()){if(ao.nodeType===3){am=ao;at=ap(ao);if(at!==-1){return{container:ao,offset:at}}}else{if(F(ao)){break}}}if(am){if(au){ar=0}else{ar=am.length}return{container:am,offset:ar}}}ag=ae(Y,ad,true);if(ag){Y=ag.container;ad=ag.offset}ag=ae(al,af);if(ag){al=ag.container;af=ag.offset}}ac=ab(al,af);if(ac.node){while(ac.node&&ac.offset===0&&ac.node.previousSibling){ac=ab(ac.node.previousSibling)}if(ac.node&&ac.offset>0&&ac.node.nodeType===3&&ac.node.nodeValue.charAt(ac.offset-1)===" "){if(ac.offset>1){al=ac.node;al.splitText(ac.offset-1)}else{if(ac.node.previousSibling){}}}}}if(ai[0].inline||ai[0].block_expand){if(!ai[0].inline||(Y.nodeType!=3||ad===0)){Y=aj(true)}if(!ai[0].inline||(al.nodeType!=3||af===al.nodeValue.length)){al=aj()}}if(ai[0].selector&&ai[0].expand!==S&&!ai[0].inline){function aa(an,am){var ao,ap,ar,aq;if(an.nodeType==3&&an.nodeValue.length==0&&an[am]){an=an[am]}ao=m(an);for(ap=0;ap<ao.length;ap++){for(ar=0;ar<ai.length;ar++){aq=ai[ar];if("collapsed" in aq&&aq.collapsed!==W.collapsed){continue}if(c.is(ao[ap],aq.selector)){return ao[ap]}}}return an}Y=aa(Y,"previousSibling");al=aa(al,"nextSibling")}if(ai[0].block||ai[0].selector){function X(an,am,ap){var ao;if(!ai[0].wrapper){ao=c.getParent(an,ai[0].block)}if(!ao){ao=c.getParent(an.nodeType==3?an.parentNode:an,F)}if(ao&&ai[0].wrapper){ao=m(ao,"ul,ol").reverse()[0]||ao}if(!ao){ao=an;while(ao[am]&&!F(ao[am])){ao=ao[am];if(g(ao,"br")){break}}}return ao||an}Y=X(Y,"previousSibling");al=X(al,"nextSibling");if(ai[0].block){if(!F(Y)){Y=aj(true)}if(!F(al)){al=aj()}}}if(Y.nodeType==1){ad=s(Y);Y=Y.parentNode}if(al.nodeType==1){af=s(al)+1;al=al.parentNode}return{startContainer:Y,startOffset:ad,endContainer:al,endOffset:af}}function U(ac,ab,Z,W){var Y,X,aa;if(!h(Z,ac)){return S}if(ac.remove!="all"){P(ac.styles,function(ae,ad){ae=r(ae,ab);if(typeof(ad)==="number"){ad=ae;W=0}if(!W||g(L(W,ad),ae)){c.setStyle(Z,ad,"")}aa=1});if(aa&&c.getAttrib(Z,"style")==""){Z.removeAttribute("style");Z.removeAttribute("data-mce-style")}P(ac.attributes,function(af,ad){var ae;af=r(af,ab);if(typeof(ad)==="number"){ad=af;W=0}if(!W||g(c.getAttrib(W,ad),af)){if(ad=="class"){af=c.getAttrib(Z,ad);if(af){ae="";P(af.split(/\s+/),function(ag){if(/mce\w+/.test(ag)){ae+=(ae?" ":"")+ag}});if(ae){c.setAttrib(Z,ad,ae);return}}}if(ad=="class"){Z.removeAttribute("className")}if(e.test(ad)){Z.removeAttribute("data-mce-"+ad)}Z.removeAttribute(ad)}});P(ac.classes,function(ad){ad=r(ad,ab);if(!W||c.hasClass(W,ad)){c.removeClass(Z,ad)}});X=c.getAttribs(Z);for(Y=0;Y<X.length;Y++){if(X[Y].nodeName.indexOf("_")!==0){return S}}}if(ac.remove!="none"){n(Z,ac);return B}}function n(Y,Z){var W=Y.parentNode,X;if(Z.block){if(!l){function aa(ac,ab,ad){ac=C(ac,ab,ad);return !ac||(ac.nodeName=="BR"||F(ac))}if(F(Y)&&!F(W)){if(!aa(Y,S)&&!aa(Y.firstChild,B,1)){Y.insertBefore(c.create("br"),Y.firstChild)}if(!aa(Y,B)&&!aa(Y.lastChild,S,1)){Y.appendChild(c.create("br"))}}}else{if(W==c.getRoot()){if(!Z.list_block||!g(Y,Z.list_block)){P(a.grep(Y.childNodes),function(ab){if(d(l,ab.nodeName.toLowerCase())){if(!X){X=O(ab,l)}else{X.appendChild(ab)}}else{X=0}})}}}}if(Z.selector&&Z.inline&&!g(Z.inline,Y)){return}c.remove(Y,1)}function C(X,W,Y){if(X){W=W?"nextSibling":"previousSibling";for(X=Y?X:X[W];X;X=X[W]){if(X.nodeType==1||!f(X)){return X}}}}function H(W){return W&&W.nodeType==1&&W.getAttribute("data-mce-type")=="bookmark"}function u(aa,Z){var W,Y,X;function ac(af,ae){if(af.nodeName!=ae.nodeName){return S}function ad(ah){var ai={};P(c.getAttribs(ah),function(aj){var ak=aj.nodeName.toLowerCase();if(ak.indexOf("_")!==0&&ak!=="style"){ai[ak]=c.getAttrib(ah,ak)}});return ai}function ag(ak,aj){var ai,ah;for(ah in ak){if(ak.hasOwnProperty(ah)){ai=aj[ah];if(ai===p){return S}if(ak[ah]!=ai){return S}delete aj[ah]}}for(ah in aj){if(aj.hasOwnProperty(ah)){return S}}return B}if(!ag(ad(af),ad(ae))){return S}if(!ag(c.parseStyle(c.getAttrib(af,"style")),c.parseStyle(c.getAttrib(ae,"style")))){return S}return B}if(aa&&Z){function ab(ae,ad){for(Y=ae;Y;Y=Y[ad]){if(Y.nodeType==3&&Y.nodeValue.length!==0){return ae}if(Y.nodeType==1&&!H(Y)){return Y}}return ae}aa=ab(aa,"previousSibling");Z=ab(Z,"nextSibling");if(ac(aa,Z)){for(Y=aa.nextSibling;Y&&Y!=Z;){X=Y;Y=Y.nextSibling;aa.appendChild(X)}c.remove(Z);P(a.grep(Z.childNodes),function(ad){aa.appendChild(ad)});return aa}}return Z}function G(W){return/^(h[1-6]|p|div|pre|address|dl|dt|dd)$/.test(W)}function J(X,ab){var W,aa,Y,Z;W=X[ab?"startContainer":"endContainer"];aa=X[ab?"startOffset":"endOffset"];if(W.nodeType==1){Y=W.childNodes.length-1;if(!ab&&aa){aa--}W=W.childNodes[aa>Y?Y:aa]}if(W.nodeType===3&&ab&&aa>=W.nodeValue.length){W=new t(W,V.getBody()).next()||W}if(W.nodeType===3&&!ab&&aa==0){W=new t(W,V.getBody()).prev()||W}return W}function Q(af,W,ad){var ai,ag="_mce_caret",X=V.settings.caret_debug;ai=a.isGecko?"\u200B":E;function Y(ak){var aj=c.create("span",{id:ag,"data-mce-bogus":true,style:X?"color:red":""});if(ak){aj.appendChild(V.getDoc().createTextNode(ai))}return aj}function ae(ak,aj){while(ak){if((ak.nodeType===3&&ak.nodeValue!==ai)||ak.childNodes.length>1){return false}if(aj&&ak.nodeType===1){aj.push(ak)}ak=ak.firstChild}return true}function ab(aj){while(aj){if(aj.id===ag){return aj}aj=aj.parentNode}}function aa(aj){var ak;if(aj){ak=new t(aj,aj);for(aj=ak.current();aj;aj=ak.next()){if(aj.nodeType===3){return aj}}}}function Z(al,ak){var am,aj;if(!al){al=ab(q.getStart());if(!al){while(al=c.get(ag)){Z(al,false)}}}else{aj=q.getRng(true);if(ae(al)){if(ak!==false){aj.setStartBefore(al);aj.setEndBefore(al)}c.remove(al)}else{am=aa(al);if(am.nodeValue.charAt(0)===E){am=am.deleteData(0,1)}c.remove(al,1)}q.setRng(aj)}}function ac(){var al,aj,ap,ao,am,ak,an;al=q.getRng(true);ao=al.startOffset;ak=al.startContainer;an=ak.nodeValue;aj=ab(q.getStart());if(aj){ap=aa(aj)}if(an&&ao>0&&ao<an.length&&/\w/.test(an.charAt(ao))&&/\w/.test(an.charAt(ao-1))){am=q.getBookmark();al.collapse(true);al=o(al,R(W));al=K.split(al);T(W,ad,al);q.moveToBookmark(am)}else{if(!aj||ap.nodeValue!==ai){aj=Y(true);ap=aj.firstChild;al.insertNode(aj);ao=1;T(W,ad,aj)}else{T(W,ad,aj)}q.setCursorLocation(ap,ao)}}function ah(){var aj=q.getRng(true),ak,am,ap,ao,al,at,ar=[],an,aq;ak=aj.startContainer;am=aj.startOffset;al=ak;if(ak.nodeType==3){if(am!=ak.nodeValue.length||ak.nodeValue===ai){ao=true}al=al.parentNode}while(al){if(x(al,W,ad)){at=al;break}if(al.nextSibling){ao=true}ar.push(al);al=al.parentNode}if(!at){return}if(ao){ap=q.getBookmark();aj.collapse(true);aj=o(aj,R(W),true);aj=K.split(aj);A(W,ad,aj);q.moveToBookmark(ap)}else{aq=Y();al=aq;for(an=ar.length-1;an>=0;an--){al.appendChild(ar[an].cloneNode(false));al=al.firstChild}al.appendChild(c.doc.createTextNode(ai));al=al.firstChild;c.insertAfter(aq,at);q.setCursorLocation(al,1)}}if(!self._hasCaretEvents){V.onBeforeGetContent.addToTop(function(){var aj=[],ak;if(ae(ab(q.getStart()),aj)){ak=aj.length;while(ak--){c.setAttrib(aj[ak],"data-mce-bogus","1")}}});a.each("onMouseUp onKeyUp".split(" "),function(aj){V[aj].addToTop(function(){Z()})});V.onKeyDown.addToTop(function(aj,al){var ak=al.keyCode;if(ak==8||ak==37||ak==39){Z(ab(q.getStart()))}});self._hasCaretEvents=true}if(af=="apply"){ac()}else{ah()}}function N(X){var W=X.startContainer,ac=X.startOffset,ab,aa,Y,Z;if(W.nodeType==3&&ac>=W.nodeValue.length-1){W=W.parentNode;ac=s(W)+1}if(W.nodeType==1){Y=W.childNodes;W=Y[Math.min(ac,Y.length-1)];ab=new t(W);if(ac>Y.length-1){ab.next()}for(aa=ab.current();aa;aa=ab.next()){if(aa.nodeType==3&&!f(aa)){Z=c.create("a",null,E);aa.parentNode.insertBefore(Z,aa);X.setStart(aa,0);q.setRng(X);c.remove(Z);return}}}}}})(tinymce);tinymce.onAddEditor.add(function(e,a){var d,h,g,c=a.settings;if(c.inline_styles){h=e.explode(c.font_size_legacy_values);function b(j,i){e.each(i,function(l,k){if(l){g.setStyle(j,k,l)}});g.rename(j,"span")}d={font:function(j,i){b(i,{backgroundColor:i.style.backgroundColor,color:i.color,fontFamily:i.face,fontSize:h[parseInt(i.size)-1]})},u:function(j,i){b(i,{textDecoration:"underline"})},strike:function(j,i){b(i,{textDecoration:"line-through"})}};function f(i,j){g=i.dom;if(c.convert_fonts_to_spans){e.each(g.select("font,u,strike",j.node),function(k){d[k.nodeName.toLowerCase()](a.dom,k)})}}a.onPreProcess.add(f);a.onSetContent.add(f);a.onInit.add(function(){a.selection.onSetContent.add(f)})}});
index cfc49ce5e0b17200d0dde33b82555dfafa77455f..457aed02951192e34a1ca5f159baaa5abac299fe 100644 (file)
Binary files a/wp-includes/js/tinymce/wp-tinymce.js.gz and b/wp-includes/js/tinymce/wp-tinymce.js.gz differ
index 0cb111bbb9db6db6def7b0947ea4ccd5f52bd5b9..23b0e43dfe293bbd2a14fb58539bd62e2f309b68 100644 (file)
@@ -46,7 +46,6 @@
                        if ( family.filter(function(){ return 'fixed' === $(this).css('position'); }).length )
                                positioning = 'fixed';
 
                        if ( family.filter(function(){ return 'fixed' === $(this).css('position'); }).length )
                                positioning = 'fixed';
 
-
                        this.pointer = $('<div />')
                                .append( this.content )
                                .append( this.arrow )
                        this.pointer = $('<div />')
                                .append( this.content )
                                .append( this.arrow )
                                left: 0,
                                zIndex: zindex++ // Increment the z-index so that it shows above other opened pointers.
                        }).show().position($.extend({
                                left: 0,
                                zIndex: zindex++ // Increment the z-index so that it shows above other opened pointers.
                        }).show().position($.extend({
-                               of: this.element
+                               of: this.element,
+                               collision: 'fit none'
                        }, position )); // the object comes before this.options.position so the user can override position.of.
 
                        this.repoint();
                        }, position )); // the object comes before this.options.position so the user can override position.of.
 
                        this.repoint();
index 3b322a66e91455fbd9dcbf8f0f2b980dac05b0fc..65531c84122878123c86672f71e2954cd0511fe4 100644 (file)
@@ -1 +1 @@
-(function(c){var a=0,b=9999;c.widget("wp.pointer",{options:{pointerClass:"wp-pointer",pointerWidth:320,content:function(f,e,d){return c(this).text()},buttons:function(f,e){var g=(wpPointerL10n)?wpPointerL10n.dismiss:"Dismiss",d=c('<a class="close" href="#">'+g+"</a>");return d.bind("click.pointer",function(h){h.preventDefault();e.element.pointer("close")})},position:"top",show:function(e,d){d.pointer.show();d.opened()},hide:function(e,d){d.pointer.hide();d.closed()},document:document},_create:function(){var e,d;this.content=c('<div class="wp-pointer-content"></div>');this.arrow=c('<div class="wp-pointer-arrow"><div class="wp-pointer-arrow-inner"></div></div>');d=this.element.parents().add(this.element);e="absolute";if(d.filter(function(){return"fixed"===c(this).css("position")}).length){e="fixed"}this.pointer=c("<div />").append(this.content).append(this.arrow).attr("id","wp-pointer-"+a++).addClass(this.options.pointerClass).css({position:e,width:this.options.pointerWidth+"px",display:"none"}).appendTo(this.options.document.body)},_setOption:function(d,f){var g=this.options,e=this.pointer;if(d==="document"&&f!==g.document){e.detach().appendTo(f.body)}else{if(d==="pointerClass"){e.removeClass(g.pointerClass).addClass(f)}}c.Widget.prototype._setOption.apply(this,arguments);if(d==="position"){this.reposition()}else{if(d==="content"&&this.active){this.update()}}},destroy:function(){this.pointer.remove();c.Widget.prototype.destroy.call(this)},widget:function(){return this.pointer},update:function(g){var e=this,h=this.options,d=c.Deferred(),f;if(h.disabled){return}d.done(function(i){e._update(g,i)});if(typeof h.content==="string"){f=h.content}else{f=h.content.call(this.element[0],d.resolve,g,this._handoff())}if(f){d.resolve(f)}return d.promise()},_update:function(f,e){var d,g=this.options;if(!e){return}this.pointer.stop();this.content.html(e);d=g.buttons.call(this.element[0],f,this._handoff());if(d){d.wrap('<div class="wp-pointer-buttons" />').parent().appendTo(this.content)}this.reposition()},reposition:function(){var d;if(this.options.disabled){return}d=this._processPosition(this.options.position);this.pointer.css({top:0,left:0,zIndex:b++}).show().position(c.extend({of:this.element},d));this.repoint()},repoint:function(){var e=this.options,d;if(e.disabled){return}d=(typeof e.position=="string")?e.position:e.position.edge;this.pointer[0].className=this.pointer[0].className.replace(/wp-pointer-[^\s'"]*/,"");this.pointer.addClass("wp-pointer-"+d)},_processPosition:function(e){var f={top:"bottom",bottom:"top",left:"right",right:"left"},d;if(typeof e=="string"){d={edge:e+""}}else{d=c.extend({},e)}if(!d.edge){return d}if(d.edge=="top"||d.edge=="bottom"){d.align=d.align||"left";d.at=d.at||d.align+" "+f[d.edge];d.my=d.my||d.align+" "+d.edge}else{d.align=d.align||"top";d.at=d.at||f[d.edge]+" "+d.align;d.my=d.my||d.edge+" "+d.align}return d},open:function(e){var d=this,f=this.options;if(this.active||f.disabled||this.element.is(":hidden")){return}this.update().done(function(){d._open(e)})},_open:function(e){var d=this,f=this.options;if(this.active||f.disabled||this.element.is(":hidden")){return}this.active=true;this._trigger("open",e,this._handoff());this._trigger("show",e,this._handoff({opened:function(){d._trigger("opened",e,d._handoff())}}))},close:function(e){if(!this.active||this.options.disabled){return}var d=this;this.active=false;this._trigger("close",e,this._handoff());this._trigger("hide",e,this._handoff({closed:function(){d._trigger("closed",e,d._handoff())}}))},sendToTop:function(d){if(this.active){this.pointer.css("z-index",b++)}},toggle:function(d){if(this.pointer.is(":hidden")){this.open(d)}else{this.close(d)}},_handoff:function(d){return c.extend({pointer:this.pointer,element:this.element},d)}})})(jQuery);
\ No newline at end of file
+(function(c){var a=0,b=9999;c.widget("wp.pointer",{options:{pointerClass:"wp-pointer",pointerWidth:320,content:function(f,e,d){return c(this).text()},buttons:function(f,e){var g=(wpPointerL10n)?wpPointerL10n.dismiss:"Dismiss",d=c('<a class="close" href="#">'+g+"</a>");return d.bind("click.pointer",function(h){h.preventDefault();e.element.pointer("close")})},position:"top",show:function(e,d){d.pointer.show();d.opened()},hide:function(e,d){d.pointer.hide();d.closed()},document:document},_create:function(){var e,d;this.content=c('<div class="wp-pointer-content"></div>');this.arrow=c('<div class="wp-pointer-arrow"><div class="wp-pointer-arrow-inner"></div></div>');d=this.element.parents().add(this.element);e="absolute";if(d.filter(function(){return"fixed"===c(this).css("position")}).length){e="fixed"}this.pointer=c("<div />").append(this.content).append(this.arrow).attr("id","wp-pointer-"+a++).addClass(this.options.pointerClass).css({position:e,width:this.options.pointerWidth+"px",display:"none"}).appendTo(this.options.document.body)},_setOption:function(d,f){var g=this.options,e=this.pointer;if(d==="document"&&f!==g.document){e.detach().appendTo(f.body)}else{if(d==="pointerClass"){e.removeClass(g.pointerClass).addClass(f)}}c.Widget.prototype._setOption.apply(this,arguments);if(d==="position"){this.reposition()}else{if(d==="content"&&this.active){this.update()}}},destroy:function(){this.pointer.remove();c.Widget.prototype.destroy.call(this)},widget:function(){return this.pointer},update:function(g){var e=this,h=this.options,d=c.Deferred(),f;if(h.disabled){return}d.done(function(i){e._update(g,i)});if(typeof h.content==="string"){f=h.content}else{f=h.content.call(this.element[0],d.resolve,g,this._handoff())}if(f){d.resolve(f)}return d.promise()},_update:function(f,e){var d,g=this.options;if(!e){return}this.pointer.stop();this.content.html(e);d=g.buttons.call(this.element[0],f,this._handoff());if(d){d.wrap('<div class="wp-pointer-buttons" />').parent().appendTo(this.content)}this.reposition()},reposition:function(){var d;if(this.options.disabled){return}d=this._processPosition(this.options.position);this.pointer.css({top:0,left:0,zIndex:b++}).show().position(c.extend({of:this.element,collision:"fit none"},d));this.repoint()},repoint:function(){var e=this.options,d;if(e.disabled){return}d=(typeof e.position=="string")?e.position:e.position.edge;this.pointer[0].className=this.pointer[0].className.replace(/wp-pointer-[^\s'"]*/,"");this.pointer.addClass("wp-pointer-"+d)},_processPosition:function(e){var f={top:"bottom",bottom:"top",left:"right",right:"left"},d;if(typeof e=="string"){d={edge:e+""}}else{d=c.extend({},e)}if(!d.edge){return d}if(d.edge=="top"||d.edge=="bottom"){d.align=d.align||"left";d.at=d.at||d.align+" "+f[d.edge];d.my=d.my||d.align+" "+d.edge}else{d.align=d.align||"top";d.at=d.at||f[d.edge]+" "+d.align;d.my=d.my||d.edge+" "+d.align}return d},open:function(e){var d=this,f=this.options;if(this.active||f.disabled||this.element.is(":hidden")){return}this.update().done(function(){d._open(e)})},_open:function(e){var d=this,f=this.options;if(this.active||f.disabled||this.element.is(":hidden")){return}this.active=true;this._trigger("open",e,this._handoff());this._trigger("show",e,this._handoff({opened:function(){d._trigger("opened",e,d._handoff())}}))},close:function(e){if(!this.active||this.options.disabled){return}var d=this;this.active=false;this._trigger("close",e,this._handoff());this._trigger("hide",e,this._handoff({closed:function(){d._trigger("closed",e,d._handoff())}}))},sendToTop:function(d){if(this.active){this.pointer.css("z-index",b++)}},toggle:function(d){if(this.pointer.is(":hidden")){this.open(d)}else{this.close(d)}},_handoff:function(d){return c.extend({pointer:this.pointer,element:this.element},d)}})})(jQuery);
\ No newline at end of file
index 24403d3136bcfceb728a0db7600c0f58125571a8..d0c4b9a0a0a22b029ad78a601c5a3300bfc6d7c8 100644 (file)
@@ -160,7 +160,7 @@ var wpLink;
                },
 
                htmlUpdate : function() {
                },
 
                htmlUpdate : function() {
-                       var attrs, html, start, end, cursor,
+                       var attrs, html, begin, end, cursor,
                                textarea = wpLink.textarea;
 
                        if ( ! textarea )
                                textarea = wpLink.textarea;
 
                        if ( ! textarea )
@@ -183,35 +183,34 @@ var wpLink;
                        html += '>';
 
                        // Insert HTML
                        html += '>';
 
                        // Insert HTML
-                       // W3C
-                       if ( typeof textarea.selectionStart !== 'undefined' ) {
-                               start       = textarea.selectionStart;
+                       if ( document.selection && wpLink.range ) {
+                               // IE
+                               // Note: If no text is selected, IE will not place the cursor
+                               //       inside the closing tag.
+                               textarea.focus();
+                               wpLink.range.text = html + wpLink.range.text + '</a>';
+                               wpLink.range.moveToBookmark( wpLink.range.getBookmark() );
+                               wpLink.range.select();
+
+                               wpLink.range = null;
+                       } else if ( typeof textarea.selectionStart !== 'undefined' ) {
+                               // W3C
+                               begin       = textarea.selectionStart;
                                end         = textarea.selectionEnd;
                                end         = textarea.selectionEnd;
-                               selection   = textarea.value.substring( start, end );
+                               selection   = textarea.value.substring( begin, end );
                                html        = html + selection + '</a>';
                                html        = html + selection + '</a>';
-                               cursor      = start + html.length;
+                               cursor      = begin + html.length;
 
                                // If no next is selected, place the cursor inside the closing tag.
 
                                // If no next is selected, place the cursor inside the closing tag.
-                               if ( start == end )
+                               if ( begin == end )
                                        cursor -= '</a>'.length;
 
                                        cursor -= '</a>'.length;
 
-                               textarea.value = textarea.value.substring( 0, start )
+                               textarea.value = textarea.value.substring( 0, begin )
                                               + html
                                               + textarea.value.substring( end, textarea.value.length );
 
                                // Update cursor position
                                textarea.selectionStart = textarea.selectionEnd = cursor;
                                               + html
                                               + textarea.value.substring( end, textarea.value.length );
 
                                // Update cursor position
                                textarea.selectionStart = textarea.selectionEnd = cursor;
-
-                       // IE
-                       // Note: If no text is selected, IE will not place the cursor
-                       //       inside the closing tag.
-                       } else if ( document.selection && wpLink.range ) {
-                               textarea.focus();
-                               wpLink.range.text = html + wpLink.range.text + '</a>';
-                               wpLink.range.moveToBookmark( wpLink.range.getBookmark() );
-                               wpLink.range.select();
-
-                               wpLink.range = null;
                        }
 
                        wpLink.close();
                        }
 
                        wpLink.close();
@@ -243,7 +242,7 @@ var wpLink;
 
                        if (e == null) {
                                ed.getDoc().execCommand("unlink", false, null);
 
                        if (e == null) {
                                ed.getDoc().execCommand("unlink", false, null);
-                               tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1});
+                               tinyMCEPopup.execCommand("mceInsertLink", false, "#mce_temp_url#", {skip_undo : 1});
 
                                tinymce.each(ed.dom.select("a"), function(n) {
                                        if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') {
 
                                tinymce.each(ed.dom.select("a"), function(n) {
                                        if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') {
index ee929644c66d2af765322de59b490ba3d929281e..4ce2f6ebea40117f29bebd66991499d0c3f95924 100644 (file)
@@ -1 +1 @@
-var wpLink;(function(f){var b={},e={},d,a,c;wpLink={timeToTriggerRiver:150,minRiverAJAXDuration:200,riverBottomThreshold:5,keySensitivity:100,lastSearch:"",textarea:"",init:function(){b.dialog=f("#wp-link");b.submit=f("#wp-link-submit");b.url=f("#url-field");b.nonce=f("#_ajax_linking_nonce");b.title=f("#link-title-field");b.openInNewTab=f("#link-target-checkbox");b.search=f("#search-field");e.search=new a(f("#search-results"));e.recent=new a(f("#most-recent-results"));e.elements=f(".query-results",b.dialog);b.dialog.keydown(wpLink.keydown);b.dialog.keyup(wpLink.keyup);b.submit.click(function(g){g.preventDefault();wpLink.update()});f("#wp-link-cancel").click(function(g){g.preventDefault();wpLink.close()});f("#internal-toggle").click(wpLink.toggleInternalLinking);e.elements.bind("river-select",wpLink.updateFields);b.search.keyup(wpLink.searchInternalLinks);b.dialog.bind("wpdialogrefresh",wpLink.refresh);b.dialog.bind("wpdialogbeforeopen",wpLink.beforeOpen);b.dialog.bind("wpdialogclose",wpLink.onClose)},beforeOpen:function(){wpLink.range=null;if(!wpLink.isMCE()&&document.selection){wpLink.textarea.focus();wpLink.range=document.selection.createRange()}},open:function(){if(!wpActiveEditor){return}this.textarea=f("#"+wpActiveEditor).get(0);if(!b.dialog.data("wpdialog")){b.dialog.wpdialog({title:wpLinkL10n.title,width:480,height:"auto",modal:true,dialogClass:"wp-dialog",zIndex:300000})}b.dialog.wpdialog("open")},isMCE:function(){return tinyMCEPopup&&(d=tinyMCEPopup.editor)&&!d.isHidden()},refresh:function(){e.search.refresh();e.recent.refresh();if(wpLink.isMCE()){wpLink.mceRefresh()}else{wpLink.setDefaultValues()}b.url.focus()[0].select();if(!e.recent.ul.children().length){e.recent.ajax()}},mceRefresh:function(){var g;d=tinyMCEPopup.editor;tinyMCEPopup.restoreSelection();if(g=d.dom.getParent(d.selection.getNode(),"A")){b.url.val(d.dom.getAttrib(g,"href"));b.title.val(d.dom.getAttrib(g,"title"));if("_blank"==d.dom.getAttrib(g,"target")){b.openInNewTab.prop("checked",true)}b.submit.val(wpLinkL10n.update)}else{wpLink.setDefaultValues()}tinyMCEPopup.storeSelection()},close:function(){if(wpLink.isMCE()){tinyMCEPopup.close()}else{b.dialog.wpdialog("close")}},onClose:function(){if(!wpLink.isMCE()){wpLink.textarea.focus();if(wpLink.range){wpLink.range.moveToBookmark(wpLink.range.getBookmark());wpLink.range.select()}}},getAttrs:function(){return{href:b.url.val(),title:b.title.val(),target:b.openInNewTab.prop("checked")?"_blank":""}},update:function(){if(wpLink.isMCE()){wpLink.mceUpdate()}else{wpLink.htmlUpdate()}},htmlUpdate:function(){var i,j,l,h,k,g=wpLink.textarea;if(!g){return}i=wpLink.getAttrs();if(!i.href||i.href=="http://"){return}j='<a href="'+i.href+'"';if(i.title){j+=' title="'+i.title+'"'}if(i.target){j+=' target="'+i.target+'"'}j+=">";if(typeof g.selectionStart!=="undefined"){l=g.selectionStart;h=g.selectionEnd;selection=g.value.substring(l,h);j=j+selection+"</a>";k=l+j.length;if(l==h){k-="</a>".length}g.value=g.value.substring(0,l)+j+g.value.substring(h,g.value.length);g.selectionStart=g.selectionEnd=k}else{if(document.selection&&wpLink.range){g.focus();wpLink.range.text=j+wpLink.range.text+"</a>";wpLink.range.moveToBookmark(wpLink.range.getBookmark());wpLink.range.select();wpLink.range=null}}wpLink.close();g.focus()},mceUpdate:function(){var h=tinyMCEPopup.editor,i=wpLink.getAttrs(),j,g;tinyMCEPopup.restoreSelection();j=h.dom.getParent(h.selection.getNode(),"A");if(!i.href||i.href=="http://"){if(j){tinyMCEPopup.execCommand("mceBeginUndoLevel");g=h.selection.getBookmark();h.dom.remove(j,1);h.selection.moveToBookmark(g);tinyMCEPopup.execCommand("mceEndUndoLevel");wpLink.close()}return}tinyMCEPopup.execCommand("mceBeginUndoLevel");if(j==null){h.getDoc().execCommand("unlink",false,null);tinyMCEPopup.execCommand("CreateLink",false,"#mce_temp_url#",{skip_undo:1});tinymce.each(h.dom.select("a"),function(k){if(h.dom.getAttrib(k,"href")=="#mce_temp_url#"){j=k;h.dom.setAttribs(j,i)}});if(f(j).text()=="#mce_temp_url#"){h.dom.remove(j);j=null}}else{h.dom.setAttribs(j,i)}if(j&&(j.childNodes.length!=1||j.firstChild.nodeName!="IMG")){h.focus();h.selection.select(j);h.selection.collapse(0);tinyMCEPopup.storeSelection()}tinyMCEPopup.execCommand("mceEndUndoLevel");wpLink.close()},updateFields:function(i,h,g){b.url.val(h.children(".item-permalink").val());b.title.val(h.hasClass("no-title")?"":h.children(".item-title").text());if(g&&g.type=="click"){b.url.focus()}},setDefaultValues:function(){b.url.val("http://");b.title.val("");b.submit.val(wpLinkL10n.save)},searchInternalLinks:function(){var h=f(this),i,g=h.val();if(g.length>2){e.recent.hide();e.search.show();if(wpLink.lastSearch==g){return}wpLink.lastSearch=g;i=h.siblings("img.waiting").show();e.search.change(g);e.search.ajax(function(){i.hide()})}else{e.search.hide();e.recent.show()}},next:function(){e.search.next();e.recent.next()},prev:function(){e.search.prev();e.recent.prev()},keydown:function(i){var h,g=f.ui.keyCode;switch(i.which){case g.UP:h="prev";case g.DOWN:h=h||"next";clearInterval(wpLink.keyInterval);wpLink[h]();wpLink.keyInterval=setInterval(wpLink[h],wpLink.keySensitivity);break;default:return}i.preventDefault()},keyup:function(h){var g=f.ui.keyCode;switch(h.which){case g.ESCAPE:h.stopImmediatePropagation();if(!f(document).triggerHandler("wp_CloseOnEscape",[{event:h,what:"wplink",cb:wpLink.close}])){wpLink.close()}return false;break;case g.UP:case g.DOWN:clearInterval(wpLink.keyInterval);break;default:return}h.preventDefault()},delayedCallback:function(i,g){var l,k,j,h;if(!g){return i}setTimeout(function(){if(k){return i.apply(h,j)}l=true},g);return function(){if(l){return i.apply(this,arguments)}j=arguments;h=this;k=true}},toggleInternalLinking:function(h){var g=f("#search-panel"),i=b.dialog.wpdialog("widget"),k=!g.is(":visible"),j=f(window);f(this).toggleClass("toggle-arrow-active",k);b.dialog.height("auto");g.slideToggle(300,function(){setUserSetting("wplink",k?"1":"0");b[k?"search":"url"].focus();var l=j.scrollTop(),o=i.offset().top,m=o+i.outerHeight(),n=m-j.height();if(n>l){i.animate({top:n<o?o-n:l},200)}});h.preventDefault()}};a=function(i,h){var g=this;this.element=i;this.ul=i.children("ul");this.waiting=i.find(".river-waiting");this.change(h);this.refresh();i.scroll(function(){g.maybeLoad()});i.delegate("li","click",function(j){g.select(f(this),j)})};f.extend(a.prototype,{refresh:function(){this.deselect();this.visible=this.element.is(":visible")},show:function(){if(!this.visible){this.deselect();this.element.show();this.visible=true}},hide:function(){this.element.hide();this.visible=false},select:function(h,k){var j,i,l,g;if(h.hasClass("unselectable")||h==this.selected){return}this.deselect();this.selected=h.addClass("selected");j=h.outerHeight();i=this.element.height();l=h.position().top;g=this.element.scrollTop();if(l<0){this.element.scrollTop(g+l)}else{if(l+j>i){this.element.scrollTop(g+l-i+j)}}this.element.trigger("river-select",[h,k,this])},deselect:function(){if(this.selected){this.selected.removeClass("selected")}this.selected=false},prev:function(){if(!this.visible){return}var g;if(this.selected){g=this.selected.prev("li");if(g.length){this.select(g)}}},next:function(){if(!this.visible){return}var g=this.selected?this.selected.next("li"):f("li:not(.unselectable):first",this.element);if(g.length){this.select(g)}},ajax:function(j){var h=this,i=this.query.page==1?0:wpLink.minRiverAJAXDuration,g=wpLink.delayedCallback(function(k,l){h.process(k,l);if(j){j(k,l)}},i);this.query.ajax(g)},change:function(g){if(this.query&&this._search==g){return}this._search=g;this.query=new c(g);this.element.scrollTop(0)},process:function(h,l){var i="",j=true,g="",k=l.page==1;if(!h){if(k){i+='<li class="unselectable"><span class="item-title"><em>'+wpLinkL10n.noMatchesFound+"</em></span></li>"}}else{f.each(h,function(){g=j?"alternate":"";g+=this["title"]?"":" no-title";i+=g?'<li class="'+g+'">':"<li>";i+='<input type="hidden" class="item-permalink" value="'+this["permalink"]+'" />';i+='<span class="item-title">';i+=this["title"]?this["title"]:wpLinkL10n.noTitle;i+='</span><span class="item-info">'+this["info"]+"</span></li>";j=!j})}this.ul[k?"html":"append"](i)},maybeLoad:function(){var h=this,i=this.element,g=i.scrollTop()+i.height();if(!this.query.ready()||g<this.ul.height()-wpLink.riverBottomThreshold){return}setTimeout(function(){var j=i.scrollTop(),k=j+i.height();if(!h.query.ready()||k<h.ul.height()-wpLink.riverBottomThreshold){return}h.waiting.show();i.scrollTop(j+h.waiting.outerHeight());h.ajax(function(){h.waiting.hide()})},wpLink.timeToTriggerRiver)}});c=function(g){this.page=1;this.allLoaded=false;this.querying=false;this.search=g};f.extend(c.prototype,{ready:function(){return !(this.querying||this.allLoaded)},ajax:function(i){var g=this,h={action:"wp-link-ajax",page:this.page,_ajax_linking_nonce:b.nonce.val()};if(this.search){h.search=this.search}this.querying=true;f.post(ajaxurl,h,function(j){g.page++;g.querying=false;g.allLoaded=!j;i(j,h)},"json")}});f(document).ready(wpLink.init)})(jQuery);
\ No newline at end of file
+var wpLink;(function(f){var b={},e={},d,a,c;wpLink={timeToTriggerRiver:150,minRiverAJAXDuration:200,riverBottomThreshold:5,keySensitivity:100,lastSearch:"",textarea:"",init:function(){b.dialog=f("#wp-link");b.submit=f("#wp-link-submit");b.url=f("#url-field");b.nonce=f("#_ajax_linking_nonce");b.title=f("#link-title-field");b.openInNewTab=f("#link-target-checkbox");b.search=f("#search-field");e.search=new a(f("#search-results"));e.recent=new a(f("#most-recent-results"));e.elements=f(".query-results",b.dialog);b.dialog.keydown(wpLink.keydown);b.dialog.keyup(wpLink.keyup);b.submit.click(function(g){g.preventDefault();wpLink.update()});f("#wp-link-cancel").click(function(g){g.preventDefault();wpLink.close()});f("#internal-toggle").click(wpLink.toggleInternalLinking);e.elements.bind("river-select",wpLink.updateFields);b.search.keyup(wpLink.searchInternalLinks);b.dialog.bind("wpdialogrefresh",wpLink.refresh);b.dialog.bind("wpdialogbeforeopen",wpLink.beforeOpen);b.dialog.bind("wpdialogclose",wpLink.onClose)},beforeOpen:function(){wpLink.range=null;if(!wpLink.isMCE()&&document.selection){wpLink.textarea.focus();wpLink.range=document.selection.createRange()}},open:function(){if(!wpActiveEditor){return}this.textarea=f("#"+wpActiveEditor).get(0);if(!b.dialog.data("wpdialog")){b.dialog.wpdialog({title:wpLinkL10n.title,width:480,height:"auto",modal:true,dialogClass:"wp-dialog",zIndex:300000})}b.dialog.wpdialog("open")},isMCE:function(){return tinyMCEPopup&&(d=tinyMCEPopup.editor)&&!d.isHidden()},refresh:function(){e.search.refresh();e.recent.refresh();if(wpLink.isMCE()){wpLink.mceRefresh()}else{wpLink.setDefaultValues()}b.url.focus()[0].select();if(!e.recent.ul.children().length){e.recent.ajax()}},mceRefresh:function(){var g;d=tinyMCEPopup.editor;tinyMCEPopup.restoreSelection();if(g=d.dom.getParent(d.selection.getNode(),"A")){b.url.val(d.dom.getAttrib(g,"href"));b.title.val(d.dom.getAttrib(g,"title"));if("_blank"==d.dom.getAttrib(g,"target")){b.openInNewTab.prop("checked",true)}b.submit.val(wpLinkL10n.update)}else{wpLink.setDefaultValues()}tinyMCEPopup.storeSelection()},close:function(){if(wpLink.isMCE()){tinyMCEPopup.close()}else{b.dialog.wpdialog("close")}},onClose:function(){if(!wpLink.isMCE()){wpLink.textarea.focus();if(wpLink.range){wpLink.range.moveToBookmark(wpLink.range.getBookmark());wpLink.range.select()}}},getAttrs:function(){return{href:b.url.val(),title:b.title.val(),target:b.openInNewTab.prop("checked")?"_blank":""}},update:function(){if(wpLink.isMCE()){wpLink.mceUpdate()}else{wpLink.htmlUpdate()}},htmlUpdate:function(){var i,j,k,h,l,g=wpLink.textarea;if(!g){return}i=wpLink.getAttrs();if(!i.href||i.href=="http://"){return}j='<a href="'+i.href+'"';if(i.title){j+=' title="'+i.title+'"'}if(i.target){j+=' target="'+i.target+'"'}j+=">";if(document.selection&&wpLink.range){g.focus();wpLink.range.text=j+wpLink.range.text+"</a>";wpLink.range.moveToBookmark(wpLink.range.getBookmark());wpLink.range.select();wpLink.range=null}else{if(typeof g.selectionStart!=="undefined"){k=g.selectionStart;h=g.selectionEnd;selection=g.value.substring(k,h);j=j+selection+"</a>";l=k+j.length;if(k==h){l-="</a>".length}g.value=g.value.substring(0,k)+j+g.value.substring(h,g.value.length);g.selectionStart=g.selectionEnd=l}}wpLink.close();g.focus()},mceUpdate:function(){var h=tinyMCEPopup.editor,i=wpLink.getAttrs(),j,g;tinyMCEPopup.restoreSelection();j=h.dom.getParent(h.selection.getNode(),"A");if(!i.href||i.href=="http://"){if(j){tinyMCEPopup.execCommand("mceBeginUndoLevel");g=h.selection.getBookmark();h.dom.remove(j,1);h.selection.moveToBookmark(g);tinyMCEPopup.execCommand("mceEndUndoLevel");wpLink.close()}return}tinyMCEPopup.execCommand("mceBeginUndoLevel");if(j==null){h.getDoc().execCommand("unlink",false,null);tinyMCEPopup.execCommand("mceInsertLink",false,"#mce_temp_url#",{skip_undo:1});tinymce.each(h.dom.select("a"),function(k){if(h.dom.getAttrib(k,"href")=="#mce_temp_url#"){j=k;h.dom.setAttribs(j,i)}});if(f(j).text()=="#mce_temp_url#"){h.dom.remove(j);j=null}}else{h.dom.setAttribs(j,i)}if(j&&(j.childNodes.length!=1||j.firstChild.nodeName!="IMG")){h.focus();h.selection.select(j);h.selection.collapse(0);tinyMCEPopup.storeSelection()}tinyMCEPopup.execCommand("mceEndUndoLevel");wpLink.close()},updateFields:function(i,h,g){b.url.val(h.children(".item-permalink").val());b.title.val(h.hasClass("no-title")?"":h.children(".item-title").text());if(g&&g.type=="click"){b.url.focus()}},setDefaultValues:function(){b.url.val("http://");b.title.val("");b.submit.val(wpLinkL10n.save)},searchInternalLinks:function(){var h=f(this),i,g=h.val();if(g.length>2){e.recent.hide();e.search.show();if(wpLink.lastSearch==g){return}wpLink.lastSearch=g;i=h.siblings("img.waiting").show();e.search.change(g);e.search.ajax(function(){i.hide()})}else{e.search.hide();e.recent.show()}},next:function(){e.search.next();e.recent.next()},prev:function(){e.search.prev();e.recent.prev()},keydown:function(i){var h,g=f.ui.keyCode;switch(i.which){case g.UP:h="prev";case g.DOWN:h=h||"next";clearInterval(wpLink.keyInterval);wpLink[h]();wpLink.keyInterval=setInterval(wpLink[h],wpLink.keySensitivity);break;default:return}i.preventDefault()},keyup:function(h){var g=f.ui.keyCode;switch(h.which){case g.ESCAPE:h.stopImmediatePropagation();if(!f(document).triggerHandler("wp_CloseOnEscape",[{event:h,what:"wplink",cb:wpLink.close}])){wpLink.close()}return false;break;case g.UP:case g.DOWN:clearInterval(wpLink.keyInterval);break;default:return}h.preventDefault()},delayedCallback:function(i,g){var l,k,j,h;if(!g){return i}setTimeout(function(){if(k){return i.apply(h,j)}l=true},g);return function(){if(l){return i.apply(this,arguments)}j=arguments;h=this;k=true}},toggleInternalLinking:function(h){var g=f("#search-panel"),i=b.dialog.wpdialog("widget"),k=!g.is(":visible"),j=f(window);f(this).toggleClass("toggle-arrow-active",k);b.dialog.height("auto");g.slideToggle(300,function(){setUserSetting("wplink",k?"1":"0");b[k?"search":"url"].focus();var l=j.scrollTop(),o=i.offset().top,m=o+i.outerHeight(),n=m-j.height();if(n>l){i.animate({top:n<o?o-n:l},200)}});h.preventDefault()}};a=function(i,h){var g=this;this.element=i;this.ul=i.children("ul");this.waiting=i.find(".river-waiting");this.change(h);this.refresh();i.scroll(function(){g.maybeLoad()});i.delegate("li","click",function(j){g.select(f(this),j)})};f.extend(a.prototype,{refresh:function(){this.deselect();this.visible=this.element.is(":visible")},show:function(){if(!this.visible){this.deselect();this.element.show();this.visible=true}},hide:function(){this.element.hide();this.visible=false},select:function(h,k){var j,i,l,g;if(h.hasClass("unselectable")||h==this.selected){return}this.deselect();this.selected=h.addClass("selected");j=h.outerHeight();i=this.element.height();l=h.position().top;g=this.element.scrollTop();if(l<0){this.element.scrollTop(g+l)}else{if(l+j>i){this.element.scrollTop(g+l-i+j)}}this.element.trigger("river-select",[h,k,this])},deselect:function(){if(this.selected){this.selected.removeClass("selected")}this.selected=false},prev:function(){if(!this.visible){return}var g;if(this.selected){g=this.selected.prev("li");if(g.length){this.select(g)}}},next:function(){if(!this.visible){return}var g=this.selected?this.selected.next("li"):f("li:not(.unselectable):first",this.element);if(g.length){this.select(g)}},ajax:function(j){var h=this,i=this.query.page==1?0:wpLink.minRiverAJAXDuration,g=wpLink.delayedCallback(function(k,l){h.process(k,l);if(j){j(k,l)}},i);this.query.ajax(g)},change:function(g){if(this.query&&this._search==g){return}this._search=g;this.query=new c(g);this.element.scrollTop(0)},process:function(h,l){var i="",j=true,g="",k=l.page==1;if(!h){if(k){i+='<li class="unselectable"><span class="item-title"><em>'+wpLinkL10n.noMatchesFound+"</em></span></li>"}}else{f.each(h,function(){g=j?"alternate":"";g+=this["title"]?"":" no-title";i+=g?'<li class="'+g+'">':"<li>";i+='<input type="hidden" class="item-permalink" value="'+this["permalink"]+'" />';i+='<span class="item-title">';i+=this["title"]?this["title"]:wpLinkL10n.noTitle;i+='</span><span class="item-info">'+this["info"]+"</span></li>";j=!j})}this.ul[k?"html":"append"](i)},maybeLoad:function(){var h=this,i=this.element,g=i.scrollTop()+i.height();if(!this.query.ready()||g<this.ul.height()-wpLink.riverBottomThreshold){return}setTimeout(function(){var j=i.scrollTop(),k=j+i.height();if(!h.query.ready()||k<h.ul.height()-wpLink.riverBottomThreshold){return}h.waiting.show();i.scrollTop(j+h.waiting.outerHeight());h.ajax(function(){h.waiting.hide()})},wpLink.timeToTriggerRiver)}});c=function(g){this.page=1;this.allLoaded=false;this.querying=false;this.search=g};f.extend(c.prototype,{ready:function(){return !(this.querying||this.allLoaded)},ajax:function(i){var g=this,h={action:"wp-link-ajax",page:this.page,_ajax_linking_nonce:b.nonce.val()};if(this.search){h.search=this.search}this.querying=true;f.post(ajaxurl,h,function(j){g.page++;g.querying=false;g.allLoaded=!j;i(j,h)},"json")}});f(document).ready(wpLink.init)})(jQuery);
\ No newline at end of file
index c54029ca0aec6cedd32e1269bb2860bd07e4590c..b9f13face0d4120acf5ef663840b1d8b3ce46272 100644 (file)
@@ -10,7 +10,7 @@
  *
  * This program is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  *
  * This program is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
  * more details.
  *
  * You should have received a copy of the GNU General Public License along
  * more details.
  *
  * You should have received a copy of the GNU General Public License along
@@ -51,348 +51,390 @@ if ( ! CUSTOM_TAGS ) {
        $allowedposttags = array(
                'address' => array(),
                'a' => array(
        $allowedposttags = array(
                'address' => array(),
                'a' => array(
-                       'class' => array (),
-                       'href' => array (),
-                       'id' => array (),
-                       'title' => array (),
-                       'rel' => array (),
-                       'rev' => array (),
-                       'name' => array (),
-                       'target' => array()),
+                       'class' => true,
+                       'href' => true,
+                       'id' => true,
+                       'title' => true,
+                       'rel' => true,
+                       'rev' => true,
+                       'name' => true,
+                       'target' => true,
+               ),
                'abbr' => array(
                'abbr' => array(
-                       'class' => array (),
-                       'title' => array ()),
+                       'class' => true,
+                       'title' => true,
+               ),
                'acronym' => array(
                'acronym' => array(
-                       'title' => array ()),
+                       'title' => true,
+               ),
                'article' => array(
                'article' => array(
-                       'align' => array (),
-                       'class' => array (),
-                       'dir' => array (),
-                       'lang' => array(),
-                       'style' => array (),
-                       'xml:lang' => array(),
+                       'align' => true,
+                       'class' => true,
+                       'dir' => true,
+                       'lang' => true,
+                       'style' => true,
+                       'xml:lang' => true,
                ),
                'aside' => array(
                ),
                'aside' => array(
-                       'align' => array (),
-                       'class' => array (),
-                       'dir' => array (),
-                       'lang' => array(),
-                       'style' => array (),
-                       'xml:lang' => array(),
+                       'align' => true,
+                       'class' => true,
+                       'dir' => true,
+                       'lang' => true,
+                       'style' => true,
+                       'xml:lang' => true,
                ),
                'b' => array(),
                'big' => array(),
                'blockquote' => array(
                ),
                'b' => array(),
                'big' => array(),
                'blockquote' => array(
-                       'id' => array (),
-                       'cite' => array (),
-                       'class' => array(),
-                       'lang' => array(),
-                       'xml:lang' => array()),
+                       'id' => true,
+                       'cite' => true,
+                       'class' => true,
+                       'lang' => true,
+                       'xml:lang' => true,
+               ),
                'br' => array (
                'br' => array (
-                       'class' => array ()),
+                       'class' => true,
+               ),
                'button' => array(
                'button' => array(
-                       'disabled' => array (),
-                       'name' => array (),
-                       'type' => array (),
-                       'value' => array ()),
+                       'disabled' => true,
+                       'name' => true,
+                       'type' => true,
+                       'value' => true,
+               ),
                'caption' => array(
                'caption' => array(
-                       'align' => array (),
-                       'class' => array ()),
+                       'align' => true,
+                       'class' => true,
+               ),
                'cite' => array (
                'cite' => array (
-                       'class' => array(),
-                       'dir' => array(),
-                       'lang' => array(),
-                       'title' => array ()),
+                       'class' => true,
+                       'dir' => true,
+                       'lang' => true,
+                       'title' => true,
+               ),
                'code' => array (
                'code' => array (
-                       'style' => array()),
+                       'style' => true,
+               ),
                'col' => array(
                'col' => array(
-                       'align' => array (),
-                       'char' => array (),
-                       'charoff' => array (),
-                       'span' => array (),
-                       'dir' => array(),
-                       'style' => array (),
-                       'valign' => array (),
-                       'width' => array ()),
+                       'align' => true,
+                       'char' => true,
+                       'charoff' => true,
+                       'span' => true,
+                       'dir' => true,
+                       'style' => true,
+                       'valign' => true,
+                       'width' => true,
+               ),
                'del' => array(
                'del' => array(
-                       'datetime' => array ()),
+                       'datetime' => true,
+               ),
                'dd' => array(),
                'details' => array(
                'dd' => array(),
                'details' => array(
-                       'align' => array (),
-                       'class' => array (),
-                       'dir' => array (),
-                       'lang' => array(),
-                       'open' => array (),
-                       'style' => array (),
-                       'xml:lang' => array(),
+                       'align' => true,
+                       'class' => true,
+                       'dir' => true,
+                       'lang' => true,
+                       'open' => true,
+                       'style' => true,
+                       'xml:lang' => true,
                ),
                'div' => array(
                ),
                'div' => array(
-                       'align' => array (),
-                       'class' => array (),
-                       'dir' => array (),
-                       'lang' => array(),
-                       'style' => array (),
-                       'xml:lang' => array()),
+                       'align' => true,
+                       'class' => true,
+                       'dir' => true,
+                       'lang' => true,
+                       'style' => true,
+                       'xml:lang' => true,
+               ),
                'dl' => array(),
                'dt' => array(),
                'em' => array(),
                'fieldset' => array(),
                'figure' => array(
                'dl' => array(),
                'dt' => array(),
                'em' => array(),
                'fieldset' => array(),
                'figure' => array(
-                       'align' => array (),
-                       'class' => array (),
-                       'dir' => array (),
-                       'lang' => array(),
-                       'style' => array (),
-                       'xml:lang' => array(),
+                       'align' => true,
+                       'class' => true,
+                       'dir' => true,
+                       'lang' => true,
+                       'style' => true,
+                       'xml:lang' => true,
                ),
                'figcaption' => array(
                ),
                'figcaption' => array(
-                       'align' => array (),
-                       'class' => array (),
-                       'dir' => array (),
-                       'lang' => array(),
-                       'style' => array (),
-                       'xml:lang' => array(),
+                       'align' => true,
+                       'class' => true,
+                       'dir' => true,
+                       'lang' => true,
+                       'style' => true,
+                       'xml:lang' => true,
                ),
                'font' => array(
                ),
                'font' => array(
-                       'color' => array (),
-                       'face' => array (),
-                       'size' => array ()),
+                       'color' => true,
+                       'face' => true,
+                       'size' => true,
+               ),
                'footer' => array(
                'footer' => array(
-                       'align' => array (),
-                       'class' => array (),
-                       'dir' => array (),
-                       'lang' => array(),
-                       'style' => array (),
-                       'xml:lang' => array(),
+                       'align' => true,
+                       'class' => true,
+                       'dir' => true,
+                       'lang' => true,
+                       'style' => true,
+                       'xml:lang' => true,
                ),
                'form' => array(
                ),
                'form' => array(
-                       'action' => array (),
-                       'accept' => array (),
-                       'accept-charset' => array (),
-                       'enctype' => array (),
-                       'method' => array (),
-                       'name' => array (),
-                       'target' => array ()),
+                       'action' => true,
+                       'accept' => true,
+                       'accept-charset' => true,
+                       'enctype' => true,
+                       'method' => true,
+                       'name' => true,
+                       'target' => true,
+               ),
                'h1' => array(
                'h1' => array(
-                       'align' => array (),
-                       'class' => array (),
-                       'id'    => array (),
-                       'style' => array ()),
+                       'align' => true,
+                       'class' => true,
+                       'id'    => true,
+                       'style' => true,
+               ),
                'h2' => array (
                'h2' => array (
-                       'align' => array (),
-                       'class' => array (),
-                       'id'    => array (),
-                       'style' => array ()),
+                       'align' => true,
+                       'class' => true,
+                       'id'    => true,
+                       'style' => true,
+               ),
                'h3' => array (
                'h3' => array (
-                       'align' => array (),
-                       'class' => array (),
-                       'id'    => array (),
-                       'style' => array ()),
+                       'align' => true,
+                       'class' => true,
+                       'id'    => true,
+                       'style' => true,
+               ),
                'h4' => array (
                'h4' => array (
-                       'align' => array (),
-                       'class' => array (),
-                       'id'    => array (),
-                       'style' => array ()),
+                       'align' => true,
+                       'class' => true,
+                       'id'    => true,
+                       'style' => true,
+               ),
                'h5' => array (
                'h5' => array (
-                       'align' => array (),
-                       'class' => array (),
-                       'id'    => array (),
-                       'style' => array ()),
+                       'align' => true,
+                       'class' => true,
+                       'id'    => true,
+                       'style' => true,
+               ),
                'h6' => array (
                'h6' => array (
-                       'align' => array (),
-                       'class' => array (),
-                       'id'    => array (),
-                       'style' => array ()),
+                       'align' => true,
+                       'class' => true,
+                       'id'    => true,
+                       'style' => true,
+               ),
                'header' => array(
                'header' => array(
-                       'align' => array (),
-                       'class' => array (),
-                       'dir' => array (),
-                       'lang' => array(),
-                       'style' => array (),
-                       'xml:lang' => array(),
+                       'align' => true,
+                       'class' => true,
+                       'dir' => true,
+                       'lang' => true,
+                       'style' => true,
+                       'xml:lang' => true,
                ),
                'hgroup' => array(
                ),
                'hgroup' => array(
-                       'align' => array (),
-                       'class' => array (),
-                       'dir' => array (),
-                       'lang' => array(),
-                       'style' => array (),
-                       'xml:lang' => array(),
+                       'align' => true,
+                       'class' => true,
+                       'dir' => true,
+                       'lang' => true,
+                       'style' => true,
+                       'xml:lang' => true,
                ),
                'hr' => array (
                ),
                'hr' => array (
-                       'align' => array (),
-                       'class' => array (),
-                       'noshade' => array (),
-                       'size' => array (),
-                       'width' => array ()),
+                       'align' => true,
+                       'class' => true,
+                       'noshade' => true,
+                       'size' => true,
+                       'width' => true,
+               ),
                'i' => array(),
                'img' => array(
                'i' => array(),
                'img' => array(
-                       'alt' => array (),
-                       'align' => array (),
-                       'border' => array (),
-                       'class' => array (),
-                       'height' => array (),
-                       'hspace' => array (),
-                       'longdesc' => array (),
-                       'vspace' => array (),
-                       'src' => array (),
-                       'style' => array (),
-                       'width' => array ()),
+                       'alt' => true,
+                       'align' => true,
+                       'border' => true,
+                       'class' => true,
+                       'height' => true,
+                       'hspace' => true,
+                       'longdesc' => true,
+                       'vspace' => true,
+                       'src' => true,
+                       'style' => true,
+                       'width' => true,
+               ),
                'ins' => array(
                'ins' => array(
-                       'datetime' => array (),
-                       'cite' => array ()),
+                       'datetime' => true,
+                       'cite' => true,
+               ),
                'kbd' => array(),
                'label' => array(
                'kbd' => array(),
                'label' => array(
-                       'for' => array ()),
+                       'for' => true,
+               ),
                'legend' => array(
                'legend' => array(
-                       'align' => array ()),
+                       'align' => true,
+               ),
                'li' => array (
                'li' => array (
-                       'align' => array (),
-                       'class' => array ()),
+                       'align' => true,
+                       'class' => true,
+               ),
                'menu' => array (
                'menu' => array (
-                       'class' => array (),
-                       'style' => array (),
-                       'type' => array ()),
+                       'class' => true,
+                       'style' => true,
+                       'type' => true,
+               ),
                'nav' => array(
                'nav' => array(
-                       'align' => array (),
-                       'class' => array (),
-                       'dir' => array (),
-                       'lang' => array(),
-                       'style' => array (),
-                       'xml:lang' => array(),
+                       'align' => true,
+                       'class' => true,
+                       'dir' => true,
+                       'lang' => true,
+                       'style' => true,
+                       'xml:lang' => true,
                ),
                'p' => array(
                ),
                'p' => array(
-                       'class' => array (),
-                       'align' => array (),
-                       'dir' => array(),
-                       'lang' => array(),
-                       'style' => array (),
-                       'xml:lang' => array()),
+                       'class' => true,
+                       'align' => true,
+                       'dir' => true,
+                       'lang' => true,
+                       'style' => true,
+                       'xml:lang' => true,
+               ),
                'pre' => array(
                'pre' => array(
-                       'style' => array(),
-                       'width' => array ()),
+                       'style' => true,
+                       'width' => true,
+               ),
                'q' => array(
                'q' => array(
-                       'cite' => array ()),
+                       'cite' => true,
+               ),
                's' => array(),
                'span' => array (
                's' => array(),
                'span' => array (
-                       'class' => array (),
-                       'dir' => array (),
-                       'align' => array (),
-                       'lang' => array (),
-                       'style' => array (),
-                       'title' => array (),
-                       'xml:lang' => array()),
+                       'class' => true,
+                       'dir' => true,
+                       'align' => true,
+                       'lang' => true,
+                       'style' => true,
+                       'title' => true,
+                       'xml:lang' => true,
+               ),
                'section' => array(
                'section' => array(
-                       'align' => array (),
-                       'class' => array (),
-                       'dir' => array (),
-                       'lang' => array(),
-                       'style' => array (),
-                       'xml:lang' => array(),
+                       'align' => true,
+                       'class' => true,
+                       'dir' => true,
+                       'lang' => true,
+                       'style' => true,
+                       'xml:lang' => true,
                ),
                'strike' => array(),
                'strong' => array(),
                'sub' => array(),
                'summary' => array(
                ),
                'strike' => array(),
                'strong' => array(),
                'sub' => array(),
                'summary' => array(
-                       'align' => array (),
-                       'class' => array (),
-                       'dir' => array (),
-                       'lang' => array(),
-                       'style' => array (),
-                       'xml:lang' => array(),
+                       'align' => true,
+                       'class' => true,
+                       'dir' => true,
+                       'lang' => true,
+                       'style' => true,
+                       'xml:lang' => true,
                ),
                'sup' => array(),
                'table' => array(
                ),
                'sup' => array(),
                'table' => array(
-                       'align' => array (),
-                       'bgcolor' => array (),
-                       'border' => array (),
-                       'cellpadding' => array (),
-                       'cellspacing' => array (),
-                       'class' => array (),
-                       'dir' => array(),
-                       'id' => array(),
-                       'rules' => array (),
-                       'style' => array (),
-                       'summary' => array (),
-                       'width' => array ()),
+                       'align' => true,
+                       'bgcolor' => true,
+                       'border' => true,
+                       'cellpadding' => true,
+                       'cellspacing' => true,
+                       'class' => true,
+                       'dir' => true,
+                       'id' => true,
+                       'rules' => true,
+                       'style' => true,
+                       'summary' => true,
+                       'width' => true,
+               ),
                'tbody' => array(
                'tbody' => array(
-                       'align' => array (),
-                       'char' => array (),
-                       'charoff' => array (),
-                       'valign' => array ()),
+                       'align' => true,
+                       'char' => true,
+                       'charoff' => true,
+                       'valign' => true,
+               ),
                'td' => array(
                'td' => array(
-                       'abbr' => array (),
-                       'align' => array (),
-                       'axis' => array (),
-                       'bgcolor' => array (),
-                       'char' => array (),
-                       'charoff' => array (),
-                       'class' => array (),
-                       'colspan' => array (),
-                       'dir' => array(),
-                       'headers' => array (),
-                       'height' => array (),
-                       'nowrap' => array (),
-                       'rowspan' => array (),
-                       'scope' => array (),
-                       'style' => array (),
-                       'valign' => array (),
-                       'width' => array ()),
+                       'abbr' => true,
+                       'align' => true,
+                       'axis' => true,
+                       'bgcolor' => true,
+                       'char' => true,
+                       'charoff' => true,
+                       'class' => true,
+                       'colspan' => true,
+                       'dir' => true,
+                       'headers' => true,
+                       'height' => true,
+                       'nowrap' => true,
+                       'rowspan' => true,
+                       'scope' => true,
+                       'style' => true,
+                       'valign' => true,
+                       'width' => true,
+               ),
                'textarea' => array(
                'textarea' => array(
-                       'cols' => array (),
-                       'rows' => array (),
-                       'disabled' => array (),
-                       'name' => array (),
-                       'readonly' => array ()),
+                       'cols' => true,
+                       'rows' => true,
+                       'disabled' => true,
+                       'name' => true,
+                       'readonly' => true,
+               ),
                'tfoot' => array(
                'tfoot' => array(
-                       'align' => array (),
-                       'char' => array (),
-                       'class' => array (),
-                       'charoff' => array (),
-                       'valign' => array ()),
+                       'align' => true,
+                       'char' => true,
+                       'class' => true,
+                       'charoff' => true,
+                       'valign' => true,
+               ),
                'th' => array(
                'th' => array(
-                       'abbr' => array (),
-                       'align' => array (),
-                       'axis' => array (),
-                       'bgcolor' => array (),
-                       'char' => array (),
-                       'charoff' => array (),
-                       'class' => array (),
-                       'colspan' => array (),
-                       'headers' => array (),
-                       'height' => array (),
-                       'nowrap' => array (),
-                       'rowspan' => array (),
-                       'scope' => array (),
-                       'valign' => array (),
-                       'width' => array ()),
+                       'abbr' => true,
+                       'align' => true,
+                       'axis' => true,
+                       'bgcolor' => true,
+                       'char' => true,
+                       'charoff' => true,
+                       'class' => true,
+                       'colspan' => true,
+                       'headers' => true,
+                       'height' => true,
+                       'nowrap' => true,
+                       'rowspan' => true,
+                       'scope' => true,
+                       'valign' => true,
+                       'width' => true,
+               ),
                'thead' => array(
                'thead' => array(
-                       'align' => array (),
-                       'char' => array (),
-                       'charoff' => array (),
-                       'class' => array (),
-                       'valign' => array ()),
+                       'align' => true,
+                       'char' => true,
+                       'charoff' => true,
+                       'class' => true,
+                       'valign' => true,
+               ),
                'title' => array(),
                'tr' => array(
                'title' => array(),
                'tr' => array(
-                       'align' => array (),
-                       'bgcolor' => array (),
-                       'char' => array (),
-                       'charoff' => array (),
-                       'class' => array (),
-                       'style' => array (),
-                       'valign' => array ()),
+                       'align' => true,
+                       'bgcolor' => true,
+                       'char' => true,
+                       'charoff' => true,
+                       'class' => true,
+                       'style' => true,
+                       'valign' => true,
+               ),
                'tt' => array(),
                'u' => array(),
                'ul' => array (
                'tt' => array(),
                'u' => array(),
                'ul' => array (
-                       'class' => array (),
-                       'style' => array (),
-                       'type' => array ()),
+                       'class' => true,
+                       'style' => true,
+                       'type' => true,
+               ),
                'ol' => array (
                'ol' => array (
-                       'class' => array (),
-                       'start' => array (),
-                       'style' => array (),
-                       'type' => array ()),
-               'var' => array ());
+                       'class' => true,
+                       'start' => true,
+                       'style' => true,
+                       'type' => true,
+               ),
+               'var' => array(),
+       );
 
        /**
         * Kses allowed HTML elements.
 
        /**
         * Kses allowed HTML elements.
@@ -402,20 +444,25 @@ if ( ! CUSTOM_TAGS ) {
         */
        $allowedtags = array(
                'a' => array(
         */
        $allowedtags = array(
                'a' => array(
-                       'href' => array (),
-                       'title' => array ()),
+                       'href' => true,
+                       'title' => true,
+               ),
                'abbr' => array(
                'abbr' => array(
-                       'title' => array ()),
+                       'title' => true,
+               ),
                'acronym' => array(
                'acronym' => array(
-                       'title' => array ()),
+                       'title' => true,
+               ),
                'b' => array(),
                'blockquote' => array(
                'b' => array(),
                'blockquote' => array(
-                       'cite' => array ()),
+                       'cite' => true,
+               ),
                //      'br' => array(),
                //      'br' => array(),
-               'cite' => array (),
+               'cite' => array(),
                'code' => array(),
                'del' => array(
                'code' => array(),
                'del' => array(
-                       'datetime' => array ()),
+                       'datetime' => true,
+               ),
                //      'dd' => array(),
                //      'dl' => array(),
                //      'dt' => array(),
                //      'dd' => array(),
                //      'dl' => array(),
                //      'dt' => array(),
@@ -425,7 +472,8 @@ if ( ! CUSTOM_TAGS ) {
                //      'ol' => array(),
                //      'p' => array(),
                'q' => array(
                //      'ol' => array(),
                //      'p' => array(),
                'q' => array(
-                       'cite' => array ()),
+                       'cite' => true,
+               ),
                'strike' => array(),
                'strong' => array(),
                //      'sub' => array(),
                'strike' => array(),
                'strong' => array(),
                //      'sub' => array(),
@@ -674,6 +722,17 @@ function wp_kses_attr($element, $attr, $allowed_html, $allowed_protocols) {
                if ( $current == '' )
                        continue; # the attribute is not allowed
 
                if ( $current == '' )
                        continue; # the attribute is not allowed
 
+               if ( strtolower( $arreach['name'] ) == 'style' ) {
+                       $orig_value = $arreach['value'];
+                       $value = safecss_filter_attr( $orig_value );
+
+                       if ( empty( $value ) )
+                               continue;
+
+                       $arreach['value'] = $value;
+                       $arreach['whole'] = str_replace( $orig_value, $value, $arreach['whole'] );
+               }
+
                if ( ! is_array($current) ) {
                        $attr2 .= ' '.$arreach['whole'];
                # there are no checks
                if ( ! is_array($current) ) {
                        $attr2 .= ' '.$arreach['whole'];
                # there are no checks
@@ -688,18 +747,7 @@ function wp_kses_attr($element, $attr, $allowed_html, $allowed_protocols) {
                                }
                        }
 
                                }
                        }
 
-                       if ( strtolower($arreach['name']) == 'style' ) {
-                               $orig_value = $arreach['value'];
-                               $value = safecss_filter_attr($orig_value);
-
-                               if ( empty($value) )
-                                       continue;
-
-                               $arreach['value'] = $value;
-                               $arreach['whole'] = str_replace($orig_value, $value, $arreach['whole']);
-                       }
-
-                       if ($ok)
+                       if ( $ok )
                                $attr2 .= ' '.$arreach['whole']; # it passed them
                } # if !is_array($current)
        } # foreach
                                $attr2 .= ' '.$arreach['whole']; # it passed them
                } # if !is_array($current)
        } # foreach
@@ -718,7 +766,7 @@ function wp_kses_attr($element, $attr, $allowed_html, $allowed_protocols) {
  * input. It will add quotes around attribute values that don't have any quotes
  * or apostrophes around them, to make it easier to produce HTML code that will
  * conform to W3C's HTML specification. It will also remove bad URL protocols
  * input. It will add quotes around attribute values that don't have any quotes
  * or apostrophes around them, to make it easier to produce HTML code that will
  * conform to W3C's HTML specification. It will also remove bad URL protocols
- * from attribute values.  It also reduces duplicate attributes by using the
+ * from attribute values. It also reduces duplicate attributes by using the
  * attribute defined first (foo='bar' foo='baz' will result in foo='bar').
  *
  * @since 1.0.0
  * attribute defined first (foo='bar' foo='baz' will result in foo='bar').
  *
  * @since 1.0.0
@@ -763,7 +811,7 @@ function wp_kses_hair($attr, $allowed_protocols) {
                                        {
                                        $working = 1;
                                        $mode = 0;
                                        {
                                        $working = 1;
                                        $mode = 0;
-                                       if(FALSE === array_key_exists($attrname, $attrarr)) {
+                                       if(false === array_key_exists($attrname, $attrarr)) {
                                                $attrarr[$attrname] = array ('name' => $attrname, 'value' => '', 'whole' => $attrname, 'vless' => 'y');
                                        }
                                        $attr = preg_replace('/^\s+/', '', $attr);
                                                $attrarr[$attrname] = array ('name' => $attrname, 'value' => '', 'whole' => $attrname, 'vless' => 'y');
                                        }
                                        $attr = preg_replace('/^\s+/', '', $attr);
@@ -780,7 +828,7 @@ function wp_kses_hair($attr, $allowed_protocols) {
                                        if ( in_array(strtolower($attrname), $uris) )
                                                $thisval = wp_kses_bad_protocol($thisval, $allowed_protocols);
 
                                        if ( in_array(strtolower($attrname), $uris) )
                                                $thisval = wp_kses_bad_protocol($thisval, $allowed_protocols);
 
-                                       if(FALSE === array_key_exists($attrname, $attrarr)) {
+                                       if(false === array_key_exists($attrname, $attrarr)) {
                                                $attrarr[$attrname] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname=\"$thisval\"", 'vless' => 'n');
                                        }
                                        $working = 1;
                                                $attrarr[$attrname] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname=\"$thisval\"", 'vless' => 'n');
                                        }
                                        $working = 1;
@@ -796,7 +844,7 @@ function wp_kses_hair($attr, $allowed_protocols) {
                                        if ( in_array(strtolower($attrname), $uris) )
                                                $thisval = wp_kses_bad_protocol($thisval, $allowed_protocols);
 
                                        if ( in_array(strtolower($attrname), $uris) )
                                                $thisval = wp_kses_bad_protocol($thisval, $allowed_protocols);
 
-                                       if(FALSE === array_key_exists($attrname, $attrarr)) {
+                                       if(false === array_key_exists($attrname, $attrarr)) {
                                                $attrarr[$attrname] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname='$thisval'", 'vless' => 'n');
                                        }
                                        $working = 1;
                                                $attrarr[$attrname] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname='$thisval'", 'vless' => 'n');
                                        }
                                        $working = 1;
@@ -812,7 +860,7 @@ function wp_kses_hair($attr, $allowed_protocols) {
                                        if ( in_array(strtolower($attrname), $uris) )
                                                $thisval = wp_kses_bad_protocol($thisval, $allowed_protocols);
 
                                        if ( in_array(strtolower($attrname), $uris) )
                                                $thisval = wp_kses_bad_protocol($thisval, $allowed_protocols);
 
-                                       if(FALSE === array_key_exists($attrname, $attrarr)) {
+                                       if(false === array_key_exists($attrname, $attrarr)) {
                                                $attrarr[$attrname] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname=\"$thisval\"", 'vless' => 'n');
                                        }
                                        # We add quotes to conform to W3C's HTML spec.
                                                $attrarr[$attrname] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname=\"$thisval\"", 'vless' => 'n');
                                        }
                                        # We add quotes to conform to W3C's HTML spec.
@@ -831,7 +879,7 @@ function wp_kses_hair($attr, $allowed_protocols) {
                }
        } # while
 
                }
        } # while
 
-       if ($mode == 1 && FALSE === array_key_exists($attrname, $attrarr))
+       if ($mode == 1 && false === array_key_exists($attrname, $attrarr))
                # special case, for when the attribute list ends with a valueless
                # attribute like "selected"
                $attrarr[$attrname] = array ('name' => $attrname, 'value' => '', 'whole' => $attrname, 'vless' => 'y');
                # special case, for when the attribute list ends with a valueless
                # attribute like "selected"
                $attrarr[$attrname] = array ('name' => $attrname, 'value' => '', 'whole' => $attrname, 'vless' => 'y');
@@ -941,7 +989,7 @@ function wp_kses_bad_protocol($string, $allowed_protocols) {
 }
 
 /**
 }
 
 /**
- * Removes any NULL characters in $string.
+ * Removes any null characters in $string.
  *
  * @since 1.0.0
  *
  *
  * @since 1.0.0
  *
@@ -1315,10 +1363,15 @@ function wp_filter_nohtml_kses($data) {
  * @uses add_filter() See description for what functions are added to what hooks.
  */
 function kses_init_filters() {
  * @uses add_filter() See description for what functions are added to what hooks.
  */
 function kses_init_filters() {
-       // Normal filtering.
-       add_filter('pre_comment_content', 'wp_filter_kses');
+       // Normal filtering
        add_filter('title_save_pre', 'wp_filter_kses');
 
        add_filter('title_save_pre', 'wp_filter_kses');
 
+       // Comment filtering
+       if ( current_user_can( 'unfiltered_html' ) )
+               add_filter( 'pre_comment_content', 'wp_filter_post_kses' );
+       else
+               add_filter( 'pre_comment_content', 'wp_filter_kses' );
+
        // Post filtering
        add_filter('content_save_pre', 'wp_filter_post_kses');
        add_filter('excerpt_save_pre', 'wp_filter_post_kses');
        // Post filtering
        add_filter('content_save_pre', 'wp_filter_post_kses');
        add_filter('excerpt_save_pre', 'wp_filter_post_kses');
@@ -1338,10 +1391,13 @@ function kses_init_filters() {
  * @since 2.0.6
  */
 function kses_remove_filters() {
  * @since 2.0.6
  */
 function kses_remove_filters() {
-       // Normal filtering.
-       remove_filter('pre_comment_content', 'wp_filter_kses');
+       // Normal filtering
        remove_filter('title_save_pre', 'wp_filter_kses');
 
        remove_filter('title_save_pre', 'wp_filter_kses');
 
+       // Comment filtering
+       remove_filter( 'pre_comment_content', 'wp_filter_post_kses' );
+       remove_filter( 'pre_comment_content', 'wp_filter_kses' );
+
        // Post filtering
        remove_filter('content_save_pre', 'wp_filter_post_kses');
        remove_filter('excerpt_save_pre', 'wp_filter_post_kses');
        // Post filtering
        remove_filter('content_save_pre', 'wp_filter_post_kses');
        remove_filter('excerpt_save_pre', 'wp_filter_post_kses');
@@ -1414,7 +1470,7 @@ function safecss_filter_attr( $css, $deprecated = '' ) {
                if ( strpos( $css_item, ':' ) === false ) {
                        $found = true;
                } else {
                if ( strpos( $css_item, ':' ) === false ) {
                        $found = true;
                } else {
-                       $parts = split( ':', $css_item );
+                       $parts = explode( ':', $css_item );
                        if ( in_array( trim( $parts[0] ), $allowed_attr ) )
                                $found = true;
                }
                        if ( in_array( trim( $parts[0] ), $allowed_attr ) )
                                $found = true;
                }
index 733f3a447374bea75e6534a5d3e64dae474bd9ea..851b3730f7a49c1d6e1a405054ef5476b8aadd86 100644 (file)
@@ -272,10 +272,11 @@ function _nx($single, $plural, $number, $context, $domain = 'default') {
  * @since 2.5
  * @param string $singular Single form to be i18ned
  * @param string $plural Plural form to be i18ned
  * @since 2.5
  * @param string $singular Single form to be i18ned
  * @param string $plural Plural form to be i18ned
+ * @param string $domain Optional. The domain identifier the text will be retrieved in
  * @return array array($singular, $plural)
  */
  * @return array array($singular, $plural)
  */
-function _n_noop( $singular, $plural ) {
-       return array( 0 => $singular, 1 => $plural, 'singular' => $singular, 'plural' => $plural, 'context' => null );
+function _n_noop( $singular, $plural, $domain = null ) {
+       return array( 0 => $singular, 1 => $plural, 'singular' => $singular, 'plural' => $plural, 'context' => null, 'domain' => $domain );
 }
 
 /**
 }
 
 /**
@@ -283,8 +284,8 @@ function _n_noop( $singular, $plural ) {
  *
  * @see _n_noop()
  */
  *
  * @see _n_noop()
  */
-function _nx_noop( $singular, $plural, $context ) {
-       return array( 0 => $singular, 1 => $plural, 2 => $context, 'singular' => $singular, 'plural' => $plural, 'context' => $context );
+function _nx_noop( $singular, $plural, $context, $domain = null ) {
+       return array( 0 => $singular, 1 => $plural, 2 => $context, 'singular' => $singular, 'plural' => $plural, 'context' => $context, 'domain' => $domain );
 }
 
 /**
 }
 
 /**
@@ -293,9 +294,13 @@ function _nx_noop( $singular, $plural, $context ) {
  * @since 3.1
  * @param array $nooped_plural Array with singular, plural and context keys, usually the result of _n_noop() or _nx_noop()
  * @param int $count Number of objects
  * @since 3.1
  * @param array $nooped_plural Array with singular, plural and context keys, usually the result of _n_noop() or _nx_noop()
  * @param int $count Number of objects
- * @param string $domain Optional. The domain identifier the text should be retrieved in
+ * @param string $domain Optional. The domain identifier the text should be retrieved in. If $nooped_plural contains
+ *     a domain passed to _n_noop() or _nx_noop(), it will override this value.
  */
 function translate_nooped_plural( $nooped_plural, $count, $domain = 'default' ) {
  */
 function translate_nooped_plural( $nooped_plural, $count, $domain = 'default' ) {
+       if ( $nooped_plural['domain'] )
+               $domain = $nooped_plural['domain'];
+
        if ( $nooped_plural['context'] )
                return _nx( $nooped_plural['singular'], $nooped_plural['plural'], $count, $nooped_plural['context'], $domain );
        else
        if ( $nooped_plural['context'] )
                return _nx( $nooped_plural['singular'], $nooped_plural['plural'], $count, $nooped_plural['context'], $domain );
        else
@@ -382,9 +387,17 @@ function load_default_textdomain() {
 
        load_textdomain( 'default', WP_LANG_DIR . "/$locale.mo" );
 
 
        load_textdomain( 'default', WP_LANG_DIR . "/$locale.mo" );
 
-       if ( is_multisite() || ( defined( 'WP_INSTALLING_NETWORK' ) && WP_INSTALLING_NETWORK ) ) {
+       if ( ( is_multisite() || ( defined( 'WP_INSTALLING_NETWORK' ) && WP_INSTALLING_NETWORK ) ) && ! file_exists(  WP_LANG_DIR . "/admin-$locale.mo" ) ) {
                load_textdomain( 'default', WP_LANG_DIR . "/ms-$locale.mo" );
                load_textdomain( 'default', WP_LANG_DIR . "/ms-$locale.mo" );
+               return;
        }
        }
+
+       if ( is_admin()  )
+               load_textdomain( 'default', WP_LANG_DIR . "/admin-$locale.mo" );
+
+       if ( is_network_admin() || ( defined( 'WP_INSTALLING_NETWORK' ) && WP_INSTALLING_NETWORK ) )
+               load_textdomain( 'default', WP_LANG_DIR . "/admin-network-$locale.mo" );
+
 }
 
 /**
 }
 
 /**
@@ -527,7 +540,8 @@ function get_available_languages( $dir = null ) {
 
        foreach( (array)glob( ( is_null( $dir) ? WP_LANG_DIR : $dir ) . '/*.mo' ) as $lang_file ) {
                $lang_file = basename($lang_file, '.mo');
 
        foreach( (array)glob( ( is_null( $dir) ? WP_LANG_DIR : $dir ) . '/*.mo' ) as $lang_file ) {
                $lang_file = basename($lang_file, '.mo');
-               if ( 0 !== strpos( $lang_file, 'continents-cities' ) && 0 !== strpos( $lang_file, 'ms-' ) )
+               if ( 0 !== strpos( $lang_file, 'continents-cities' ) && 0 !== strpos( $lang_file, 'ms-' ) &&
+                       0 !== strpos( $lang_file, 'admin-' ))
                        $languages[] = $lang_file;
        }
 
                        $languages[] = $lang_file;
        }
 
index 7c5f51195fadd127f89b929644fc401dba54d3ee..ae8a9f136c39f68e1054e4ee8e45f4522ff7d2bc 100644 (file)
@@ -507,7 +507,7 @@ function get_post_comments_feed_link($post_id = 0, $feed = '') {
  * @since 2.5.0
  *
  * @param string $link_text Descriptive text.
  * @since 2.5.0
  *
  * @param string $link_text Descriptive text.
- * @param int $post_id Optional post ID.  Default to current post.
+ * @param int $post_id Optional post ID. Default to current post.
  * @param string $feed Optional. Feed format.
  * @return string Link to the comment feed for the current post.
 */
  * @param string $feed Optional. Feed format.
  * @return string Link to the comment feed for the current post.
 */
@@ -589,8 +589,6 @@ function get_category_feed_link($cat_id, $feed = '') {
  * @return string Link to the feed for the term specified by $term_id and $taxonomy.
 */
 function get_term_feed_link( $term_id, $taxonomy = 'category', $feed = '' ) {
  * @return string Link to the feed for the term specified by $term_id and $taxonomy.
 */
 function get_term_feed_link( $term_id, $taxonomy = 'category', $feed = '' ) {
-       global $wp_rewrite;
-
        $term_id = ( int ) $term_id;
 
        $term = get_term( $term_id, $taxonomy  );
        $term_id = ( int ) $term_id;
 
        $term = get_term( $term_id, $taxonomy  );
@@ -630,7 +628,6 @@ function get_term_feed_link( $term_id, $taxonomy = 'category', $feed = '' ) {
        else
                $link = apply_filters( 'taxonomy_feed_link', $link, $feed, $taxonomy );
 
        else
                $link = apply_filters( 'taxonomy_feed_link', $link, $feed, $taxonomy );
 
-
        return $link;
 }
 
        return $link;
 }
 
@@ -1375,9 +1372,11 @@ function adjacent_post_link($format, $link, $in_same_cat = false, $excluded_cate
  * @since 1.5.0
  *
  * @param int $pagenum Optional. Page ID.
  * @since 1.5.0
  *
  * @param int $pagenum Optional. Page ID.
+ * @param bool $escape Optional. Whether to escape the URL for display, with esc_url(). Defaults to true.
+*      Otherwise, prepares the URL with esc_url_raw().
  * @return string
  */
  * @return string
  */
-function get_pagenum_link($pagenum = 1) {
+function get_pagenum_link($pagenum = 1, $escape = true ) {
        global $wp_rewrite;
 
        $pagenum = (int) $pagenum;
        global $wp_rewrite;
 
        $pagenum = (int) $pagenum;
@@ -1428,7 +1427,10 @@ function get_pagenum_link($pagenum = 1) {
 
        $result = apply_filters('get_pagenum_link', $result);
 
 
        $result = apply_filters('get_pagenum_link', $result);
 
-       return $result;
+       if ( $escape )
+               return esc_url( $result );
+       else
+               return esc_url_raw( $result );
 }
 
 /**
 }
 
 /**
@@ -1566,7 +1568,7 @@ function get_previous_posts_link( $label = null ) {
 
        if ( !is_single() && $paged > 1 ) {
                $attr = apply_filters( 'previous_posts_link_attributes', '' );
 
        if ( !is_single() && $paged > 1 ) {
                $attr = apply_filters( 'previous_posts_link_attributes', '' );
-               return '<a href="' . previous_posts( false ) . "\" $attr>". preg_replace( '/&([^#])(?![a-z]{1,8};)/', '&#038;$1', $label ) .'</a>';
+               return '<a href="' . previous_posts( false ) . "\" $attr>". preg_replace( '/&([^#])(?![a-z]{1,8};)/i', '&#038;$1', $label ) .'</a>';
        }
 }
 
        }
 }
 
@@ -1793,7 +1795,7 @@ function paginate_comments_links($args = array()) {
 }
 
 /**
 }
 
 /**
- * Retrieve shortcut link.
+ * Retrieve the Press This bookmarklet link.
  *
  * Use this in 'a' element 'href' attribute.
  *
  *
  * Use this in 'a' element 'href' attribute.
  *
@@ -1802,6 +1804,7 @@ function paginate_comments_links($args = array()) {
  * @return string
  */
 function get_shortcut_link() {
  * @return string
  */
 function get_shortcut_link() {
+       // In case of breaking changes, version this. #WP20071
        $link = "javascript:
                        var d=document,
                        w=window,
        $link = "javascript:
                        var d=document,
                        w=window,
@@ -1835,7 +1838,7 @@ function get_shortcut_link() {
  * @uses get_home_url()
  *
  * @param  string $path   (optional) Path relative to the home url.
  * @uses get_home_url()
  *
  * @param  string $path   (optional) Path relative to the home url.
- * @param  string $scheme (optional) Scheme to give the home url context. Currently 'http', 'https'.
+ * @param  string $scheme (optional) Scheme to give the home url context. Currently 'http', 'https', or 'relative'.
  * @return string Home url link with optional path appended.
 */
 function home_url( $path = '', $scheme = null ) {
  * @return string Home url link with optional path appended.
 */
 function home_url( $path = '', $scheme = null ) {
@@ -1854,13 +1857,13 @@ function home_url( $path = '', $scheme = null ) {
  *
  * @param  int $blog_id   (optional) Blog ID. Defaults to current blog.
  * @param  string $path   (optional) Path relative to the home url.
  *
  * @param  int $blog_id   (optional) Blog ID. Defaults to current blog.
  * @param  string $path   (optional) Path relative to the home url.
- * @param  string $scheme (optional) Scheme to give the home url context. Currently 'http', 'https'.
+ * @param  string $scheme (optional) Scheme to give the home url context. Currently 'http', 'https', or 'relative'.
  * @return string Home url link with optional path appended.
 */
 function get_home_url( $blog_id = null, $path = '', $scheme = null ) {
        $orig_scheme = $scheme;
 
  * @return string Home url link with optional path appended.
 */
 function get_home_url( $blog_id = null, $path = '', $scheme = null ) {
        $orig_scheme = $scheme;
 
-       if ( !in_array( $scheme, array( 'http', 'https' ) ) )
+       if ( !in_array( $scheme, array( 'http', 'https', 'relative' ) ) )
                $scheme = is_ssl() && !is_admin() ? 'https' : 'http';
 
        if ( empty( $blog_id ) || !is_multisite() )
                $scheme = is_ssl() && !is_admin() ? 'https' : 'http';
 
        if ( empty( $blog_id ) || !is_multisite() )
@@ -1868,7 +1871,9 @@ function get_home_url( $blog_id = null, $path = '', $scheme = null ) {
        else
                $url = get_blog_option( $blog_id, 'home' );
 
        else
                $url = get_blog_option( $blog_id, 'home' );
 
-       if ( 'http' != $scheme )
+       if ( 'relative' == $scheme )
+               $url = preg_replace( '#^.+://[^/]*#', '', $url );
+       elseif ( 'http' != $scheme )
                $url = str_replace( 'http://', "$scheme://", $url );
 
        if ( !empty( $path ) && is_string( $path ) && strpos( $path, '..' ) === false )
                $url = str_replace( 'http://', "$scheme://", $url );
 
        if ( !empty( $path ) && is_string( $path ) && strpos( $path, '..' ) === false )
@@ -1890,7 +1895,7 @@ function get_home_url( $blog_id = null, $path = '', $scheme = null ) {
  * @uses get_site_url()
  *
  * @param string $path Optional. Path relative to the site url.
  * @uses get_site_url()
  *
  * @param string $path Optional. Path relative to the site url.
- * @param string $scheme Optional. Scheme to give the site url context. Currently 'http', 'https', 'login', 'login_post', or 'admin'.
+ * @param string $scheme Optional. Scheme to give the site url context. Currently 'http', 'https', 'login', 'login_post', 'admin', or 'relative'.
  * @return string Site url link with optional path appended.
 */
 function site_url( $path = '', $scheme = null ) {
  * @return string Site url link with optional path appended.
 */
 function site_url( $path = '', $scheme = null ) {
@@ -1909,13 +1914,13 @@ function site_url( $path = '', $scheme = null ) {
  *
  * @param int $blog_id (optional) Blog ID. Defaults to current blog.
  * @param string $path Optional. Path relative to the site url.
  *
  * @param int $blog_id (optional) Blog ID. Defaults to current blog.
  * @param string $path Optional. Path relative to the site url.
- * @param string $scheme Optional. Scheme to give the site url context. Currently 'http', 'https', 'login', 'login_post', or 'admin'.
+ * @param string $scheme Optional. Scheme to give the site url context. Currently 'http', 'https', 'login', 'login_post', 'admin', or 'relative'.
  * @return string Site url link with optional path appended.
 */
 function get_site_url( $blog_id = null, $path = '', $scheme = null ) {
        // should the list of allowed schemes be maintained elsewhere?
        $orig_scheme = $scheme;
  * @return string Site url link with optional path appended.
 */
 function get_site_url( $blog_id = null, $path = '', $scheme = null ) {
        // should the list of allowed schemes be maintained elsewhere?
        $orig_scheme = $scheme;
-       if ( !in_array( $scheme, array( 'http', 'https' ) ) ) {
+       if ( !in_array( $scheme, array( 'http', 'https', 'relative' ) ) ) {
                if ( ( 'login_post' == $scheme || 'rpc' == $scheme ) && ( force_ssl_login() || force_ssl_admin() ) )
                        $scheme = 'https';
                elseif ( ( 'login' == $scheme ) && force_ssl_admin() )
                if ( ( 'login_post' == $scheme || 'rpc' == $scheme ) && ( force_ssl_login() || force_ssl_admin() ) )
                        $scheme = 'https';
                elseif ( ( 'login' == $scheme ) && force_ssl_admin() )
@@ -1931,7 +1936,9 @@ function get_site_url( $blog_id = null, $path = '', $scheme = null ) {
        else
                $url = get_blog_option( $blog_id, 'siteurl' );
 
        else
                $url = get_blog_option( $blog_id, 'siteurl' );
 
-       if ( 'http' != $scheme )
+       if ( 'relative' == $scheme )
+               $url = preg_replace( '#^.+://[^/]*#', '', $url );
+       elseif ( 'http' != $scheme )
                $url = str_replace( 'http://', "{$scheme}://", $url );
 
        if ( !empty( $path ) && is_string( $path ) && strpos( $path, '..' ) === false )
                $url = str_replace( 'http://', "{$scheme}://", $url );
 
        if ( !empty( $path ) && is_string( $path ) && strpos( $path, '..' ) === false )
@@ -2062,7 +2069,7 @@ function plugins_url($path = '', $plugin = '') {
  * @since 3.0.0
  *
  * @param string $path Optional. Path relative to the site url.
  * @since 3.0.0
  *
  * @param string $path Optional. Path relative to the site url.
- * @param string $scheme Optional. Scheme to give the site url context. Currently 'http', 'https', 'login', 'login_post', or 'admin'.
+ * @param string $scheme Optional. Scheme to give the site url context. Currently 'http', 'https', 'login', 'login_post', 'admin', or 'relative'.
  * @return string Site url link with optional path appended.
 */
 function network_site_url( $path = '', $scheme = null ) {
  * @return string Site url link with optional path appended.
 */
 function network_site_url( $path = '', $scheme = null ) {
@@ -2072,7 +2079,7 @@ function network_site_url( $path = '', $scheme = null ) {
                return site_url($path, $scheme);
 
        $orig_scheme = $scheme;
                return site_url($path, $scheme);
 
        $orig_scheme = $scheme;
-       if ( !in_array($scheme, array('http', 'https')) ) {
+       if ( !in_array( $scheme, array( 'http', 'https', 'relative' ) ) ) {
                if ( ( 'login_post' == $scheme || 'rpc' == $scheme ) && ( force_ssl_login() || force_ssl_admin() ) )
                        $scheme = 'https';
                elseif ( ('login' == $scheme) && ( force_ssl_admin() ) )
                if ( ( 'login_post' == $scheme || 'rpc' == $scheme ) && ( force_ssl_login() || force_ssl_admin() ) )
                        $scheme = 'https';
                elseif ( ('login' == $scheme) && ( force_ssl_admin() ) )
@@ -2083,7 +2090,10 @@ function network_site_url( $path = '', $scheme = null ) {
                        $scheme = ( is_ssl() ? 'https' : 'http' );
        }
 
                        $scheme = ( is_ssl() ? 'https' : 'http' );
        }
 
-       $url = $scheme . '://' . $current_site->domain . $current_site->path;
+       if ( 'relative' == $scheme )
+               $url = $current_site->path;
+       else
+               $url = $scheme . '://' . $current_site->domain . $current_site->path;
 
        if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
                $url .= ltrim($path, '/');
 
        if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
                $url .= ltrim($path, '/');
@@ -2102,7 +2112,7 @@ function network_site_url( $path = '', $scheme = null ) {
  * @since 3.0.0
  *
  * @param  string $path   (optional) Path relative to the home url.
  * @since 3.0.0
  *
  * @param  string $path   (optional) Path relative to the home url.
- * @param  string $scheme (optional) Scheme to give the home url context. Currently 'http', 'https'.
+ * @param  string $scheme (optional) Scheme to give the home url context. Currently 'http', 'https', or 'relative'.
  * @return string Home url link with optional path appended.
 */
 function network_home_url( $path = '', $scheme = null ) {
  * @return string Home url link with optional path appended.
 */
 function network_home_url( $path = '', $scheme = null ) {
@@ -2113,10 +2123,13 @@ function network_home_url( $path = '', $scheme = null ) {
 
        $orig_scheme = $scheme;
 
 
        $orig_scheme = $scheme;
 
-       if ( !in_array($scheme, array('http', 'https')) )
+       if ( !in_array( $scheme, array( 'http', 'https', 'relative' ) ) )
                $scheme = is_ssl() && !is_admin() ? 'https' : 'http';
 
                $scheme = is_ssl() && !is_admin() ? 'https' : 'http';
 
-       $url = $scheme . '://' . $current_site->domain . $current_site->path;
+       if ( 'relative' == $scheme )
+               $url = $current_site->path;
+       else
+               $url = $scheme . '://' . $current_site->domain . $current_site->path;
 
        if ( !empty( $path ) && is_string( $path ) && strpos( $path, '..' ) === false )
                $url .= ltrim( $path, '/' );
 
        if ( !empty( $path ) && is_string( $path ) && strpos( $path, '..' ) === false )
                $url .= ltrim( $path, '/' );
@@ -2184,10 +2197,40 @@ function self_admin_url($path = '', $scheme = 'admin') {
                return admin_url($path, $scheme);
 }
 
                return admin_url($path, $scheme);
 }
 
+/**
+ * Set the scheme for a URL
+ *
+ * @since 3.4.0
+ *
+ * @param string $url Absolute url that includes a scheme
+ * @param string $scheme Optional. Scheme to give $url. Currently 'http', 'https', 'login', 'login_post', 'admin', or 'relative'.
+ * @return string $url URL with chosen scheme.
+ */
+function set_url_scheme( $url, $scheme = null ) {
+       $orig_scheme = $scheme;
+       if ( ! in_array( $scheme, array( 'http', 'https', 'relative' ) ) ) {
+               if ( ( 'login_post' == $scheme || 'rpc' == $scheme ) && ( force_ssl_login() || force_ssl_admin() ) )
+                       $scheme = 'https';
+               elseif ( ( 'login' == $scheme ) && force_ssl_admin() )
+                       $scheme = 'https';
+               elseif ( ( 'admin' == $scheme ) && force_ssl_admin() )
+                       $scheme = 'https';
+               else
+                       $scheme = ( is_ssl() ? 'https' : 'http' );
+       }
+
+       if ( 'relative' == $scheme )
+               $url = preg_replace( '#^.+://[^/]*#', '', $url );
+       else
+               $url = preg_replace( '#^.+://#', $scheme . '://', $url );
+
+       return apply_filters( 'set_url_scheme', $url, $scheme, $orig_scheme );
+}
+
 /**
  * Get the URL to the user's dashboard.
  *
 /**
  * Get the URL to the user's dashboard.
  *
- * If a user does not belong to any site, the global user dashboard is used.  If the user belongs to the current site,
+ * If a user does not belong to any site, the global user dashboard is used. If the user belongs to the current site,
  * the dashboard for the current site is returned. If the user cannot edit the current site, the dashboard to the user's
  * primary blog is returned.
  *
  * the dashboard for the current site is returned. If the user cannot edit the current site, the dashboard to the user's
  * primary blog is returned.
  *
@@ -2364,7 +2407,7 @@ function the_shortlink( $text = '', $title = '', $before = '', $after = '' ) {
                $text = __('This is the short link.');
 
        if ( empty( $title ) )
                $text = __('This is the short link.');
 
        if ( empty( $title ) )
-               $title = the_title_attribute( array( 'echo' => FALSE ) );
+               $title = the_title_attribute( array( 'echo' => false ) );
 
        $shortlink = wp_get_shortlink( $post->ID );
 
 
        $shortlink = wp_get_shortlink( $post->ID );
 
@@ -2374,5 +2417,3 @@ function the_shortlink( $text = '', $title = '', $before = '', $after = '' ) {
                echo $before, $link, $after;
        }
 }
                echo $before, $link, $after;
        }
 }
-
-?>
index c70eeeb9e18046d597bcbeada4465f6d21799e20..94e6339d279df70097d26030e9c41e7797525b45 100644 (file)
@@ -19,7 +19,7 @@ function wp_unregister_GLOBALS() {
                return;
 
        if ( isset( $_REQUEST['GLOBALS'] ) )
                return;
 
        if ( isset( $_REQUEST['GLOBALS'] ) )
-               die( /*WP_I18N_GLOBALS_OVERWRITE*/'GLOBALS overwrite attempt detected'/*/WP_I18N_GLOBALS_OVERWRITE*/ );
+               die( 'GLOBALS overwrite attempt detected' );
 
        // Variables that shouldn't be unset
        $no_unset = array( 'GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES', 'table_prefix' );
 
        // Variables that shouldn't be unset
        $no_unset = array( 'GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES', 'table_prefix' );
@@ -97,22 +97,21 @@ function wp_fix_server_vars() {
  *
  * Dies if requirements are not met.
  *
  *
  * Dies if requirements are not met.
  *
- * This function must be able to work without a complete environment set up. In wp-load.php, for
- * example, WP_CONTENT_DIR is defined and version.php is included before this function is called.
- *
  * @access private
  * @since 3.0.0
  */
 function wp_check_php_mysql_versions() {
  * @access private
  * @since 3.0.0
  */
 function wp_check_php_mysql_versions() {
-       // we can probably extend this function to check if wp_die() exists then use translated strings, and then use it in install.php etc.
-
        global $required_php_version, $wp_version;
        $php_version = phpversion();
        global $required_php_version, $wp_version;
        $php_version = phpversion();
-       if ( version_compare( $required_php_version, $php_version, '>' ) )
-               die( sprintf( /*WP_I18N_OLD_PHP*/'Your server is running PHP version %1$s but WordPress %2$s requires at least %3$s.'/*/WP_I18N_OLD_PHP*/, $php_version, $wp_version, $required_php_version ) );
+       if ( version_compare( $required_php_version, $php_version, '>' ) ) {
+               wp_load_translations_early();
+               wp_die( sprintf( __( 'Your server is running PHP version %1$s but WordPress %2$s requires at least %3$s.' ), $php_version, $wp_version, $required_php_version ) );
+       }
 
 
-       if ( !extension_loaded( 'mysql' ) && !file_exists( WP_CONTENT_DIR . '/db.php' ) )
-               die( /*WP_I18N_OLD_MYSQL*/'Your PHP installation appears to be missing the MySQL extension which is required by WordPress.'/*/WP_I18N_OLD_MYSQL*/ );
+       if ( ! extension_loaded( 'mysql' ) && ! file_exists( WP_CONTENT_DIR . '/db.php' ) ) {
+               wp_load_translations_early();
+               wp_die( __( 'Your PHP installation appears to be missing the MySQL extension which is required by WordPress.' ) );
+       }
 }
 
 /**
 }
 
 /**
@@ -159,6 +158,8 @@ function wp_maintenance() {
                die();
        }
 
                die();
        }
 
+       wp_load_translations_early();
+
        $protocol = $_SERVER["SERVER_PROTOCOL"];
        if ( 'HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol )
                $protocol = 'HTTP/1.0';
        $protocol = $_SERVER["SERVER_PROTOCOL"];
        if ( 'HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol )
                $protocol = 'HTTP/1.0';
@@ -167,14 +168,14 @@ function wp_maintenance() {
        header( 'Retry-After: 600' );
 ?>
        <!DOCTYPE html>
        header( 'Retry-After: 600' );
 ?>
        <!DOCTYPE html>
-       <html xmlns="http://www.w3.org/1999/xhtml">
+       <html xmlns="http://www.w3.org/1999/xhtml"<?php if ( is_rtl() ) echo ' dir="rtl"'; ?>>
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-               <title><?php echo /*WP_I18N_MAINTENANCE*/'Maintenance'/*/WP_I18N_MAINTENANCE*/; ?></title>
+               <title><?php _e( 'Maintenance' ); ?></title>
 
        </head>
        <body>
 
        </head>
        <body>
-               <h1><?php echo /*WP_I18N_MAINT_MSG*/'Briefly unavailable for scheduled maintenance. Check back in a minute.'/*/WP_I18N_MAINT_MSG*/; ?></h1>
+               <h1><?php _e( 'Briefly unavailable for scheduled maintenance. Check back in a minute.' ); ?></h1>
        </body>
        </html>
 <?php
        </body>
        </html>
 <?php
@@ -182,17 +183,16 @@ function wp_maintenance() {
 }
 
 /**
 }
 
 /**
- * PHP 4 standard microtime start capture.
+ * PHP 5 standard microtime start capture.
  *
  * @access private
  * @since 0.71
  *
  * @access private
  * @since 0.71
- * @global int $timestart Seconds and microseconds added together from when function is called.
+ * @global float $timestart Seconds from when function is called.
  * @return bool Always returns true.
  */
 function timer_start() {
        global $timestart;
  * @return bool Always returns true.
  */
 function timer_start() {
        global $timestart;
-       $mtime = explode( ' ', microtime() );
-       $timestart = $mtime[1] + $mtime[0];
+       $timestart = microtime( true );
        return true;
 }
 
        return true;
 }
 
@@ -213,8 +213,8 @@ function timer_start() {
  * in most cases, you only need to echo it.
  *
  * @since 0.71
  * in most cases, you only need to echo it.
  *
  * @since 0.71
- * @global int $timestart Seconds and microseconds added together from when timer_start() is called
- * @global int $timeend Seconds and microseconds added together from when function is called
+ * @global float $timestart Seconds from when timer_start() is called
+ * @global float $timeend Seconds from when function is called
  *
  * @param int $display Use '0' or null to not echo anything and 1 to echo the total time
  * @param int $precision The amount of digits from the right of the decimal to display. Default is 3.
  *
  * @param int $display Use '0' or null to not echo anything and 1 to echo the total time
  * @param int $precision The amount of digits from the right of the decimal to display. Default is 3.
@@ -222,9 +222,7 @@ function timer_start() {
  */
 function timer_stop( $display = 0, $precision = 3 ) { // if called like timer_stop(1), will echo $timetotal
        global $timestart, $timeend;
  */
 function timer_stop( $display = 0, $precision = 3 ) { // if called like timer_stop(1), will echo $timetotal
        global $timestart, $timeend;
-       $mtime = microtime();
-       $mtime = explode( ' ', $mtime );
-       $timeend = $mtime[1] + $mtime[0];
+       $timeend = microtime( true );
        $timetotal = $timeend - $timestart;
        $r = ( function_exists( 'number_format_i18n' ) ) ? number_format_i18n( $timetotal, $precision ) : number_format( $timetotal, $precision );
        if ( $display )
        $timetotal = $timeend - $timestart;
        $r = ( function_exists( 'number_format_i18n' ) ) ? number_format_i18n( $timetotal, $precision ) : number_format( $timetotal, $precision );
        if ( $display )
@@ -367,8 +365,10 @@ function wp_set_wpdb_vars() {
 
        $prefix = $wpdb->set_prefix( $table_prefix );
 
 
        $prefix = $wpdb->set_prefix( $table_prefix );
 
-       if ( is_wp_error( $prefix ) )
-               wp_die( /*WP_I18N_BAD_PREFIX*/'<strong>ERROR</strong>: <code>$table_prefix</code> in <code>wp-config.php</code> can only contain numbers, letters, and underscores.'/*/WP_I18N_BAD_PREFIX*/ );
+       if ( is_wp_error( $prefix ) ) {
+               wp_load_translations_early();
+               wp_die( __( '<strong>ERROR</strong>: <code>$table_prefix</code> in <code>wp-config.php</code> can only contain numbers, letters, and underscores.' ) );
+       }
 }
 
 /**
 }
 
 /**
@@ -568,7 +568,7 @@ function shutdown_action_hook() {
  */
 
 function wp_clone( $object ) {
  */
 
 function wp_clone( $object ) {
-       // Use parens for clone to accommodate PHP 4.  See #17880
+       // Use parens for clone to accommodate PHP 4. See #17880
        return clone( $object );
 }
 
        return clone( $object );
 }
 
@@ -653,4 +653,86 @@ function is_multisite() {
        return false;
 }
 
        return false;
 }
 
-?>
+/**
+ * Attempts an early load of translations.
+ *
+ * Used for errors encountered during the initial loading process, before the locale has been
+ * properly detected and loaded.
+ *
+ * Designed for unusual load sequences (like setup-config.php) or for when the script will then
+ * terminate with an error, otherwise there is a risk that a file can be double-included.
+ *
+ * @since 3.4.0
+ * @access private
+ */
+function wp_load_translations_early() {
+       global $text_direction, $wp_locale;
+
+       static $loaded = false;
+       if ( $loaded )
+               return;
+       $loaded = true;
+
+       if ( function_exists( 'did_action' ) && did_action( 'init' ) )
+               return;
+
+       // We need $wp_local_package
+       require ABSPATH . WPINC . '/version.php';
+
+       // Translation and localization
+       require_once ABSPATH . WPINC . '/pomo/mo.php';
+       require_once ABSPATH . WPINC . '/l10n.php';
+       require_once ABSPATH . WPINC . '/locale.php';
+
+       // General libraries
+       require_once ABSPATH . WPINC . '/functions.php';
+       require_once ABSPATH . WPINC . '/plugin.php';
+
+       $locales = $locations = array();
+
+       while ( true ) {
+               if ( defined( 'WPLANG' ) ) {
+                       if ( '' == WPLANG )
+                               break;
+                       $locales[] = WPLANG;
+               }
+
+               if ( isset( $wp_local_package ) )
+                       $locales[] = $wp_local_package;
+
+               if ( ! $locales )
+                       break;
+
+               if ( defined( 'WP_LANG_DIR' ) && @is_dir( WP_LANG_DIR ) )
+                       $locations[] = WP_LANG_DIR;
+
+               if ( defined( 'WP_CONTENT_DIR' ) && @is_dir( WP_CONTENT_DIR . '/languages' ) )
+                       $locations[] = WP_CONTENT_DIR . '/languages';
+
+               if ( @is_dir( ABSPATH . 'wp-content/languages' ) )
+                       $locations[] = ABSPATH . 'wp-content/languages';
+
+               if ( @is_dir( ABSPATH . WPINC . '/languages' ) )
+                       $locations[] = ABSPATH . WPINC . '/languages';
+
+               if ( ! $locations )
+                       break;
+
+               $locations = array_unique( $locations );
+
+               foreach ( $locales as $locale ) {
+                       foreach ( $locations as $location ) {
+                               if ( file_exists( $location . '/' . $locale . '.mo' ) ) {
+                                       load_textdomain( 'default', $location . '/' . $locale . '.mo' );
+                                       if ( defined( 'WP_SETUP_CONFIG' ) && file_exists( $location . '/admin-' . $locale . '.mo' ) )
+                                               load_textdomain( 'default', $location . '/admin-' . $locale . '.mo' );
+                                       break 2;
+                               }
+                       }
+               }
+
+               break;
+       }
+
+       $wp_locale = new WP_Locale();
+}
index 1b529bae23eb9ccd82acd8dda1c7ceb4b42c0e37..bc5037c723df936a570be9b0929bcf1e9f328e46 100644 (file)
@@ -84,15 +84,6 @@ class WP_Locale {
         */
        var $text_direction = 'ltr';
 
         */
        var $text_direction = 'ltr';
 
-       /**
-        * Imports the global version to the class property.
-        *
-        * @since 2.1.0
-        * @var array
-        * @access private
-        */
-       var $locale_vars = array('text_direction');
-
        /**
         * Sets up the translated strings and object properties.
         *
        /**
         * Sets up the translated strings and object properties.
         *
@@ -113,7 +104,7 @@ class WP_Locale {
                $this->weekday[5] = /* translators: weekday */ __('Friday');
                $this->weekday[6] = /* translators: weekday */ __('Saturday');
 
                $this->weekday[5] = /* translators: weekday */ __('Friday');
                $this->weekday[6] = /* translators: weekday */ __('Saturday');
 
-               // The first letter of each day.  The _%day%_initial suffix is a hack to make
+               // The first letter of each day. The _%day%_initial suffix is a hack to make
                // sure the day initials are unique.
                $this->weekday_initial[__('Sunday')]    = /* translators: one-letter abbreviation of the weekday */ __('S_Sunday_initial');
                $this->weekday_initial[__('Monday')]    = /* translators: one-letter abbreviation of the weekday */ __('M_Monday_initial');
                // sure the day initials are unique.
                $this->weekday_initial[__('Sunday')]    = /* translators: one-letter abbreviation of the weekday */ __('S_Sunday_initial');
                $this->weekday_initial[__('Monday')]    = /* translators: one-letter abbreviation of the weekday */ __('M_Monday_initial');
@@ -186,12 +177,12 @@ class WP_Locale {
                $trans = __('number_format_decimal_point');
                $this->number_format['decimal_point'] = ('number_format_decimal_point' == $trans) ? '.' : $trans;
 
                $trans = __('number_format_decimal_point');
                $this->number_format['decimal_point'] = ('number_format_decimal_point' == $trans) ? '.' : $trans;
 
-               // Import global locale vars set during inclusion of $locale.php.
-               foreach ( (array) $this->locale_vars as $var ) {
-                       if ( isset($GLOBALS[$var]) )
-                               $this->$var = $GLOBALS[$var];
-               }
-
+               // Set text direction.
+               if ( isset( $GLOBALS['text_direction'] ) )
+                       $this->text_direction = $GLOBALS['text_direction'];
+               /* translators: 'rtl' or 'ltr'. This sets the text direction for WordPress. */
+               elseif ( 'rtl' == _x( 'ltr', 'text direction' ) )
+                       $this->text_direction = 'rtl';
        }
 
        /**
        }
 
        /**
@@ -326,15 +317,16 @@ class WP_Locale {
                $this->init();
                $this->register_globals();
        }
                $this->init();
                $this->register_globals();
        }
+
        /**
         * Checks if current locale is RTL.
         *
         * @since 3.0.0
         * @return bool Whether locale is RTL.
         */
        /**
         * Checks if current locale is RTL.
         *
         * @since 3.0.0
         * @return bool Whether locale is RTL.
         */
-        function is_rtl() {
-               return 'rtl' == $this->text_direction;
-        }
+       function is_rtl() {
+               return 'rtl' == $this->text_direction;
+       }
 }
 
 /**
 }
 
 /**
@@ -347,5 +339,3 @@ function is_rtl() {
        global $wp_locale;
        return $wp_locale->is_rtl();
 }
        global $wp_locale;
        return $wp_locale->is_rtl();
 }
-
-?>
index 5ec0338fcb55d7cf8253c19149705228874f16ea..1a933edf59ddc5cd72a4f0cfd092260146740ab5 100644 (file)
@@ -53,9 +53,9 @@ function image_constrain_size_for_editor($width, $height, $size = 'medium') {
                // if no width is set, default to the theme content width if available
        }
        elseif ( $size == 'large' ) {
                // if no width is set, default to the theme content width if available
        }
        elseif ( $size == 'large' ) {
-               // we're inserting a large size image into the editor.  if it's a really
+               // We're inserting a large size image into the editor. If it's a really
                // big image we'll scale it down to fit reasonably within the editor
                // big image we'll scale it down to fit reasonably within the editor
-               // itself, and within the theme's content width if it's known.  the user
+               // itself, and within the theme's content width if it's known. The user
                // can resize it in the editor if they wish.
                $max_width = intval(get_option('large_size_w'));
                $max_height = intval(get_option('large_size_h'));
                // can resize it in the editor if they wish.
                $max_width = intval(get_option('large_size_w'));
                $max_height = intval(get_option('large_size_h'));
@@ -327,6 +327,8 @@ function wp_constrain_dimensions( $current_width, $current_height, $max_width=0,
  * portion of the image will be cropped out and resized to the required size.
  *
  * @since 2.5.0
  * portion of the image will be cropped out and resized to the required size.
  *
  * @since 2.5.0
+ * @uses apply_filters() Calls 'image_resize_dimensions' on $orig_w, $orig_h, $dest_w, $dest_h and
+ *             $crop to provide custom resize dimensions.
  *
  * @param int $orig_w Original width.
  * @param int $orig_h Original height.
  *
  * @param int $orig_w Original width.
  * @param int $orig_h Original height.
@@ -343,6 +345,11 @@ function image_resize_dimensions($orig_w, $orig_h, $dest_w, $dest_h, $crop = fal
        if ($dest_w <= 0 && $dest_h <= 0)
                return false;
 
        if ($dest_w <= 0 && $dest_h <= 0)
                return false;
 
+       // plugins can use this to provide custom resize dimensions
+       $output = apply_filters( 'image_resize_dimensions', null, $orig_w, $orig_h, $dest_w, $dest_h, $crop );
+       if ( null !== $output )
+               return $output;
+
        if ( $crop ) {
                // crop the largest possible portion of the original image that we can size to $dest_w x $dest_h
                $aspect_ratio = $orig_w / $orig_h;
        if ( $crop ) {
                // crop the largest possible portion of the original image that we can size to $dest_w x $dest_h
                $aspect_ratio = $orig_w / $orig_h;
@@ -455,7 +462,8 @@ function image_resize( $file, $max_w, $max_h, $crop = false, $suffix = null, $de
                        return new WP_Error('resize_path_invalid', __( 'Resize path invalid' ));
        } else {
                // all other formats are converted to jpg
                        return new WP_Error('resize_path_invalid', __( 'Resize path invalid' ));
        } else {
                // all other formats are converted to jpg
-               $destfilename = "{$dir}/{$name}-{$suffix}.jpg";
+               if ( 'jpg' != $ext && 'jpeg' != $ext )
+                       $destfilename = "{$dir}/{$name}-{$suffix}.jpg";
                if ( !imagejpeg( $newimage, $destfilename, apply_filters( 'jpeg_quality', $jpeg_quality, 'image_resize' ) ) )
                        return new WP_Error('resize_path_invalid', __( 'Resize path invalid' ));
        }
                if ( !imagejpeg( $newimage, $destfilename, apply_filters( 'jpeg_quality', $jpeg_quality, 'image_resize' ) ) )
                        return new WP_Error('resize_path_invalid', __( 'Resize path invalid' ));
        }
@@ -724,6 +732,13 @@ add_shortcode('caption', 'img_caption_shortcode');
  * @return string
  */
 function img_caption_shortcode($attr, $content = null) {
  * @return string
  */
 function img_caption_shortcode($attr, $content = null) {
+       // New-style shortcode with the caption inside the shortcode with the link and image tags.
+       if ( ! isset( $attr['caption'] ) ) {
+               if ( preg_match( '#((?:<a [^>]+>\s*)?<img [^>]+>(?:\s*</a>)?)(.*)#is', $content, $matches ) ) {
+                       $content = $matches[1];
+                       $attr['caption'] = trim( $matches[2] );
+               }
+       }
 
        // Allow plugins/themes to override the default caption template.
        $output = apply_filters('img_caption_shortcode', '', $attr, $content);
 
        // Allow plugins/themes to override the default caption template.
        $output = apply_filters('img_caption_shortcode', '', $attr, $content);
@@ -1096,7 +1111,7 @@ class WP_Embed {
 <script type="text/javascript">
 /* <![CDATA[ */
        jQuery(document).ready(function($){
 <script type="text/javascript">
 /* <![CDATA[ */
        jQuery(document).ready(function($){
-               $.get("<?php echo admin_url( 'admin-ajax.php?action=oembed-cache&post=' . $post_ID ); ?>");
+               $.get("<?php echo admin_url( 'admin-ajax.php?action=oembed-cache&post=' . $post_ID, 'relative' ); ?>");
        });
 /* ]]> */
 </script>
        });
 /* ]]> */
 </script>
@@ -1378,7 +1393,7 @@ function wp_expand_dimensions( $example_width, $example_height, $max_width, $max
  *
  * @param string $url The URL that should be embedded.
  * @param array $args Additional arguments and parameters.
  *
  * @param string $url The URL that should be embedded.
  * @param array $args Additional arguments and parameters.
- * @return string The original URL on failure or the embed HTML on success.
+ * @return bool|string False on failure or the embed HTML on success.
  */
 function wp_oembed_get( $url, $args = '' ) {
        require_once( ABSPATH . WPINC . '/class-oembed.php' );
  */
 function wp_oembed_get( $url, $args = '' ) {
        require_once( ABSPATH . WPINC . '/class-oembed.php' );
@@ -1442,4 +1457,53 @@ function wp_embed_handler_googlevideo( $matches, $attr, $url, $rawattr ) {
        return apply_filters( 'embed_googlevideo', '<embed type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docid=' . esc_attr($matches[2]) . '&amp;hl=en&amp;fs=true" style="width:' . esc_attr($width) . 'px;height:' . esc_attr($height) . 'px" allowFullScreen="true" allowScriptAccess="always" />', $matches, $attr, $url, $rawattr );
 }
 
        return apply_filters( 'embed_googlevideo', '<embed type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docid=' . esc_attr($matches[2]) . '&amp;hl=en&amp;fs=true" style="width:' . esc_attr($width) . 'px;height:' . esc_attr($height) . 'px" allowFullScreen="true" allowScriptAccess="always" />', $matches, $attr, $url, $rawattr );
 }
 
-?>
\ No newline at end of file
+/**
+ * Prints default plupload arguments.
+ *
+ * @since 3.4.0
+ */
+function wp_plupload_default_settings() {
+       global $wp_scripts;
+
+       $max_upload_size = wp_max_upload_size();
+
+       $defaults = array(
+               'runtimes'            => 'html5,silverlight,flash,html4',
+               'file_data_name'      => 'async-upload', // key passed to $_FILE.
+               'multiple_queues'     => true,
+               'max_file_size'       => $max_upload_size . 'b',
+               'url'                 => admin_url( 'admin-ajax.php', 'relative' ),
+               'flash_swf_url'       => includes_url( 'js/plupload/plupload.flash.swf' ),
+               'silverlight_xap_url' => includes_url( 'js/plupload/plupload.silverlight.xap' ),
+               'filters'             => array( array( 'title' => __( 'Allowed Files' ), 'extensions' => '*') ),
+               'multipart'           => true,
+               'urlstream_upload'    => true,
+       );
+
+       $defaults = apply_filters( 'plupload_default_settings', $defaults );
+
+       $params = array(
+               'action' => 'upload-attachment',
+       );
+
+       $params = apply_filters( 'plupload_default_params', $params );
+       $params['_wpnonce'] = wp_create_nonce( 'media-form' );
+       $defaults['multipart_params'] = $params;
+
+       $settings = array(
+               'defaults' => $defaults,
+               'browser'  => array(
+                       'mobile'    => wp_is_mobile(),
+                       'supported' => _device_can_upload(),
+               ),
+       );
+
+       $script = 'var _wpPluploadSettings = ' . json_encode( $settings ) . ';';
+
+       $data = $wp_scripts->get_data( 'wp-plupload', 'data' );
+       if ( $data )
+               $script = "$data\n$script";
+
+       $wp_scripts->add_data( 'wp-plupload', 'data', $script );
+}
+add_action( 'customize_controls_enqueue_scripts', 'wp_plupload_default_settings' );
index a318bbe21c090100dfa46734e718abf3e8cfaee2..d6984f6200b25b831c8db33803e76aae008880d4 100644 (file)
@@ -2,8 +2,8 @@
 /**
  * Metadata API
  *
 /**
  * Metadata API
  *
- * Functions for retrieving and manipulating metadata of various WordPress object types.  Metadata
- * for an object is a represented by a simple key-value pair.  Objects may contain multiple
+ * Functions for retrieving and manipulating metadata of various WordPress object types. Metadata
+ * for an object is a represented by a simple key-value pair. Objects may contain multiple
  * metadata entries that share the same key and differ only in their value.
  *
  * @package WordPress
  * metadata entries that share the same key and differ only in their value.
  *
  * @package WordPress
@@ -23,8 +23,8 @@
  * @param int $object_id ID of the object metadata is for
  * @param string $meta_key Metadata key
  * @param string $meta_value Metadata value
  * @param int $object_id ID of the object metadata is for
  * @param string $meta_key Metadata key
  * @param string $meta_value Metadata value
- * @param bool $unique Optional, default is false.  Whether the specified metadata key should be
- *             unique for the object.  If true, and the object already has a value for the specified
+ * @param bool $unique Optional, default is false. Whether the specified metadata key should be
+ *             unique for the object. If true, and the object already has a value for the specified
  *             metadata key, no change will be made
  * @return bool The meta ID on successful update, false on failure.
  */
  *             metadata key, no change will be made
  * @return bool The meta ID on successful update, false on failure.
  */
@@ -80,7 +80,7 @@ function add_metadata($meta_type, $object_id, $meta_key, $meta_value, $unique =
 }
 
 /**
 }
 
 /**
- * Update metadata for the specified object.  If no value already exists for the specified object
+ * Update metadata for the specified object. If no value already exists for the specified object
  * ID and metadata key, the metadata will be added.
  *
  * @since 2.9.0
  * ID and metadata key, the metadata will be added.
  *
  * @since 2.9.0
@@ -94,8 +94,8 @@ function add_metadata($meta_type, $object_id, $meta_key, $meta_value, $unique =
  * @param int $object_id ID of the object metadata is for
  * @param string $meta_key Metadata key
  * @param string $meta_value Metadata value
  * @param int $object_id ID of the object metadata is for
  * @param string $meta_key Metadata key
  * @param string $meta_value Metadata value
- * @param string $prev_value Optional.  If specified, only update existing metadata entries with
- *             the specified value.  Otherwise, update all entries.
+ * @param string $prev_value Optional. If specified, only update existing metadata entries with
+ *             the specified value. Otherwise, update all entries.
  * @return bool True on successful update, false on failure.
  */
 function update_metadata($meta_type, $object_id, $meta_key, $meta_value, $prev_value = '') {
  * @return bool True on successful update, false on failure.
  */
 function update_metadata($meta_type, $object_id, $meta_key, $meta_value, $prev_value = '') {
@@ -174,10 +174,10 @@ function update_metadata($meta_type, $object_id, $meta_key, $meta_value, $prev_v
  * @param string $meta_type Type of object metadata is for (e.g., comment, post, or user)
  * @param int $object_id ID of the object metadata is for
  * @param string $meta_key Metadata key
  * @param string $meta_type Type of object metadata is for (e.g., comment, post, or user)
  * @param int $object_id ID of the object metadata is for
  * @param string $meta_key Metadata key
- * @param string $meta_value Optional. Metadata value.  If specified, only delete metadata entries
- *             with this value.  Otherwise, delete all entries with the specified meta_key.
- * @param bool $delete_all Optional, default is false.  If true, delete matching metadata entries
- *             for all objects, ignoring the specified object_id.  Otherwise, only delete matching
+ * @param string $meta_value Optional. Metadata value. If specified, only delete metadata entries
+ *             with this value. Otherwise, delete all entries with the specified meta_key.
+ * @param bool $delete_all Optional, default is false. If true, delete matching metadata entries
+ *             for all objects, ignoring the specified object_id. Otherwise, only delete matching
  *             metadata entries for the specified object_id.
  * @return bool True on successful delete, false on failure.
  */
  *             metadata entries for the specified object_id.
  * @return bool True on successful delete, false on failure.
  */
@@ -223,6 +223,7 @@ function delete_metadata($meta_type, $object_id, $meta_key, $meta_value = '', $d
 
        do_action( "delete_{$meta_type}_meta", $meta_ids, $object_id, $meta_key, $_meta_value );
 
 
        do_action( "delete_{$meta_type}_meta", $meta_ids, $object_id, $meta_key, $_meta_value );
 
+       // Old-style action.
        if ( 'post' == $meta_type )
                do_action( 'delete_postmeta', $meta_ids );
 
        if ( 'post' == $meta_type )
                do_action( 'delete_postmeta', $meta_ids );
 
@@ -243,6 +244,7 @@ function delete_metadata($meta_type, $object_id, $meta_key, $meta_value = '', $d
 
        do_action( "deleted_{$meta_type}_meta", $meta_ids, $object_id, $meta_key, $_meta_value );
 
 
        do_action( "deleted_{$meta_type}_meta", $meta_ids, $object_id, $meta_key, $_meta_value );
 
+       // Old-style action.
        if ( 'post' == $meta_type )
                do_action( 'deleted_postmeta', $meta_ids );
 
        if ( 'post' == $meta_type )
                do_action( 'deleted_postmeta', $meta_ids );
 
@@ -256,10 +258,10 @@ function delete_metadata($meta_type, $object_id, $meta_key, $meta_value = '', $d
  *
  * @param string $meta_type Type of object metadata is for (e.g., comment, post, or user)
  * @param int $object_id ID of the object metadata is for
  *
  * @param string $meta_type Type of object metadata is for (e.g., comment, post, or user)
  * @param int $object_id ID of the object metadata is for
- * @param string $meta_key Optional.  Metadata key.  If not specified, retrieve all metadata for
+ * @param string $meta_key Optional. Metadata key. If not specified, retrieve all metadata for
  *             the specified object.
  *             the specified object.
- * @param bool $single Optional, default is false.  If true, return only the first value of the
- *             specified meta_key.  This parameter has no effect if meta_key is not specified.
+ * @param bool $single Optional, default is false. If true, return only the first value of the
+ *             specified meta_key. This parameter has no effect if meta_key is not specified.
  * @return string|array Single metadata value, or array of values
  */
 function get_metadata($meta_type, $object_id, $meta_key = '', $single = false) {
  * @return string|array Single metadata value, or array of values
  */
 function get_metadata($meta_type, $object_id, $meta_key = '', $single = false) {
@@ -485,19 +487,21 @@ function delete_metadata_by_mid( $meta_type, $meta_id ) {
 
                do_action( "delete_{$meta_type}_meta", (array) $meta_id, $object_id, $meta->meta_key, $meta->meta_value );
 
 
                do_action( "delete_{$meta_type}_meta", (array) $meta_id, $object_id, $meta->meta_key, $meta->meta_value );
 
-               if ( 'post' == $meta_type )
-                       do_action( 'delete_postmeta', $meta_id );
+               // Old-style action.
+               if ( 'post' == $meta_type || 'comment' == $meta_type )
+                       do_action( "delete_{$meta_type}meta", $meta_id );
 
                // Run the query, will return true if deleted, false otherwise
 
                // Run the query, will return true if deleted, false otherwise
-               $result = (bool) $wpdb->query( $wpdb->prepare( "DELETE FROM $table WHERE $id_column = %d LIMIT 1;", $meta_id ) );
+               $result = (bool) $wpdb->delete( $table, array( $id_column => $meta_id ) );
 
                // Clear the caches.
                wp_cache_delete($object_id, $meta_type . '_meta');
 
                do_action( "deleted_{$meta_type}_meta", (array) $meta_id, $object_id, $meta->meta_key, $meta->meta_value );
 
 
                // Clear the caches.
                wp_cache_delete($object_id, $meta_type . '_meta');
 
                do_action( "deleted_{$meta_type}_meta", (array) $meta_id, $object_id, $meta->meta_key, $meta->meta_value );
 
-               if ( 'post' == $meta_type )
-                       do_action( 'deleted_postmeta', $meta_id );
+               // Old-style action.
+               if ( 'post' == $meta_type || 'comment' == $meta_type )
+                       do_action( "deleted_{$meta_type}meta", $meta_id );
 
                return $result;
 
 
                return $result;
 
@@ -861,5 +865,3 @@ function register_meta( $meta_type, $meta_key, $sanitize_callback, $auth_callbac
        if ( is_callable( $auth_callback ) )
                add_filter( "auth_{$meta_type}_meta_{$meta_key}", $auth_callback, 10, 6 );
 }
        if ( is_callable( $auth_callback ) )
                add_filter( "auth_{$meta_type}_meta_{$meta_key}", $auth_callback, 10, 6 );
 }
-
-?>
index 0bd6a92b858a1973bc7080dfb5a65f4f6746dd97..8f66aaddc35132882f27e752eb7769697e1757fe 100644 (file)
@@ -252,6 +252,8 @@ function refresh_blog_details( $blog_id ) {
        wp_cache_delete( md5( $details->domain . $details->path )  , 'blog-lookup' );
        wp_cache_delete( 'current_blog_' . $details->domain, 'site-options' );
        wp_cache_delete( 'current_blog_' . $details->domain . $details->path, 'site-options' );
        wp_cache_delete( md5( $details->domain . $details->path )  , 'blog-lookup' );
        wp_cache_delete( 'current_blog_' . $details->domain, 'site-options' );
        wp_cache_delete( 'current_blog_' . $details->domain . $details->path, 'site-options' );
+
+       do_action( 'refresh_blog_details', $blog_id );
 }
 
 /**
 }
 
 /**
@@ -709,4 +711,23 @@ function _update_blog_date_on_post_publish( $new_status, $old_status, $post ) {
        wpmu_update_blogs_date();
 }
 
        wpmu_update_blogs_date();
 }
 
-?>
+/**
+ * Handler for updating the blog date when a published post is deleted.
+ *
+ * @since 3.4.0
+ *
+ * @param int $post_id Post ID
+ */
+function _update_blog_date_on_post_delete( $post_id ) {
+       $post = get_post( $post_id );
+
+       $post_type_obj = get_post_type_object( $post->post_type );
+       if ( ! $post_type_obj->public )
+               return;
+
+       if ( 'publish' != $post->post_status )
+               return;
+
+       wpmu_update_blogs_date();
+}
+
index 12dc661a37b550e1f3906a311d7f6b203cadb827..cc341b140ca0d0311fb9f75b50da05048a209dc0 100644 (file)
@@ -136,5 +136,3 @@ function ms_subdomain_constants() {
        }
 }
 add_action( 'init', 'ms_subdomain_constants' );
        }
 }
 add_action( 'init', 'ms_subdomain_constants' );
-
-?>
index 9e42f62d215d001014f78df2dac584a72d294dee..44d8294ac5e81e2d77a3d7211564db7f4fde3b16 100644 (file)
@@ -35,7 +35,7 @@ add_filter( 'allowed_redirect_hosts', 'redirect_this_site' );
 // Administration
 add_filter( 'term_id_filter', 'global_terms', 10, 2 );
 add_action( 'publish_post', 'update_posts_count' );
 // Administration
 add_filter( 'term_id_filter', 'global_terms', 10, 2 );
 add_action( 'publish_post', 'update_posts_count' );
-add_action( 'delete_post', 'wpmu_update_blogs_date' );
+add_action( 'delete_post', '_update_blog_date_on_post_delete' );
 add_action( 'transition_post_status', '_update_blog_date_on_post_publish', 10, 3 );
 add_action( 'admin_init', 'wp_schedule_update_network_counts');
 add_action( 'update_network_counts', 'wp_update_network_counts');
 add_action( 'transition_post_status', '_update_blog_date_on_post_publish', 10, 3 );
 add_action( 'admin_init', 'wp_schedule_update_network_counts');
 add_action( 'update_network_counts', 'wp_update_network_counts');
@@ -60,5 +60,3 @@ add_filter( 'force_filtered_html_on_import', '__return_true' );
 // WP_HOME and WP_SITEURL should not have any effect in MS
 remove_filter( 'option_siteurl', '_config_wp_siteurl' );
 remove_filter( 'option_home',    '_config_wp_home'    );
 // WP_HOME and WP_SITEURL should not have any effect in MS
 remove_filter( 'option_siteurl', '_config_wp_siteurl' );
 remove_filter( 'option_home',    '_config_wp_home'    );
-
-?>
index 9b910b72e0aa3371cbcab3831898e069ccb0858f..9b9c43f9d6cf0e35c2ff8c1d4a8ce0da4d7f3f46 100644 (file)
@@ -49,7 +49,7 @@ function is_site_admin( $user_login = '' ) {
                        return false;
        } else {
                $user = get_user_by( 'login', $user_login );
                        return false;
        } else {
                $user = get_user_by( 'login', $user_login );
-               if ( empty( $user->ID ) )
+               if ( ! $user->exists() )
                        return false;
                $user_id = $user->ID;
        }
                        return false;
                $user_id = $user->ID;
        }
@@ -270,5 +270,3 @@ function wpmu_admin_redirect_add_updated_param( $url = '' ) {
        }
        return $url;
 }
        }
        return $url;
 }
-
-?>
\ No newline at end of file
index e7ab0a4cccae0172f1220ce9756f58a51786d895..100ba2c6d19b14cf3eaae92aa4a667942c59034f 100644 (file)
@@ -80,4 +80,3 @@ if ( ( $client_last_modified && $client_etag )
 
 // If we made it this far, just serve the file
 readfile( $file );
 
 // If we made it this far, just serve the file
 readfile( $file );
-?>
index c9cd15fd7091a2d213826d084ca67fdab4ef52dd..f4fe306b7d6df4ae483c05f02fa1add92dcbbbb7 100644 (file)
@@ -185,7 +185,7 @@ function add_user_to_blog( $blog_id, $user_id, $role ) {
 
        $user = new WP_User($user_id);
 
 
        $user = new WP_User($user_id);
 
-       if ( empty( $user->ID ) ) {
+       if ( ! $user->exists() ) {
                restore_current_blog();
                return new WP_Error('user_does_not_exist', __('That user does not exist.'));
        }
                restore_current_blog();
                return new WP_Error('user_does_not_exist', __('That user does not exist.'));
        }
@@ -247,7 +247,7 @@ function remove_user_from_blog($user_id, $blog_id = '', $reassign = '') {
 
        // wp_revoke_user($user_id);
        $user = new WP_User($user_id);
 
        // wp_revoke_user($user_id);
        $user = new WP_User($user_id);
-       if ( empty( $user->ID ) ) {
+       if ( ! $user->exists() ) {
                restore_current_blog();
                return new WP_Error('user_does_not_exist', __('That user does not exist.'));
        }
                restore_current_blog();
                return new WP_Error('user_does_not_exist', __('That user does not exist.'));
        }
@@ -279,8 +279,8 @@ function remove_user_from_blog($user_id, $blog_id = '', $reassign = '') {
  *
  * @param string $domain The new blog's domain.
  * @param string $path The new blog's path.
  *
  * @param string $domain The new blog's domain.
  * @param string $path The new blog's path.
- * @param string $string The new blog's title.
- * @param int $site Optional. Defaults to 1.
+ * @param string $weblog_title The new blog's title.
+ * @param int $site_id Optional. Defaults to 1.
  * @return int The ID of the newly created blog
  */
 function create_empty_blog( $domain, $path, $weblog_title, $site_id = 1 ) {
  * @return int The ID of the newly created blog
  */
 function create_empty_blog( $domain, $path, $weblog_title, $site_id = 1 ) {
@@ -436,10 +436,8 @@ function wpmu_validate_user_signup($user_name, $user_email) {
 
        $orig_username = $user_name;
        $user_name = preg_replace( '/\s+/', '', sanitize_user( $user_name, true ) );
 
        $orig_username = $user_name;
        $user_name = preg_replace( '/\s+/', '', sanitize_user( $user_name, true ) );
-       $maybe = array();
-       preg_match( '/[a-z0-9]+/', $user_name, $maybe );
 
 
-       if ( $user_name != $orig_username || $user_name != $maybe[0] ) {
+       if ( $user_name != $orig_username || preg_match( '/[^a-z0-9]/', $user_name ) ) {
                $errors->add( 'user_name', __( 'Only lowercase letters (a-z) and numbers are allowed.' ) );
                $user_name = $orig_username;
        }
                $errors->add( 'user_name', __( 'Only lowercase letters (a-z) and numbers are allowed.' ) );
                $user_name = $orig_username;
        }
@@ -447,7 +445,7 @@ function wpmu_validate_user_signup($user_name, $user_email) {
        $user_email = sanitize_email( $user_email );
 
        if ( empty( $user_name ) )
        $user_email = sanitize_email( $user_email );
 
        if ( empty( $user_name ) )
-               $errors->add('user_name', __('Please enter a username'));
+               $errors->add('user_name', __( 'Please enter a username.' ) );
 
        $illegal_names = get_site_option( 'illegal_names' );
        if ( is_array( $illegal_names ) == false ) {
 
        $illegal_names = get_site_option( 'illegal_names' );
        if ( is_array( $illegal_names ) == false ) {
@@ -455,13 +453,13 @@ function wpmu_validate_user_signup($user_name, $user_email) {
                add_site_option( 'illegal_names', $illegal_names );
        }
        if ( in_array( $user_name, $illegal_names ) == true )
                add_site_option( 'illegal_names', $illegal_names );
        }
        if ( in_array( $user_name, $illegal_names ) == true )
-               $errors->add('user_name',  __('That username is not allowed'));
+               $errors->add('user_name',  __( 'That username is not allowed.' ) );
 
        if ( is_email_address_unsafe( $user_email ) )
                $errors->add('user_email',  __('You cannot use that email address to signup. We are having problems with them blocking some of our email. Please use another email provider.'));
 
        if ( strlen( $user_name ) < 4 )
 
        if ( is_email_address_unsafe( $user_email ) )
                $errors->add('user_email',  __('You cannot use that email address to signup. We are having problems with them blocking some of our email. Please use another email provider.'));
 
        if ( strlen( $user_name ) < 4 )
-               $errors->add('user_name',  __('Username must be at least 4 characters'));
+               $errors->add('user_name',  __( 'Username must be at least 4 characters.' ) );
 
        if ( strpos( ' ' . $user_name, '_' ) != false )
                $errors->add( 'user_name', __( 'Sorry, usernames may not contain the character &#8220;_&#8221;!' ) );
 
        if ( strpos( ' ' . $user_name, '_' ) != false )
                $errors->add( 'user_name', __( 'Sorry, usernames may not contain the character &#8220;_&#8221;!' ) );
@@ -473,7 +471,7 @@ function wpmu_validate_user_signup($user_name, $user_email) {
                $errors->add('user_name', __('Sorry, usernames must have letters too!'));
 
        if ( !is_email( $user_email ) )
                $errors->add('user_name', __('Sorry, usernames must have letters too!'));
 
        if ( !is_email( $user_email ) )
-               $errors->add('user_email', __('Please enter a correct email address'));
+               $errors->add('user_email', __( 'Please enter a correct email address.' ) );
 
        $limited_email_domains = get_site_option( 'limited_email_domains' );
        if ( is_array( $limited_email_domains ) && empty( $limited_email_domains ) == false ) {
 
        $limited_email_domains = get_site_option( 'limited_email_domains' );
        if ( is_array( $limited_email_domains ) && empty( $limited_email_domains ) == false ) {
@@ -498,7 +496,7 @@ function wpmu_validate_user_signup($user_name, $user_email) {
                $diff = $now - $registered_at;
                // If registered more than two days ago, cancel registration and let this signup go through.
                if ( $diff > 172800 )
                $diff = $now - $registered_at;
                // If registered more than two days ago, cancel registration and let this signup go through.
                if ( $diff > 172800 )
-                       $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->signups WHERE user_login = %s", $user_name) );
+                       $wpdb->delete( $wpdb->signups, array( 'user_login' => $user_name ) );
                else
                        $errors->add('user_name', __('That username is currently reserved but may be available in a couple of days.'));
 
                else
                        $errors->add('user_name', __('That username is currently reserved but may be available in a couple of days.'));
 
@@ -511,7 +509,7 @@ function wpmu_validate_user_signup($user_name, $user_email) {
                $diff = current_time( 'timestamp', true ) - mysql2date('U', $signup->registered);
                // If registered more than two days ago, cancel registration and let this signup go through.
                if ( $diff > 172800 )
                $diff = current_time( 'timestamp', true ) - mysql2date('U', $signup->registered);
                // If registered more than two days ago, cancel registration and let this signup go through.
                if ( $diff > 172800 )
-                       $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->signups WHERE user_email = %s", $user_email) );
+                       $wpdb->delete( $wpdb->signups, array( 'user_email' => $user_email ) );
                else
                        $errors->add('user_email', __('That email address has already been used. Please check your inbox for an activation email. It will become available in a couple of days if you do nothing.'));
        }
                else
                        $errors->add('user_email', __('That email address has already been used. Please check your inbox for an activation email. It will become available in a couple of days if you do nothing.'));
        }
@@ -561,16 +559,16 @@ function wpmu_validate_blog_signup($blogname, $blog_title, $user = '') {
                $illegal_names = array_merge($illegal_names, apply_filters( 'subdirectory_reserved_names', array( 'page', 'comments', 'blog', 'files', 'feed' ) ) );
 
        if ( empty( $blogname ) )
                $illegal_names = array_merge($illegal_names, apply_filters( 'subdirectory_reserved_names', array( 'page', 'comments', 'blog', 'files', 'feed' ) ) );
 
        if ( empty( $blogname ) )
-               $errors->add('blogname', __('Please enter a site name'));
+               $errors->add('blogname', __( 'Please enter a site name.' ) );
 
        if ( preg_match( '/[^a-z0-9]+/', $blogname ) )
 
        if ( preg_match( '/[^a-z0-9]+/', $blogname ) )
-               $errors->add('blogname', __('Only lowercase letters and numbers allowed'));
+               $errors->add('blogname', __( 'Only lowercase letters and numbers allowed.' ) );
 
        if ( in_array( $blogname, $illegal_names ) == true )
 
        if ( in_array( $blogname, $illegal_names ) == true )
-               $errors->add('blogname',  __('That name is not allowed'));
+               $errors->add('blogname',  __( 'That name is not allowed.' ) );
 
        if ( strlen( $blogname ) < 4 && !is_super_admin() )
 
        if ( strlen( $blogname ) < 4 && !is_super_admin() )
-               $errors->add('blogname',  __('Site name must be at least 4 characters'));
+               $errors->add('blogname',  __( 'Site name must be at least 4 characters.' ) );
 
        if ( strpos( ' ' . $blogname, '_' ) != false )
                $errors->add( 'blogname', __( 'Sorry, site names may not contain the character &#8220;_&#8221;!' ) );
 
        if ( strpos( ' ' . $blogname, '_' ) != false )
                $errors->add( 'blogname', __( 'Sorry, site names may not contain the character &#8220;_&#8221;!' ) );
@@ -590,7 +588,7 @@ function wpmu_validate_blog_signup($blogname, $blog_title, $user = '') {
        $blog_title = stripslashes(  $blog_title );
 
        if ( empty( $blog_title ) )
        $blog_title = stripslashes(  $blog_title );
 
        if ( empty( $blog_title ) )
-               $errors->add('blog_title', __('Please enter a site title'));
+               $errors->add('blog_title', __( 'Please enter a site title.' ) );
 
        // Check if the domain/path has been used already.
        if ( is_subdomain_install() ) {
 
        // Check if the domain/path has been used already.
        if ( is_subdomain_install() ) {
@@ -614,7 +612,7 @@ function wpmu_validate_blog_signup($blogname, $blog_title, $user = '') {
                $diff = current_time( 'timestamp', true ) - mysql2date('U', $signup->registered);
                // If registered more than two days ago, cancel registration and let this signup go through.
                if ( $diff > 172800 )
                $diff = current_time( 'timestamp', true ) - mysql2date('U', $signup->registered);
                // If registered more than two days ago, cancel registration and let this signup go through.
                if ( $diff > 172800 )
-                       $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->signups WHERE domain = %s AND path = %s", $mydomain, $path) );
+                       $wpdb->delete( $wpdb->signups, array( 'domain' => $mydomain , 'path' => $path ) );
                else
                        $errors->add('blogname', __('That site is currently reserved but may be available in a couple days.'));
        }
                else
                        $errors->add('blogname', __('That site is currently reserved but may be available in a couple days.'));
        }
@@ -845,7 +843,7 @@ function wpmu_activate_signup($key) {
                        return new WP_Error( 'already_active', __( 'The site is already active.' ), $signup );
        }
 
                        return new WP_Error( 'already_active', __( 'The site is already active.' ), $signup );
        }
 
-       $meta = unserialize($signup->meta);
+       $meta = maybe_unserialize($signup->meta);
        $user_login = $wpdb->escape($signup->user_login);
        $user_email = $wpdb->escape($signup->user_email);
        $password = wp_generate_password( 12, false );
        $user_login = $wpdb->escape($signup->user_login);
        $user_email = $wpdb->escape($signup->user_email);
        $password = wp_generate_password( 12, false );
@@ -880,7 +878,7 @@ function wpmu_activate_signup($key) {
        // TODO: What to do if we create a user but cannot create a blog?
        if ( is_wp_error($blog_id) ) {
                // If blog is taken, that means a previous attempt to activate this blog failed in between creating the blog and
        // TODO: What to do if we create a user but cannot create a blog?
        if ( is_wp_error($blog_id) ) {
                // If blog is taken, that means a previous attempt to activate this blog failed in between creating the blog and
-               // setting the activation flag.  Let's just set the active flag and instruct the user to reset their password.
+               // setting the activation flag. Let's just set the active flag and instruct the user to reset their password.
                if ( 'blog_taken' == $blog_id->get_error_code() ) {
                        $blog_id->add_data( $signup );
                        $wpdb->update( $wpdb->signups, array( 'active' => 1, 'activated' => $now ), array( 'activation_key' => $key ) );
                if ( 'blog_taken' == $blog_id->get_error_code() ) {
                        $blog_id->add_data( $signup );
                        $wpdb->update( $wpdb->signups, array( 'active' => 1, 'activated' => $now ), array( 'activation_key' => $key ) );
@@ -1044,6 +1042,7 @@ Disable these notifications: %4s' ), $blogname, $siteurl, $_SERVER['REMOTE_ADDR'
  * the notification email.
  *
  * @since MU
  * the notification email.
  *
  * @since MU
+ * @uses apply_filters() Filter newuser_notify_siteadmin to change the content of the email message
  *
  * @param int $user_id The new user's ID.
  * @return bool
  *
  * @param int $user_id The new user's ID.
  * @return bool
@@ -1065,7 +1064,7 @@ Remote IP: %2s
 
 Disable these notifications: %3s'), $user->user_login, $_SERVER['REMOTE_ADDR'], $options_site_url);
 
 
 Disable these notifications: %3s'), $user->user_login, $_SERVER['REMOTE_ADDR'], $options_site_url);
 
-       $msg = apply_filters( 'newuser_notify_siteadmin', $msg );
+       $msg = apply_filters( 'newuser_notify_siteadmin', $msg, $user );
        wp_mail( $email, sprintf(__('New User Registration: %s'), $user->user_login), $msg );
        return true;
 }
        wp_mail( $email, sprintf(__('New User Registration: %s'), $user->user_login), $msg );
        return true;
 }
@@ -1161,8 +1160,9 @@ function install_blog($blog_id, $blog_title = '') {
        $wpdb->update( $wpdb->options, array('option_value' => ''), array('option_name' => 'admin_email') );
 
        // remove all perms
        $wpdb->update( $wpdb->options, array('option_value' => ''), array('option_name' => 'admin_email') );
 
        // remove all perms
-       $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE meta_key = %s", $table_prefix.'user_level') );
-       $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE meta_key = %s", $table_prefix.'capabilities') );
+       $wpdb->delete( $wpdb->usermeta, array( 'meta_key' => $table_prefix.'user_level' ) );
+
+       $wpdb->delete( $wpdb->usermeta, array( 'meta_key' => $table_prefix.'capabilities' ) );
 
        $wpdb->suppress_errors( false );
 }
 
        $wpdb->suppress_errors( false );
 }
@@ -1368,7 +1368,8 @@ function get_most_recent_post_of_user( $user_id ) {
        // Walk through each blog and get the most recent post
        // published by $user_id
        foreach ( (array) $user_blogs as $blog ) {
        // Walk through each blog and get the most recent post
        // published by $user_id
        foreach ( (array) $user_blogs as $blog ) {
-               $recent_post = $wpdb->get_row( $wpdb->prepare("SELECT ID, post_date_gmt FROM {$wpdb->base_prefix}{$blog->userblog_id}_posts WHERE post_author = %d AND post_type = 'post' AND post_status = 'publish' ORDER BY post_date_gmt DESC LIMIT 1", $user_id ), ARRAY_A);
+               $prefix = $wpdb->get_blog_prefix( $blog->userblog_id );
+               $recent_post = $wpdb->get_row( $wpdb->prepare("SELECT ID, post_date_gmt FROM {$prefix}posts WHERE post_author = %d AND post_type = 'post' AND post_status = 'publish' ORDER BY post_date_gmt DESC LIMIT 1", $user_id ), ARRAY_A);
 
                // Make sure we found a post
                if ( isset($recent_post['ID']) ) {
 
                // Make sure we found a post
                if ( isset($recent_post['ID']) ) {
@@ -1459,9 +1460,6 @@ function recurse_dirsize( $directory ) {
 /**
  * Check whether a blog has used its allotted upload space.
  *
 /**
  * Check whether a blog has used its allotted upload space.
  *
- * Used by get_dirsize() to get a directory's size when it contains
- * other directories.
- *
  * @since MU
  * @uses get_dirsize()
  *
  * @since MU
  * @uses get_dirsize()
  *
@@ -1734,9 +1732,9 @@ function maybe_add_existing_user_to_blog() {
                delete_option( 'new_user_' . $key );
 
        if ( empty( $details ) || is_wp_error( add_existing_user_to_blog( $details ) ) )
                delete_option( 'new_user_' . $key );
 
        if ( empty( $details ) || is_wp_error( add_existing_user_to_blog( $details ) ) )
-               wp_die( sprintf(__('An error occurred adding you to this site. Back to the <a href="%s">homepage</a>.'), site_url() ) );
+               wp_die( sprintf(__('An error occurred adding you to this site. Back to the <a href="%s">homepage</a>.'), home_url() ) );
 
 
-       wp_die( sprintf(__('You have been added to this site. Please visit the <a href="%s">homepage</a> or <a href="%s">log in</a> using your username and password.'), site_url(), admin_url() ), __('Success') );
+       wp_die( sprintf(__('You have been added to this site. Please visit the <a href="%s">homepage</a> or <a href="%s">log in</a> using your username and password.'), home_url(), admin_url() ), __('Success') );
 }
 
 /**
 }
 
 /**
@@ -1862,7 +1860,7 @@ function is_user_option_local( $key, $user_id = 0, $blog_id = 0 ) {
        if ( $blog_id == 0 )
                $blog_id = $wpdb->blogid;
 
        if ( $blog_id == 0 )
                $blog_id = $wpdb->blogid;
 
-       $local_key = $wpdb->base_prefix . $blog_id . '_' . $key;
+       $local_key = $wpdb->get_blog_prefix( $blog_id ) . $key;
 
        if ( isset( $current_user->$local_key ) )
                return true;
 
        if ( isset( $current_user->$local_key ) )
                return true;
@@ -1948,7 +1946,7 @@ function filter_SSL( $url ) {
        $arrURL = parse_url( $url );
 
        if ( force_ssl_content() && is_ssl() ) {
        $arrURL = parse_url( $url );
 
        if ( force_ssl_content() && is_ssl() ) {
-               if ( 'http' === $arrURL['scheme'] && 'https' !== $arrURL['scheme'] )
+               if ( 'http' === $arrURL['scheme'] )
                        $url = str_replace( $arrURL['scheme'], 'https', $url );
        }
 
                        $url = str_replace( $arrURL['scheme'], 'https', $url );
        }
 
@@ -1982,5 +1980,3 @@ function wp_update_network_counts() {
        $count = $wpdb->get_var( $wpdb->prepare("SELECT COUNT(ID) as c FROM $wpdb->users WHERE spam = '0' AND deleted = '0'") );
        update_site_option( 'user_count', $count );
 }
        $count = $wpdb->get_var( $wpdb->prepare("SELECT COUNT(ID) as c FROM $wpdb->users WHERE spam = '0' AND deleted = '0'") );
        update_site_option( 'user_count', $count );
 }
-
-?>
\ No newline at end of file
index 5ff0526fdf59411506a87b021b81536cee6eea90..58826e7804e2bbc4db836b46607281203f301f00 100644 (file)
@@ -211,10 +211,12 @@ function wpmu_current_site() {
        }
 
        // Still no dice.
        }
 
        // Still no dice.
+       wp_load_translations_early();
+
        if ( 1 == count( $sites ) )
        if ( 1 == count( $sites ) )
-               wp_die( sprintf( /*WP_I18N_BLOG_DOESNT_EXIST*/'That site does not exist. Please try <a href="%s">%s</a>.'/*/WP_I18N_BLOG_DOESNT_EXIST*/, $sites[0]->domain . $sites[0]->path ) );
+               wp_die( sprintf( __( 'That site does not exist. Please try <a href="%s">%s</a>.' ), 'http://' . $sites[0]->domain . $sites[0]->path ) );
        else
        else
-               wp_die( /*WP_I18N_NO_SITE_DEFINED*/'No site defined on this host. If you are the owner of this site, please check <a href="http://codex.wordpress.org/Debugging_a_WordPress_Network">Debugging a WordPress Network</a> for help.'/*/WP_I18N_NO_SITE_DEFINED*/ );
+               wp_die( __( 'No site defined on this host. If you are the owner of this site, please check <a href="http://codex.wordpress.org/Debugging_a_WordPress_Network">Debugging a WordPress Network</a> for help.' ) );
 }
 
 /**
 }
 
 /**
@@ -228,19 +230,21 @@ function wpmu_current_site() {
 function ms_not_installed() {
        global $wpdb, $domain, $path;
 
 function ms_not_installed() {
        global $wpdb, $domain, $path;
 
-       $title = /*WP_I18N_FATAL_ERROR*/'Error establishing database connection'/*/WP_I18N_FATAL_ERROR*/;
+       wp_load_translations_early();
+
+       $title = __( 'Error establishing database connection' );
        $msg  = '<h1>' . $title . '</h1>';
        if ( ! is_admin() )
                die( $msg );
        $msg  = '<h1>' . $title . '</h1>';
        if ( ! is_admin() )
                die( $msg );
-       $msg .= '<p>' . /*WP_I18N_CONTACT_OWNER*/'If your site does not display, please contact the owner of this network.'/*/WP_I18N_CONTACT_OWNER*/ . '';
-       $msg .= ' ' . /*WP_I18N_CHECK_MYSQL*/'If you are the owner of this network please check that MySQL is running properly and all tables are error free.'/*/WP_I18N_CHECK_MYSQL*/ . '</p>';
+       $msg .= '<p>' . __( 'If your site does not display, please contact the owner of this network.' ) . '';
+       $msg .= ' ' . __( 'If you are the owner of this network please check that MySQL is running properly and all tables are error free.' ) . '</p>';
        if ( false && !$wpdb->get_var( "SHOW TABLES LIKE '$wpdb->site'" ) )
        if ( false && !$wpdb->get_var( "SHOW TABLES LIKE '$wpdb->site'" ) )
-               $msg .= '<p>' . sprintf( /*WP_I18N_TABLES_MISSING_LONG*/'<strong>Database tables are missing.</strong> This means that MySQL is not running, WordPress was not installed properly, or someone deleted <code>%s</code>. You really should look at your database now.'/*/WP_I18N_TABLES_MISSING_LONG*/, $wpdb->site ) . '</p>';
+               $msg .= '<p>' . sprintf( __( '<strong>Database tables are missing.</strong> This means that MySQL is not running, WordPress was not installed properly, or someone deleted <code>%s</code>. You really should look at your database now.' ), $wpdb->site ) . '</p>';
        else
        else
-               $msg .= '<p>' . sprintf( /*WP_I18N_NO_SITE_FOUND*/'<strong>Could not find site <code>%1$s</code>.</strong> Searched for table <code>%2$s</code> in database <code>%3$s</code>. Is that right?'/*/WP_I18N_NO_SITE_FOUND*/, rtrim( $domain . $path, '/' ), $wpdb->blogs, DB_NAME ) . '</p>';
-       $msg .= '<p><strong>' . /*WP_I18N_WHAT_DO_I_DO*/'What do I do now?'/*/WP_I18N_WHAT_DO_I_DO*/ . '</strong> ';
-       $msg .= /*WP_I18N_RTFM*/'Read the <a target="_blank" href="http://codex.wordpress.org/Debugging_a_WordPress_Network">bug report</a> page. Some of the guidelines there may help you figure out what went wrong.'/*/WP_I18N_RTFM*/;
-       $msg .= ' ' . /*WP_I18N_STUCK*/'If you&#8217;re still stuck with this message, then check that your database contains the following tables:'/*/WP_I18N_STUCK*/ . '</p><ul>';
+               $msg .= '<p>' . sprintf( __( '<strong>Could not find site <code>%1$s</code>.</strong> Searched for table <code>%2$s</code> in database <code>%3$s</code>. Is that right?' ), rtrim( $domain . $path, '/' ), $wpdb->blogs, DB_NAME ) . '</p>';
+       $msg .= '<p><strong>' . __( 'What do I do now?' ) . '</strong> ';
+       $msg .= __( 'Read the <a target="_blank" href="http://codex.wordpress.org/Debugging_a_WordPress_Network">bug report</a> page. Some of the guidelines there may help you figure out what went wrong.' );
+       $msg .= ' ' . __( 'If you&#8217;re still stuck with this message, then check that your database contains the following tables:' ) . '</p><ul>';
        foreach ( $wpdb->tables('global') as $t => $table ) {
                if ( 'sitecategories' == $t )
                        continue;
        foreach ( $wpdb->tables('global') as $t => $table ) {
                if ( 'sitecategories' == $t )
                        continue;
@@ -250,5 +254,3 @@ function ms_not_installed() {
 
        wp_die( $msg, $title );
 }
 
        wp_die( $msg, $title );
 }
-
-?>
\ No newline at end of file
index 42df103d41bef47ad422a65ec46fe812de0a0000..5dd460e301ad57298a007ec044a10ca9cd9670b6 100644 (file)
@@ -31,7 +31,8 @@ if ( !isset( $current_site ) || !isset( $current_blog ) ) {
                        $domain = substr( $domain, 0, -4 );
                        $_SERVER['HTTP_HOST'] = substr( $_SERVER['HTTP_HOST'], 0, -4 );
                } else {
                        $domain = substr( $domain, 0, -4 );
                        $_SERVER['HTTP_HOST'] = substr( $_SERVER['HTTP_HOST'], 0, -4 );
                } else {
-                       wp_die( /*WP_I18N_NO_PORT_NUMBER*/'Multisite only works without the port number in the URL.'/*/WP_I18N_NO_PORT_NUMBER*/ );
+                       wp_load_translations_early();
+                       wp_die( __( 'Multisite only works without the port number in the URL.' ) );
                }
        }
 
                }
        }
 
@@ -116,8 +117,9 @@ if ( !isset( $current_site ) || !isset( $current_blog ) ) {
                if ( defined( 'WP_INSTALLING' ) ) {
                        $current_blog->blog_id = $blog_id = 1;
                } else {
                if ( defined( 'WP_INSTALLING' ) ) {
                        $current_blog->blog_id = $blog_id = 1;
                } else {
-                       $msg = ! $wpdb->get_var( "SHOW TABLES LIKE '$wpdb->site'" ) ? ' ' . /*WP_I18N_TABLES_MISSING*/'Database tables are missing.'/*/WP_I18N_TABLES_MISSING*/ : '';
-                       wp_die( /*WP_I18N_NO_BLOG*/'No site by that name on this system.'/*/WP_I18N_NO_BLOG*/ . $msg );
+                       wp_load_translations_early();
+                       $msg = ! $wpdb->get_var( "SHOW TABLES LIKE '$wpdb->site'" ) ? ' ' . __( 'Database tables are missing.' ) : '';
+                       wp_die( __( 'No site by that name on this system.' ) . $msg );
                }
        }
 }
                }
        }
 }
index f412c8db4550ae8359204e6da15ea8c15d86c581..4b9293b1d1307c9e4b5e53b4d12bc1cdc2589617 100644 (file)
@@ -37,7 +37,7 @@ class Walker_Nav_Menu extends Walker {
         * @param string $output Passed by reference. Used to append additional content.
         * @param int $depth Depth of page. Used for padding.
         */
         * @param string $output Passed by reference. Used to append additional content.
         * @param int $depth Depth of page. Used for padding.
         */
-       function start_lvl(&$output, $depth) {
+       function start_lvl( &$output, $depth = 0, $args = array() ) {
                $indent = str_repeat("\t", $depth);
                $output .= "\n$indent<ul class=\"sub-menu\">\n";
        }
                $indent = str_repeat("\t", $depth);
                $output .= "\n$indent<ul class=\"sub-menu\">\n";
        }
@@ -49,7 +49,7 @@ class Walker_Nav_Menu extends Walker {
         * @param string $output Passed by reference. Used to append additional content.
         * @param int $depth Depth of page. Used for padding.
         */
         * @param string $output Passed by reference. Used to append additional content.
         * @param int $depth Depth of page. Used for padding.
         */
-       function end_lvl(&$output, $depth) {
+       function end_lvl( &$output, $depth = 0, $args = array() ) {
                $indent = str_repeat("\t", $depth);
                $output .= "$indent</ul>\n";
        }
                $indent = str_repeat("\t", $depth);
                $output .= "$indent</ul>\n";
        }
@@ -64,7 +64,7 @@ class Walker_Nav_Menu extends Walker {
         * @param int $current_page Menu item ID.
         * @param object $args
         */
         * @param int $current_page Menu item ID.
         * @param object $args
         */
-       function start_el(&$output, $item, $depth, $args) {
+       function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
                global $wp_query;
                $indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
 
                global $wp_query;
                $indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
 
@@ -74,10 +74,10 @@ class Walker_Nav_Menu extends Walker {
                $classes[] = 'menu-item-' . $item->ID;
 
                $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args ) );
                $classes[] = 'menu-item-' . $item->ID;
 
                $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args ) );
-               $class_names = ' class="' . esc_attr( $class_names ) . '"';
+               $class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : '';
 
                $id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args );
 
                $id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args );
-               $id = strlen( $id ) ? ' id="' . esc_attr( $id ) . '"' : '';
+               $id = $id ? ' id="' . esc_attr( $id ) . '"' : '';
 
                $output .= $indent . '<li' . $id . $value . $class_names .'>';
 
 
                $output .= $indent . '<li' . $id . $value . $class_names .'>';
 
@@ -103,7 +103,7 @@ class Walker_Nav_Menu extends Walker {
         * @param object $item Page data object. Not used.
         * @param int $depth Depth of page. Not Used.
         */
         * @param object $item Page data object. Not used.
         * @param int $depth Depth of page. Not Used.
         */
-       function end_el(&$output, $item, $depth) {
+       function end_el( &$output, $item, $depth = 0, $args = array() ) {
                $output .= "</li>\n";
        }
 }
                $output .= "</li>\n";
        }
 }
@@ -113,7 +113,7 @@ class Walker_Nav_Menu extends Walker {
  *
  * Optional $args contents:
  *
  *
  * Optional $args contents:
  *
- * menu - The menu that is desired.  Accepts (matching in order) id, slug, name. Defaults to blank.
+ * menu - The menu that is desired. Accepts (matching in order) id, slug, name. Defaults to blank.
  * menu_class - CSS class to use for the ul element which forms the menu. Defaults to 'menu'.
  * menu_id - The ID that is applied to the ul element which forms the menu. Defaults to the menu slug, incremented.
  * container - Whether to wrap the ul, and what to wrap it with. Defaults to 'div'.
  * menu_class - CSS class to use for the ul element which forms the menu. Defaults to 'menu'.
  * menu_id - The ID that is applied to the ul element which forms the menu. Defaults to the menu slug, incremented.
  * container - Whether to wrap the ul, and what to wrap it with. Defaults to 'div'.
@@ -125,9 +125,9 @@ class Walker_Nav_Menu extends Walker {
  * link_before - Text before the link.
  * link_after - Text after the link.
  * echo - Whether to echo the menu or return it. Defaults to echo.
  * link_before - Text before the link.
  * link_after - Text after the link.
  * echo - Whether to echo the menu or return it. Defaults to echo.
- * depth - how many levels of the hierarchy are to be included.  0 means all.  Defaults to 0.
+ * depth - how many levels of the hierarchy are to be included. 0 means all. Defaults to 0.
  * walker - allows a custom walker to be specified.
  * walker - allows a custom walker to be specified.
- * theme_location - the location in the theme to be used.  Must be registered with register_nav_menu() in order to be selectable by the user.
+ * theme_location - the location in the theme to be used. Must be registered with register_nav_menu() in order to be selectable by the user.
  * items_wrap - How the list items should be wrapped. Defaults to a ul with an id and class. Uses printf() format with numbered placeholders.
  *
  * @since 3.0.0
  * items_wrap - How the list items should be wrapped. Defaults to a ul with an id and class. Uses printf() format with numbered placeholders.
  *
  * @since 3.0.0
index 6a622b27aa21e103ba39d1a1b521014936086eff..361a8de60027d2224aeeeae3731b78b7bbb089bc 100644 (file)
@@ -554,7 +554,7 @@ function wp_get_nav_menu_items( $menu, $args = array() ) {
  * - object:           The type of object originally represented, such as "category," "post", or "attachment."
  * - type_label:       The singular label used to describe this type of menu item.
  * - post_parent:      The DB ID of the original object's parent object, if any (0 otherwise).
  * - object:           The type of object originally represented, such as "category," "post", or "attachment."
  * - type_label:       The singular label used to describe this type of menu item.
  * - post_parent:      The DB ID of the original object's parent object, if any (0 otherwise).
- * - menu_item_parent:         The DB ID of the nav_menu_item that is this item's menu parent, if any.  0 otherwise.
+ * - menu_item_parent:         The DB ID of the nav_menu_item that is this item's menu parent, if any. 0 otherwise.
  * - url:              The URL to which this menu item points.
  * - title:            The title of this menu item.
  * - target:           The target attribute of the link element for this menu item.
  * - url:              The URL to which this menu item points.
  * - title:            The title of this menu item.
  * - target:           The target attribute of the link element for this menu item.
@@ -782,5 +782,3 @@ function _wp_auto_add_pages_to_menu( $new_status, $old_status, $post ) {
                wp_update_nav_menu_item( $menu_id, 0, $args );
        }
 }
                wp_update_nav_menu_item( $menu_id, 0, $args );
        }
 }
-
-?>
diff --git a/wp-includes/option.php b/wp-includes/option.php
new file mode 100644 (file)
index 0000000..33897b6
--- /dev/null
@@ -0,0 +1,1046 @@
+<?php
+/**
+ * Option API
+ *
+ * @package WordPress
+ */
+
+/**
+ * Retrieve option value based on name of option.
+ *
+ * If the option does not exist or does not have a value, then the return value
+ * will be false. This is useful to check whether you need to install an option
+ * and is commonly used during installation of plugin options and to test
+ * whether upgrading is required.
+ *
+ * If the option was serialized then it will be unserialized when it is returned.
+ *
+ * @since 1.5.0
+ * @package WordPress
+ * @subpackage Option
+ * @uses apply_filters() Calls 'pre_option_$option' before checking the option.
+ *     Any value other than false will "short-circuit" the retrieval of the option
+ *     and return the returned value. You should not try to override special options,
+ *     but you will not be prevented from doing so.
+ * @uses apply_filters() Calls 'option_$option', after checking the option, with
+ *     the option value.
+ *
+ * @param string $option Name of option to retrieve. Expected to not be SQL-escaped.
+ * @param mixed $default Optional. Default value to return if the option does not exist.
+ * @return mixed Value set for the option.
+ */
+function get_option( $option, $default = false ) {
+       global $wpdb;
+
+       // Allow plugins to short-circuit options.
+       $pre = apply_filters( 'pre_option_' . $option, false );
+       if ( false !== $pre )
+               return $pre;
+
+       $option = trim($option);
+       if ( empty($option) )
+               return false;
+
+       if ( defined( 'WP_SETUP_CONFIG' ) )
+               return false;
+
+       if ( ! defined( 'WP_INSTALLING' ) ) {
+               // prevent non-existent options from triggering multiple queries
+               $notoptions = wp_cache_get( 'notoptions', 'options' );
+               if ( isset( $notoptions[$option] ) )
+                       return apply_filters( 'default_option_' . $option, $default );
+
+               $alloptions = wp_load_alloptions();
+
+               if ( isset( $alloptions[$option] ) ) {
+                       $value = $alloptions[$option];
+               } else {
+                       $value = wp_cache_get( $option, 'options' );
+
+                       if ( false === $value ) {
+                               $row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", $option ) );
+
+                               // Has to be get_row instead of get_var because of funkiness with 0, false, null values
+                               if ( is_object( $row ) ) {
+                                       $value = $row->option_value;
+                                       wp_cache_add( $option, $value, 'options' );
+                               } else { // option does not exist, so we must cache its non-existence
+                                       $notoptions[$option] = true;
+                                       wp_cache_set( 'notoptions', $notoptions, 'options' );
+                                       return apply_filters( 'default_option_' . $option, $default );
+                               }
+                       }
+               }
+       } else {
+               $suppress = $wpdb->suppress_errors();
+               $row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", $option ) );
+               $wpdb->suppress_errors( $suppress );
+               if ( is_object( $row ) )
+                       $value = $row->option_value;
+               else
+                       return apply_filters( 'default_option_' . $option, $default );
+       }
+
+       // If home is not set use siteurl.
+       if ( 'home' == $option && '' == $value )
+               return get_option( 'siteurl' );
+
+       if ( in_array( $option, array('siteurl', 'home', 'category_base', 'tag_base') ) )
+               $value = untrailingslashit( $value );
+
+       return apply_filters( 'option_' . $option, maybe_unserialize( $value ) );
+}
+
+/**
+ * Protect WordPress special option from being modified.
+ *
+ * Will die if $option is in protected list. Protected options are 'alloptions'
+ * and 'notoptions' options.
+ *
+ * @since 2.2.0
+ * @package WordPress
+ * @subpackage Option
+ *
+ * @param string $option Option name.
+ */
+function wp_protect_special_option( $option ) {
+       $protected = array( 'alloptions', 'notoptions' );
+       if ( in_array( $option, $protected ) )
+               wp_die( sprintf( __( '%s is a protected WP option and may not be modified' ), esc_html( $option ) ) );
+}
+
+/**
+ * Print option value after sanitizing for forms.
+ *
+ * @uses attr Sanitizes value.
+ * @since 1.5.0
+ * @package WordPress
+ * @subpackage Option
+ *
+ * @param string $option Option name.
+ */
+function form_option( $option ) {
+       echo esc_attr( get_option( $option ) );
+}
+
+/**
+ * Loads and caches all autoloaded options, if available or all options.
+ *
+ * @since 2.2.0
+ * @package WordPress
+ * @subpackage Option
+ *
+ * @return array List of all options.
+ */
+function wp_load_alloptions() {
+       global $wpdb;
+
+       if ( !defined( 'WP_INSTALLING' ) || !is_multisite() )
+               $alloptions = wp_cache_get( 'alloptions', 'options' );
+       else
+               $alloptions = false;
+
+       if ( !$alloptions ) {
+               $suppress = $wpdb->suppress_errors();
+               if ( !$alloptions_db = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options WHERE autoload = 'yes'" ) )
+                       $alloptions_db = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options" );
+               $wpdb->suppress_errors($suppress);
+               $alloptions = array();
+               foreach ( (array) $alloptions_db as $o ) {
+                       $alloptions[$o->option_name] = $o->option_value;
+               }
+               if ( !defined( 'WP_INSTALLING' ) || !is_multisite() )
+                       wp_cache_add( 'alloptions', $alloptions, 'options' );
+       }
+
+       return $alloptions;
+}
+
+/**
+ * Loads and caches certain often requested site options if is_multisite() and a persistent cache is not being used.
+ *
+ * @since 3.0.0
+ * @package WordPress
+ * @subpackage Option
+ *
+ * @param int $site_id Optional site ID for which to query the options. Defaults to the current site.
+ */
+function wp_load_core_site_options( $site_id = null ) {
+       global $wpdb, $_wp_using_ext_object_cache;
+
+       if ( !is_multisite() || $_wp_using_ext_object_cache || defined( 'WP_INSTALLING' ) )
+               return;
+
+       if ( empty($site_id) )
+               $site_id = $wpdb->siteid;
+
+       $core_options = array('site_name', 'siteurl', 'active_sitewide_plugins', '_site_transient_timeout_theme_roots', '_site_transient_theme_roots', 'site_admins', 'can_compress_scripts', 'global_terms_enabled' );
+
+       $core_options_in = "'" . implode("', '", $core_options) . "'";
+       $options = $wpdb->get_results( $wpdb->prepare("SELECT meta_key, meta_value FROM $wpdb->sitemeta WHERE meta_key IN ($core_options_in) AND site_id = %d", $site_id) );
+
+       foreach ( $options as $option ) {
+               $key = $option->meta_key;
+               $cache_key = "{$site_id}:$key";
+               $option->meta_value = maybe_unserialize( $option->meta_value );
+
+               wp_cache_set( $cache_key, $option->meta_value, 'site-options' );
+       }
+}
+
+/**
+ * Update the value of an option that was already added.
+ *
+ * You do not need to serialize values. If the value needs to be serialized, then
+ * it will be serialized before it is inserted into the database. Remember,
+ * resources can not be serialized or added as an option.
+ *
+ * If the option does not exist, then the option will be added with the option
+ * value, but you will not be able to set whether it is autoloaded. If you want
+ * to set whether an option is autoloaded, then you need to use the add_option().
+ *
+ * @since 1.0.0
+ * @package WordPress
+ * @subpackage Option
+ *
+ * @uses apply_filters() Calls 'pre_update_option_$option' hook to allow overwriting the
+ *     option value to be stored.
+ * @uses do_action() Calls 'update_option' hook before updating the option.
+ * @uses do_action() Calls 'update_option_$option' and 'updated_option' hooks on success.
+ *
+ * @param string $option Option name. Expected to not be SQL-escaped.
+ * @param mixed $newvalue Option value. Expected to not be SQL-escaped.
+ * @return bool False if value was not updated and true if value was updated.
+ */
+function update_option( $option, $newvalue ) {
+       global $wpdb;
+
+       $option = trim($option);
+       if ( empty($option) )
+               return false;
+
+       wp_protect_special_option( $option );
+
+       if ( is_object($newvalue) )
+               $newvalue = clone $newvalue;
+
+       $newvalue = sanitize_option( $option, $newvalue );
+       $oldvalue = get_option( $option );
+       $newvalue = apply_filters( 'pre_update_option_' . $option, $newvalue, $oldvalue );
+
+       // If the new and old values are the same, no need to update.
+       if ( $newvalue === $oldvalue )
+               return false;
+
+       if ( false === $oldvalue )
+               return add_option( $option, $newvalue );
+
+       $notoptions = wp_cache_get( 'notoptions', 'options' );
+       if ( is_array( $notoptions ) && isset( $notoptions[$option] ) ) {
+               unset( $notoptions[$option] );
+               wp_cache_set( 'notoptions', $notoptions, 'options' );
+       }
+
+       $_newvalue = $newvalue;
+       $newvalue = maybe_serialize( $newvalue );
+
+       do_action( 'update_option', $option, $oldvalue, $_newvalue );
+       if ( ! defined( 'WP_INSTALLING' ) ) {
+               $alloptions = wp_load_alloptions();
+               if ( isset( $alloptions[$option] ) ) {
+                       $alloptions[$option] = $_newvalue;
+                       wp_cache_set( 'alloptions', $alloptions, 'options' );
+               } else {
+                       wp_cache_set( $option, $_newvalue, 'options' );
+               }
+       }
+
+       $result = $wpdb->update( $wpdb->options, array( 'option_value' => $newvalue ), array( 'option_name' => $option ) );
+
+       if ( $result ) {
+               do_action( "update_option_{$option}", $oldvalue, $_newvalue );
+               do_action( 'updated_option', $option, $oldvalue, $_newvalue );
+               return true;
+       }
+       return false;
+}
+
+/**
+ * Add a new option.
+ *
+ * You do not need to serialize values. If the value needs to be serialized, then
+ * it will be serialized before it is inserted into the database. Remember,
+ * resources can not be serialized or added as an option.
+ *
+ * You can create options without values and then update the values later.
+ * Existing options will not be updated and checks are performed to ensure that you
+ * aren't adding a protected WordPress option. Care should be taken to not name
+ * options the same as the ones which are protected.
+ *
+ * @package WordPress
+ * @subpackage Option
+ * @since 1.0.0
+ *
+ * @uses do_action() Calls 'add_option' hook before adding the option.
+ * @uses do_action() Calls 'add_option_$option' and 'added_option' hooks on success.
+ *
+ * @param string $option Name of option to add. Expected to not be SQL-escaped.
+ * @param mixed $value Optional. Option value, can be anything. Expected to not be SQL-escaped.
+ * @param mixed $deprecated Optional. Description. Not used anymore.
+ * @param bool $autoload Optional. Default is enabled. Whether to load the option when WordPress starts up.
+ * @return bool False if option was not added and true if option was added.
+ */
+function add_option( $option, $value = '', $deprecated = '', $autoload = 'yes' ) {
+       global $wpdb;
+
+       if ( !empty( $deprecated ) )
+               _deprecated_argument( __FUNCTION__, '2.3' );
+
+       $option = trim($option);
+       if ( empty($option) )
+               return false;
+
+       wp_protect_special_option( $option );
+
+       if ( is_object($value) )
+               $value = clone $value;
+
+       $value = sanitize_option( $option, $value );
+
+       // Make sure the option doesn't already exist. We can check the 'notoptions' cache before we ask for a db query
+       $notoptions = wp_cache_get( 'notoptions', 'options' );
+       if ( !is_array( $notoptions ) || !isset( $notoptions[$option] ) )
+               if ( false !== get_option( $option ) )
+                       return false;
+
+       $_value = $value;
+       $value = maybe_serialize( $value );
+       $autoload = ( 'no' === $autoload ) ? 'no' : 'yes';
+       do_action( 'add_option', $option, $_value );
+       if ( ! defined( 'WP_INSTALLING' ) ) {
+               if ( 'yes' == $autoload ) {
+                       $alloptions = wp_load_alloptions();
+                       $alloptions[$option] = $value;
+                       wp_cache_set( 'alloptions', $alloptions, 'options' );
+               } else {
+                       wp_cache_set( $option, $value, 'options' );
+               }
+       }
+
+       // This option exists now
+       $notoptions = wp_cache_get( 'notoptions', 'options' ); // yes, again... we need it to be fresh
+       if ( is_array( $notoptions ) && isset( $notoptions[$option] ) ) {
+               unset( $notoptions[$option] );
+               wp_cache_set( 'notoptions', $notoptions, 'options' );
+       }
+
+       $result = $wpdb->query( $wpdb->prepare( "INSERT INTO `$wpdb->options` (`option_name`, `option_value`, `autoload`) VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)", $option, $value, $autoload ) );
+
+       if ( $result ) {
+               do_action( "add_option_{$option}", $option, $_value );
+               do_action( 'added_option', $option, $_value );
+               return true;
+       }
+       return false;
+}
+
+/**
+ * Removes option by name. Prevents removal of protected WordPress options.
+ *
+ * @package WordPress
+ * @subpackage Option
+ * @since 1.2.0
+ *
+ * @uses do_action() Calls 'delete_option' hook before option is deleted.
+ * @uses do_action() Calls 'deleted_option' and 'delete_option_$option' hooks on success.
+ *
+ * @param string $option Name of option to remove. Expected to not be SQL-escaped.
+ * @return bool True, if option is successfully deleted. False on failure.
+ */
+function delete_option( $option ) {
+       global $wpdb;
+
+       wp_protect_special_option( $option );
+
+       // Get the ID, if no ID then return
+       $row = $wpdb->get_row( $wpdb->prepare( "SELECT autoload FROM $wpdb->options WHERE option_name = %s", $option ) );
+       if ( is_null( $row ) )
+               return false;
+       do_action( 'delete_option', $option );
+       $result = $wpdb->delete( $wpdb->options, array( 'option_name' => $option ) );
+       if ( ! defined( 'WP_INSTALLING' ) ) {
+               if ( 'yes' == $row->autoload ) {
+                       $alloptions = wp_load_alloptions();
+                       if ( is_array( $alloptions ) && isset( $alloptions[$option] ) ) {
+                               unset( $alloptions[$option] );
+                               wp_cache_set( 'alloptions', $alloptions, 'options' );
+                       }
+               } else {
+                       wp_cache_delete( $option, 'options' );
+               }
+       }
+       if ( $result ) {
+               do_action( "delete_option_$option", $option );
+               do_action( 'deleted_option', $option );
+               return true;
+       }
+       return false;
+}
+
+/**
+ * Delete a transient.
+ *
+ * @since 2.8.0
+ * @package WordPress
+ * @subpackage Transient
+ *
+ * @uses do_action() Calls 'delete_transient_$transient' hook before transient is deleted.
+ * @uses do_action() Calls 'deleted_transient' hook on success.
+ *
+ * @param string $transient Transient name. Expected to not be SQL-escaped.
+ * @return bool true if successful, false otherwise
+ */
+function delete_transient( $transient ) {
+       global $_wp_using_ext_object_cache;
+
+       do_action( 'delete_transient_' . $transient, $transient );
+
+       if ( $_wp_using_ext_object_cache ) {
+               $result = wp_cache_delete( $transient, 'transient' );
+       } else {
+               $option_timeout = '_transient_timeout_' . $transient;
+               $option = '_transient_' . $transient;
+               $result = delete_option( $option );
+               if ( $result )
+                       delete_option( $option_timeout );
+       }
+
+       if ( $result )
+               do_action( 'deleted_transient', $transient );
+       return $result;
+}
+
+/**
+ * Get the value of a transient.
+ *
+ * If the transient does not exist or does not have a value, then the return value
+ * will be false.
+ *
+ * @uses apply_filters() Calls 'pre_transient_$transient' hook before checking the transient.
+ *     Any value other than false will "short-circuit" the retrieval of the transient
+ *     and return the returned value.
+ * @uses apply_filters() Calls 'transient_$option' hook, after checking the transient, with
+ *     the transient value.
+ *
+ * @since 2.8.0
+ * @package WordPress
+ * @subpackage Transient
+ *
+ * @param string $transient Transient name. Expected to not be SQL-escaped
+ * @return mixed Value of transient
+ */
+function get_transient( $transient ) {
+       global $_wp_using_ext_object_cache;
+
+       $pre = apply_filters( 'pre_transient_' . $transient, false );
+       if ( false !== $pre )
+               return $pre;
+
+       if ( $_wp_using_ext_object_cache ) {
+               $value = wp_cache_get( $transient, 'transient' );
+       } else {
+               $transient_option = '_transient_' . $transient;
+               if ( ! defined( 'WP_INSTALLING' ) ) {
+                       // If option is not in alloptions, it is not autoloaded and thus has a timeout
+                       $alloptions = wp_load_alloptions();
+                       if ( !isset( $alloptions[$transient_option] ) ) {
+                               $transient_timeout = '_transient_timeout_' . $transient;
+                               if ( get_option( $transient_timeout ) < time() ) {
+                                       delete_option( $transient_option  );
+                                       delete_option( $transient_timeout );
+                                       return false;
+                               }
+                       }
+               }
+
+               $value = get_option( $transient_option );
+       }
+
+       return apply_filters( 'transient_' . $transient, $value );
+}
+
+/**
+ * Set/update the value of a transient.
+ *
+ * You do not need to serialize values. If the value needs to be serialized, then
+ * it will be serialized before it is set.
+ *
+ * @since 2.8.0
+ * @package WordPress
+ * @subpackage Transient
+ *
+ * @uses apply_filters() Calls 'pre_set_transient_$transient' hook to allow overwriting the
+ *     transient value to be stored.
+ * @uses do_action() Calls 'set_transient_$transient' and 'setted_transient' hooks on success.
+ *
+ * @param string $transient Transient name. Expected to not be SQL-escaped.
+ * @param mixed $value Transient value. Expected to not be SQL-escaped.
+ * @param int $expiration Time until expiration in seconds, default 0
+ * @return bool False if value was not set and true if value was set.
+ */
+function set_transient( $transient, $value, $expiration = 0 ) {
+       global $_wp_using_ext_object_cache;
+
+       $value = apply_filters( 'pre_set_transient_' . $transient, $value );
+
+       if ( $_wp_using_ext_object_cache ) {
+               $result = wp_cache_set( $transient, $value, 'transient', $expiration );
+       } else {
+               $transient_timeout = '_transient_timeout_' . $transient;
+               $transient = '_transient_' . $transient;
+               if ( false === get_option( $transient ) ) {
+                       $autoload = 'yes';
+                       if ( $expiration ) {
+                               $autoload = 'no';
+                               add_option( $transient_timeout, time() + $expiration, '', 'no' );
+                       }
+                       $result = add_option( $transient, $value, '', $autoload );
+               } else {
+                       if ( $expiration )
+                               update_option( $transient_timeout, time() + $expiration );
+                       $result = update_option( $transient, $value );
+               }
+       }
+       if ( $result ) {
+               do_action( 'set_transient_' . $transient );
+               do_action( 'setted_transient', $transient );
+       }
+       return $result;
+}
+
+/**
+ * Saves and restores user interface settings stored in a cookie.
+ *
+ * Checks if the current user-settings cookie is updated and stores it. When no
+ * cookie exists (different browser used), adds the last saved cookie restoring
+ * the settings.
+ *
+ * @package WordPress
+ * @subpackage Option
+ * @since 2.7.0
+ */
+function wp_user_settings() {
+
+       if ( ! is_admin() )
+               return;
+
+       if ( defined('DOING_AJAX') )
+               return;
+
+       if ( ! $user = wp_get_current_user() )
+               return;
+
+       $settings = get_user_option( 'user-settings', $user->ID );
+
+       if ( isset( $_COOKIE['wp-settings-' . $user->ID] ) ) {
+               $cookie = preg_replace( '/[^A-Za-z0-9=&_]/', '', $_COOKIE['wp-settings-' . $user->ID] );
+
+               if ( ! empty( $cookie ) && strpos( $cookie, '=' ) ) {
+                       if ( $cookie == $settings )
+                               return;
+
+                       $last_time = (int) get_user_option( 'user-settings-time', $user->ID );
+                       $saved = isset( $_COOKIE['wp-settings-time-' . $user->ID]) ? preg_replace( '/[^0-9]/', '', $_COOKIE['wp-settings-time-' . $user->ID] ) : 0;
+
+                       if ( $saved > $last_time ) {
+                               update_user_option( $user->ID, 'user-settings', $cookie, false );
+                               update_user_option( $user->ID, 'user-settings-time', time() - 5, false );
+                               return;
+                       }
+               }
+       }
+
+       setcookie( 'wp-settings-' . $user->ID, $settings, time() + 31536000, SITECOOKIEPATH );
+       setcookie( 'wp-settings-time-' . $user->ID, time(), time() + 31536000, SITECOOKIEPATH );
+       $_COOKIE['wp-settings-' . $user->ID] = $settings;
+}
+
+/**
+ * Retrieve user interface setting value based on setting name.
+ *
+ * @package WordPress
+ * @subpackage Option
+ * @since 2.7.0
+ *
+ * @param string $name The name of the setting.
+ * @param string $default Optional default value to return when $name is not set.
+ * @return mixed the last saved user setting or the default value/false if it doesn't exist.
+ */
+function get_user_setting( $name, $default = false ) {
+
+       $all = get_all_user_settings();
+
+       return isset($all[$name]) ? $all[$name] : $default;
+}
+
+/**
+ * Add or update user interface setting.
+ *
+ * Both $name and $value can contain only ASCII letters, numbers and underscores.
+ * This function has to be used before any output has started as it calls setcookie().
+ *
+ * @package WordPress
+ * @subpackage Option
+ * @since 2.8.0
+ *
+ * @param string $name The name of the setting.
+ * @param string $value The value for the setting.
+ * @return bool true if set successfully/false if not.
+ */
+function set_user_setting( $name, $value ) {
+
+       if ( headers_sent() )
+               return false;
+
+       $all = get_all_user_settings();
+       $name = preg_replace( '/[^A-Za-z0-9_]+/', '', $name );
+
+       if ( empty($name) )
+               return false;
+
+       $all[$name] = $value;
+
+       return wp_set_all_user_settings($all);
+}
+
+/**
+ * Delete user interface settings.
+ *
+ * Deleting settings would reset them to the defaults.
+ * This function has to be used before any output has started as it calls setcookie().
+ *
+ * @package WordPress
+ * @subpackage Option
+ * @since 2.7.0
+ *
+ * @param mixed $names The name or array of names of the setting to be deleted.
+ * @return bool true if deleted successfully/false if not.
+ */
+function delete_user_setting( $names ) {
+
+       if ( headers_sent() )
+               return false;
+
+       $all = get_all_user_settings();
+       $names = (array) $names;
+
+       foreach ( $names as $name ) {
+               if ( isset($all[$name]) ) {
+                       unset($all[$name]);
+                       $deleted = true;
+               }
+       }
+
+       if ( isset($deleted) )
+               return wp_set_all_user_settings($all);
+
+       return false;
+}
+
+/**
+ * Retrieve all user interface settings.
+ *
+ * @package WordPress
+ * @subpackage Option
+ * @since 2.7.0
+ *
+ * @return array the last saved user settings or empty array.
+ */
+function get_all_user_settings() {
+       global $_updated_user_settings;
+
+       if ( ! $user = wp_get_current_user() )
+               return array();
+
+       if ( isset($_updated_user_settings) && is_array($_updated_user_settings) )
+               return $_updated_user_settings;
+
+       $all = array();
+       if ( isset($_COOKIE['wp-settings-' . $user->ID]) ) {
+               $cookie = preg_replace( '/[^A-Za-z0-9=&_]/', '', $_COOKIE['wp-settings-' . $user->ID] );
+
+               if ( $cookie && strpos($cookie, '=') ) // the '=' cannot be 1st char
+                       parse_str($cookie, $all);
+
+       } else {
+               $option = get_user_option('user-settings', $user->ID);
+               if ( $option && is_string($option) )
+                       parse_str( $option, $all );
+       }
+
+       return $all;
+}
+
+/**
+ * Private. Set all user interface settings.
+ *
+ * @package WordPress
+ * @subpackage Option
+ * @since 2.8.0
+ *
+ * @param unknown $all
+ * @return bool
+ */
+function wp_set_all_user_settings($all) {
+       global $_updated_user_settings;
+
+       if ( ! $user = wp_get_current_user() )
+               return false;
+
+       $_updated_user_settings = $all;
+       $settings = '';
+       foreach ( $all as $k => $v ) {
+               $v = preg_replace( '/[^A-Za-z0-9_]+/', '', $v );
+               $settings .= $k . '=' . $v . '&';
+       }
+
+       $settings = rtrim($settings, '&');
+
+       update_user_option( $user->ID, 'user-settings', $settings, false );
+       update_user_option( $user->ID, 'user-settings-time', time(), false );
+
+       return true;
+}
+
+/**
+ * Delete the user settings of the current user.
+ *
+ * @package WordPress
+ * @subpackage Option
+ * @since 2.7.0
+ */
+function delete_all_user_settings() {
+       if ( ! $user = wp_get_current_user() )
+               return;
+
+       update_user_option( $user->ID, 'user-settings', '', false );
+       setcookie('wp-settings-' . $user->ID, ' ', time() - 31536000, SITECOOKIEPATH);
+}
+
+/**
+ * Retrieve site option value based on name of option.
+ *
+ * @see get_option()
+ * @package WordPress
+ * @subpackage Option
+ * @since 2.8.0
+ *
+ * @uses apply_filters() Calls 'pre_site_option_$option' before checking the option.
+ *     Any value other than false will "short-circuit" the retrieval of the option
+ *     and return the returned value.
+ * @uses apply_filters() Calls 'site_option_$option', after checking the  option, with
+ *     the option value.
+ *
+ * @param string $option Name of option to retrieve. Expected to not be SQL-escaped.
+ * @param mixed $default Optional value to return if option doesn't exist. Default false.
+ * @param bool $use_cache Whether to use cache. Multisite only. Default true.
+ * @return mixed Value set for the option.
+ */
+function get_site_option( $option, $default = false, $use_cache = true ) {
+       global $wpdb;
+
+       // Allow plugins to short-circuit site options.
+       $pre = apply_filters( 'pre_site_option_' . $option, false );
+       if ( false !== $pre )
+               return $pre;
+
+       if ( ! is_multisite() ) {
+               $default = apply_filters( 'default_site_option_' . $option, $default );
+               $value = get_option($option, $default);
+       } else {
+               $cache_key = "{$wpdb->siteid}:$option";
+               if ( $use_cache )
+                       $value = wp_cache_get($cache_key, 'site-options');
+
+               if ( !isset($value) || (false === $value) ) {
+                       $row = $wpdb->get_row( $wpdb->prepare("SELECT meta_value FROM $wpdb->sitemeta WHERE meta_key = %s AND site_id = %d", $option, $wpdb->siteid ) );
+
+                       // Has to be get_row instead of get_var because of funkiness with 0, false, null values
+                       if ( is_object( $row ) ) {
+                               $value = $row->meta_value;
+                               $value = maybe_unserialize( $value );
+                               wp_cache_set( $cache_key, $value, 'site-options' );
+                       } else {
+                               $value = apply_filters( 'default_site_option_' . $option, $default );
+                       }
+               }
+       }
+
+       return apply_filters( 'site_option_' . $option, $value );
+}
+
+/**
+ * Add a new site option.
+ *
+ * Existing options will not be updated. Note that prior to 3.3 this wasn't the case.
+ *
+ * @see add_option()
+ * @package WordPress
+ * @subpackage Option
+ * @since 2.8.0
+ *
+ * @uses apply_filters() Calls 'pre_add_site_option_$option' hook to allow overwriting the
+ *     option value to be stored.
+ * @uses do_action() Calls 'add_site_option_$option' and 'add_site_option' hooks on success.
+ *
+ * @param string $option Name of option to add. Expected to not be SQL-escaped.
+ * @param mixed $value Optional. Option value, can be anything. Expected to not be SQL-escaped.
+ * @return bool False if option was not added and true if option was added.
+ */
+function add_site_option( $option, $value ) {
+       global $wpdb;
+
+       $value = apply_filters( 'pre_add_site_option_' . $option, $value );
+
+       if ( !is_multisite() ) {
+               $result = add_option( $option, $value );
+       } else {
+               $cache_key = "{$wpdb->siteid}:$option";
+
+               if ( false !== get_site_option( $option ) )
+                       return false;
+
+               $value = sanitize_option( $option, $value );
+               wp_cache_set( $cache_key, $value, 'site-options' );
+
+               $_value = $value;
+               $value = maybe_serialize( $value );
+               $result = $wpdb->insert( $wpdb->sitemeta, array('site_id' => $wpdb->siteid, 'meta_key' => $option, 'meta_value' => $value ) );
+               $value = $_value;
+       }
+
+       if ( $result ) {
+               do_action( "add_site_option_{$option}", $option, $value );
+               do_action( "add_site_option", $option, $value );
+               return true;
+       }
+       return false;
+}
+
+/**
+ * Removes site option by name.
+ *
+ * @see delete_option()
+ * @package WordPress
+ * @subpackage Option
+ * @since 2.8.0
+ *
+ * @uses do_action() Calls 'pre_delete_site_option_$option' hook before option is deleted.
+ * @uses do_action() Calls 'delete_site_option' and 'delete_site_option_$option'
+ *     hooks on success.
+ *
+ * @param string $option Name of option to remove. Expected to not be SQL-escaped.
+ * @return bool True, if succeed. False, if failure.
+ */
+function delete_site_option( $option ) {
+       global $wpdb;
+
+       // ms_protect_special_option( $option ); @todo
+
+       do_action( 'pre_delete_site_option_' . $option );
+
+       if ( !is_multisite() ) {
+               $result = delete_option( $option );
+       } else {
+               $row = $wpdb->get_row( $wpdb->prepare( "SELECT meta_id FROM {$wpdb->sitemeta} WHERE meta_key = %s AND site_id = %d", $option, $wpdb->siteid ) );
+               if ( is_null( $row ) || !$row->meta_id )
+                       return false;
+               $cache_key = "{$wpdb->siteid}:$option";
+               wp_cache_delete( $cache_key, 'site-options' );
+
+               $result = $wpdb->delete( $wpdb->sitemeta, array( 'meta_key' => $option, 'site_id' => $wpdb->siteid ) );
+       }
+
+       if ( $result ) {
+               do_action( "delete_site_option_{$option}", $option );
+               do_action( "delete_site_option", $option );
+               return true;
+       }
+       return false;
+}
+
+/**
+ * Update the value of a site option that was already added.
+ *
+ * @see update_option()
+ * @since 2.8.0
+ * @package WordPress
+ * @subpackage Option
+ *
+ * @uses apply_filters() Calls 'pre_update_site_option_$option' hook to allow overwriting the
+ *     option value to be stored.
+ * @uses do_action() Calls 'update_site_option_$option' and 'update_site_option' hooks on success.
+ *
+ * @param string $option Name of option. Expected to not be SQL-escaped.
+ * @param mixed $value Option value. Expected to not be SQL-escaped.
+ * @return bool False if value was not updated and true if value was updated.
+ */
+function update_site_option( $option, $value ) {
+       global $wpdb;
+
+       $oldvalue = get_site_option( $option );
+       $value = apply_filters( 'pre_update_site_option_' . $option, $value, $oldvalue );
+
+       if ( $value === $oldvalue )
+               return false;
+
+       if ( false === $oldvalue )
+               return add_site_option( $option, $value );
+
+       if ( !is_multisite() ) {
+               $result = update_option( $option, $value );
+       } else {
+               $value = sanitize_option( $option, $value );
+               $cache_key = "{$wpdb->siteid}:$option";
+               wp_cache_set( $cache_key, $value, 'site-options' );
+
+               $_value = $value;
+               $value = maybe_serialize( $value );
+               $result = $wpdb->update( $wpdb->sitemeta, array( 'meta_value' => $value ), array( 'site_id' => $wpdb->siteid, 'meta_key' => $option ) );
+               $value = $_value;
+       }
+
+       if ( $result ) {
+               do_action( "update_site_option_{$option}", $option, $value, $oldvalue );
+               do_action( "update_site_option", $option, $value, $oldvalue );
+               return true;
+       }
+       return false;
+}
+
+/**
+ * Delete a site transient.
+ *
+ * @since 2.9.0
+ * @package WordPress
+ * @subpackage Transient
+ *
+ * @uses do_action() Calls 'delete_site_transient_$transient' hook before transient is deleted.
+ * @uses do_action() Calls 'deleted_site_transient' hook on success.
+ *
+ * @param string $transient Transient name. Expected to not be SQL-escaped.
+ * @return bool True if successful, false otherwise
+ */
+function delete_site_transient( $transient ) {
+       global $_wp_using_ext_object_cache;
+
+       do_action( 'delete_site_transient_' . $transient, $transient );
+       if ( $_wp_using_ext_object_cache ) {
+               $result = wp_cache_delete( $transient, 'site-transient' );
+       } else {
+               $option_timeout = '_site_transient_timeout_' . $transient;
+               $option = '_site_transient_' . $transient;
+               $result = delete_site_option( $option );
+               if ( $result )
+                       delete_site_option( $option_timeout );
+       }
+       if ( $result )
+               do_action( 'deleted_site_transient', $transient );
+       return $result;
+}
+
+/**
+ * Get the value of a site transient.
+ *
+ * If the transient does not exist or does not have a value, then the return value
+ * will be false.
+ *
+ * @see get_transient()
+ * @since 2.9.0
+ * @package WordPress
+ * @subpackage Transient
+ *
+ * @uses apply_filters() Calls 'pre_site_transient_$transient' hook before checking the transient.
+ *     Any value other than false will "short-circuit" the retrieval of the transient
+ *     and return the returned value.
+ * @uses apply_filters() Calls 'site_transient_$option' hook, after checking the transient, with
+ *     the transient value.
+ *
+ * @param string $transient Transient name. Expected to not be SQL-escaped.
+ * @return mixed Value of transient
+ */
+function get_site_transient( $transient ) {
+       global $_wp_using_ext_object_cache;
+
+       $pre = apply_filters( 'pre_site_transient_' . $transient, false );
+       if ( false !== $pre )
+               return $pre;
+
+       if ( $_wp_using_ext_object_cache ) {
+               $value = wp_cache_get( $transient, 'site-transient' );
+       } else {
+               // Core transients that do not have a timeout. Listed here so querying timeouts can be avoided.
+               $no_timeout = array('update_core', 'update_plugins', 'update_themes');
+               $transient_option = '_site_transient_' . $transient;
+               if ( ! in_array( $transient, $no_timeout ) ) {
+                       $transient_timeout = '_site_transient_timeout_' . $transient;
+                       $timeout = get_site_option( $transient_timeout );
+                       if ( false !== $timeout && $timeout < time() ) {
+                               delete_site_option( $transient_option  );
+                               delete_site_option( $transient_timeout );
+                               return false;
+                       }
+               }
+
+               $value = get_site_option( $transient_option );
+       }
+
+       return apply_filters( 'site_transient_' . $transient, $value );
+}
+
+/**
+ * Set/update the value of a site transient.
+ *
+ * You do not need to serialize values, if the value needs to be serialize, then
+ * it will be serialized before it is set.
+ *
+ * @see set_transient()
+ * @since 2.9.0
+ * @package WordPress
+ * @subpackage Transient
+ *
+ * @uses apply_filters() Calls 'pre_set_site_transient_$transient' hook to allow overwriting the
+ *     transient value to be stored.
+ * @uses do_action() Calls 'set_site_transient_$transient' and 'setted_site_transient' hooks on success.
+ *
+ * @param string $transient Transient name. Expected to not be SQL-escaped.
+ * @param mixed $value Transient value. Expected to not be SQL-escaped.
+ * @param int $expiration Time until expiration in seconds, default 0
+ * @return bool False if value was not set and true if value was set.
+ */
+function set_site_transient( $transient, $value, $expiration = 0 ) {
+       global $_wp_using_ext_object_cache;
+
+       $value = apply_filters( 'pre_set_site_transient_' . $transient, $value );
+
+       if ( $_wp_using_ext_object_cache ) {
+               $result = wp_cache_set( $transient, $value, 'site-transient', $expiration );
+       } else {
+               $transient_timeout = '_site_transient_timeout_' . $transient;
+               $transient = '_site_transient_' . $transient;
+               if ( false === get_site_option( $transient ) ) {
+                       if ( $expiration )
+                               add_site_option( $transient_timeout, time() + $expiration );
+                       $result = add_site_option( $transient, $value );
+               } else {
+                       if ( $expiration )
+                               update_site_option( $transient_timeout, time() + $expiration );
+                       $result = update_site_option( $transient, $value );
+               }
+       }
+       if ( $result ) {
+               do_action( 'set_site_transient_' . $transient );
+               do_action( 'setted_site_transient', $transient );
+       }
+       return $result;
+}
index df20cf6345f2e50aab75d00608ea7de98eb76ac0..ac308a99666fa90cecb9e141ad4d6d1774223d86 100644 (file)
@@ -27,12 +27,12 @@ if ( !function_exists('wp_set_current_user') ) :
 function wp_set_current_user($id, $name = '') {
        global $current_user;
 
 function wp_set_current_user($id, $name = '') {
        global $current_user;
 
-       if ( isset($current_user) && ($id == $current_user->ID) )
+       if ( isset( $current_user ) && ( $current_user instanceof WP_User ) && ( $id == $current_user->ID ) )
                return $current_user;
 
                return $current_user;
 
-       $current_user = new WP_User($id, $name);
+       $current_user = new WP_User( $id, $name );
 
 
-       setup_userdata($current_user->ID);
+       setup_userdata( $current_user->ID );
 
        do_action('set_current_user');
 
 
        do_action('set_current_user');
 
@@ -74,20 +74,37 @@ if ( !function_exists('get_currentuserinfo') ) :
 function get_currentuserinfo() {
        global $current_user;
 
 function get_currentuserinfo() {
        global $current_user;
 
-       if ( defined('XMLRPC_REQUEST') && XMLRPC_REQUEST )
+       if ( ! empty( $current_user ) ) {
+               if ( $current_user instanceof WP_User )
+                       return;
+
+               // Upgrade stdClass to WP_User
+               if ( is_object( $current_user ) && isset( $current_user->ID ) ) {
+                       $cur_id = $current_user->ID;
+                       $current_user = null;
+                       wp_set_current_user( $cur_id );
+                       return;
+               }
+
+               // $current_user has a junk value. Force to WP_User with ID 0.
+               $current_user = null;
+               wp_set_current_user( 0 );
                return false;
                return false;
+       }
 
 
-       if ( ! empty($current_user) )
-               return;
+       if ( defined('XMLRPC_REQUEST') && XMLRPC_REQUEST ) {
+               wp_set_current_user( 0 );
+               return false;
+       }
 
        if ( ! $user = wp_validate_auth_cookie() ) {
 
        if ( ! $user = wp_validate_auth_cookie() ) {
-                if ( is_blog_admin() || is_network_admin() || empty($_COOKIE[LOGGED_IN_COOKIE]) || !$user = wp_validate_auth_cookie($_COOKIE[LOGGED_IN_COOKIE], 'logged_in') ) {
-                       wp_set_current_user(0);
+                if ( is_blog_admin() || is_network_admin() || empty( $_COOKIE[LOGGED_IN_COOKIE] ) || !$user = wp_validate_auth_cookie( $_COOKIE[LOGGED_IN_COOKIE], 'logged_in' ) ) {
+                       wp_set_current_user( 0 );
                        return false;
                 }
        }
 
                        return false;
                 }
        }
 
-       wp_set_current_user($user);
+       wp_set_current_user( $user );
 }
 endif;
 
 }
 endif;
 
@@ -111,8 +128,8 @@ if ( !function_exists('get_user_by') ) :
  *
  * @since 2.8.0
  *
  *
  * @since 2.8.0
  *
- * @param string $field The field to retrieve the user with.  id | slug | email | login
- * @param int|string $value A value for $field.  A user ID, slug, email address, or login name.
+ * @param string $field The field to retrieve the user with. id | slug | email | login
+ * @param int|string $value A value for $field. A user ID, slug, email address, or login name.
  * @return bool|object False on failure, WP_User object on success
  */
 function get_user_by( $field, $value ) {
  * @return bool|object False on failure, WP_User object on success
  */
 function get_user_by( $field, $value ) {
@@ -139,13 +156,7 @@ if ( !function_exists('cache_users') ) :
 function cache_users( $user_ids ) {
        global $wpdb;
 
 function cache_users( $user_ids ) {
        global $wpdb;
 
-       $clean = array();
-       foreach ( $user_ids as $id ) {
-               $id = (int) $id;
-               if ( !wp_cache_get( $id, 'users' ) ) {
-                       $clean[] = $id;
-               }
-       }
+       $clean = _get_non_cached_ids( $user_ids, 'users' );
 
        if ( empty( $clean ) )
                return;
 
        if ( empty( $clean ) )
                return;
@@ -715,7 +726,7 @@ if ( !function_exists('is_user_logged_in') ) :
 function is_user_logged_in() {
        $user = wp_get_current_user();
 
 function is_user_logged_in() {
        $user = wp_get_current_user();
 
-       if ( empty( $user->ID ) )
+       if ( ! $user->exists() )
                return false;
 
        return true;
                return false;
 
        return true;
@@ -829,8 +840,12 @@ function check_ajax_referer( $action = -1, $query_arg = false, $die = true ) {
 
        $result = wp_verify_nonce( $nonce, $action );
 
 
        $result = wp_verify_nonce( $nonce, $action );
 
-       if ( $die && false == $result )
-               die('-1');
+       if ( $die && false == $result ) {
+               if ( defined( 'DOING_AJAX' ) && DOING_AJAX )
+                       wp_die( -1 );
+               else
+                       die( '-1' );
+       }
 
        do_action('check_ajax_referer', $action, $result);
 
 
        do_action('check_ajax_referer', $action, $result);
 
@@ -929,7 +944,7 @@ if ( !function_exists('wp_validate_redirect') ) :
  *             WordPress host string and $location host string.
  *
  * @param string $location The redirect to validate
  *             WordPress host string and $location host string.
  *
  * @param string $location The redirect to validate
- * @param string $default The value to return is $location is not allowed
+ * @param string $default The value to return if $location is not allowed
  * @return string redirect-sanitized URL
  **/
 function wp_validate_redirect($location, $default = '') {
  * @return string redirect-sanitized URL
  **/
 function wp_validate_redirect($location, $default = '') {
@@ -1276,108 +1291,89 @@ endif;
 
 if ( !function_exists('wp_salt') ) :
 /**
 
 if ( !function_exists('wp_salt') ) :
 /**
- * Get salt to add to hashes to help prevent attacks.
+ * Get salt to add to hashes.
  *
  *
- * The secret key is located in two places: the database in case the secret key
- * isn't defined in the second place, which is in the wp-config.php file. If you
- * are going to set the secret key, then you must do so in the wp-config.php
- * file.
+ * Salts are created using secret keys. Secret keys are located in two places:
+ * in the database and in the wp-config.php file. The secret key in the database
+ * is randomly generated and will be appended to the secret keys in wp-config.php.
  *
  *
- * The secret key in the database is randomly generated and will be appended to
- * the secret key that is in wp-config.php file in some instances. It is
- * important to have the secret key defined or changed in wp-config.php.
- *
- * If you have installed WordPress 2.5 or later, then you will have the
- * SECRET_KEY defined in the wp-config.php already. You will want to change the
- * value in it because hackers will know what it is. If you have upgraded to
- * WordPress 2.5 or later version from a version before WordPress 2.5, then you
- * should add the constant to your wp-config.php file.
- *
- * Below is an example of how the SECRET_KEY constant is defined with a value.
- * You must not copy the below example and paste into your wp-config.php. If you
- * need an example, then you can have a
- * {@link https://api.wordpress.org/secret-key/1.1/ secret key created} for you.
+ * The secret keys in wp-config.php should be updated to strong, random keys to maximize
+ * security. Below is an example of how the secret key constants are defined.
+ * Do not paste this example directly into wp-config.php. Instead, have a
+ * {@link https://api.wordpress.org/secret-key/1.1/salt/ secret key created} just
+ * for you.
  *
  * <code>
  *
  * <code>
- * define('SECRET_KEY', 'mAry1HadA15|\/|b17w55w1t3asSn09w');
+ * define('AUTH_KEY',         ' Xakm<o xQy rw4EMsLKM-?!T+,PFF})H4lzcW57AF0U@N@< >M%G4Yt>f`z]MON');
+ * define('SECURE_AUTH_KEY',  'LzJ}op]mr|6+![P}Ak:uNdJCJZd>(Hx.-Mh#Tz)pCIU#uGEnfFz|f ;;eU%/U^O~');
+ * define('LOGGED_IN_KEY',    '|i|Ux`9<p-h$aFf(qnT:sDO:D1P^wZ$$/Ra@miTJi9G;ddp_<q}6H1)o|a +&JCM');
+ * define('NONCE_KEY',        '%:R{[P|,s.KuMltH5}cI;/k<Gx~j!f0I)m_sIyu+&NJZ)-iO>z7X>QYR0Z_XnZ@|');
+ * define('AUTH_SALT',        'eZyT)-Naw]F8CwA*VaW#q*|.)g@o}||wf~@C-YSt}(dh_r6EbI#A,y|nU2{B#JBW');
+ * define('SECURE_AUTH_SALT', '!=oLUTXh,QW=H `}`L|9/^4-3 STz},T(w}W<I`.JjPi)<Bmf1v,HpGe}T1:Xt7n');
+ * define('LOGGED_IN_SALT',   '+XSqHc;@Q*K_b|Z?NC[3H!!EONbh.n<+=uKR:>*c(u`g~EJBf#8u#R{mUEZrozmm');
+ * define('NONCE_SALT',       'h`GXHhD>SLWVfg1(1(N{;.V!MoE(SfbA_ksP@&`+AycHcAV$+?@3q+rxV{%^VyKT');
  * </code>
  *
  * Salting passwords helps against tools which has stored hashed values of
  * </code>
  *
  * Salting passwords helps against tools which has stored hashed values of
- * common dictionary strings. The added values makes it harder to crack if given
- * salt string is not weak.
+ * common dictionary strings. The added values makes it harder to crack.
  *
  * @since 2.5
  *
  * @since 2.5
- * @link https://api.wordpress.org/secret-key/1.1/ Create a Secret Key for wp-config.php
  *
  *
- * @param string $scheme Authentication scheme
+ * @link https://api.wordpress.org/secret-key/1.1/salt/ Create secrets for wp-config.php
+ *
+ * @param string $scheme Authentication scheme (auth, secure_auth, logged_in, nonce)
  * @return string Salt value
  */
  * @return string Salt value
  */
-function wp_salt($scheme = 'auth') {
-       global $wp_default_secret_key;
-       $secret_key = '';
-       if ( defined('SECRET_KEY') && ('' != SECRET_KEY) && ( $wp_default_secret_key != SECRET_KEY) )
-               $secret_key = SECRET_KEY;
-
-       if ( 'auth' == $scheme ) {
-               if ( defined('AUTH_KEY') && ('' != AUTH_KEY) && ( $wp_default_secret_key != AUTH_KEY) )
-                       $secret_key = AUTH_KEY;
-
-               if ( defined('AUTH_SALT') && ('' != AUTH_SALT) && ( $wp_default_secret_key != AUTH_SALT) ) {
-                       $salt = AUTH_SALT;
-               } elseif ( defined('SECRET_SALT') && ('' != SECRET_SALT) && ( $wp_default_secret_key != SECRET_SALT) ) {
-                       $salt = SECRET_SALT;
-               } else {
-                       $salt = get_site_option('auth_salt');
-                       if ( empty($salt) ) {
-                               $salt = wp_generate_password( 64, true, true );
-                               update_site_option('auth_salt', $salt);
-                       }
-               }
-       } elseif ( 'secure_auth' == $scheme ) {
-               if ( defined('SECURE_AUTH_KEY') && ('' != SECURE_AUTH_KEY) && ( $wp_default_secret_key != SECURE_AUTH_KEY) )
-                       $secret_key = SECURE_AUTH_KEY;
-
-               if ( defined('SECURE_AUTH_SALT') && ('' != SECURE_AUTH_SALT) && ( $wp_default_secret_key != SECURE_AUTH_SALT) ) {
-                       $salt = SECURE_AUTH_SALT;
-               } else {
-                       $salt = get_site_option('secure_auth_salt');
-                       if ( empty($salt) ) {
-                               $salt = wp_generate_password( 64, true, true );
-                               update_site_option('secure_auth_salt', $salt);
+function wp_salt( $scheme = 'auth' ) {
+       static $cached_salts = array();
+       if ( isset( $cached_salts[ $scheme ] ) )
+               return apply_filters( 'salt', $cached_salts[ $scheme ], $scheme );
+
+       static $duplicated_keys;
+       if ( null === $duplicated_keys ) {
+               $duplicated_keys = array( 'put your unique phrase here' => true );
+               foreach ( array( 'AUTH', 'SECURE_AUTH', 'LOGGED_IN', 'NONCE', 'SECRET' ) as $first ) {
+                       foreach ( array( 'KEY', 'SALT' ) as $second ) {
+                               if ( ! defined( "{$first}_{$second}" ) )
+                                       continue;
+                               $value = constant( "{$first}_{$second}" );
+                               $duplicated_keys[ $value ] = isset( $duplicated_keys[ $value ] );
                        }
                }
                        }
                }
-       } elseif ( 'logged_in' == $scheme ) {
-               if ( defined('LOGGED_IN_KEY') && ('' != LOGGED_IN_KEY) && ( $wp_default_secret_key != LOGGED_IN_KEY) )
-                       $secret_key = LOGGED_IN_KEY;
+       }
 
 
-               if ( defined('LOGGED_IN_SALT') && ('' != LOGGED_IN_SALT) && ( $wp_default_secret_key != LOGGED_IN_SALT) ) {
-                       $salt = LOGGED_IN_SALT;
-               } else {
-                       $salt = get_site_option('logged_in_salt');
-                       if ( empty($salt) ) {
-                               $salt = wp_generate_password( 64, true, true );
-                               update_site_option('logged_in_salt', $salt);
+       $key = $salt = '';
+       if ( defined( 'SECRET_KEY' ) && SECRET_KEY && empty( $duplicated_keys[ SECRET_KEY ] ) )
+               $key = SECRET_KEY;
+       if ( 'auth' == $scheme && defined( 'SECRET_SALT' ) && SECRET_SALT && empty( $duplicated_keys[ SECRET_SALT ] ) )
+               $salt = SECRET_SALT;
+
+       if ( in_array( $scheme, array( 'auth', 'secure_auth', 'logged_in', 'nonce' ) ) ) {
+               foreach ( array( 'key', 'salt' ) as $type ) {
+                       $const = strtoupper( "{$scheme}_{$type}" );
+                       if ( defined( $const ) && constant( $const ) && empty( $duplicated_keys[ constant( $const ) ] ) ) {
+                               $$type = constant( $const );
+                       } elseif ( ! $$type ) {
+                               $$type = get_site_option( "{$scheme}_{$type}" );
+                               if ( ! $$type ) {
+                                       $$type = wp_generate_password( 64, true, true );
+                                       update_site_option( "{$scheme}_{$type}", $$type );
+                               }
                        }
                }
                        }
                }
-       } elseif ( 'nonce' == $scheme ) {
-               if ( defined('NONCE_KEY') && ('' != NONCE_KEY) && ( $wp_default_secret_key != NONCE_KEY) )
-                       $secret_key = NONCE_KEY;
-
-               if ( defined('NONCE_SALT') && ('' != NONCE_SALT) && ( $wp_default_secret_key != NONCE_SALT) ) {
-                       $salt = NONCE_SALT;
-               } else {
-                       $salt = get_site_option('nonce_salt');
-                       if ( empty($salt) ) {
-                               $salt = wp_generate_password( 64, true, true );
-                               update_site_option('nonce_salt', $salt);
+       } else {
+               if ( ! $key ) {
+                       $key = get_site_option( 'secret_key' );
+                       if ( ! $key ) {
+                               $key = wp_generate_password( 64, true, true );
+                               update_site_option( 'secret_key', $key );
                        }
                }
                        }
                }
-       } else {
-               // ensure each auth scheme has its own unique salt
-               $salt = hash_hmac('md5', $scheme, $secret_key);
+               $salt = hash_hmac( 'md5', $scheme, $key );
        }
 
        }
 
-       return apply_filters('salt', $secret_key . $salt, $scheme);
+       $cached_salts[ $scheme ] = $key . $salt;
+       return apply_filters( 'salt', $cached_salts[ $scheme ], $scheme );
 }
 endif;
 
 }
 endif;
 
@@ -1418,7 +1414,7 @@ function wp_hash_password($password) {
        if ( empty($wp_hasher) ) {
                require_once( ABSPATH . 'wp-includes/class-phpass.php');
                // By default, use the portable hash from phpass
        if ( empty($wp_hasher) ) {
                require_once( ABSPATH . 'wp-includes/class-phpass.php');
                // By default, use the portable hash from phpass
-               $wp_hasher = new PasswordHash(8, TRUE);
+               $wp_hasher = new PasswordHash(8, true);
        }
 
        return $wp_hasher->HashPassword($password);
        }
 
        return $wp_hasher->HashPassword($password);
@@ -1466,7 +1462,7 @@ function wp_check_password($password, $hash, $user_id = '') {
        if ( empty($wp_hasher) ) {
                require_once( ABSPATH . 'wp-includes/class-phpass.php');
                // By default, use the portable hash from phpass
        if ( empty($wp_hasher) ) {
                require_once( ABSPATH . 'wp-includes/class-phpass.php');
                // By default, use the portable hash from phpass
-               $wp_hasher = new PasswordHash(8, TRUE);
+               $wp_hasher = new PasswordHash(8, true);
        }
 
        $check = $wp_hasher->CheckPassword($password, $hash);
        }
 
        $check = $wp_hasher->CheckPassword($password, $hash);
@@ -1629,7 +1625,7 @@ function get_avatar( $id_or_email, $size = '96', $default = '', $alt = false ) {
        }
 
        if ( !empty($email) )
        }
 
        if ( !empty($email) )
-               $email_hash = md5( strtolower( $email ) );
+               $email_hash = md5( strtolower( trim( $email ) ) );
 
        if ( is_ssl() ) {
                $host = 'https://secure.gravatar.com';
 
        if ( is_ssl() ) {
                $host = 'https://secure.gravatar.com';
@@ -1647,7 +1643,7 @@ function get_avatar( $id_or_email, $size = '96', $default = '', $alt = false ) {
        elseif ( !empty($email) && 'gravatar_default' == $default )
                $default = '';
        elseif ( 'gravatar_default' == $default )
        elseif ( !empty($email) && 'gravatar_default' == $default )
                $default = '';
        elseif ( 'gravatar_default' == $default )
-               $default = "$host/avatar/s={$size}";
+               $default = "$host/avatar/?s={$size}";
        elseif ( empty($email) )
                $default = "$host/avatar/?d=$default&amp;s={$size}";
        elseif ( strpos($default, 'http://') === 0 )
        elseif ( empty($email) )
                $default = "$host/avatar/?d=$default&amp;s={$size}";
        elseif ( strpos($default, 'http://') === 0 )
@@ -1709,8 +1705,8 @@ function wp_text_diff( $left_string, $right_string, $args = null ) {
        $left_string  = normalize_whitespace($left_string);
        $right_string = normalize_whitespace($right_string);
 
        $left_string  = normalize_whitespace($left_string);
        $right_string = normalize_whitespace($right_string);
 
-       $left_lines  = split("\n", $left_string);
-       $right_lines = split("\n", $right_string);
+       $left_lines  = explode("\n", $left_string);
+       $right_lines = explode("\n", $right_string);
 
        $text_diff = new Text_Diff($left_lines, $right_lines);
        $renderer  = new WP_Text_Diff_Renderer_Table();
 
        $text_diff = new Text_Diff($left_lines, $right_lines);
        $renderer  = new WP_Text_Diff_Renderer_Table();
index bb71d3d3b6c67c3068adfecda8e80c43d63f8e2b..914d70654ca3c82deecf59c58eaba497725f0e8f 100644 (file)
@@ -80,7 +80,7 @@ function add_filter($tag, $function_to_add, $priority = 10, $accepted_args = 1)
  * @global array $wp_filter Stores all of the filters
  *
  * @param string $tag The name of the filter hook.
  * @global array $wp_filter Stores all of the filters
  *
  * @param string $tag The name of the filter hook.
- * @param callback $function_to_check optional.  If specified, return the priority of that function on this hook or false if not attached.
+ * @param callback $function_to_check optional. If specified, return the priority of that function on this hook or false if not attached.
  * @return int|boolean Optionally returns the priority on that hook for the specified function.
  */
 function has_filter($tag, $function_to_check = false) {
  * @return int|boolean Optionally returns the priority on that hook for the specified function.
  */
 function has_filter($tag, $function_to_check = false) {
@@ -308,7 +308,6 @@ function current_filter() {
        return end( $wp_current_filter );
 }
 
        return end( $wp_current_filter );
 }
 
-
 /**
  * Hooks a function on to a specific action.
  *
 /**
  * Hooks a function on to a specific action.
  *
@@ -332,7 +331,6 @@ function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1)
        return add_filter($tag, $function_to_add, $priority, $accepted_args);
 }
 
        return add_filter($tag, $function_to_add, $priority, $accepted_args);
 }
 
-
 /**
  * Execute functions hooked on a specific action hook.
  *
 /**
  * Execute functions hooked on a specific action hook.
  *
@@ -499,7 +497,7 @@ function do_action_ref_array($tag, $args) {
  * @see has_filter() has_action() is an alias of has_filter().
  *
  * @param string $tag The name of the action hook.
  * @see has_filter() has_action() is an alias of has_filter().
  *
  * @param string $tag The name of the action hook.
- * @param callback $function_to_check optional.  If specified, return the priority of that function on this hook or false if not attached.
+ * @param callback $function_to_check optional. If specified, return the priority of that function on this hook or false if not attached.
  * @return int|boolean Optionally returns the priority on that hook for the specified function.
  */
 function has_action($tag, $function_to_check = false) {
  * @return int|boolean Optionally returns the priority on that hook for the specified function.
  */
 function has_action($tag, $function_to_check = false) {
@@ -744,7 +742,7 @@ function _wp_call_all_hook($args) {
  * @global array $wp_filter Storage for all of the filters and actions
  * @param string $tag Used in counting how many hooks were applied
  * @param callback $function Used for creating unique id
  * @global array $wp_filter Storage for all of the filters and actions
  * @param string $tag Used in counting how many hooks were applied
  * @param callback $function Used for creating unique id
- * @param int|bool $priority Used in counting how many hooks were applied.  If === false and $function is an object reference, we return the unique id only if it already has one, false otherwise.
+ * @param int|bool $priority Used in counting how many hooks were applied. If === false and $function is an object reference, we return the unique id only if it already has one, false otherwise.
  * @return string|bool Unique ID for usage as array key or false if $priority === false and $function is an object reference, and it does not already have a unique id.
  */
 function _wp_filter_build_unique_id($tag, $function, $priority) {
  * @return string|bool Unique ID for usage as array key or false if $priority === false and $function is an object reference, and it does not already have a unique id.
  */
 function _wp_filter_build_unique_id($tag, $function, $priority) {
@@ -784,5 +782,3 @@ function _wp_filter_build_unique_id($tag, $function, $priority) {
                return $function[0].$function[1];
        }
 }
                return $function[0].$function[1];
        }
 }
-
-?>
index eac548b0b0635481eb0803569b2df900b4f7216f..5a414eaf5af82df55a1eb3a278b19b529a866ef0 100644 (file)
@@ -79,7 +79,6 @@ function the_title_attribute( $args = '' ) {
        $r = wp_parse_args($args, $defaults);
        extract( $r, EXTR_SKIP );
 
        $r = wp_parse_args($args, $defaults);
        extract( $r, EXTR_SKIP );
 
-
        $title = $before . $title . $after;
        $title = esc_attr(strip_tags($title));
 
        $title = $before . $title . $after;
        $title = esc_attr(strip_tags($title));
 
@@ -188,10 +187,8 @@ function get_the_content($more_link_text = null, $stripteaser = false) {
        $hasTeaser = false;
 
        // If post password required and it doesn't match the cookie.
        $hasTeaser = false;
 
        // If post password required and it doesn't match the cookie.
-       if ( post_password_required($post) ) {
-               $output = get_the_password_form();
-               return $output;
-       }
+       if ( post_password_required($post) )
+               return get_the_password_form();
 
        if ( $page > count($pages) ) // if the requested page doesn't exist
                $page = count($pages); // give them the highest numbered page that DOES exist
 
        if ( $page > count($pages) ) // if the requested page doesn't exist
                $page = count($pages); // give them the highest numbered page that DOES exist
@@ -414,8 +411,10 @@ function get_body_class( $class = '' ) {
                $classes[] = 'archive';
        if ( is_date() )
                $classes[] = 'date';
                $classes[] = 'archive';
        if ( is_date() )
                $classes[] = 'date';
-       if ( is_search() )
+       if ( is_search() ) {
                $classes[] = 'search';
                $classes[] = 'search';
+               $classes[] = $wp_query->posts ? 'search-results' : 'search-no-results';
+       }
        if ( is_paged() )
                $classes[] = 'paged';
        if ( is_attachment() )
        if ( is_paged() )
                $classes[] = 'paged';
        if ( is_attachment() )
@@ -490,15 +489,10 @@ function get_body_class( $class = '' ) {
                }
                if ( is_page_template() ) {
                        $classes[] = 'page-template';
                }
                if ( is_page_template() ) {
                        $classes[] = 'page-template';
-                       $classes[] = 'page-template-' . sanitize_html_class( str_replace( '.', '-', get_post_meta( $page_id, '_wp_page_template', true ) ), '' );
+                       $classes[] = 'page-template-' . sanitize_html_class( str_replace( '.', '-', get_page_template_slug( $page_id ) ) );
                } else {
                        $classes[] = 'page-template-default';
                }
                } else {
                        $classes[] = 'page-template-default';
                }
-       } elseif ( is_search() ) {
-               if ( !empty( $wp_query->posts ) )
-                       $classes[] = 'search-results';
-               else
-                       $classes[] = 'search-no-results';
        }
 
        if ( is_user_logged_in() )
        }
 
        if ( is_user_logged_in() )
@@ -507,7 +501,7 @@ function get_body_class( $class = '' ) {
        if ( is_admin_bar_showing() )
                $classes[] = 'admin-bar';
 
        if ( is_admin_bar_showing() )
                $classes[] = 'admin-bar';
 
-       if ( get_background_image() || get_background_color() )
+       if ( get_theme_mod( 'background_color' ) || get_background_image() )
                $classes[] = 'custom-background';
 
        $page = $wp_query->get( 'page' );
                $classes[] = 'custom-background';
 
        $page = $wp_query->get( 'page' );
@@ -555,22 +549,29 @@ function get_body_class( $class = '' ) {
  *
  * @since 2.7.0
  *
  *
  * @since 2.7.0
  *
- * @param int|object $post An optional post.  Global $post used if not provided.
+ * @param int|object $post An optional post. Global $post used if not provided.
  * @return bool false if a password is not required or the correct password cookie is present, true otherwise.
  */
 function post_password_required( $post = null ) {
  * @return bool false if a password is not required or the correct password cookie is present, true otherwise.
  */
 function post_password_required( $post = null ) {
+       global $wp_hasher;
+
        $post = get_post($post);
 
        $post = get_post($post);
 
-       if ( empty($post->post_password) )
+       if ( empty( $post->post_password ) )
                return false;
 
                return false;
 
-       if ( !isset($_COOKIE['wp-postpass_' . COOKIEHASH]) )
+       if ( ! isset( $_COOKIE['wp-postpass_' . COOKIEHASH] ) )
                return true;
 
                return true;
 
-       if ( stripslashes( $_COOKIE['wp-postpass_' . COOKIEHASH] ) != $post->post_password )
-               return true;
+       if ( empty( $wp_hasher ) ) {
+               require_once( ABSPATH . 'wp-includes/class-phpass.php');
+               // By default, use the portable hash from phpass
+               $wp_hasher = new PasswordHash(8, true);
+       }
 
 
-       return false;
+       $hash = stripslashes( $_COOKIE[ 'wp-postpass_' . COOKIEHASH ] );
+
+       return ! $wp_hasher->CheckPassword( $post->post_password, $hash );
 }
 
 /**
 }
 
 /**
@@ -994,7 +995,7 @@ class Walker_Page extends Walker {
         * @param string $output Passed by reference. Used to append additional content.
         * @param int $depth Depth of page. Used for padding.
         */
         * @param string $output Passed by reference. Used to append additional content.
         * @param int $depth Depth of page. Used for padding.
         */
-       function start_lvl(&$output, $depth) {
+       function start_lvl( &$output, $depth = 0, $args = array() ) {
                $indent = str_repeat("\t", $depth);
                $output .= "\n$indent<ul class='children'>\n";
        }
                $indent = str_repeat("\t", $depth);
                $output .= "\n$indent<ul class='children'>\n";
        }
@@ -1006,7 +1007,7 @@ class Walker_Page extends Walker {
         * @param string $output Passed by reference. Used to append additional content.
         * @param int $depth Depth of page. Used for padding.
         */
         * @param string $output Passed by reference. Used to append additional content.
         * @param int $depth Depth of page. Used for padding.
         */
-       function end_lvl(&$output, $depth) {
+       function end_lvl( &$output, $depth = 0, $args = array() ) {
                $indent = str_repeat("\t", $depth);
                $output .= "$indent</ul>\n";
        }
                $indent = str_repeat("\t", $depth);
                $output .= "$indent</ul>\n";
        }
@@ -1021,7 +1022,7 @@ class Walker_Page extends Walker {
         * @param int $current_page Page ID.
         * @param array $args
         */
         * @param int $current_page Page ID.
         * @param array $args
         */
-       function start_el(&$output, $page, $depth, $args, $current_page) {
+       function start_el( &$output, $page, $depth, $args, $current_page = 0 ) {
                if ( $depth )
                        $indent = str_repeat("\t", $depth);
                else
                if ( $depth )
                        $indent = str_repeat("\t", $depth);
                else
@@ -1064,7 +1065,7 @@ class Walker_Page extends Walker {
         * @param object $page Page data object. Not used.
         * @param int $depth Depth of page. Not Used.
         */
         * @param object $page Page data object. Not used.
         * @param int $depth Depth of page. Not Used.
         */
-       function end_el(&$output, $page, $depth) {
+       function end_el( &$output, $page, $depth = 0, $args = array() ) {
                $output .= "</li>\n";
        }
 
                $output .= "</li>\n";
        }
 
@@ -1102,7 +1103,7 @@ class Walker_PageDropdown extends Walker {
         * @param int $depth Depth of page in reference to parent pages. Used for padding.
         * @param array $args Uses 'selected' argument for selected page to set selected HTML attribute for option element.
         */
         * @param int $depth Depth of page in reference to parent pages. Used for padding.
         * @param array $args Uses 'selected' argument for selected page to set selected HTML attribute for option element.
         */
-       function start_el(&$output, $page, $depth, $args) {
+       function start_el(&$output, $page, $depth, $args, $id = 0) {
                $pad = str_repeat('&nbsp;', $depth * 3);
 
                $output .= "\t<option class=\"level-$depth\" value=\"$page->ID\"";
                $pad = str_repeat('&nbsp;', $depth * 3);
 
                $output .= "\t<option class=\"level-$depth\" value=\"$page->ID\"";
@@ -1165,7 +1166,7 @@ function wp_get_attachment_link( $id = 0, $size = 'thumbnail', $permalink = fals
        $post_title = esc_attr( $_post->post_title );
 
        if ( $text )
        $post_title = esc_attr( $_post->post_title );
 
        if ( $text )
-               $link_text = esc_attr( $text );
+               $link_text = $text;
        elseif ( $size && 'none' != $size )
                $link_text = wp_get_attachment_image( $id, $size, $icon );
        else
        elseif ( $size && 'none' != $size )
                $link_text = wp_get_attachment_image( $id, $size, $icon );
        else
@@ -1215,8 +1216,8 @@ function prepend_attachment($content) {
  */
 function get_the_password_form() {
        global $post;
  */
 function get_the_password_form() {
        global $post;
-       $label = 'pwbox-'.(empty($post->ID) ? rand() : $post->ID);
-       $output = '<form action="' . get_option('siteurl') . '/wp-pass.php" method="post">
+       $label = 'pwbox-' . ( empty($post->ID) ? rand() : $post->ID );
+       $output = '<form action="' . esc_url( site_url( 'wp-login.php?action=postpass', 'login_post' ) ) . '" method="post">
        <p>' . __("This post is password protected. To view it please enter your password below:") . '</p>
        <p><label for="' . $label . '">' . __("Password:") . ' <input name="post_password" id="' . $label . '" type="password" size="20" /></label> <input type="submit" name="Submit" value="' . esc_attr__("Submit") . '" /></p>
        </form>
        <p>' . __("This post is password protected. To view it please enter your password below:") . '</p>
        <p><label for="' . $label . '">' . __("Password:") . ' <input name="post_password" id="' . $label . '" type="password" size="20" /></label> <input type="submit" name="Submit" value="' . esc_attr__("Submit") . '" /></p>
        </form>
@@ -1237,29 +1238,43 @@ function get_the_password_form() {
  * @param string $template The specific template name if specific matching is required.
  * @return bool False on failure, true if success.
  */
  * @param string $template The specific template name if specific matching is required.
  * @return bool False on failure, true if success.
  */
-function is_page_template($template = '') {
-       if (!is_page()) {
+function is_page_template( $template = '' ) {
+       if ( ! is_page() )
                return false;
                return false;
-       }
 
 
-       global $wp_query;
+       $page_template = get_page_template_slug( get_queried_object_id() );
 
 
-       $page = $wp_query->get_queried_object();
-       $custom_fields = get_post_custom_values('_wp_page_template',$page->ID);
-       $page_template = $custom_fields[0];
+       if ( empty( $template ) )
+               return (bool) $page_template;
 
 
-       // We have no argument passed so just see if a page_template has been specified
-       if ( empty( $template ) ) {
-               if ( !empty( $page_template ) and ( 'default' != $page_template ) ) {
-                       return true;
-               }
-       } elseif ( $template == $page_template) {
+       if ( $template == $page_template )
+               return true;
+
+       if ( 'default' == $template && ! $page_template )
                return true;
                return true;
-       }
 
        return false;
 }
 
 
        return false;
 }
 
+/**
+ * Get the specific template name for a page.
+ *
+ * @since 3.4.0
+ *
+ * @param int $id The page ID to check. Defaults to the current post, when used in the loop.
+ * @return string|bool Page template filename. Returns an empty string when the default page template
+ *     is in use. Returns false if the post is not a page.
+ */
+function get_page_template_slug( $post_id = null ) {
+       $post = get_post( $post_id );
+       if ( 'page' != $post->post_type )
+               return false;
+       $template = get_post_meta( $post->ID, '_wp_page_template', true );
+       if ( ! $template || 'default' == $template )
+               return '';
+       return $template;
+}
+
 /**
  * Retrieve formatted date timestamp of a revision (linked to that revisions's page).
  *
 /**
  * Retrieve formatted date timestamp of a revision (linked to that revisions's page).
  *
@@ -1307,7 +1322,7 @@ function wp_post_revision_title( $revision, $link = true ) {
  *
  * Second argument controls parameters:
  *   (bool)   parent : include the parent (the "Current Revision") in the list.
  *
  * Second argument controls parameters:
  *   (bool)   parent : include the parent (the "Current Revision") in the list.
- *   (string) format : 'list' or 'form-table'.  'list' outputs UL, 'form-table'
+ *   (string) format : 'list' or 'form-table'. 'list' outputs UL, 'form-table'
  *                     outputs TABLE with UI.
  *   (int)    right  : what revision is currently being viewed - used in
  *                     form-table format.
  *                     outputs TABLE with UI.
  *   (int)    right  : what revision is currently being viewed - used in
  *                     form-table format.
index 65a517266a119cbb6298b822efd1af4b8ab95e40..16952d03c86125ab7e54bcd6a26bc41fa21f874b 100644 (file)
@@ -39,7 +39,7 @@ function get_post_thumbnail_id( $post_id = null ) {
  *
  * @since 2.9.0
  *
  *
  * @since 2.9.0
  *
- * @param int $size Optional. Image size.  Defaults to 'post-thumbnail', which theme sets using set_post_thumbnail_size( $width, $height, $crop_flag );.
+ * @param int $size Optional. Image size. Defaults to 'post-thumbnail', which theme sets using set_post_thumbnail_size( $width, $height, $crop_flag );.
  * @param string|array $attr Optional. Query string or array of attributes.
  */
 function the_post_thumbnail( $size = 'post-thumbnail', $attr = '' ) {
  * @param string|array $attr Optional. Query string or array of attributes.
  */
 function the_post_thumbnail( $size = 'post-thumbnail', $attr = '' ) {
@@ -50,9 +50,12 @@ function the_post_thumbnail( $size = 'post-thumbnail', $attr = '' ) {
  * Update cache for thumbnails in the current loop
  *
  * @since 3.2
  * Update cache for thumbnails in the current loop
  *
  * @since 3.2
+ *
+ * @param object $wp_query Optional. A WP_Query instance. Defaults to the $wp_query global.
  */
  */
-function update_post_thumbnail_cache() {
-       global $wp_query;
+function update_post_thumbnail_cache( $wp_query = null ) {
+       if ( ! $wp_query )
+               $wp_query = $GLOBALS['wp_query'];
 
        if ( $wp_query->thumbnails_cached )
                return;
 
        if ( $wp_query->thumbnails_cached )
                return;
@@ -64,13 +67,7 @@ function update_post_thumbnail_cache() {
        }
 
        if ( ! empty ( $thumb_ids ) ) {
        }
 
        if ( ! empty ( $thumb_ids ) ) {
-               get_posts( array(
-                               'update_post_term_cache' => false,
-                               'include' => $thumb_ids,
-                               'post_type' => 'attachment',
-                               'post_status' => 'inherit',
-                               'nopaging' => true
-               ) );
+               _prime_post_caches( $thumb_ids, false, true );
        }
 
        $wp_query->thumbnails_cached = true;
        }
 
        $wp_query->thumbnails_cached = true;
@@ -82,7 +79,7 @@ function update_post_thumbnail_cache() {
  * @since 2.9.0
  *
  * @param int $post_id Optional. Post ID.
  * @since 2.9.0
  *
  * @param int $post_id Optional. Post ID.
- * @param string $size Optional. Image size.  Defaults to 'thumbnail'.
+ * @param string $size Optional. Image size. Defaults to 'post-thumbnail'.
  * @param string|array $attr Optional. Query string or array of attributes.
  */
 function get_the_post_thumbnail( $post_id = null, $size = 'post-thumbnail', $attr = '' ) {
  * @param string|array $attr Optional. Query string or array of attributes.
  */
 function get_the_post_thumbnail( $post_id = null, $size = 'post-thumbnail', $attr = '' ) {
@@ -100,5 +97,3 @@ function get_the_post_thumbnail( $post_id = null, $size = 'post-thumbnail', $att
        }
        return apply_filters( 'post_thumbnail_html', $html, $post_id, $post_thumbnail_id, $size, $attr );
 }
        }
        return apply_filters( 'post_thumbnail_html', $html, $post_id, $post_thumbnail_id, $size, $attr );
 }
-
-?>
index f875f2f816231df25c902c7c4486b1ebb352cb22..dee484e0b1af02494c4128ae9797e220f8b30542 100644 (file)
@@ -29,6 +29,7 @@ function create_initial_post_types() {
                'hierarchical' => false,
                'rewrite' => false,
                'query_var' => false,
                'hierarchical' => false,
                'rewrite' => false,
                'query_var' => false,
+               'delete_with_user' => true,
                'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'post-formats' ),
        ) );
 
                'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'post-formats' ),
        ) );
 
@@ -45,6 +46,7 @@ function create_initial_post_types() {
                'hierarchical' => true,
                'rewrite' => false,
                'query_var' => false,
                'hierarchical' => true,
                'rewrite' => false,
                'query_var' => false,
+               'delete_with_user' => true,
                'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'page-attributes', 'custom-fields', 'comments', 'revisions' ),
        ) );
 
                'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'page-attributes', 'custom-fields', 'comments', 'revisions' ),
        ) );
 
@@ -63,7 +65,8 @@ function create_initial_post_types() {
                'rewrite' => false,
                'query_var' => false,
                'show_in_nav_menus' => false,
                'rewrite' => false,
                'query_var' => false,
                'show_in_nav_menus' => false,
-               'supports' => array( 'comments' ),
+               'delete_with_user' => true,
+               'supports' => array( 'comments', 'author' ),
        ) );
 
        register_post_type( 'revision', array(
        ) );
 
        register_post_type( 'revision', array(
@@ -80,6 +83,8 @@ function create_initial_post_types() {
                'rewrite' => false,
                'query_var' => false,
                'can_export' => false,
                'rewrite' => false,
                'query_var' => false,
                'can_export' => false,
+               'delete_with_user' => true,
+               'supports' => array( 'author' ),
        ) );
 
        register_post_type( 'nav_menu_item', array(
        ) );
 
        register_post_type( 'nav_menu_item', array(
@@ -91,6 +96,7 @@ function create_initial_post_types() {
                '_builtin' => true, /* internal use only. don't use this when registering your own post type. */
                'hierarchical' => false,
                'rewrite' => false,
                '_builtin' => true, /* internal use only. don't use this when registering your own post type. */
                'hierarchical' => false,
                'rewrite' => false,
+               'delete_with_user' => false,
                'query_var' => false,
        ) );
 
                'query_var' => false,
        ) );
 
@@ -168,12 +174,12 @@ add_action( 'init', 'create_initial_post_types', 0 ); // highest priority
  *
  * @param int $attachment_id Attachment ID.
  * @param bool $unfiltered Whether to apply filters.
  *
  * @param int $attachment_id Attachment ID.
  * @param bool $unfiltered Whether to apply filters.
- * @return string The file path to the attached file.
+ * @return string|bool The file path to the attached file, or false if the attachment does not exist.
  */
 function get_attached_file( $attachment_id, $unfiltered = false ) {
        $file = get_post_meta( $attachment_id, '_wp_attached_file', true );
        // If the file is relative, prepend upload dir
  */
 function get_attached_file( $attachment_id, $unfiltered = false ) {
        $file = get_post_meta( $attachment_id, '_wp_attached_file', true );
        // If the file is relative, prepend upload dir
-       if ( 0 !== strpos($file, '/') && !preg_match('|^.:\\\|', $file) && ( ($uploads = wp_upload_dir()) && false === $uploads['error'] ) )
+       if ( $file && 0 !== strpos($file, '/') && !preg_match('|^.:\\\|', $file) && ( ($uploads = wp_upload_dir()) && false === $uploads['error'] ) )
                $file = $uploads['basedir'] . "/$file";
        if ( $unfiltered )
                return $file;
                $file = $uploads['basedir'] . "/$file";
        if ( $unfiltered )
                return $file;
@@ -328,29 +334,32 @@ function get_children($args = '', $output = OBJECT) {
  * 'more'. There can be text or space(s) after the word 'more', but won't be
  * referenced.
  *
  * 'more'. There can be text or space(s) after the word 'more', but won't be
  * referenced.
  *
- * The returned array has 'main' and 'extended' keys. Main has the text before
+ * The returned array has 'main', 'extended', and 'more_text' keys. Main has the text before
  * the <code><!--more--></code>. The 'extended' key has the content after the
  * the <code><!--more--></code>. The 'extended' key has the content after the
- * <code><!--more--></code> comment.
+ * <code><!--more--></code> comment. The 'more_text' key has the custom "Read More" text.
  *
  * @since 1.0.0
  *
  * @param string $post Post content.
  *
  * @since 1.0.0
  *
  * @param string $post Post content.
- * @return array Post before ('main') and after ('extended').
+ * @return array Post before ('main'), after ('extended'), and custom readmore ('more_text').
  */
 function get_extended($post) {
        //Match the new style more links
        if ( preg_match('/<!--more(.*?)?-->/', $post, $matches) ) {
                list($main, $extended) = explode($matches[0], $post, 2);
  */
 function get_extended($post) {
        //Match the new style more links
        if ( preg_match('/<!--more(.*?)?-->/', $post, $matches) ) {
                list($main, $extended) = explode($matches[0], $post, 2);
+               $more_text = $matches[1];
        } else {
                $main = $post;
                $extended = '';
        } else {
                $main = $post;
                $extended = '';
+               $more_text = '';
        }
 
        // Strip leading and trailing whitespace
        $main = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $main);
        $extended = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $extended);
        }
 
        // Strip leading and trailing whitespace
        $main = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $main);
        $extended = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $extended);
+       $more_text = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $more_text);
 
 
-       return array('main' => $main, 'extended' => $extended);
+       return array( 'main' => $main, 'extended' => $extended, 'more_text' => $more_text );
 }
 
 /**
 }
 
 /**
@@ -427,7 +436,10 @@ function &get_post(&$post, $output = OBJECT, $filter = 'raw') {
 function get_post_ancestors($post) {
        $post = get_post($post);
 
 function get_post_ancestors($post) {
        $post = get_post($post);
 
-       if ( !empty($post->ancestors) )
+       if ( ! isset( $post->ancestors ) )
+               _get_post_ancestors( $post );
+
+       if ( ! empty( $post->ancestors ) )
                return $post->ancestors;
 
        return array();
                return $post->ancestors;
 
        return array();
@@ -493,7 +505,7 @@ function get_post_mime_type($ID = '') {
  *
  * @param int|object $post A post
  *
  *
  * @param int|object $post A post
  *
- * @return mixed The format if successful. False if no format is set.  WP_Error if errors.
+ * @return mixed The format if successful. False if no format is set. WP_Error if errors.
  */
 function get_post_format( $post = null ) {
        $post = get_post($post);
  */
 function get_post_format( $post = null ) {
        $post = get_post($post);
@@ -531,7 +543,7 @@ function has_post_format( $format, $post = null ) {
  * @since 3.1.0
  *
  * @param int|object $post The post for which to assign a format
  * @since 3.1.0
  *
  * @param int|object $post The post for which to assign a format
- * @param string $format  A format to assign.  Use an empty string or array to remove all formats from the post.
+ * @param string $format  A format to assign. Use an empty string or array to remove all formats from the post.
  * @return mixed WP_Error on error. Array of affected term IDs on success.
  */
 function set_post_format( $post, $format ) {
  * @return mixed WP_Error on error. Array of affected term IDs on success.
  */
 function set_post_format( $post, $format ) {
@@ -626,7 +638,7 @@ function get_page_statuses( ) {
 }
 
 /**
 }
 
 /**
- * Register a post type. Do not use before init.
+ * Register a post status. Do not use before init.
  *
  * A simple function for creating or modifying a post status based on the
  * parameters given. The function will accept an array (second optional
  *
  * A simple function for creating or modifying a post status based on the
  * parameters given. The function will accept an array (second optional
@@ -743,7 +755,7 @@ function get_post_status_object( $post_status ) {
  * @param string $output The type of output to return, either post status 'names' or 'objects'. 'names' is the default.
  * @param string $operator The logical operation to perform. 'or' means only one element
  *  from the array needs to match; 'and' means all elements must match. The default is 'and'.
  * @param string $output The type of output to return, either post status 'names' or 'objects'. 'names' is the default.
  * @param string $operator The logical operation to perform. 'or' means only one element
  *  from the array needs to match; 'and' means all elements must match. The default is 'and'.
- * @return array A list of post type names or objects
+ * @return array A list of post status names or objects
  */
 function get_post_stati( $args = array(), $output = 'names', $operator = 'and' ) {
        global $wp_post_statuses;
  */
 function get_post_stati( $args = array(), $output = 'names', $operator = 'and' ) {
        global $wp_post_statuses;
@@ -864,53 +876,84 @@ function get_post_types( $args = array(), $output = 'names', $operator = 'and' )
  * Optional $args contents:
  *
  * - label - Name of the post type shown in the menu. Usually plural. If not set, labels['name'] will be used.
  * Optional $args contents:
  *
  * - label - Name of the post type shown in the menu. Usually plural. If not set, labels['name'] will be used.
+ * - labels - An array of labels for this post type.
+ *     * If not set, post labels are inherited for non-hierarchical types and page labels for hierarchical ones.
+ *     * You can see accepted values in {@link get_post_type_labels()}.
  * - description - A short descriptive summary of what the post type is. Defaults to blank.
  * - description - A short descriptive summary of what the post type is. Defaults to blank.
- * - public - Whether posts of this type should be shown in the admin UI. Defaults to false.
- * - exclude_from_search - Whether to exclude posts with this post type from search results.
- *     Defaults to true if the type is not public, false if the type is public.
- * - publicly_queryable - Whether post_type queries can be performed from the front page.
- *     Defaults to whatever public is set as.
- * - show_ui - Whether to generate a default UI for managing this post type. Defaults to true
- *     if the type is public, false if the type is not public.
- * - show_in_menu - Where to show the post type in the admin menu. True for a top level menu,
- *     false for no menu, or can be a top level page like 'tools.php' or 'edit.php?post_type=page'.
- *     show_ui must be true.
- * - menu_position - The position in the menu order the post type should appear. Defaults to the bottom.
+ * - public - Whether a post type is intended for use publicly either via the admin interface or by front-end users.
+ *     * Defaults to false.
+ *     * While the default settings of exclude_from_search, publicly_queryable, show_ui, and show_in_nav_menus are
+ *       inherited from public, each does not rely on this relationship and controls a very specific intention.
+ * - exclude_from_search - Whether to exclude posts with this post type from front end search results.
+ *     * If not set, the the opposite of public's current value is used.
+ * - publicly_queryable - Whether queries can be performed on the front end for the post type as part of parse_request().
+ *     * ?post_type={post_type_key}
+ *     * ?{post_type_key}={single_post_slug}
+ *     * ?{post_type_query_var}={single_post_slug}
+ *     * If not set, the default is inherited from public.
+ * - show_ui - Whether to generate a default UI for managing this post type in the admin.
+ *     * If not set, the default is inherited from public.
+ * - show_in_nav_menus - Makes this post type available for selection in navigation menus.
+ *     * If not set, the default is inherited from public.
+ * - show_in_menu - Where to show the post type in the admin menu.
+ *     * If true, the post type is shown in its own top level menu.
+ *     * If false, no menu is shown
+ *     * If a string of an existing top level menu (eg. 'tools.php' or 'edit.php?post_type=page'), the post type will
+ *       be placed as a sub menu of that.
+ *     * show_ui must be true.
+ *     * If not set, the default is inherited from show_ui
+ * - show_in_admin_bar - Makes this post type available via the admin bar.
+ *     * If not set, the default is inherited from show_in_menu
+ * - menu_position - The position in the menu order the post type should appear.
+ *     * show_in_menu must be true
+ *     * Defaults to null, which places it at the bottom of its area.
  * - menu_icon - The url to the icon to be used for this menu. Defaults to use the posts icon.
  * - capability_type - The string to use to build the read, edit, and delete capabilities. Defaults to 'post'.
  * - menu_icon - The url to the icon to be used for this menu. Defaults to use the posts icon.
  * - capability_type - The string to use to build the read, edit, and delete capabilities. Defaults to 'post'.
- *   May be passed as an array to allow for alternative plurals when using this argument as a base to construct the
- *   capabilities, e.g. array('story', 'stories').
- * - capabilities - Array of capabilities for this post type. By default the capability_type is used
- *      as a base to construct capabilities. You can see accepted values in {@link get_post_type_capabilities()}.
+ *     * May be passed as an array to allow for alternative plurals when using this argument as a base to construct the
+ *       capabilities, e.g. array('story', 'stories').
+ * - capabilities - Array of capabilities for this post type.
+ *     * By default the capability_type is used as a base to construct capabilities.
+ *     * You can see accepted values in {@link get_post_type_capabilities()}.
  * - map_meta_cap - Whether to use the internal default meta capability handling. Defaults to false.
  * - map_meta_cap - Whether to use the internal default meta capability handling. Defaults to false.
- * - hierarchical - Whether the post type is hierarchical. Defaults to false.
- * - supports - An alias for calling add_post_type_support() directly. See {@link add_post_type_support()}
- *     for documentation. Defaults to none.
+ * - hierarchical - Whether the post type is hierarchical (e.g. page). Defaults to false.
+ * - supports - An alias for calling add_post_type_support() directly. Defaults to title and editor.
+ *     * See {@link add_post_type_support()} for documentation.
  * - register_meta_box_cb - Provide a callback function that will be called when setting up the
  * - register_meta_box_cb - Provide a callback function that will be called when setting up the
- *     meta boxes for the edit form.  Do remove_meta_box() and add_meta_box() calls in the callback.
+ *     meta boxes for the edit form. Do remove_meta_box() and add_meta_box() calls in the callback.
  * - taxonomies - An array of taxonomy identifiers that will be registered for the post type.
  * - taxonomies - An array of taxonomy identifiers that will be registered for the post type.
- *     Default is no taxonomies. Taxonomies can be registered later with register_taxonomy() or
- *     register_taxonomy_for_object_type().
- * - labels - An array of labels for this post type. By default post labels are used for non-hierarchical
- *     types and page labels for hierarchical ones. You can see accepted values in {@link get_post_type_labels()}.
- * - permalink_epmask - The default rewrite endpoint bitmasks.
- * - has_archive - True to enable post type archives. Will generate the proper rewrite rules if rewrite is enabled.
- * - rewrite - false to prevent rewrite. Defaults to true. Use array('slug'=>$slug) to customize permastruct;
- *     default will use $post_type as slug. Other options include 'with_front', 'feeds', and 'pages'.
- * - query_var - false to prevent queries, or string to value of the query var to use for this post type
- * - can_export - true allows this post type to be exported.
- * - show_in_nav_menus - true makes this post type available for selection in navigation menus.
+ *     * Default is no taxonomies.
+ *     * Taxonomies can be registered later with register_taxonomy() or register_taxonomy_for_object_type().
+ * - has_archive - True to enable post type archives. Default is false.
+ *     * Will generate the proper rewrite rules if rewrite is enabled.
+ * - rewrite - Triggers the handling of rewrites for this post type. Defaults to true, using $post_type as slug.
+ *     * To prevent rewrite, set to false.
+ *     * To specify rewrite rules, an array can be passed with any of these keys
+ *         * 'slug' => string Customize the permastruct slug. Defaults to $post_type key
+ *         * 'with_front' => bool Should the permastruct be prepended with WP_Rewrite::$front. Defaults to true.
+ *         * 'feeds' => bool Should a feed permastruct be built for this post type. Inherits default from has_archive.
+ *         * 'pages' => bool Should the permastruct provide for pagination. Defaults to true.
+ *         * 'ep_mask' => const Assign an endpoint mask.
+ *             * If not specified and permalink_epmask is set, inherits from permalink_epmask.
+ *             * If not specified and permalink_epmask is not set, defaults to EP_PERMALINK
+ * - query_var - Sets the query_var key for this post type. Defaults to $post_type key
+ *     * If false, a post type cannot be loaded at ?{query_var}={post_slug}
+ *     * If specified as a string, the query ?{query_var_string}={post_slug} will be valid.
+ * - can_export - Allows this post type to be exported. Defaults to true.
+ * - delete_with_user - Whether to delete posts of this type when deleting a user.
+ *     * If true, posts of this type belonging to the user will be moved to trash when then user is deleted.
+ *     * If false, posts of this type belonging to the user will *not* be trashed or deleted.
+ *     * If not set (the default), posts are trashed if post_type_supports('author'). Otherwise posts are not trashed or deleted.
  * - _builtin - true if this post type is a native or "built-in" post_type. THIS IS FOR INTERNAL USE ONLY!
  * - _edit_link - URL segement to use for edit link of this post type. THIS IS FOR INTERNAL USE ONLY!
  *
  * @since 2.9.0
  * @uses $wp_post_types Inserts new post type object into the list
  *
  * - _builtin - true if this post type is a native or "built-in" post_type. THIS IS FOR INTERNAL USE ONLY!
  * - _edit_link - URL segement to use for edit link of this post type. THIS IS FOR INTERNAL USE ONLY!
  *
  * @since 2.9.0
  * @uses $wp_post_types Inserts new post type object into the list
  *
- * @param string $post_type Name of the post type.
- * @param array|string $args See above description.
+ * @param string $post_type Post type key, must not exceed 20 characters
+ * @param array|string $args See optional args description above.
  * @return object|WP_Error the registered post type object, or an error object
  */
  * @return object|WP_Error the registered post type object, or an error object
  */
-function register_post_type($post_type, $args = array()) {
+function register_post_type( $post_type, $args = array() ) {
        global $wp_post_types, $wp_rewrite, $wp;
 
        if ( !is_array($wp_post_types) )
        global $wp_post_types, $wp_rewrite, $wp;
 
        if ( !is_array($wp_post_types) )
@@ -924,8 +967,9 @@ function register_post_type($post_type, $args = array()) {
                'public' => false, 'rewrite' => true, 'has_archive' => false, 'query_var' => true,
                'supports' => array(), 'register_meta_box_cb' => null,
                'taxonomies' => array(), 'show_ui' => null, 'menu_position' => null, 'menu_icon' => null,
                'public' => false, 'rewrite' => true, 'has_archive' => false, 'query_var' => true,
                'supports' => array(), 'register_meta_box_cb' => null,
                'taxonomies' => array(), 'show_ui' => null, 'menu_position' => null, 'menu_icon' => null,
-               'permalink_epmask' => EP_PERMALINK, 'can_export' => true,
+               'can_export' => true,
                'show_in_nav_menus' => null, 'show_in_menu' => null, 'show_in_admin_bar' => null,
                'show_in_nav_menus' => null, 'show_in_menu' => null, 'show_in_admin_bar' => null,
+               'delete_with_user' => null,
        );
        $args = wp_parse_args($args, $defaults);
        $args = (object) $args;
        );
        $args = wp_parse_args($args, $defaults);
        $args = (object) $args;
@@ -952,7 +996,7 @@ function register_post_type($post_type, $args = array()) {
        if ( null === $args->show_in_admin_bar )
                $args->show_in_admin_bar = true === $args->show_in_menu;
 
        if ( null === $args->show_in_admin_bar )
                $args->show_in_admin_bar = true === $args->show_in_menu;
 
-       // Whether to show this type in nav-menus.php.  Defaults to the setting for public.
+       // Whether to show this type in nav-menus.php. Defaults to the setting for public.
        if ( null === $args->show_in_nav_menus )
                $args->show_in_nav_menus = $args->public;
 
        if ( null === $args->show_in_nav_menus )
                $args->show_in_nav_menus = $args->public;
 
@@ -999,11 +1043,17 @@ function register_post_type($post_type, $args = array()) {
                        $args->rewrite['pages'] = true;
                if ( ! isset( $args->rewrite['feeds'] ) || ! $args->has_archive )
                        $args->rewrite['feeds'] = (bool) $args->has_archive;
                        $args->rewrite['pages'] = true;
                if ( ! isset( $args->rewrite['feeds'] ) || ! $args->has_archive )
                        $args->rewrite['feeds'] = (bool) $args->has_archive;
+               if ( ! isset( $args->rewrite['ep_mask'] ) ) {
+                       if ( isset( $args->permalink_epmask ) )
+                               $args->rewrite['ep_mask'] = $args->permalink_epmask;
+                       else
+                               $args->rewrite['ep_mask'] = EP_PERMALINK;
+               }
 
                if ( $args->hierarchical )
 
                if ( $args->hierarchical )
-                       $wp_rewrite->add_rewrite_tag("%$post_type%", '(.+?)', $args->query_var ? "{$args->query_var}=" : "post_type=$post_type&name=");
+                       add_rewrite_tag("%$post_type%", '(.+?)', $args->query_var ? "{$args->query_var}=" : "post_type=$post_type&name=");
                else
                else
-                       $wp_rewrite->add_rewrite_tag("%$post_type%", '([^/]+)', $args->query_var ? "{$args->query_var}=" : "post_type=$post_type&name=");
+                       add_rewrite_tag("%$post_type%", '([^/]+)', $args->query_var ? "{$args->query_var}=" : "post_type=$post_type&name=");
 
                if ( $args->has_archive ) {
                        $archive_slug = $args->has_archive === true ? $args->rewrite['slug'] : $args->has_archive;
 
                if ( $args->has_archive ) {
                        $archive_slug = $args->has_archive === true ? $args->rewrite['slug'] : $args->has_archive;
@@ -1012,17 +1062,17 @@ function register_post_type($post_type, $args = array()) {
                        else
                                $archive_slug = $wp_rewrite->root . $archive_slug;
 
                        else
                                $archive_slug = $wp_rewrite->root . $archive_slug;
 
-                       $wp_rewrite->add_rule( "{$archive_slug}/?$", "index.php?post_type=$post_type", 'top' );
+                       add_rewrite_rule( "{$archive_slug}/?$", "index.php?post_type=$post_type", 'top' );
                        if ( $args->rewrite['feeds'] && $wp_rewrite->feeds ) {
                                $feeds = '(' . trim( implode( '|', $wp_rewrite->feeds ) ) . ')';
                        if ( $args->rewrite['feeds'] && $wp_rewrite->feeds ) {
                                $feeds = '(' . trim( implode( '|', $wp_rewrite->feeds ) ) . ')';
-                               $wp_rewrite->add_rule( "{$archive_slug}/feed/$feeds/?$", "index.php?post_type=$post_type" . '&feed=$matches[1]', 'top' );
-                               $wp_rewrite->add_rule( "{$archive_slug}/$feeds/?$", "index.php?post_type=$post_type" . '&feed=$matches[1]', 'top' );
+                               add_rewrite_rule( "{$archive_slug}/feed/$feeds/?$", "index.php?post_type=$post_type" . '&feed=$matches[1]', 'top' );
+                               add_rewrite_rule( "{$archive_slug}/$feeds/?$", "index.php?post_type=$post_type" . '&feed=$matches[1]', 'top' );
                        }
                        if ( $args->rewrite['pages'] )
                        }
                        if ( $args->rewrite['pages'] )
-                               $wp_rewrite->add_rule( "{$archive_slug}/{$wp_rewrite->pagination_base}/([0-9]{1,})/?$", "index.php?post_type=$post_type" . '&paged=$matches[1]', 'top' );
+                               add_rewrite_rule( "{$archive_slug}/{$wp_rewrite->pagination_base}/([0-9]{1,})/?$", "index.php?post_type=$post_type" . '&paged=$matches[1]', 'top' );
                }
 
                }
 
-               $wp_rewrite->add_permastruct($post_type, "{$args->rewrite['slug']}/%$post_type%", $args->rewrite['with_front'], $args->permalink_epmask);
+               add_permastruct( $post_type, "{$args->rewrite['slug']}/%$post_type%", $args->rewrite );
        }
 
        if ( $args->register_meta_box_cb )
        }
 
        if ( $args->register_meta_box_cb )
@@ -1070,7 +1120,7 @@ function register_post_type($post_type, $args = array()) {
  *   behave like edit_posts.
  * - publish_posts - Controls publishing objects of this post type.
  * - read_private_posts - Controls whether private objects can be read.
  *   behave like edit_posts.
  * - publish_posts - Controls publishing objects of this post type.
  * - read_private_posts - Controls whether private objects can be read.
-
+ *
  * These four primitive capabilities are checked in core in various locations.
  * There are also seven other primitive capabilities which are not referenced
  * directly in core, except in map_meta_cap(), which takes the three aforementioned
  * These four primitive capabilities are checked in core in various locations.
  * There are also seven other primitive capabilities which are not referenced
  * directly in core, except in map_meta_cap(), which takes the three aforementioned
@@ -1288,6 +1338,23 @@ function remove_post_type_support( $post_type, $feature ) {
                unset($_wp_post_type_features[$post_type][$feature]);
 }
 
                unset($_wp_post_type_features[$post_type][$feature]);
 }
 
+/**
+ * Get all the post type features
+ *
+ * @since 3.4.0
+ * @param string $post_type The post type
+ * @return array
+ */
+
+function get_all_post_type_supports( $post_type ) {
+       global $_wp_post_type_features;
+
+       if ( isset( $_wp_post_type_features[$post_type] ) )
+               return $_wp_post_type_features[$post_type];
+
+       return array();
+}
+
 /**
  * Checks a post type's support for a given feature
  *
 /**
  * Checks a post type's support for a given feature
  *
@@ -1331,12 +1398,9 @@ function set_post_type( $post_id = 0, $post_type = 'post' ) {
        global $wpdb;
 
        $post_type = sanitize_post_field('post_type', $post_type, $post_id, 'db');
        global $wpdb;
 
        $post_type = sanitize_post_field('post_type', $post_type, $post_id, 'db');
-       $return = $wpdb->update($wpdb->posts, array('post_type' => $post_type), array('ID' => $post_id) );
+       $return = $wpdb->update( $wpdb->posts, array('post_type' => $post_type), array('ID' => $post_id) );
 
 
-       if ( 'page' == $post_type )
-               clean_page_cache($post_id);
-       else
-               clean_post_cache($post_id);
+       clean_post_cache( $post_id );
 
        return $return;
 }
 
        return $return;
 }
@@ -1457,12 +1521,12 @@ function delete_post_meta($post_id, $meta_key, $meta_value = '') {
  * @link http://codex.wordpress.org/Function_Reference/get_post_meta
  *
  * @param int $post_id Post ID.
  * @link http://codex.wordpress.org/Function_Reference/get_post_meta
  *
  * @param int $post_id Post ID.
- * @param string $key The meta key to retrieve.
+ * @param string $key Optional. The meta key to retrieve. By default, returns data for all keys.
  * @param bool $single Whether to return a single value.
  * @return mixed Will be an array if $single is false. Will be value of meta data field if $single
  *  is true.
  */
  * @param bool $single Whether to return a single value.
  * @return mixed Will be an array if $single is false. Will be value of meta data field if $single
  *  is true.
  */
-function get_post_meta($post_id, $key, $single = false) {
+function get_post_meta($post_id, $key = '', $single = false) {
        return get_metadata('post', $post_id, $key, $single);
 }
 
        return get_metadata('post', $post_id, $key, $single);
 }
 
@@ -1508,28 +1572,21 @@ function delete_post_meta_by_key($post_meta_key) {
 /**
  * Retrieve post meta fields, based on post ID.
  *
 /**
  * Retrieve post meta fields, based on post ID.
  *
- * The post meta fields are retrieved from the cache, so the function is
- * optimized to be called more than once. It also applies to the functions, that
- * use this function.
+ * The post meta fields are retrieved from the cache where possible,
+ * so the function is optimized to be called more than once.
  *
  * @since 1.2.0
  * @link http://codex.wordpress.org/Function_Reference/get_post_custom
  *
  *
  * @since 1.2.0
  * @link http://codex.wordpress.org/Function_Reference/get_post_custom
  *
- * @uses $id Current Loop Post ID
- *
- * @param int $post_id post ID
+ * @param int $post_id Post ID.
  * @return array
  */
 function get_post_custom( $post_id = 0 ) {
        $post_id = absint( $post_id );
  * @return array
  */
 function get_post_custom( $post_id = 0 ) {
        $post_id = absint( $post_id );
-
        if ( ! $post_id )
                $post_id = get_the_ID();
 
        if ( ! $post_id )
                $post_id = get_the_ID();
 
-       if ( ! wp_cache_get( $post_id, 'post_meta' ) )
-               update_postmeta_cache( $post_id );
-
-       return wp_cache_get( $post_id, 'post_meta' );
+       return get_post_meta( $post_id );
 }
 
 /**
 }
 
 /**
@@ -1831,7 +1888,6 @@ function wp_count_posts( $type = 'post', $perm = '' ) {
        return $stats;
 }
 
        return $stats;
 }
 
-
 /**
  * Count number of attachments for the mime type(s).
  *
 /**
  * Count number of attachments for the mime type(s).
  *
@@ -1964,7 +2020,7 @@ function wp_post_mime_type_where($post_mime_types, $table_alias = '') {
  * @return mixed False on failure
  */
 function wp_delete_post( $postid = 0, $force_delete = false ) {
  * @return mixed False on failure
  */
 function wp_delete_post( $postid = 0, $force_delete = false ) {
-       global $wpdb, $wp_rewrite;
+       global $wpdb;
 
        if ( !$post = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->posts WHERE ID = %d", $postid)) )
                return $post;
 
        if ( !$post = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->posts WHERE ID = %d", $postid)) )
                return $post;
@@ -1985,6 +2041,14 @@ function wp_delete_post( $postid = 0, $force_delete = false ) {
        $parent_data = array( 'post_parent' => $post->post_parent );
        $parent_where = array( 'post_parent' => $postid );
 
        $parent_data = array( 'post_parent' => $post->post_parent );
        $parent_where = array( 'post_parent' => $postid );
 
+       if ( is_post_type_hierarchical( $post->post_type ) ) {
+               // Point children of this page to its parent, also clean the cache of affected children
+               $children_query = $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE post_parent = %d AND post_type = %s", $postid, $post->post_type );
+               $children = $wpdb->get_results( $children_query );
+
+               $wpdb->update( $wpdb->posts, $parent_data, $parent_where + array( 'post_type' => $post->post_type ) );
+       }
+
        if ( 'page' == $post->post_type) {
                // if the page is defined in option page_on_front or post_for_posts,
                // adjust the corresponding options
        if ( 'page' == $post->post_type) {
                // if the page is defined in option page_on_front or post_for_posts,
                // adjust the corresponding options
@@ -1995,19 +2059,13 @@ function wp_delete_post( $postid = 0, $force_delete = false ) {
                if ( get_option('page_for_posts') == $postid ) {
                        delete_option('page_for_posts');
                }
                if ( get_option('page_for_posts') == $postid ) {
                        delete_option('page_for_posts');
                }
-
-               // Point children of this page to its parent, also clean the cache of affected children
-               $children_query = $wpdb->prepare("SELECT * FROM $wpdb->posts WHERE post_parent = %d AND post_type='page'", $postid);
-               $children = $wpdb->get_results($children_query);
-
-               $wpdb->update( $wpdb->posts, $parent_data, $parent_where + array( 'post_type' => 'page' ) );
        } else {
                unstick_post($postid);
        }
 
        } else {
                unstick_post($postid);
        }
 
-       // Do raw query.  wp_get_post_revisions() is filtered
+       // Do raw query. wp_get_post_revisions() is filtered
        $revision_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'revision'", $postid ) );
        $revision_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'revision'", $postid ) );
-       // Use wp_delete_post (via wp_delete_post_revision) again.  Ensures any meta/misplaced data gets cleaned up.
+       // Use wp_delete_post (via wp_delete_post_revision) again. Ensures any meta/misplaced data gets cleaned up.
        foreach ( $revision_ids as $revision_id )
                wp_delete_post_revision( $revision_id );
 
        foreach ( $revision_ids as $revision_id )
                wp_delete_post_revision( $revision_id );
 
@@ -2015,34 +2073,22 @@ function wp_delete_post( $postid = 0, $force_delete = false ) {
        $wpdb->update( $wpdb->posts, $parent_data, $parent_where + array( 'post_type' => 'attachment' ) );
 
        $comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = %d", $postid ));
        $wpdb->update( $wpdb->posts, $parent_data, $parent_where + array( 'post_type' => 'attachment' ) );
 
        $comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = %d", $postid ));
-       if ( ! empty($comment_ids) ) {
-               do_action( 'delete_comment', $comment_ids );
-               foreach ( $comment_ids as $comment_id )
-                       wp_delete_comment( $comment_id, true );
-               do_action( 'deleted_comment', $comment_ids );
-       }
+       foreach ( $comment_ids as $comment_id )
+               wp_delete_comment( $comment_id, true );
 
        $post_meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d ", $postid ));
 
        $post_meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d ", $postid ));
-       if ( !empty($post_meta_ids) ) {
-               do_action( 'delete_postmeta', $post_meta_ids );
-               $in_post_meta_ids = "'" . implode("', '", $post_meta_ids) . "'";
-               $wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_id IN($in_post_meta_ids)" );
-               do_action( 'deleted_postmeta', $post_meta_ids );
-       }
+       foreach ( $post_meta_ids as $mid )
+               delete_metadata_by_mid( 'post', $mid );
 
        do_action( 'delete_post', $postid );
 
        do_action( 'delete_post', $postid );
-       $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->posts WHERE ID = %d", $postid ));
+       $wpdb->delete( $wpdb->posts, array( 'ID' => $postid ) );
        do_action( 'deleted_post', $postid );
 
        do_action( 'deleted_post', $postid );
 
-       if ( 'page' == $post->post_type ) {
-               clean_page_cache($postid);
+       clean_post_cache( $post );
 
 
+       if ( is_post_type_hierarchical( $post->post_type ) ) {
                foreach ( (array) $children as $child )
                foreach ( (array) $children as $child )
-                       clean_page_cache($child->ID);
-
-               $wp_rewrite->flush_rules(false);
-       } else {
-               clean_post_cache($postid);
+                       clean_post_cache( $child );
        }
 
        wp_clear_scheduled_hook('publish_future_post', array( $postid ) );
        }
 
        wp_clear_scheduled_hook('publish_future_post', array( $postid ) );
@@ -2400,7 +2446,6 @@ function wp_get_single_post($postid = 0, $mode = OBJECT) {
  *
  * @since 1.0.0
  * @uses $wpdb
  *
  * @since 1.0.0
  * @uses $wpdb
- * @uses $wp_rewrite
  * @uses $user_ID
  * @uses do_action() Calls 'pre_post_update' on post ID if this is an update.
  * @uses do_action() Calls 'edit_post' action on post ID and post data if this is an update.
  * @uses $user_ID
  * @uses do_action() Calls 'pre_post_update' on post ID if this is an update.
  * @uses do_action() Calls 'edit_post' action on post ID and post data if this is an update.
@@ -2413,7 +2458,7 @@ function wp_get_single_post($postid = 0, $mode = OBJECT) {
  * @return int|WP_Error The value 0 or WP_Error on failure. The post ID on success.
  */
 function wp_insert_post($postarr, $wp_error = false) {
  * @return int|WP_Error The value 0 or WP_Error on failure. The post ID on success.
  */
 function wp_insert_post($postarr, $wp_error = false) {
-       global $wpdb, $wp_rewrite, $user_ID;
+       global $wpdb, $user_ID;
 
        $defaults = array('post_status' => 'draft', 'post_type' => 'post', 'post_author' => $user_ID,
                'ping_status' => get_option('default_ping_status'), 'post_parent' => 0,
 
        $defaults = array('post_status' => 'draft', 'post_type' => 'post', 'post_author' => $user_ID,
                'ping_status' => get_option('default_ping_status'), 'post_parent' => 0,
@@ -2482,7 +2527,7 @@ function wp_insert_post($postarr, $wp_error = false) {
        if ( 'pending' == $post_status && !current_user_can( 'publish_posts' ) )
                $post_name = '';
 
        if ( 'pending' == $post_status && !current_user_can( 'publish_posts' ) )
                $post_name = '';
 
-       // Create a valid post name.  Drafts and pending posts are allowed to have an empty
+       // Create a valid post name. Drafts and pending posts are allowed to have an empty
        // post name.
        if ( empty($post_name) ) {
                if ( !in_array( $post_status, array( 'draft', 'pending', 'auto-draft' ) ) )
        // post name.
        if ( empty($post_name) ) {
                if ( !in_array( $post_status, array( 'draft', 'pending', 'auto-draft' ) ) )
@@ -2537,7 +2582,7 @@ function wp_insert_post($postarr, $wp_error = false) {
                $ping_status = get_option('default_ping_status');
 
        if ( isset($to_ping) )
                $ping_status = get_option('default_ping_status');
 
        if ( isset($to_ping) )
-               $to_ping = preg_replace('|\s+|', "\n", $to_ping);
+               $to_ping = sanitize_trackback_urls( $to_ping );
        else
                $to_ping = '';
 
        else
                $to_ping = '';
 
@@ -2622,10 +2667,7 @@ function wp_insert_post($postarr, $wp_error = false) {
 
        $current_guid = get_post_field( 'guid', $post_ID );
 
 
        $current_guid = get_post_field( 'guid', $post_ID );
 
-       if ( 'page' == $data['post_type'] )
-               clean_page_cache($post_ID);
-       else
-               clean_post_cache($post_ID);
+       clean_post_cache( $post_ID );
 
        // Set GUID
        if ( !$update && '' == $current_guid )
 
        // Set GUID
        if ( !$update && '' == $current_guid )
@@ -2775,7 +2817,6 @@ function check_and_publish_future_post($post_id) {
        return wp_publish_post($post_id);
 }
 
        return wp_publish_post($post_id);
 }
 
-
 /**
  * Computes a unique slug for the post, when given the desired slug and some post details.
  *
 /**
  * Computes a unique slug for the post, when given the desired slug and some post details.
  *
@@ -2866,7 +2907,6 @@ function wp_add_post_tags($post_id = 0, $tags = '') {
        return wp_set_post_tags($post_id, $tags, true);
 }
 
        return wp_set_post_tags($post_id, $tags, true);
 }
 
-
 /**
  * Set the tags for a post.
  *
 /**
  * Set the tags for a post.
  *
@@ -2890,6 +2930,7 @@ function wp_set_post_tags( $post_id = 0, $tags = '', $append = false ) {
  *
  * @param int $post_id Post ID.
  * @param string $tags The tags to set for the post, separated by commas.
  *
  * @param int $post_id Post ID.
  * @param string $tags The tags to set for the post, separated by commas.
+ * @param string $taxonomy Taxonomy name. Defaults to 'post_tag'.
  * @param bool $append If true, don't delete existing tags, just add on. If false, replace the tags with the new tags.
  * @return mixed Array of affected term IDs. WP_Error or false on failure.
  */
  * @param bool $append If true, don't delete existing tags, just add on. If false, replace the tags with the new tags.
  * @return mixed Array of affected term IDs. WP_Error or false on failure.
  */
@@ -2902,7 +2943,12 @@ function wp_set_post_terms( $post_id = 0, $tags = '', $taxonomy = 'post_tag', $a
        if ( empty($tags) )
                $tags = array();
 
        if ( empty($tags) )
                $tags = array();
 
-       $tags = is_array($tags) ? $tags : explode( ',', trim($tags, " \n\t\r\0\x0B,") );
+       if ( ! is_array( $tags ) ) {
+               $comma = _x( ',', 'tag delimiter' );
+               if ( ',' !== $comma )
+                       $tags = str_replace( $comma, ',', $tags );
+               $tags = explode( ',', trim( $tags, " \n\t\r\0\x0B," ) );
+       }
 
        // Hierarchical taxonomies must always pass IDs rather than names so that children with the same
        // names but different parents aren't confused.
 
        // Hierarchical taxonomies must always pass IDs rather than names so that children with the same
        // names but different parents aren't confused.
@@ -3026,7 +3072,7 @@ function get_enclosed($post_id) {
                if ( 'enclosure' != $key || !is_array( $val ) )
                        continue;
                foreach( $val as $enc ) {
                if ( 'enclosure' != $key || !is_array( $val ) )
                        continue;
                foreach( $val as $enc ) {
-                       $enclosure = split( "\n", $enc );
+                       $enclosure = explode( "\n", $enc );
                        $pung[] = trim( $enclosure[ 0 ] );
                }
        }
                        $pung[] = trim( $enclosure[ 0 ] );
                }
        }
@@ -3064,7 +3110,7 @@ function get_pung($post_id) {
 function get_to_ping($post_id) {
        global $wpdb;
        $to_ping = $wpdb->get_var( $wpdb->prepare( "SELECT to_ping FROM $wpdb->posts WHERE ID = %d", $post_id ));
 function get_to_ping($post_id) {
        global $wpdb;
        $to_ping = $wpdb->get_var( $wpdb->prepare( "SELECT to_ping FROM $wpdb->posts WHERE ID = %d", $post_id ));
-       $to_ping = trim($to_ping);
+       $to_ping = sanitize_trackback_urls( $to_ping );
        $to_ping = preg_split('/\s/', $to_ping, -1, PREG_SPLIT_NO_EMPTY);
        $to_ping = apply_filters('get_to_ping',  $to_ping);
        return $to_ping;
        $to_ping = preg_split('/\s/', $to_ping, -1, PREG_SPLIT_NO_EMPTY);
        $to_ping = apply_filters('get_to_ping',  $to_ping);
        return $to_ping;
@@ -3116,7 +3162,8 @@ function trackback_url_list($tb_list, $post_id) {
 function get_all_page_ids() {
        global $wpdb;
 
 function get_all_page_ids() {
        global $wpdb;
 
-       if ( ! $page_ids = wp_cache_get('all_page_ids', 'posts') ) {
+       $page_ids = wp_cache_get('all_page_ids', 'posts');
+       if ( ! is_array( $page_ids ) ) {
                $page_ids = $wpdb->get_col("SELECT ID FROM $wpdb->posts WHERE post_type = 'page'");
                wp_cache_add('all_page_ids', $page_ids, 'posts');
        }
                $page_ids = $wpdb->get_col("SELECT ID FROM $wpdb->posts WHERE post_type = 'page'");
                wp_cache_add('all_page_ids', $page_ids, 'posts');
        }
@@ -3509,7 +3556,7 @@ function &get_pages($args = '') {
        }
 
        // Update cache.
        }
 
        // Update cache.
-       update_page_cache($pages);
+       update_post_cache( $pages );
 
        if ( $child_of || $hierarchical )
                $pages = & get_page_children($child_of, $pages);
 
        if ( $child_of || $hierarchical )
                $pages = & get_page_children($child_of, $pages);
@@ -3725,7 +3772,7 @@ function wp_insert_attachment($object, $file = false, $parent = 0) {
        if ( $file )
                update_attached_file( $post_ID, $file );
 
        if ( $file )
                update_attached_file( $post_ID, $file );
 
-       clean_post_cache($post_ID);
+       clean_post_cache( $post_ID );
 
        if ( ! empty( $context ) )
                add_post_meta( $post_ID, '_wp_attachment_context', $context, true );
 
        if ( ! empty( $context ) )
                add_post_meta( $post_ID, '_wp_attachment_context', $context, true );
@@ -3776,6 +3823,12 @@ function wp_delete_attachment( $post_id, $force_delete = false ) {
        $backup_sizes = get_post_meta( $post->ID, '_wp_attachment_backup_sizes', true );
        $file = get_attached_file( $post_id );
 
        $backup_sizes = get_post_meta( $post->ID, '_wp_attachment_backup_sizes', true );
        $file = get_attached_file( $post_id );
 
+       $intermediate_sizes = array();
+       foreach ( get_intermediate_image_sizes() as $size ) {
+               if ( $intermediate = image_get_intermediate_size( $post_id, $size ) )
+                       $intermediate_sizes[] = $intermediate;
+       }
+
        if ( is_multisite() )
                delete_transient( 'dirsize_cache' );
 
        if ( is_multisite() )
                delete_transient( 'dirsize_cache' );
 
@@ -3784,26 +3837,18 @@ function wp_delete_attachment( $post_id, $force_delete = false ) {
        wp_delete_object_term_relationships($post_id, array('category', 'post_tag'));
        wp_delete_object_term_relationships($post_id, get_object_taxonomies($post->post_type));
 
        wp_delete_object_term_relationships($post_id, array('category', 'post_tag'));
        wp_delete_object_term_relationships($post_id, get_object_taxonomies($post->post_type));
 
-       $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE meta_key = '_thumbnail_id' AND meta_value = %d", $post_id ));
+       delete_metadata( 'post', null, '_thumbnail_id', $post_id, true ); // delete all for any posts.
 
        $comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = %d", $post_id ));
 
        $comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = %d", $post_id ));
-       if ( ! empty( $comment_ids ) ) {
-               do_action( 'delete_comment', $comment_ids );
-               foreach ( $comment_ids as $comment_id )
-                       wp_delete_comment( $comment_id, true );
-               do_action( 'deleted_comment', $comment_ids );
-       }
+       foreach ( $comment_ids as $comment_id )
+               wp_delete_comment( $comment_id, true );
 
        $post_meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d ", $post_id ));
 
        $post_meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d ", $post_id ));
-       if ( !empty($post_meta_ids) ) {
-               do_action( 'delete_postmeta', $post_meta_ids );
-               $in_post_meta_ids = "'" . implode("', '", $post_meta_ids) . "'";
-               $wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_id IN($in_post_meta_ids)" );
-               do_action( 'deleted_postmeta', $post_meta_ids );
-       }
+       foreach ( $post_meta_ids as $mid )
+               delete_metadata_by_mid( 'post', $mid );
 
        do_action( 'delete_post', $post_id );
 
        do_action( 'delete_post', $post_id );
-       $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->posts WHERE ID = %d", $post_id ));
+       $wpdb->delete( $wpdb->posts, array( 'ID' => $post_id ) );
        do_action( 'deleted_post', $post_id );
 
        $uploadpath = wp_upload_dir();
        do_action( 'deleted_post', $post_id );
 
        $uploadpath = wp_upload_dir();
@@ -3818,11 +3863,9 @@ function wp_delete_attachment( $post_id, $force_delete = false ) {
        }
 
        // remove intermediate and backup images if there are any
        }
 
        // remove intermediate and backup images if there are any
-       foreach ( get_intermediate_image_sizes() as $size ) {
-               if ( $intermediate = image_get_intermediate_size($post_id, $size) ) {
-                       $intermediate_file = apply_filters('wp_delete_file', $intermediate['path']);
-                       @ unlink( path_join($uploadpath['basedir'], $intermediate_file) );
-               }
+       foreach ( $intermediate_sizes as $intermediate ) {
+               $intermediate_file = apply_filters( 'wp_delete_file', $intermediate['path'] );
+               @ unlink( path_join($uploadpath['basedir'], $intermediate_file) );
        }
 
        if ( is_array($backup_sizes) ) {
        }
 
        if ( is_array($backup_sizes) ) {
@@ -3838,7 +3881,7 @@ function wp_delete_attachment( $post_id, $force_delete = false ) {
        if ( ! empty($file) )
                @ unlink($file);
 
        if ( ! empty($file) )
                @ unlink($file);
 
-       clean_post_cache($post_id);
+       clean_post_cache( $post );
 
        return $post;
 }
 
        return $post;
 }
@@ -4002,7 +4045,7 @@ function wp_attachment_is_image( $post_id = 0 ) {
  *
  * @since 2.1.0
  *
  *
  * @since 2.1.0
  *
- * @param string $mime MIME type
+ * @param string|int $mime MIME type or attachment ID.
  * @return string|bool
  */
 function wp_mime_type_icon( $mime = 0 ) {
  * @return string|bool
  */
 function wp_mime_type_icon( $mime = 0 ) {
@@ -4150,8 +4193,8 @@ function get_private_posts_cap_sql( $post_type ) {
  *
  * @since 3.0.0
  * @param string $post_type Post type.
  *
  * @since 3.0.0
  * @param string $post_type Post type.
- * @param bool $full Optional.  Returns a full WHERE statement instead of just an 'andalso' term.
- * @param int $post_author Optional.  Query posts having a single author ID.
+ * @param bool $full Optional. Returns a full WHERE statement instead of just an 'andalso' term.
+ * @param int $post_author Optional. Query posts having a single author ID.
  * @return string SQL WHERE code that can be added to a query.
  */
 function get_posts_by_author_sql( $post_type, $full = true, $post_author = null ) {
  * @return string SQL WHERE code that can be added to a query.
  */
 function get_posts_by_author_sql( $post_type, $full = true, $post_author = null ) {
@@ -4288,20 +4331,18 @@ function _get_last_post_time( $timezone, $field ) {
 /**
  * Updates posts in cache.
  *
 /**
  * Updates posts in cache.
  *
- * @usedby update_page_cache() Aliased by this function.
- *
  * @package WordPress
  * @subpackage Cache
  * @since 1.5.1
  *
  * @param array $posts Array of post objects
  */
  * @package WordPress
  * @subpackage Cache
  * @since 1.5.1
  *
  * @param array $posts Array of post objects
  */
-function update_post_cache(&$posts) {
-       if ( !$posts )
+function update_post_cache( &$posts ) {
+       if ( ! $posts )
                return;
 
        foreach ( $posts as $post )
                return;
 
        foreach ( $posts as $post )
-               wp_cache_add($post->ID, $post, 'posts');
+               wp_cache_add( $post->ID, $post, 'posts' );
 }
 
 /**
 }
 
 /**
@@ -4321,77 +4362,44 @@ function update_post_cache(&$posts) {
  *
  * @uses do_action() Calls 'clean_post_cache' on $id before adding children (if any).
  *
  *
  * @uses do_action() Calls 'clean_post_cache' on $id before adding children (if any).
  *
- * @param int $id The Post ID in the cache to clean
+ * @param object|int $post The post object or ID to remove from the cache
  */
  */
-function clean_post_cache($id) {
+function clean_post_cache( $post ) {
        global $_wp_suspend_cache_invalidation, $wpdb;
 
        global $_wp_suspend_cache_invalidation, $wpdb;
 
-       if ( !empty($_wp_suspend_cache_invalidation) )
+       if ( ! empty( $_wp_suspend_cache_invalidation ) )
                return;
 
                return;
 
-       $id = (int) $id;
-
-       if ( 0 === $id )
+       $post = get_post( $post );
+       if ( empty( $post ) )
                return;
 
                return;
 
-       wp_cache_delete($id, 'posts');
-       wp_cache_delete($id, 'post_meta');
+       wp_cache_delete( $post->ID, 'posts' );
+       wp_cache_delete( $post->ID, 'post_meta' );
 
 
-       clean_object_term_cache($id, 'post');
+       clean_object_term_cache( $post->ID, $post->post_type );
 
        wp_cache_delete( 'wp_get_archives', 'general' );
 
 
        wp_cache_delete( 'wp_get_archives', 'general' );
 
-       do_action('clean_post_cache', $id);
+       do_action( 'clean_post_cache', $post->ID, $post );
+
+       if ( 'page' == $post->post_type ) {
+               wp_cache_delete( 'all_page_ids', 'posts' );
+               wp_cache_delete( 'get_pages', 'posts' );
+               do_action( 'clean_page_cache', $post->ID );
+       }
 
 
-       if ( $children = $wpdb->get_col( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_parent = %d", $id) ) ) {
-               foreach ( $children as $cid ) {
+       if ( $children = $wpdb->get_results( $wpdb->prepare("SELECT ID, post_type FROM $wpdb->posts WHERE post_parent = %d", $post->ID) ) ) {
+               foreach ( $children as $child ) {
                        // Loop detection
                        // Loop detection
-                       if ( $cid == $id )
+                       if ( $child->ID == $post->ID )
                                continue;
                                continue;
-                       clean_post_cache( $cid );
+                       clean_post_cache( $child );
                }
        }
 
        if ( is_multisite() )
                }
        }
 
        if ( is_multisite() )
-               wp_cache_delete( $wpdb->blogid . '-' . $id, 'global-posts' );
-}
-
-/**
- * Alias of update_post_cache().
- *
- * @see update_post_cache() Posts and pages are the same, alias is intentional
- *
- * @package WordPress
- * @subpackage Cache
- * @since 1.5.1
- *
- * @param array $pages list of page objects
- */
-function update_page_cache(&$pages) {
-       update_post_cache($pages);
-}
-
-/**
- * Will clean the page in the cache.
- *
- * Clean (read: delete) page from cache that matches $id. Will also clean cache
- * associated with 'all_page_ids' and 'get_pages'.
- *
- * @package WordPress
- * @subpackage Cache
- * @since 2.0.0
- *
- * @uses do_action() Will call the 'clean_page_cache' hook action.
- *
- * @param int $id Page ID to clean
- */
-function clean_page_cache($id) {
-       clean_post_cache($id);
-
-       wp_cache_delete( 'all_page_ids', 'posts' );
-       wp_cache_delete( 'get_pages', 'posts' );
-
-       do_action('clean_page_cache', $id);
+               wp_cache_delete( $wpdb->blogid . '-' . $post->ID, 'global-posts' );
 }
 
 /**
 }
 
 /**
@@ -4580,47 +4588,24 @@ function _publish_post_hook($post_id) {
        if ( defined('WP_IMPORTING') )
                return;
 
        if ( defined('WP_IMPORTING') )
                return;
 
-       $data = array( 'post_id' => $post_id, 'meta_value' => '1' );
-       if ( get_option('default_pingback_flag') ) {
-               $wpdb->insert( $wpdb->postmeta, $data + array( 'meta_key' => '_pingme' ) );
-               do_action( 'added_postmeta', $wpdb->insert_id, $post_id, '_pingme', 1 );
-       }
-       $wpdb->insert( $wpdb->postmeta, $data + array( 'meta_key' => '_encloseme' ) );
-       do_action( 'added_postmeta', $wpdb->insert_id, $post_id, '_encloseme', 1 );
+       if ( get_option('default_pingback_flag') )
+               add_post_meta( $post_id, '_pingme', '1' );
+       add_post_meta( $post_id, '_encloseme', '1' );
 
        wp_schedule_single_event(time(), 'do_pings');
 }
 
 /**
 
        wp_schedule_single_event(time(), 'do_pings');
 }
 
 /**
- * Hook used to prevent page/post cache and rewrite rules from staying dirty.
- *
- * Does two things. If the post is a page and has a template then it will
- * update/add that template to the meta. For both pages and posts, it will clean
- * the post cache to make sure that the cache updates to the changes done
- * recently. For pages, the rewrite rules of WordPress are flushed to allow for
- * any changes.
- *
- * The $post parameter, only uses 'post_type' property and 'page_template'
- * property.
+ * Hook used to prevent page/post cache from staying dirty when a post is saved.
  *
  * @since 2.3.0
  * @access private
  *
  * @since 2.3.0
  * @access private
- * @uses $wp_rewrite Flushes Rewrite Rules.
  *
  * @param int $post_id The ID in the database table for the $post
  * @param object $post Object type containing the post information
  */
  *
  * @param int $post_id The ID in the database table for the $post
  * @param object $post Object type containing the post information
  */
-function _save_post_hook($post_id, $post) {
-       if ( $post->post_type == 'page' ) {
-               clean_page_cache($post_id);
-               // Avoid flushing rules for every post during import.
-               if ( !defined('WP_IMPORTING') ) {
-                       global $wp_rewrite;
-                       $wp_rewrite->flush_rules(false);
-               }
-       } else {
-               clean_post_cache($post_id);
-       }
+function _save_post_hook( $post_id, $post ) {
+       clean_post_cache( $post );
 }
 
 /**
 }
 
 /**
@@ -4653,12 +4638,12 @@ function _get_post_ancestors(&$_post) {
        if ( empty($_post->post_parent) || $_post->ID == $_post->post_parent )
                return;
 
        if ( empty($_post->post_parent) || $_post->ID == $_post->post_parent )
                return;
 
-       $id = $_post->ancestors[] = $_post->post_parent;
+       $id = $_post->ancestors[] = (int) $_post->post_parent;
        while ( $ancestor = $wpdb->get_var( $wpdb->prepare("SELECT `post_parent` FROM $wpdb->posts WHERE ID = %d LIMIT 1", $id) ) ) {
                // Loop detection: If the ancestor has been seen before, break.
                if ( ( $ancestor == $_post->ID ) || in_array($ancestor,  $_post->ancestors) )
                        break;
        while ( $ancestor = $wpdb->get_var( $wpdb->prepare("SELECT `post_parent` FROM $wpdb->posts WHERE ID = %d LIMIT 1", $id) ) ) {
                // Loop detection: If the ancestor has been seen before, break.
                if ( ( $ancestor == $_post->ID ) || in_array($ancestor,  $_post->ancestors) )
                        break;
-               $id = $_post->ancestors[] = $ancestor;
+               $id = $_post->ancestors[] = (int) $ancestor;
        }
 }
 
        }
 }
 
@@ -4902,7 +4887,7 @@ function _wp_put_post_revision( $post = null, $autosave = false ) {
  *
  * @param int|object $post Post ID or post object
  * @param string $output Optional. OBJECT, ARRAY_A, or ARRAY_N.
  *
  * @param int|object $post Post ID or post object
  * @param string $output Optional. OBJECT, ARRAY_A, or ARRAY_N.
- * @param string $filter Optional sanitation filter.  @see sanitize_post()
+ * @param string $filter Optional sanitation filter. @see sanitize_post()
  * @return mixed Null if error or post object if success
  */
 function &wp_get_post_revision(&$post, $output = OBJECT, $filter = 'raw') {
  * @return mixed Null if error or post object if success
  */
 function &wp_get_post_revision(&$post, $output = OBJECT, $filter = 'raw') {
@@ -5084,7 +5069,7 @@ function wp_get_post_parent_id( $post_ID ) {
  * @uses wp_find_hierarchy_loop()
  *
  * @param int $post_parent ID of the parent for the post we're checking.
  * @uses wp_find_hierarchy_loop()
  *
  * @param int $post_parent ID of the parent for the post we're checking.
- * @parem int $post_ID ID of the post we're checking.
+ * @param int $post_ID ID of the post we're checking.
  *
  * @return int The new post_parent for the post.
  */
  *
  * @return int The new post_parent for the post.
  */
@@ -5110,7 +5095,7 @@ function wp_check_post_hierarchy_for_loops( $post_parent, $post_ID ) {
        if ( isset( $loop[$post_ID] ) )
                return 0;
 
        if ( isset( $loop[$post_ID] ) )
                return 0;
 
-       // There's a loop, but it doesn't contain $post_ID.  Break the loop.
+       // There's a loop, but it doesn't contain $post_ID. Break the loop.
        foreach ( array_keys( $loop ) as $loop_member )
                wp_update_post( array( 'ID' => $loop_member, 'post_parent' => 0 ) );
 
        foreach ( array_keys( $loop ) as $loop_member )
                wp_update_post( array( 'ID' => $loop_member, 'post_parent' => 0 ) );
 
@@ -5183,8 +5168,7 @@ function set_post_thumbnail( $post, $thumbnail_id ) {
        if ( $post && $thumbnail_id && get_post( $thumbnail_id ) ) {
                $thumbnail_html = wp_get_attachment_image( $thumbnail_id, 'thumbnail' );
                if ( ! empty( $thumbnail_html ) ) {
        if ( $post && $thumbnail_id && get_post( $thumbnail_id ) ) {
                $thumbnail_html = wp_get_attachment_image( $thumbnail_id, 'thumbnail' );
                if ( ! empty( $thumbnail_html ) ) {
-                       update_post_meta( $post->ID, '_thumbnail_id', $thumbnail_id );
-                       return true;
+                       return update_post_meta( $post->ID, '_thumbnail_id', $thumbnail_id );
                }
        }
        return false;
                }
        }
        return false;
@@ -5220,6 +5204,20 @@ function get_post_format_link( $format ) {
        return get_term_link( $term );
 }
 
        return get_term_link( $term );
 }
 
+/**
+ * Deletes auto-drafts for new posts that are > 7 days old
+ *
+ * @since 3.4.0
+ */
+function wp_delete_auto_drafts() {
+       global $wpdb;
+
+       // Cleanup old auto-drafts more than 7 days old
+       $old_posts = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_status = 'auto-draft' AND DATE_SUB( NOW(), INTERVAL 7 DAY ) > post_date" );
+       foreach ( (array) $old_posts as $delete )
+               wp_delete_post( $delete, true ); // Force delete
+}
+
 /**
  * Filters the request to allow for the format prefix.
  *
 /**
  * Filters the request to allow for the format prefix.
  *
@@ -5328,4 +5326,25 @@ function _update_term_count_on_transition_post_status( $new_status, $old_status,
                wp_update_term_count( $tt_ids, $taxonomy );
        }
 }
                wp_update_term_count( $tt_ids, $taxonomy );
        }
 }
-?>
+
+/**
+ * Adds any posts from the given ids to the cache that do not already exist in cache
+ *
+ * @since 3.4.0
+ *
+ * @access private
+ *
+ * @param array $post_ids ID list
+ * @param bool $update_term_cache Whether to update the term cache. Default is true.
+ * @param bool $update_meta_cache Whether to update the meta cache. Default is true.
+ */
+function _prime_post_caches( $ids, $update_term_cache = true, $update_meta_cache = true ) {
+       global $wpdb;
+
+       $non_cached_ids = _get_non_cached_ids( $ids, 'posts' );
+       if ( !empty( $non_cached_ids ) ) {
+               $fresh_posts = $wpdb->get_results( sprintf( "SELECT $wpdb->posts.* FROM $wpdb->posts WHERE ID IN (%s)", join( ",", $non_cached_ids ) ) );
+
+               update_post_caches( $fresh_posts, 'any', $update_term_cache, $update_meta_cache );
+       }
+}
index 0fcbf94cb51e6b5819d86816581a1da59d5f873e..5f6ccddfb8a10a1b0e302f5ac74b561f03cff199 100644 (file)
@@ -27,9 +27,8 @@ function get_query_var($var) {
        return $wp_query->get($var);
 }
 
        return $wp_query->get($var);
 }
 
-
 /**
 /**
- * Retrieve the currently-queried object.  Wrapper for $wp_query->get_queried_object()
+ * Retrieve the currently-queried object. Wrapper for $wp_query->get_queried_object()
  *
  * @uses WP_Query::get_queried_object
  *
  *
  * @uses WP_Query::get_queried_object
  *
@@ -728,7 +727,7 @@ function is_main_query() {
 }
 
 /*
 }
 
 /*
- * The Loop.  Post loop control.
+ * The Loop. Post loop control.
  */
 
 /**
  */
 
 /**
@@ -1261,7 +1260,7 @@ class WP_Query {
        var $query_vars_hash = false;
 
        /**
        var $query_vars_hash = false;
 
        /**
-        * Whether query vars have changed since the initial parse_query() call.  Used to catch modifications to query vars made
+        * Whether query vars have changed since the initial parse_query() call. Used to catch modifications to query vars made
         * via pre_get_posts hooks.
         *
         * @since 3.1.1
         * via pre_get_posts hooks.
         *
         * @since 3.1.1
@@ -1454,7 +1453,7 @@ class WP_Query {
                if ( '' !== $qv['minute'] ) $qv['minute'] = absint($qv['minute']);
                if ( '' !== $qv['second'] ) $qv['second'] = absint($qv['second']);
 
                if ( '' !== $qv['minute'] ) $qv['minute'] = absint($qv['minute']);
                if ( '' !== $qv['second'] ) $qv['second'] = absint($qv['second']);
 
-               // Compat.  Map subpost to attachment.
+               // Compat. Map subpost to attachment.
                if ( '' != $qv['subpost'] )
                        $qv['attachment'] = $qv['subpost'];
                if ( '' != $qv['subpost_id'] )
                if ( '' != $qv['subpost'] )
                        $qv['attachment'] = $qv['subpost'];
                if ( '' != $qv['subpost_id'] )
@@ -1477,7 +1476,7 @@ class WP_Query {
                        $this->is_page = true;
                        $this->is_single = false;
                } else {
                        $this->is_page = true;
                        $this->is_single = false;
                } else {
-               // Look for archive queries.  Dates, categories, authors, search, post type archives.
+               // Look for archive queries. Dates, categories, authors, search, post type archives.
 
                        if ( !empty($qv['s']) ) {
                                $this->is_search = true;
 
                        if ( !empty($qv['s']) ) {
                                $this->is_search = true;
@@ -1625,7 +1624,7 @@ class WP_Query {
                }
 
                if ( '' != $qv['pagename'] ) {
                }
 
                if ( '' != $qv['pagename'] ) {
-                       $this->queried_object =& get_page_by_path($qv['pagename']);
+                       $this->queried_object = get_page_by_path($qv['pagename']);
                        if ( !empty($this->queried_object) )
                                $this->queried_object_id = (int) $this->queried_object->ID;
                        else
                        if ( !empty($this->queried_object) )
                                $this->queried_object_id = (int) $this->queried_object->ID;
                        else
@@ -2181,7 +2180,7 @@ class WP_Query {
                        if ( !empty($q['sentence']) ) {
                                $q['search_terms'] = array($q['s']);
                        } else {
                        if ( !empty($q['sentence']) ) {
                                $q['search_terms'] = array($q['s']);
                        } else {
-                               preg_match_all('/".*?("|$)|((?<=[\\s",+])|^)[^\\s",+]+/', $q['s'], $matches);
+                               preg_match_all('/".*?("|$)|((?<=[\r\n\t ",+])|^)[^\r\n\t ",+]+/', $q['s'], $matches);
                                $q['search_terms'] = array_map('_search_terms_tidy', $matches[0]);
                        }
                        $n = !empty($q['exact']) ? '' : '%';
                                $q['search_terms'] = array_map('_search_terms_tidy', $matches[0]);
                        }
                        $n = !empty($q['exact']) ? '' : '%';
@@ -2312,10 +2311,8 @@ class WP_Query {
 
                // MIME-Type stuff for attachment browsing
 
 
                // MIME-Type stuff for attachment browsing
 
-               if ( isset($q['post_mime_type']) && '' != $q['post_mime_type'] ) {
-                       $table_alias = $post_status_join ? $wpdb->posts : '';
-                       $whichmimetype = wp_post_mime_type_where($q['post_mime_type'], $table_alias);
-               }
+               if ( isset( $q['post_mime_type'] ) && '' != $q['post_mime_type'] )
+                       $whichmimetype = wp_post_mime_type_where( $q['post_mime_type'], $wpdb->posts );
 
                $where .= $search . $whichauthor . $whichmimetype;
 
 
                $where .= $search . $whichauthor . $whichmimetype;
 
@@ -2346,6 +2343,7 @@ class WP_Query {
 
                                switch ( $orderby ) {
                                        case 'menu_order':
 
                                switch ( $orderby ) {
                                        case 'menu_order':
+                                               $orderby = "$wpdb->posts.menu_order";
                                                break;
                                        case 'ID':
                                                $orderby = "$wpdb->posts.ID";
                                                break;
                                        case 'ID':
                                                $orderby = "$wpdb->posts.ID";
@@ -2449,13 +2447,13 @@ class WP_Query {
                        }
                        if ( !empty($r_status) ) {
                                if ( !empty($q['perm'] ) && 'editable' == $q['perm'] && !current_user_can($edit_others_cap) )
                        }
                        if ( !empty($r_status) ) {
                                if ( !empty($q['perm'] ) && 'editable' == $q['perm'] && !current_user_can($edit_others_cap) )
-                                       $statuswheres[] = "($wpdb->posts.post_author = $user_ID " .  "AND (" . join( ' OR ', $r_status ) . "))";
+                                       $statuswheres[] = "($wpdb->posts.post_author = $user_ID " . "AND (" . join( ' OR ', $r_status ) . "))";
                                else
                                        $statuswheres[] = "(" . join( ' OR ', $r_status ) . ")";
                        }
                        if ( !empty($p_status) ) {
                                if ( !empty($q['perm'] ) && 'readable' == $q['perm'] && !current_user_can($read_private_cap) )
                                else
                                        $statuswheres[] = "(" . join( ' OR ', $r_status ) . ")";
                        }
                        if ( !empty($p_status) ) {
                                if ( !empty($q['perm'] ) && 'readable' == $q['perm'] && !current_user_can($read_private_cap) )
-                                       $statuswheres[] = "($wpdb->posts.post_author = $user_ID " .  "AND (" . join( ' OR ', $p_status ) . "))";
+                                       $statuswheres[] = "($wpdb->posts.post_author = $user_ID " . "AND (" . join( ' OR ', $p_status ) . "))";
                                else
                                        $statuswheres[] = "(" . join( ' OR ', $p_status ) . ")";
                        }
                                else
                                        $statuswheres[] = "(" . join( ' OR ', $p_status ) . ")";
                        }
@@ -2477,7 +2475,7 @@ class WP_Query {
                                $where .= " OR $wpdb->posts.post_status = '$state'";
                        }
 
                                $where .= " OR $wpdb->posts.post_status = '$state'";
                        }
 
-                       if ( is_admin() ) {
+                       if ( $this->is_admin ) {
                                // Add protected states that should show in the admin all list.
                                $admin_all_states = get_post_stati( array('protected' => true, 'show_in_admin_all_list' => true) );
                                foreach ( (array) $admin_all_states as $state )
                                // Add protected states that should show in the admin all list.
                                $admin_all_states = get_post_stati( array('protected' => true, 'show_in_admin_all_list' => true) );
                                foreach ( (array) $admin_all_states as $state )
@@ -2510,18 +2508,16 @@ class WP_Query {
                // Paging
                if ( empty($q['nopaging']) && !$this->is_singular ) {
                        $page = absint($q['paged']);
                // Paging
                if ( empty($q['nopaging']) && !$this->is_singular ) {
                        $page = absint($q['paged']);
-                       if ( empty($page) )
+                       if ( !$page )
                                $page = 1;
 
                        if ( empty($q['offset']) ) {
                                $page = 1;
 
                        if ( empty($q['offset']) ) {
-                               $pgstrt = '';
                                $pgstrt = ($page - 1) * $q['posts_per_page'] . ', ';
                                $pgstrt = ($page - 1) * $q['posts_per_page'] . ', ';
-                               $limits = 'LIMIT ' . $pgstrt . $q['posts_per_page'];
                        } else { // we're ignoring $page and using 'offset'
                                $q['offset'] = absint($q['offset']);
                                $pgstrt = $q['offset'] . ', ';
                        } else { // we're ignoring $page and using 'offset'
                                $q['offset'] = absint($q['offset']);
                                $pgstrt = $q['offset'] . ', ';
-                               $limits = 'LIMIT ' . $pgstrt . $q['posts_per_page'];
                        }
                        }
+                       $limits = 'LIMIT ' . $pgstrt . $q['posts_per_page'];
                }
 
                // Comments feeds
                }
 
                // Comments feeds
@@ -2564,7 +2560,7 @@ class WP_Query {
 
                $pieces = array( 'where', 'groupby', 'join', 'orderby', 'distinct', 'fields', 'limits' );
 
 
                $pieces = array( 'where', 'groupby', 'join', 'orderby', 'distinct', 'fields', 'limits' );
 
-               // Apply post-paging filters on where and join.  Only plugins that
+               // Apply post-paging filters on where and join. Only plugins that
                // manipulate paging queries should use these hooks.
                if ( !$q['suppress_filters'] ) {
                        $where          = apply_filters_ref_array( 'posts_where_paged', array( $where, &$this ) );
                // manipulate paging queries should use these hooks.
                if ( !$q['suppress_filters'] ) {
                        $where          = apply_filters_ref_array( 'posts_where_paged', array( $where, &$this ) );
@@ -2581,10 +2577,10 @@ class WP_Query {
                                $$piece = isset( $clauses[ $piece ] ) ? $clauses[ $piece ] : '';
                }
 
                                $$piece = isset( $clauses[ $piece ] ) ? $clauses[ $piece ] : '';
                }
 
-               // Announce current selection parameters.  For use by caching plugins.
+               // Announce current selection parameters. For use by caching plugins.
                do_action( 'posts_selection', $where . $groupby . $orderby . $limits . $join );
 
                do_action( 'posts_selection', $where . $groupby . $orderby . $limits . $join );
 
-               // Filter again for the benefit of caching plugins.  Regular plugins should use the hooks above.
+               // Filter again for the benefit of caching plugins. Regular plugins should use the hooks above.
                if ( !$q['suppress_filters'] ) {
                        $where          = apply_filters_ref_array( 'posts_where_request',               array( $where, &$this ) );
                        $groupby        = apply_filters_ref_array( 'posts_groupby_request',             array( $groupby, &$this ) );
                if ( !$q['suppress_filters'] ) {
                        $where          = apply_filters_ref_array( 'posts_where_request',               array( $where, &$this ) );
                        $groupby        = apply_filters_ref_array( 'posts_groupby_request',             array( $groupby, &$this ) );
@@ -2609,9 +2605,11 @@ class WP_Query {
                if ( !$q['no_found_rows'] && !empty($limits) )
                        $found_rows = 'SQL_CALC_FOUND_ROWS';
 
                if ( !$q['no_found_rows'] && !empty($limits) )
                        $found_rows = 'SQL_CALC_FOUND_ROWS';
 
-               $this->request = " SELECT $found_rows $distinct $fields FROM $wpdb->posts $join WHERE 1=1 $where $groupby $orderby $limits";
-               if ( !$q['suppress_filters'] )
-                       $this->request = apply_filters_ref_array('posts_request', array( $this->request, &$this ) );
+               $this->request = $old_request = "SELECT $found_rows $distinct $fields FROM $wpdb->posts $join WHERE 1=1 $where $groupby $orderby $limits";
+
+               if ( !$q['suppress_filters'] ) {
+                       $this->request = apply_filters_ref_array( 'posts_request', array( $this->request, &$this ) );
+               }
 
                if ( 'ids' == $q['fields'] ) {
                        $this->posts = $wpdb->get_col($this->request);
 
                if ( 'ids' == $q['fields'] ) {
                        $this->posts = $wpdb->get_col($this->request);
@@ -2629,9 +2627,34 @@ class WP_Query {
                        return $r;
                }
 
                        return $r;
                }
 
-               $this->posts = $wpdb->get_results($this->request);
+               $split_the_query = ( $old_request == $this->request && "$wpdb->posts.*" == $fields && !empty( $limits ) && $q['posts_per_page'] < 500 );
+               $split_the_query = apply_filters( 'split_the_query', $split_the_query, $this );
+
+               if ( $split_the_query ) {
+                       // First get the IDs and then fill in the objects
 
 
-               // Raw results filter.  Prior to status checks.
+                       $this->request = "SELECT $found_rows $distinct $wpdb->posts.ID FROM $wpdb->posts $join WHERE 1=1 $where $groupby $orderby $limits";
+
+                       $this->request = apply_filters( 'posts_request_ids', $this->request, $this );
+
+                       $ids = $wpdb->get_col( $this->request );
+
+                       if ( $ids ) {
+                               $this->set_found_posts( $q, $limits );
+
+                               _prime_post_caches( $ids, $q['update_post_term_cache'], $q['update_post_meta_cache'] );
+
+                               $this->posts = array_map( 'get_post', $ids );
+                       } else {
+                               $this->found_posts = $this->max_num_pages = 0;
+                               $this->posts = array();
+                       }
+               } else {
+                       $this->posts = $wpdb->get_results( $this->request );
+                       $this->set_found_posts( $q, $limits );
+               }
+
+               // Raw results filter. Prior to status checks.
                if ( !$q['suppress_filters'] )
                        $this->posts = apply_filters_ref_array('posts_results', array( $this->posts, &$this ) );
 
                if ( !$q['suppress_filters'] )
                        $this->posts = apply_filters_ref_array('posts_results', array( $this->posts, &$this ) );
 
@@ -2648,13 +2671,6 @@ class WP_Query {
                        $this->comment_count = count($this->comments);
                }
 
                        $this->comment_count = count($this->comments);
                }
 
-               if ( !$q['no_found_rows'] && !empty($limits) ) {
-                       $found_posts_query = apply_filters_ref_array( 'found_posts_query', array( 'SELECT FOUND_ROWS()', &$this ) );
-                       $this->found_posts = $wpdb->get_var( $found_posts_query );
-                       $this->found_posts = apply_filters_ref_array( 'found_posts', array( $this->found_posts, &$this ) );
-                       $this->max_num_pages = ceil($this->found_posts / $q['posts_per_page']);
-               }
-
                // Check post status to determine if post should be displayed.
                if ( !empty($this->posts) && ($this->is_single || $this->is_page) ) {
                        $status = get_post_status($this->posts[0]);
                // Check post status to determine if post should be displayed.
                if ( !empty($this->posts) && ($this->is_single || $this->is_page) ) {
                        $status = get_post_status($this->posts[0]);
@@ -2683,7 +2699,7 @@ class WP_Query {
                                }
                        }
 
                                }
                        }
 
-                       if ( $this->is_preview && current_user_can( $edit_cap, $this->posts[0]->ID ) )
+                       if ( $this->is_preview && $this->posts && current_user_can( $edit_cap, $this->posts[0]->ID ) )
                                $this->posts[0] = apply_filters_ref_array('the_preview', array( $this->posts[0], &$this ));
                }
 
                                $this->posts[0] = apply_filters_ref_array('the_preview', array( $this->posts[0], &$this ));
                }
 
@@ -2700,7 +2716,7 @@ class WP_Query {
                                        array_splice($this->posts, $i, 1);
                                        // Move to front, after other stickies
                                        array_splice($this->posts, $sticky_offset, 0, array($sticky_post));
                                        array_splice($this->posts, $i, 1);
                                        // Move to front, after other stickies
                                        array_splice($this->posts, $sticky_offset, 0, array($sticky_post));
-                                       // Increment the sticky offset.  The next sticky will be placed at this offset.
+                                       // Increment the sticky offset. The next sticky will be placed at this offset.
                                        $sticky_offset++;
                                        // Remove post from sticky posts array
                                        $offset = array_search($sticky_post->ID, $sticky_posts);
                                        $sticky_offset++;
                                        // Remove post from sticky posts array
                                        $offset = array_search($sticky_post->ID, $sticky_posts);
@@ -2757,6 +2773,18 @@ class WP_Query {
                return $this->posts;
        }
 
                return $this->posts;
        }
 
+       function set_found_posts( $q, $limits ) {
+               global $wpdb;
+
+               if ( $q['no_found_rows'] || empty( $limits ) )
+                       return;
+
+               $this->found_posts = $wpdb->get_var( apply_filters_ref_array( 'found_posts_query', array( 'SELECT FOUND_ROWS()', &$this ) ) );
+               $this->found_posts = apply_filters_ref_array( 'found_posts', array( $this->found_posts, &$this ) );
+
+               $this->max_num_pages = ceil( $this->found_posts / $q['posts_per_page'] );
+       }
+
        /**
         * Set up the next post and iterate current post index.
         *
        /**
         * Set up the next post and iterate current post index.
         *
@@ -2929,7 +2957,7 @@ class WP_Query {
                if ( isset($this->queried_object) )
                        return $this->queried_object;
 
                if ( isset($this->queried_object) )
                        return $this->queried_object;
 
-               $this->queried_object = NULL;
+               $this->queried_object = null;
                $this->queried_object_id = 0;
 
                if ( $this->is_category || $this->is_tag || $this->is_tax ) {
                $this->queried_object_id = 0;
 
                if ( $this->is_category || $this->is_tag || $this->is_tax ) {
@@ -2953,7 +2981,7 @@ class WP_Query {
                        $this->queried_object = get_post_type_object( $this->get('post_type') );
                } elseif ( $this->is_posts_page ) {
                        $page_for_posts = get_option('page_for_posts');
                        $this->queried_object = get_post_type_object( $this->get('post_type') );
                } elseif ( $this->is_posts_page ) {
                        $page_for_posts = get_option('page_for_posts');
-                       $this->queried_object = get_page( $page_for_posts );
+                       $this->queried_object = get_page( $page_for_posts );
                        $this->queried_object_id = (int) $this->queried_object->ID;
                } elseif ( $this->is_singular && !is_null($this->post) ) {
                        $this->queried_object = $this->post;
                        $this->queried_object_id = (int) $this->queried_object->ID;
                } elseif ( $this->is_singular && !is_null($this->post) ) {
                        $this->queried_object = $this->post;
@@ -3195,7 +3223,6 @@ class WP_Query {
                return (bool) $this->is_date;
        }
 
                return (bool) $this->is_date;
        }
 
-
        /**
         * Is the query for a day archive?
         *
        /**
         * Is the query for a day archive?
         *
@@ -3593,4 +3620,3 @@ function setup_postdata($post) {
 
        return true;
 }
 
        return true;
 }
-?>
index 889919de09cc4fc37bb41ff57ae27b2645b2101b..9fee68601d24ff7a1b5f8c676e9cb40370999388 100644 (file)
@@ -5,4 +5,3 @@
  * @package WordPress
  */
 _deprecated_file( basename(__FILE__), '2.1', null, __( 'This file no longer needs to be included.' ) );
  * @package WordPress
  */
 _deprecated_file( basename(__FILE__), '2.1', null, __( 'This file no longer needs to be included.' ) );
-?>
\ No newline at end of file
index 07d919c6d44541cc2e992a2bc1bd3e0a72743602..a0ffabf9fcd68a22663e18b2cff36bb56e2cef44 100644 (file)
@@ -5,4 +5,3 @@
  * @package WordPress
  */
 _deprecated_file( basename(__FILE__), '3.1', null, __( 'This file no longer needs to be included.' ) );
  * @package WordPress
  */
 _deprecated_file( basename(__FILE__), '3.1', null, __( 'This file no longer needs to be included.' ) );
-?>
\ No newline at end of file
index d376df40d15a87da9b98e2abb0d56a2c2ccee40c..13808d14eee1530df62375385f21d32c197e79ad 100644 (file)
@@ -22,26 +22,33 @@ function add_rewrite_rule($regex, $redirect, $after = 'bottom') {
 }
 
 /**
 }
 
 /**
- * Add a new tag (like %postname%).
+ * Add a new rewrite tag (like %postname%).
  *
  *
- * Warning: you must call this on init or earlier, otherwise the query var
- * addition stuff won't work.
+ * The $query parameter is optional. If it is omitted you must ensure that
+ * you call this on, or before, the 'init' hook. This is because $query defaults
+ * to "$tag=", and for this to work a new query var has to be added.
  *
  *
+ * @see WP_Rewrite::add_rewrite_tag()
  * @since 2.1.0
  *
  * @since 2.1.0
  *
- * @param string $tagname
- * @param string $regex
+ * @param string $tag Name of the new rewrite tag.
+ * @param string $regex Regular expression to substitute the tag for in rewrite rules.
+ * @param string $query String to append to the rewritten query. Must end in '='. Optional.
  */
  */
-function add_rewrite_tag($tagname, $regex) {
-       //validation
-       if ( strlen($tagname) < 3 || $tagname[0] != '%' || $tagname[strlen($tagname)-1] != '%' )
+function add_rewrite_tag( $tag, $regex, $query = '' ) {
+       // validate the tag's name
+       if ( strlen( $tag ) < 3 || $tag[0] != '%' || $tag[ strlen($tag) - 1 ] != '%' )
                return;
 
                return;
 
-       $qv = trim($tagname, '%');
-
        global $wp_rewrite, $wp;
        global $wp_rewrite, $wp;
-       $wp->add_query_var($qv);
-       $wp_rewrite->add_rewrite_tag($tagname, $regex, $qv . '=');
+
+       if ( empty( $query ) ) {
+               $qv = trim( $tag, '%' );
+               $wp->add_query_var( $qv );
+               $query = $qv . '=';
+       }
+
+       $wp_rewrite->add_rewrite_tag( $tag, $regex, $query );
 }
 
 /**
 }
 
 /**
@@ -52,11 +59,19 @@ function add_rewrite_tag($tagname, $regex) {
  *
  * @param string $name Name for permalink structure.
  * @param string $struct Permalink structure.
  *
  * @param string $name Name for permalink structure.
  * @param string $struct Permalink structure.
- * @param bool $with_front Prepend front base to permalink structure.
+ * @param array $args Optional configuration for building the rules from the permalink structure,
+ *     see {@link WP_Rewrite::add_permastruct()} for full details.
  */
  */
-function add_permastruct( $name, $struct, $with_front = true, $ep_mask = EP_NONE ) {
+function add_permastruct( $name, $struct, $args = array() ) {
        global $wp_rewrite;
        global $wp_rewrite;
-       return $wp_rewrite->add_permastruct( $name, $struct, $with_front, $ep_mask );
+
+       // backwards compatibility for the old parameters: $with_front and $ep_mask
+       if ( ! is_array( $args ) )
+               $args = array( 'with_front' => $args );
+       if ( func_num_args() == 4 )
+               $args['ep_mask'] = func_get_arg( 3 );
+
+       return $wp_rewrite->add_permastruct( $name, $struct, $args );
 }
 
 /**
 }
 
 /**
@@ -93,7 +108,6 @@ function flush_rewrite_rules( $hard = true ) {
        $wp_rewrite->flush_rules( $hard );
 }
 
        $wp_rewrite->flush_rules( $hard );
 }
 
-//pseudo-places
 /**
  * Endpoint Mask for default, which is nothing.
  *
 /**
  * Endpoint Mask for default, which is nothing.
  *
@@ -202,22 +216,37 @@ define('EP_ALL', 8191);
 /**
  * Add an endpoint, like /trackback/.
  *
 /**
  * Add an endpoint, like /trackback/.
  *
- * The endpoints are added to the end of the request. So a request matching
- * "/2008/10/14/my_post/myep/", the endpoint will be "/myep/".
+ * Adding an endpoint creates extra rewrite rules for each of the matching
+ * places specified by the provided bitmask. For example:
+ *
+ * <code>
+ * add_rewrite_endpoint( 'json', EP_PERMALINK | EP_PAGES );
+ * </code>
  *
  *
- * Be sure to flush the rewrite rules (wp_rewrite->flush_rules()) when your plugin gets
- * activated (register_activation_hook()) and deactivated (register_deactivation_hook())
+ * will add a new rewrite rule ending with "json(/(.*))?/?$" for every permastruct
+ * that describes a permalink (post) or page. This is rewritten to "json=$match"
+ * where $match is the part of the URL matched by the endpoint regex (e.g. "foo" in
+ * "<permalink>/json/foo/").
+ *
+ * A new query var with the same name as the endpoint will also be created.
+ *
+ * When specifying $places ensure that you are using the EP_* constants (or a
+ * combination of them using the bitwise OR operator) as their values are not
+ * guaranteed to remain static (especially EP_ALL).
+ *
+ * Be sure to flush the rewrite rules - flush_rewrite_rules() - when your plugin gets
+ * activated and deactivated.
  *
  * @since 2.1.0
  *
  * @since 2.1.0
- * @see WP_Rewrite::add_endpoint() Parameters and more description.
- * @uses $wp_rewrite
+ * @see WP_Rewrite::add_endpoint()
+ * @global object $wp_rewrite
  *
  *
- * @param unknown_type $name
- * @param unknown_type $places
+ * @param string $name Name of the endpoint.
+ * @param int $places Endpoint mask describing the places the endpoint should be added.
  */
  */
-function add_rewrite_endpoint($name, $places) {
+function add_rewrite_endpoint( $name, $places ) {
        global $wp_rewrite;
        global $wp_rewrite;
-       $wp_rewrite->add_endpoint($name, $places);
+       $wp_rewrite->add_endpoint( $name, $places );
 }
 
 /**
 }
 
 /**
@@ -364,7 +393,7 @@ function url_to_postid($url) {
  */
 class WP_Rewrite {
        /**
  */
 class WP_Rewrite {
        /**
-        * Default permalink structure for WordPress.
+        * Permalink structure for posts.
         *
         * @since 1.5.0
         * @access private
         *
         * @since 1.5.0
         * @access private
@@ -382,7 +411,7 @@ class WP_Rewrite {
        var $use_trailing_slashes;
 
        /**
        var $use_trailing_slashes;
 
        /**
-        * Permalink author request base ( example.com/author/authorname ).
+        * Base for the author permalink structure (example.com/$author_base/authorname).
         *
         * @since 1.5.0
         * @access private
         *
         * @since 1.5.0
         * @access private
@@ -391,7 +420,7 @@ class WP_Rewrite {
        var $author_base = 'author';
 
        /**
        var $author_base = 'author';
 
        /**
-        * Permalink request structure for author pages.
+        * Permalink structure for author archives.
         *
         * @since 1.5.0
         * @access private
         *
         * @since 1.5.0
         * @access private
@@ -400,7 +429,7 @@ class WP_Rewrite {
        var $author_structure;
 
        /**
        var $author_structure;
 
        /**
-        * Permalink request structure for dates.
+        * Permalink structure for date archives.
         *
         * @since 1.5.0
         * @access private
         *
         * @since 1.5.0
         * @access private
@@ -409,7 +438,7 @@ class WP_Rewrite {
        var $date_structure;
 
        /**
        var $date_structure;
 
        /**
-        * Permalink request structure for pages.
+        * Permalink structure for pages.
         *
         * @since 1.5.0
         * @access private
         *
         * @since 1.5.0
         * @access private
@@ -418,7 +447,7 @@ class WP_Rewrite {
        var $page_structure;
 
        /**
        var $page_structure;
 
        /**
-        * Search permalink base ( example.com/search/query ).
+        * Base of the search permalink structure (example.com/$search_base/query).
         *
         * @since 1.5.0
         * @access private
         *
         * @since 1.5.0
         * @access private
@@ -427,7 +456,7 @@ class WP_Rewrite {
        var $search_base = 'search';
 
        /**
        var $search_base = 'search';
 
        /**
-        * Permalink request structure for searches.
+        * Permalink structure for searches.
         *
         * @since 1.5.0
         * @access private
         *
         * @since 1.5.0
         * @access private
@@ -463,7 +492,7 @@ class WP_Rewrite {
        var $feed_base = 'feed';
 
        /**
        var $feed_base = 'feed';
 
        /**
-        * Comments feed request structure permalink.
+        * Comments feed permalink structure.
         *
         * @since 1.5.0
         * @access private
         *
         * @since 1.5.0
         * @access private
@@ -472,7 +501,7 @@ class WP_Rewrite {
        var $comments_feed_structure;
 
        /**
        var $comments_feed_structure;
 
        /**
-        * Feed request structure permalink.
+        * Feed request permalink structure.
         *
         * @since 1.5.0
         * @access private
         *
         * @since 1.5.0
         * @access private
@@ -481,13 +510,13 @@ class WP_Rewrite {
        var $feed_structure;
 
        /**
        var $feed_structure;
 
        /**
-        * Front URL path.
+        * The static portion of the post permalink structure.
         *
         *
-        * The difference between the root property is that WordPress might be
-        * located at example/WordPress/index.php, if permalinks are turned off. The
-        * WordPress/index.php will be the front portion. If permalinks are turned
-        * on, this will most likely be empty or not set.
+        * If the permalink structure is "/archive/%post_id%" then the front
+        * is "/archive/". If the permalink structure is "/%year%/%postname%/"
+        * then the front is "/".
         *
         *
+        * @see WP_Rewrite::init()
         * @since 1.5.0
         * @access private
         * @var string
         * @since 1.5.0
         * @access private
         * @var string
@@ -495,11 +524,14 @@ class WP_Rewrite {
        var $front;
 
        /**
        var $front;
 
        /**
-        * Root URL path to WordPress (without domain).
+        * The prefix for all permalink structures.
         *
         *
-        * The difference between front property is that WordPress might be located
-        * at example.com/WordPress/. The root is the 'WordPress/' portion.
+        * If PATHINFO/index permalinks are in use then the root is the value of
+        * {@link WP_Rewrite::$index} with a trailing slash appended. Otherwise
+        * the root will be empty.
         *
         *
+        * @see WP_Rewrite::init()
+        * @see WP_Rewrite::using_index_permalinks()
         * @since 1.5.0
         * @access private
         * @var string
         * @since 1.5.0
         * @access private
         * @var string
@@ -507,7 +539,7 @@ class WP_Rewrite {
        var $root = '';
 
        /**
        var $root = '';
 
        /**
-        * Permalink to the home page.
+        * The name of the index file which is the entry point to all requests.
         *
         * @since 1.5.0
         * @access public
         *
         * @since 1.5.0
         * @access public
@@ -516,7 +548,7 @@ class WP_Rewrite {
        var $index = 'index.php';
 
        /**
        var $index = 'index.php';
 
        /**
-        * Request match string.
+        * Variable name to use for regex matches in the rewritten query.
         *
         * @since 1.5.0
         * @access private
         *
         * @since 1.5.0
         * @access private
@@ -542,7 +574,7 @@ class WP_Rewrite {
         * @access private
         * @var array
         */
         * @access private
         * @var array
         */
-       var $extra_rules = array(); //
+       var $extra_rules = array();
 
        /**
         * Additional rules that belong at the beginning to match first.
 
        /**
         * Additional rules that belong at the beginning to match first.
@@ -553,21 +585,22 @@ class WP_Rewrite {
         * @access private
         * @var array
         */
         * @access private
         * @var array
         */
-       var $extra_rules_top = array(); //
+       var $extra_rules_top = array();
 
        /**
 
        /**
-        * Rules that don't redirect to WP's index.php.
+        * Rules that don't redirect to WordPress' index.php.
         *
         *
-        * These rules are written to the mod_rewrite portion of the .htaccess.
+        * These rules are written to the mod_rewrite portion of the .htaccess,
+        * and are added by {@link add_external_rule()}.
         *
         * @since 2.1.0
         * @access private
         * @var array
         */
         *
         * @since 2.1.0
         * @access private
         * @var array
         */
-       var $non_wp_rules = array(); //
+       var $non_wp_rules = array();
 
        /**
 
        /**
-        * Extra permalink structures.
+        * Extra permalink structures, e.g. categories, added by {@link add_permastruct()}.
         *
         * @since 2.1.0
         * @access private
         *
         * @since 2.1.0
         * @access private
@@ -576,7 +609,7 @@ class WP_Rewrite {
        var $extra_permastructs = array();
 
        /**
        var $extra_permastructs = array();
 
        /**
-        * Endpoints permalinks
+        * Endpoints (like /trackback/) added by {@link add_rewrite_endpoint()}.
         *
         * @since 2.1.0
         * @access private
         *
         * @since 2.1.0
         * @access private
@@ -585,11 +618,12 @@ class WP_Rewrite {
        var $endpoints;
 
        /**
        var $endpoints;
 
        /**
-        * Whether to write every mod_rewrite rule for WordPress.
+        * Whether to write every mod_rewrite rule for WordPress into the .htaccess file.
         *
         * This is off by default, turning it on might print a lot of rewrite rules
         * to the .htaccess file.
         *
         *
         * This is off by default, turning it on might print a lot of rewrite rules
         * to the .htaccess file.
         *
+        * @see WP_Rewrite::mod_rewrite_rules()
         * @since 2.0.0
         * @access public
         * @var bool
         * @since 2.0.0
         * @access public
         * @var bool
@@ -597,8 +631,17 @@ class WP_Rewrite {
        var $use_verbose_rules = false;
 
        /**
        var $use_verbose_rules = false;
 
        /**
-        * Whether to write every mod_rewrite rule for WordPress pages.
+        * Could post permalinks be confused with those of pages?
+        *
+        * If the first rewrite tag in the post permalink structure is one that could
+        * also match a page name (e.g. %postname% or %author%) then this flag is
+        * set to true. Prior to WordPress 3.3 this flag indicated that every page
+        * would have a set of rules added to the top of the rewrite rules array.
+        * Now it tells {@link WP::parse_request()} to check if a URL matching the
+        * page permastruct is actually a page before accepting it.
         *
         *
+        * @link http://core.trac.wordpress.org/ticket/16687
+        * @see WP_Rewrite::init()
         * @since 2.5.0
         * @access public
         * @var bool
         * @since 2.5.0
         * @access public
         * @var bool
@@ -606,70 +649,74 @@ class WP_Rewrite {
        var $use_verbose_page_rules = true;
 
        /**
        var $use_verbose_page_rules = true;
 
        /**
-        * Permalink structure search for preg_replace.
+        * Rewrite tags that can be used in permalink structures.
+        *
+        * These are translated into the regular expressions stored in
+        * {@link WP_Rewrite::$rewritereplace} and are rewritten to the
+        * query variables listed in {@link WP_Rewrite::$queryreplace}.
+        *
+        * Additional tags can be added with {@link add_rewrite_tag()}.
         *
         * @since 1.5.0
         * @access private
         * @var array
         */
         *
         * @since 1.5.0
         * @access private
         * @var array
         */
-       var $rewritecode =
-               array(
-                                       '%year%',
-                                       '%monthnum%',
-                                       '%day%',
-                                       '%hour%',
-                                       '%minute%',
-                                       '%second%',
-                                       '%postname%',
-                                       '%post_id%',
-                                       '%author%',
-                                       '%pagename%',
-                                       '%search%'
-                                       );
+       var $rewritecode = array(
+               '%year%',
+               '%monthnum%',
+               '%day%',
+               '%hour%',
+               '%minute%',
+               '%second%',
+               '%postname%',
+               '%post_id%',
+               '%author%',
+               '%pagename%',
+               '%search%'
+       );
 
        /**
 
        /**
-        * Preg_replace values for the search, see {@link WP_Rewrite::$rewritecode}.
+        * Regular expressions to be substituted into rewrite rules in place
+        * of rewrite tags, see {@link WP_Rewrite::$rewritecode}.
         *
         * @since 1.5.0
         * @access private
         * @var array
         */
         *
         * @since 1.5.0
         * @access private
         * @var array
         */
-       var $rewritereplace =
-               array(
-                                       '([0-9]{4})',
-                                       '([0-9]{1,2})',
-                                       '([0-9]{1,2})',
-                                       '([0-9]{1,2})',
-                                       '([0-9]{1,2})',
-                                       '([0-9]{1,2})',
-                                       '([^/]+)',
-                                       '([0-9]+)',
-                                       '([^/]+)',
-                                       '([^/]+?)',
-                                       '(.+)'
-                                       );
+       var $rewritereplace = array(
+               '([0-9]{4})',
+               '([0-9]{1,2})',
+               '([0-9]{1,2})',
+               '([0-9]{1,2})',
+               '([0-9]{1,2})',
+               '([0-9]{1,2})',
+               '([^/]+)',
+               '([0-9]+)',
+               '([^/]+)',
+               '([^/]+?)',
+               '(.+)'
+       );
 
        /**
 
        /**
-        * Search for the query to look for replacing.
+        * Query variables that rewrite tags map to, see {@link WP_Rewrite::$rewritecode}.
         *
         * @since 1.5.0
         * @access private
         * @var array
         */
         *
         * @since 1.5.0
         * @access private
         * @var array
         */
-       var $queryreplace =
-               array (
-                                       'year=',
-                                       'monthnum=',
-                                       'day=',
-                                       'hour=',
-                                       'minute=',
-                                       'second=',
-                                       'name=',
-                                       'p=',
-                                       'author_name=',
-                                       'pagename=',
-                                       's='
-                                       );
+       var $queryreplace = array(
+               'year=',
+               'monthnum=',
+               'day=',
+               'hour=',
+               'minute=',
+               'second=',
+               'name=',
+               'p=',
+               'author_name=',
+               'pagename=',
+               's='
+       );
 
        /**
         * Supported default feeds.
 
        /**
         * Supported default feeds.
@@ -678,7 +725,7 @@ class WP_Rewrite {
         * @access private
         * @var array
         */
         * @access private
         * @var array
         */
-       var $feeds = array ( 'feed', 'rdf', 'rss', 'rss2', 'atom' );
+       var $feeds = array( 'feed', 'rdf', 'rss', 'rss2', 'atom' );
 
        /**
         * Whether permalinks are being used.
 
        /**
         * Whether permalinks are being used.
@@ -807,24 +854,16 @@ class WP_Rewrite {
        /**
         * Retrieve all of the rewrite rules for pages.
         *
        /**
         * Retrieve all of the rewrite rules for pages.
         *
-        * If the 'use_verbose_page_rules' property is false, then there will only
-        * be a single rewrite rule for pages for those matching '%pagename%'. With
-        * the property set to true, the attachments and the pages will be added for
-        * each individual attachment URI and page URI, respectively.
-        *
         * @since 1.5.0
         * @access public
         *
         * @return array
         */
        function page_rewrite_rules() {
         * @since 1.5.0
         * @access public
         *
         * @return array
         */
        function page_rewrite_rules() {
-               $rewrite_rules = array();
-               $page_structure = $this->get_page_permastruct();
-
                // the extra .? at the beginning prevents clashes with other regular expressions in the rules array
                // the extra .? at the beginning prevents clashes with other regular expressions in the rules array
-               $this->add_rewrite_tag('%pagename%', "(.?.+?)", 'pagename=');
-               $rewrite_rules = array_merge($rewrite_rules, $this->generate_rewrite_rules($page_structure, EP_PAGES));
-               return $rewrite_rules;
+               $this->add_rewrite_tag( '%pagename%', '(.?.+?)', 'pagename=' );
+
+               return $this->generate_rewrite_rules( $this->get_page_permastruct(), EP_PAGES, true, true, false, false );
        }
 
        /**
        }
 
        /**
@@ -902,7 +941,7 @@ class WP_Rewrite {
         * @return bool|string False on failure. Year structure on success.
         */
        function get_year_permastruct() {
         * @return bool|string False on failure. Year structure on success.
         */
        function get_year_permastruct() {
-               $structure = $this->get_date_permastruct($this->permalink_structure);
+               $structure = $this->get_date_permastruct();
 
                if ( empty($structure) )
                        return false;
 
                if ( empty($structure) )
                        return false;
@@ -927,7 +966,7 @@ class WP_Rewrite {
         * @return bool|string False on failure. Year/Month structure on success.
         */
        function get_month_permastruct() {
         * @return bool|string False on failure. Year/Month structure on success.
         */
        function get_month_permastruct() {
-               $structure = $this->get_date_permastruct($this->permalink_structure);
+               $structure = $this->get_date_permastruct();
 
                if ( empty($structure) )
                        return false;
 
                if ( empty($structure) )
                        return false;
@@ -950,7 +989,7 @@ class WP_Rewrite {
         * @return bool|string False on failure. Year/Month/Day structure on success.
         */
        function get_day_permastruct() {
         * @return bool|string False on failure. Year/Month/Day structure on success.
         */
        function get_day_permastruct() {
-               return $this->get_date_permastruct($this->permalink_structure);
+               return $this->get_date_permastruct();
        }
 
        /**
        }
 
        /**
@@ -1001,7 +1040,7 @@ class WP_Rewrite {
                        return false;
 
                if ( isset($this->extra_permastructs[$name]) )
                        return false;
 
                if ( isset($this->extra_permastructs[$name]) )
-                       return $this->extra_permastructs[$name][0];
+                       return $this->extra_permastructs[$name]['struct'];
 
                return false;
        }
 
                return false;
        }
@@ -1137,36 +1176,35 @@ class WP_Rewrite {
        }
 
        /**
        }
 
        /**
-        * Append or update tag, pattern, and query for replacement.
+        * Add or update existing rewrite tags (e.g. %postname%).
         *
         * If the tag already exists, replace the existing pattern and query for
         *
         * If the tag already exists, replace the existing pattern and query for
-        * that tag, otherwise add the new tag, pattern, and query to the end of the
-        * arrays.
-        *
-        * @internal What is the purpose of this function again? Need to finish long
-        *           description.
+        * that tag, otherwise add the new tag.
         *
         *
+        * @see WP_Rewrite::$rewritecode
+        * @see WP_Rewrite::$rewritereplace
+        * @see WP_Rewrite::$queryreplace
         * @since 1.5.0
         * @access public
         *
         * @since 1.5.0
         * @access public
         *
-        * @param string $tag Append tag to rewritecode property array.
-        * @param string $pattern Append pattern to rewritereplace property array.
-        * @param string $query Append query to queryreplace property array.
+        * @param string $tag Name of the rewrite tag to add or update.
+        * @param string $regex Regular expression to substitute the tag for in rewrite rules.
+        * @param string $query String to append to the rewritten query. Must end in '='.
         */
         */
-       function add_rewrite_tag($tag, $pattern, $query) {
-               $position = array_search($tag, $this->rewritecode);
+       function add_rewrite_tag( $tag, $regex, $query ) {
+               $position = array_search( $tag, $this->rewritecode );
                if ( false !== $position && null !== $position ) {
                if ( false !== $position && null !== $position ) {
-                       $this->rewritereplace[$position] = $pattern;
-                       $this->queryreplace[$position] = $query;
+                       $this->rewritereplace[ $position ] = $regex;
+                       $this->queryreplace[ $position ] = $query;
                } else {
                        $this->rewritecode[] = $tag;
                } else {
                        $this->rewritecode[] = $tag;
-                       $this->rewritereplace[] = $pattern;
+                       $this->rewritereplace[] = $regex;
                        $this->queryreplace[] = $query;
                }
        }
 
        /**
                        $this->queryreplace[] = $query;
                }
        }
 
        /**
-        * Generate the rules from permalink structure.
+        * Generate rewrite rules from a permalink structure.
         *
         * The main WP_Rewrite function for building the rewrite rule list. The
         * contents of the function is a mix of black magic and regular expressions,
         *
         * The main WP_Rewrite function for building the rewrite rule list. The
         * contents of the function is a mix of black magic and regular expressions,
@@ -1176,12 +1214,13 @@ class WP_Rewrite {
         * @access public
         *
         * @param string $permalink_structure The permalink structure.
         * @access public
         *
         * @param string $permalink_structure The permalink structure.
-        * @param int $ep_mask Optional, default is EP_NONE. Endpoint constant, see EP_* constants.
-        * @param bool $paged Optional, default is true. Whether permalink request is paged.
-        * @param bool $feed Optional, default is true. Whether for feed.
-        * @param bool $forcomments Optional, default is false. Whether for comments.
-        * @param bool $walk_dirs Optional, default is true. Whether to create list of directories to walk over.
-        * @param bool $endpoints Optional, default is true. Whether endpoints are enabled.
+        * @param int $ep_mask Endpoint mask defining what endpoints are added to the structure. Default is EP_NONE.
+        * @param bool $paged Should archive pagination rules be added for the structure? Default is true.
+        * @param bool $feed Should feed rewrite rules be added for the structure? Default is true.
+        * @param bool $forcomments Should the feed rules be a query for a comments feed? Default is false.
+        * @param bool $walk_dirs Should the 'directories' making up the structure be walked over and rewrite rules
+        *                        built for each in turn? Default is true.
+        * @param bool $endpoints Should endpoints be applied to the generated rewrite rules? Default is true.
         * @return array Rewrite rule list.
         */
        function generate_rewrite_rules($permalink_structure, $ep_mask = EP_NONE, $paged = true, $feed = true, $forcomments = false, $walk_dirs = true, $endpoints = true) {
         * @return array Rewrite rule list.
         */
        function generate_rewrite_rules($permalink_structure, $ep_mask = EP_NONE, $paged = true, $feed = true, $forcomments = false, $walk_dirs = true, $endpoints = true) {
@@ -1189,11 +1228,11 @@ class WP_Rewrite {
                $feedregex2 = '';
                foreach ( (array) $this->feeds as $feed_name)
                        $feedregex2 .= $feed_name . '|';
                $feedregex2 = '';
                foreach ( (array) $this->feeds as $feed_name)
                        $feedregex2 .= $feed_name . '|';
-               $feedregex2 = '(' . trim($feedregex2, '|') .  ')/?$';
+               $feedregex2 = '(' . trim($feedregex2, '|') . ')/?$';
 
                //$feedregex is identical but with /feed/ added on as well, so URLs like <permalink>/feed/atom
                //and <permalink>/atom are both possible
 
                //$feedregex is identical but with /feed/ added on as well, so URLs like <permalink>/feed/atom
                //and <permalink>/atom are both possible
-               $feedregex = $this->feed_base  . '/' . $feedregex2;
+               $feedregex = $this->feed_base . '/' . $feedregex2;
 
                //build a regex to match the trackback and page/xx parts of URLs
                $trackbackregex = 'trackback/?$';
 
                //build a regex to match the trackback and page/xx parts of URLs
                $trackbackregex = 'trackback/?$';
@@ -1240,8 +1279,8 @@ class WP_Rewrite {
                        $structure = str_replace($front, '', $structure);
 
                //create a list of dirs to walk over, making rewrite rules for each level
                        $structure = str_replace($front, '', $structure);
 
                //create a list of dirs to walk over, making rewrite rules for each level
-               //so for example, a $structure of /%year%/%month%/%postname% would create
-               //rewrite rules for /%year%/, /%year%/%month%/ and /%year%/%month%/%postname%
+               //so for example, a $structure of /%year%/%monthnum%/%postname% would create
+               //rewrite rules for /%year%/, /%year%/%monthnum%/ and /%year%/%monthnum%/%postname%
                $structure = trim($structure, '/');
                $dirs = $walk_dirs ? explode('/', $structure) : array( $structure );
                $num_dirs = count($dirs);
                $structure = trim($structure, '/');
                $dirs = $walk_dirs ? explode('/', $structure) : array( $structure );
                $num_dirs = count($dirs);
@@ -1377,8 +1416,6 @@ class WP_Rewrite {
                                        $sub1feed = $sub1 . $feedregex; //and <permalink>/feed/(atom|...)
                                        $sub1feed2 = $sub1 . $feedregex2; //and <permalink>/(feed|atom...)
                                        $sub1comment = $sub1 . $commentregex; //and <permalink>/comment-page-xx
                                        $sub1feed = $sub1 . $feedregex; //and <permalink>/feed/(atom|...)
                                        $sub1feed2 = $sub1 . $feedregex2; //and <permalink>/(feed|atom...)
                                        $sub1comment = $sub1 . $commentregex; //and <permalink>/comment-page-xx
-                                       //add an ? as we don't have to match that last slash, and finally a $ so we
-                                       //match to the end of the URL
 
                                        //add another rule to match attachments in the explicit form:
                                        //<permalink>/attachment/some-text
 
                                        //add another rule to match attachments in the explicit form:
                                        //<permalink>/attachment/some-text
@@ -1405,10 +1442,12 @@ class WP_Rewrite {
                                        }
 
                                        //now we've finished with endpoints, finish off the $sub1 and $sub2 matches
                                        }
 
                                        //now we've finished with endpoints, finish off the $sub1 and $sub2 matches
+                                       //add a ? as we don't have to match that last slash, and finally a $ so we
+                                       //match to the end of the URL
                                        $sub1 .= '?$';
                                        $sub2 .= '?$';
 
                                        $sub1 .= '?$';
                                        $sub2 .= '?$';
 
-                                       //allow URLs like <permalink>/2 for <permalink>/page/2
+                                       //post pagination, e.g. <permalink>/2/
                                        $match = $match . '(/[0-9]+)?/?$';
                                        $query = $index . '?' . $query . '&page=' . $this->preg_index($num_toks + 1);
                                } else { //not matching a permalink so this is a lot simpler
                                        $match = $match . '(/[0-9]+)?/?$';
                                        $query = $index . '?' . $query . '&page=' . $this->preg_index($num_toks + 1);
                                } else { //not matching a permalink so this is a lot simpler
@@ -1495,9 +1534,10 @@ class WP_Rewrite {
                        $registration_pages['.*wp-signup.php$'] = $this->index . '?signup=true';
                        $registration_pages['.*wp-activate.php$'] = $this->index . '?activate=true';
                }
                        $registration_pages['.*wp-signup.php$'] = $this->index . '?signup=true';
                        $registration_pages['.*wp-activate.php$'] = $this->index . '?activate=true';
                }
+               $registration_pages['.*wp-register.php$'] = $this->index . '?register=true'; // Deprecated
 
                // Post
 
                // Post
-               $post_rewrite = $this->generate_rewrite_rules($this->permalink_structure, EP_PERMALINK);
+               $post_rewrite = $this->generate_rewrite_rules( $this->permalink_structure, EP_PERMALINK, false, true, false, false );
                $post_rewrite = apply_filters('post_rewrite_rules', $post_rewrite);
 
                // Date
                $post_rewrite = apply_filters('post_rewrite_rules', $post_rewrite);
 
                // Date
@@ -1526,11 +1566,15 @@ class WP_Rewrite {
                $page_rewrite = apply_filters('page_rewrite_rules', $page_rewrite);
 
                // Extra permastructs
                $page_rewrite = apply_filters('page_rewrite_rules', $page_rewrite);
 
                // Extra permastructs
-               foreach ( $this->extra_permastructs as $permastructname => $permastruct ) {
-                       if ( is_array($permastruct) )
-                               $rules = $this->generate_rewrite_rules($permastruct[0], $permastruct[1]);
-                       else
-                               $rules = $this->generate_rewrite_rules($permastruct, EP_NONE);
+               foreach ( $this->extra_permastructs as $permastructname => $struct ) {
+                       if ( is_array( $struct ) ) {
+                               if ( count( $struct ) == 2 )
+                                       $rules = $this->generate_rewrite_rules( $struct[0], $struct[1] );
+                               else
+                                       $rules = $this->generate_rewrite_rules( $struct['struct'], $struct['ep_mask'], $struct['paged'], $struct['feed'], $struct['forcomments'], $struct['walk_dirs'], $struct['endpoints'] );
+                       } else {
+                               $rules = $this->generate_rewrite_rules( $struct );
+                       }
 
                        $rules = apply_filters($permastructname . '_rewrite_rules', $rules);
                        if ( 'post_tag' == $permastructname )
 
                        $rules = apply_filters($permastructname . '_rewrite_rules', $rules);
                        if ( 'post_tag' == $permastructname )
@@ -1582,7 +1626,7 @@ class WP_Rewrite {
         * Does not actually write to the .htaccess file, but creates the rules for
         * the process that will.
         *
         * Does not actually write to the .htaccess file, but creates the rules for
         * the process that will.
         *
-        * Will add  the non_wp_rules property rules to the .htaccess file before
+        * Will add the non_wp_rules property rules to the .htaccess file before
         * the WordPress rewrite rules one.
         *
         * @since 1.5.0
         * the WordPress rewrite rules one.
         *
         * @since 1.5.0
@@ -1810,13 +1854,15 @@ class WP_Rewrite {
        /**
         * Add an endpoint, like /trackback/.
         *
        /**
         * Add an endpoint, like /trackback/.
         *
-        * To be inserted after certain URL types (specified in $places).
+        * See {@link add_rewrite_endpoint()} for full documentation.
         *
         *
+        * @see add_rewrite_endpoint()
         * @since 2.1.0
         * @access public
         * @since 2.1.0
         * @access public
+        * @uses WP::add_query_var()
         *
         *
-        * @param string $name Name of endpoint.
-        * @param array $places URL types that endpoint can be used.
+        * @param string $name Name of the endpoint.
+        * @param int $places Endpoint mask describing the places the endpoint should be added.
         */
        function add_endpoint($name, $places) {
                global $wp;
         */
        function add_endpoint($name, $places) {
                global $wp;
@@ -1825,24 +1871,59 @@ class WP_Rewrite {
        }
 
        /**
        }
 
        /**
-        * Add permalink structure.
+        * Add a new permalink structure.
+        *
+        * A permalink structure (permastruct) is an abstract definition of a set of rewrite rules; it
+        * is an easy way of expressing a set of regular expressions that rewrite to a set of query strings.
+        * The new permastruct is added to the {@link WP_Rewrite::$extra_permastructs} array. When the
+        * rewrite rules are built by {@link WP_Rewrite::rewrite_rules()} all of these extra permastructs
+        * are passed to {@link WP_Rewrite::generate_rewrite_rules()} which transforms them into the
+        * regular expressions that many love to hate.
         *
         *
-        * These are added along with the extra rewrite rules that are merged to the
-        * top.
+        * The $args parameter gives you control over how {@link WP_Rewrite::generate_rewrite_rules()}
+        * works on the new permastruct.
         *
         * @since 2.5.0
         * @access public
         *
         * @param string $name Name for permalink structure.
         *
         * @since 2.5.0
         * @access public
         *
         * @param string $name Name for permalink structure.
-        * @param string $struct Permalink structure.
-        * @param bool $with_front Prepend front base to permalink structure.
-        */
-       function add_permastruct($name, $struct, $with_front = true, $ep_mask = EP_NONE) {
-               if ( $with_front )
+        * @param string $struct Permalink structure (e.g. category/%category%)
+        * @param array $args Optional configuration for building the rules from the permalink structure:
+        *     - with_front (bool) - Should the structure be prepended with WP_Rewrite::$front? Default is true.
+        *     - ep_mask (int) - Endpoint mask defining what endpoints are added to the structure. Default is EP_NONE.
+        *     - paged (bool) - Should archive pagination rules be added for the structure? Default is true.
+        *     - feed (bool) - Should feed rewrite rules be added for the structure? Default is true.
+        *     - forcomments (bool) - Should the feed rules be a query for a comments feed? Default is false.
+        *     - walk_dirs (bool) - Should the 'directories' making up the structure be walked over and rewrite
+        *                          rules built for each in turn? Default is true.
+        *     - endpoints (bool) - Should endpoints be applied to the generated rewrite rules? Default is true.
+        */
+       function add_permastruct( $name, $struct, $args = array() ) {
+               // backwards compatibility for the old parameters: $with_front and $ep_mask
+               if ( ! is_array( $args ) )
+                       $args = array( 'with_front' => $args );
+               if ( func_num_args() == 4 )
+                       $args['ep_mask'] = func_get_arg( 3 );
+
+               $defaults = array(
+                       'with_front' => true,
+                       'ep_mask' => EP_NONE,
+                       'paged' => true,
+                       'feed' => true,
+                       'forcomments' => false,
+                       'walk_dirs' => true,
+                       'endpoints' => true,
+               );
+               $args = array_intersect_key( $args, $defaults );
+               $args = wp_parse_args( $args, $defaults );
+
+               if ( $args['with_front'] )
                        $struct = $this->front . $struct;
                else
                        $struct = $this->root . $struct;
                        $struct = $this->front . $struct;
                else
                        $struct = $this->root . $struct;
-               $this->extra_permastructs[$name] = array($struct, $ep_mask);
+               $args['struct'] = $struct;
+
+               $this->extra_permastructs[ $name ] = $args;
        }
 
        /**
        }
 
        /**
@@ -1970,5 +2051,3 @@ class WP_Rewrite {
                $this->init();
        }
 }
                $this->init();
        }
 }
-
-?>
index ea3269289fb7b7f0d66e4055ae3dddc6f0f0f964..86458479df001dde15d197a908707c28754b7803 100644 (file)
@@ -1,10 +1,9 @@
 <?php
 /**
 <?php
 /**
- * Deprecated.  Use rss.php instead.
+ * Deprecated. Use rss.php instead.
  *
  * @package WordPress
  */
 
 _deprecated_file( basename(__FILE__), '2.1', WPINC . '/rss.php' );
 require_once (ABSPATH . WPINC . '/rss.php');
  *
  * @package WordPress
  */
 
 _deprecated_file( basename(__FILE__), '2.1', WPINC . '/rss.php' );
 require_once (ABSPATH . WPINC . '/rss.php');
-?>
index 88bfa62dcb52fbea212d8210cf9ac11fffe8e31b..0d94937685907c0a010989f29f1feedbbe0058e8 100644 (file)
@@ -63,7 +63,6 @@ class MagpieRSS {
                if ( !is_resource($parser) )
                        trigger_error( "Failed to create an instance of PHP's XML parser. http://www.php.net/manual/en/ref.xml.php");
 
                if ( !is_resource($parser) )
                        trigger_error( "Failed to create an instance of PHP's XML parser. http://www.php.net/manual/en/ref.xml.php");
 
-
                $this->parser = $parser;
 
                # pass in parser, and a reference to this object
                $this->parser = $parser;
 
                # pass in parser, and a reference to this object
@@ -167,7 +166,6 @@ class MagpieRSS {
 
                        $this->incontent = $el;
 
 
                        $this->incontent = $el;
 
-
                }
 
                // if inside an Atom content construct (e.g. content or summary) field treat tags as text
                }
 
                // if inside an Atom content construct (e.g. content or summary) field treat tags as text
@@ -206,8 +204,6 @@ class MagpieRSS {
                }
        }
 
                }
        }
 
-
-
        function feed_cdata ($p, $text) {
 
                if ($this->feed_type == ATOM and $this->incontent)
        function feed_cdata ($p, $text) {
 
                if ($this->feed_type == ATOM and $this->incontent)
@@ -436,7 +432,6 @@ function fetch_rss ($url) {
                        debug($cache->ERROR, E_USER_WARNING);
                }
 
                        debug($cache->ERROR, E_USER_WARNING);
                }
 
-
                $cache_status    = 0;           // response of check_cache
                $request_headers = array(); // HTTP headers to send with fetch
                $rss                     = 0;           // parsed RSS object
                $cache_status    = 0;           // response of check_cache
                $request_headers = array(); // HTTP headers to send with fetch
                $rss                     = 0;           // parsed RSS object
@@ -935,5 +930,3 @@ function get_rss ($url, $num_items = 5) { // Like get posts, but for RSS
        }
 }
 endif;
        }
 }
 endif;
-
-?>
index 2ae6f510769aacccedc9ac2bf9364727dbc017c9..dab58683e8c10f4ddcc66a1e57f818be2d2d0305 100644 (file)
@@ -59,16 +59,16 @@ function wp_default_scripts( &$scripts ) {
 
        $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '.dev' : '';
 
 
        $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '.dev' : '';
 
-       $scripts->add( 'utils', "/wp-admin/js/utils$suffix.js", false, '20101110' );
+       $scripts->add( 'utils', "/wp-admin/js/utils$suffix.js" );
 
 
-       $scripts->add( 'common', "/wp-admin/js/common$suffix.js", array('jquery', 'hoverIntent', 'utils'), '20120102', 1 );
+       $scripts->add( 'common', "/wp-admin/js/common$suffix.js", array('jquery', 'hoverIntent', 'utils'), false, 1 );
        $scripts->localize( 'common', 'commonL10n', array(
                'warnDelete' => __("You are about to permanently delete the selected items.\n  'Cancel' to stop, 'OK' to delete.")
        ) );
 
        $scripts->localize( 'common', 'commonL10n', array(
                'warnDelete' => __("You are about to permanently delete the selected items.\n  'Cancel' to stop, 'OK' to delete.")
        ) );
 
-       $scripts->add( 'sack', "/wp-includes/js/tw-sack$suffix.js", false, '1.6.1', 1 );
+       $scripts->add( 'sack', "/wp-includes/js/tw-sack$suffix.js", array(), '1.6.1', 1 );
 
 
-       $scripts->add( 'quicktags', "/wp-includes/js/quicktags$suffix.js", false, '20111114', 1 );
+       $scripts->add( 'quicktags', "/wp-includes/js/quicktags$suffix.js", array(), false, 1 );
        $scripts->localize( 'quicktags', 'quicktagsL10n', array(
                'wordLookup' => __('Enter a word to look up:'),
                'dictionaryLookup' => esc_attr(__('Dictionary lookup')),
        $scripts->localize( 'quicktags', 'quicktagsL10n', array(
                'wordLookup' => __('Enter a word to look up:'),
                'dictionaryLookup' => esc_attr(__('Dictionary lookup')),
@@ -79,18 +79,20 @@ function wp_default_scripts( &$scripts ) {
                'enterImageURL' => __('Enter the URL of the image'),
                'enterImageDescription' => __('Enter a description of the image'),
                'fullscreen' => __('fullscreen'),
                'enterImageURL' => __('Enter the URL of the image'),
                'enterImageDescription' => __('Enter a description of the image'),
                'fullscreen' => __('fullscreen'),
-               'toggleFullscreen' => esc_attr( __('Toggle fullscreen mode') )
+               'toggleFullscreen' => esc_attr( __('Toggle fullscreen mode') ),
+               'textdirection' => esc_attr( __('text direction') ),
+               'toggleTextdirection' => esc_attr( __('Toggle Editor Text Direction') )
        ) );
 
        $scripts->add( 'colorpicker', "/wp-includes/js/colorpicker$suffix.js", array('prototype'), '3517m' );
 
        ) );
 
        $scripts->add( 'colorpicker', "/wp-includes/js/colorpicker$suffix.js", array('prototype'), '3517m' );
 
-       $scripts->add( 'editor', "/wp-admin/js/editor$suffix.js", array('utils','jquery'), '20111117', 1 );
+       $scripts->add( 'editor', "/wp-admin/js/editor$suffix.js", array('utils','jquery'), false, 1 );
 
 
-       $scripts->add( 'wp-fullscreen', "/wp-admin/js/wp-fullscreen$suffix.js", array('jquery'), '20111116', 1 );
+       $scripts->add( 'wp-fullscreen', "/wp-admin/js/wp-fullscreen$suffix.js", array('jquery'), false, 1 );
 
 
-       $scripts->add( 'prototype', '/wp-includes/js/prototype.js', false, '1.6.1');
+       $scripts->add( 'prototype', '/wp-includes/js/prototype.js', array(), '1.6.1');
 
 
-       $scripts->add( 'wp-ajax-response', "/wp-includes/js/wp-ajax-response$suffix.js", array('jquery'), '20091119', 1 );
+       $scripts->add( 'wp-ajax-response', "/wp-includes/js/wp-ajax-response$suffix.js", array('jquery'), false, 1 );
        $scripts->localize( 'wp-ajax-response', 'wpAjax', array(
                'noPerm' => __('You do not have permission to do that.'),
                'broken' => __('An unidentified error has occurred.')
        $scripts->localize( 'wp-ajax-response', 'wpAjax', array(
                'noPerm' => __('You do not have permission to do that.'),
                'broken' => __('An unidentified error has occurred.')
@@ -101,9 +103,9 @@ function wp_default_scripts( &$scripts ) {
                'dismiss' => __('Dismiss'),
        ) );
 
                'dismiss' => __('Dismiss'),
        ) );
 
-       $scripts->add( 'autosave', "/wp-includes/js/autosave$suffix.js", array('schedule', 'wp-ajax-response'), '20111129', 1 );
+       $scripts->add( 'autosave', "/wp-includes/js/autosave$suffix.js", array('schedule', 'wp-ajax-response'), false, 1 );
 
 
-       $scripts->add( 'wp-lists', "/wp-includes/js/wp-lists$suffix.js", array('wp-ajax-response'), '20110521', 1 );
+       $scripts->add( 'wp-lists', "/wp-includes/js/wp-lists$suffix.js", array('wp-ajax-response'), false, 1 );
 
        $scripts->add( 'scriptaculous-root', '/wp-includes/js/scriptaculous/wp-scriptaculous.js', array('prototype'), '1.8.3');
        $scripts->add( 'scriptaculous-builder', '/wp-includes/js/scriptaculous/builder.js', array('scriptaculous-root'), '1.8.3');
 
        $scripts->add( 'scriptaculous-root', '/wp-includes/js/scriptaculous/wp-scriptaculous.js', array('prototype'), '1.8.3');
        $scripts->add( 'scriptaculous-builder', '/wp-includes/js/scriptaculous/builder.js', array('scriptaculous-root'), '1.8.3');
@@ -115,55 +117,57 @@ function wp_default_scripts( &$scripts ) {
        $scripts->add( 'scriptaculous', '', array('scriptaculous-dragdrop', 'scriptaculous-slider', 'scriptaculous-controls'), '1.8.3');
 
        // not used in core, replaced by Jcrop.js
        $scripts->add( 'scriptaculous', '', array('scriptaculous-dragdrop', 'scriptaculous-slider', 'scriptaculous-controls'), '1.8.3');
 
        // not used in core, replaced by Jcrop.js
-       $scripts->add( 'cropper', '/wp-includes/js/crop/cropper.js', array('scriptaculous-dragdrop'), '20070118');
+       $scripts->add( 'cropper', '/wp-includes/js/crop/cropper.js', array('scriptaculous-dragdrop') );
 
 
-       $scripts->add( 'jquery', '/wp-includes/js/jquery/jquery.js', false, '1.7.1' );
+       $scripts->add( 'jquery', '/wp-includes/js/jquery/jquery.js', array(), '1.7.2' );
 
        // full jQuery UI
 
        // full jQuery UI
-       $scripts->add( 'jquery-ui-core', '/wp-includes/js/jquery/ui/jquery.ui.core.min.js', array('jquery'), '1.8.16', 1 );
-       $scripts->add( 'jquery-effects-core', '/wp-includes/js/jquery/ui/jquery.effects.core.min.js', array('jquery'), '1.8.16', 1 );
-
-       $scripts->add( 'jquery-effects-blind', '/wp-includes/js/jquery/ui/jquery.effects.blind.min.js', array('jquery-effects-core'), '1.8.16', 1 );
-       $scripts->add( 'jquery-effects-bounce', '/wp-includes/js/jquery/ui/jquery.effects.bounce.min.js', array('jquery-effects-core'), '1.8.16', 1 );
-       $scripts->add( 'jquery-effects-clip', '/wp-includes/js/jquery/ui/jquery.effects.clip.min.js', array('jquery-effects-core'), '1.8.16', 1 );
-       $scripts->add( 'jquery-effects-drop', '/wp-includes/js/jquery/ui/jquery.effects.drop.min.js', array('jquery-effects-core'), '1.8.16', 1 );
-       $scripts->add( 'jquery-effects-explode', '/wp-includes/js/jquery/ui/jquery.effects.explode.min.js', array('jquery-effects-core'), '1.8.16', 1 );
-       $scripts->add( 'jquery-effects-fade', '/wp-includes/js/jquery/ui/jquery.effects.fade.min.js', array('jquery-effects-core'), '1.8.16', 1 );
-       $scripts->add( 'jquery-effects-fold', '/wp-includes/js/jquery/ui/jquery.effects.fold.min.js', array('jquery-effects-core'), '1.8.16', 1 );
-       $scripts->add( 'jquery-effects-highlight', '/wp-includes/js/jquery/ui/jquery.effects.highlight.min.js', array('jquery-effects-core'), '1.8.16', 1 );
-       $scripts->add( 'jquery-effects-pulsate', '/wp-includes/js/jquery/ui/jquery.effects.pulsate.min.js', array('jquery-effects-core'), '1.8.16', 1 );
-       $scripts->add( 'jquery-effects-scale', '/wp-includes/js/jquery/ui/jquery.effects.scale.min.js', array('jquery-effects-core'), '1.8.16', 1 );
-       $scripts->add( 'jquery-effects-shake', '/wp-includes/js/jquery/ui/jquery.effects.shake.min.js', array('jquery-effects-core'), '1.8.16', 1 );
-       $scripts->add( 'jquery-effects-slide', '/wp-includes/js/jquery/ui/jquery.effects.slide.min.js', array('jquery-effects-core'), '1.8.16', 1 );
-       $scripts->add( 'jquery-effects-transfer', '/wp-includes/js/jquery/ui/jquery.effects.transfer.min.js', array('jquery-effects-core'), '1.8.16', 1 );
-
-       $scripts->add( 'jquery-ui-accordion', '/wp-includes/js/jquery/ui/jquery.ui.accordion.min.js', array('jquery-ui-core', 'jquery-ui-widget'), '1.8.16', 1 );
-       $scripts->add( 'jquery-ui-autocomplete', '/wp-includes/js/jquery/ui/jquery.ui.autocomplete.min.js', array('jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position'), '1.8.16', 1 );
-       $scripts->add( 'jquery-ui-button', '/wp-includes/js/jquery/ui/jquery.ui.button.min.js', array('jquery-ui-core', 'jquery-ui-widget'), '1.8.16', 1 );
-       $scripts->add( 'jquery-ui-datepicker', '/wp-includes/js/jquery/ui/jquery.ui.datepicker.min.js', array('jquery-ui-core'), '1.8.16', 1 );
-       $scripts->add( 'jquery-ui-dialog', '/wp-includes/js/jquery/ui/jquery.ui.dialog.min.js', array('jquery-ui-resizable', 'jquery-ui-draggable', 'jquery-ui-button', 'jquery-ui-position'), '1.8.16', 1 );
-       $scripts->add( 'jquery-ui-draggable', '/wp-includes/js/jquery/ui/jquery.ui.draggable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.8.16', 1 );
-       $scripts->add( 'jquery-ui-droppable', '/wp-includes/js/jquery/ui/jquery.ui.droppable.min.js', array('jquery-ui-draggable'), '1.8.16', 1 );
-       $scripts->add( 'jquery-ui-mouse', '/wp-includes/js/jquery/ui/jquery.ui.mouse.min.js', array('jquery-ui-widget'), '1.8.16', 1 );
-       $scripts->add( 'jquery-ui-position', '/wp-includes/js/jquery/ui/jquery.ui.position.min.js', array('jquery'), '1.8.16', 1 );
-       $scripts->add( 'jquery-ui-progressbar', '/wp-includes/js/jquery/ui/jquery.ui.progressbar.min.js', array('jquery-ui-widget'), '1.8.16', 1 );
-       $scripts->add( 'jquery-ui-resizable', '/wp-includes/js/jquery/ui/jquery.ui.resizable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.8.16', 1 );
-       $scripts->add( 'jquery-ui-selectable', '/wp-includes/js/jquery/ui/jquery.ui.selectable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.8.16', 1 );
-       $scripts->add( 'jquery-ui-slider', '/wp-includes/js/jquery/ui/jquery.ui.slider.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.8.16', 1 );
-       $scripts->add( 'jquery-ui-sortable', '/wp-includes/js/jquery/ui/jquery.ui.sortable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.8.16', 1 );
-       $scripts->add( 'jquery-ui-tabs', '/wp-includes/js/jquery/ui/jquery.ui.tabs.min.js', array('jquery-ui-core', 'jquery-ui-widget'), '1.8.16', 1 );
-       $scripts->add( 'jquery-ui-widget', '/wp-includes/js/jquery/ui/jquery.ui.widget.min.js', array('jquery'), '1.8.16', 1 );
+       $scripts->add( 'jquery-ui-core', '/wp-includes/js/jquery/ui/jquery.ui.core.min.js', array('jquery'), '1.8.20', 1 );
+       $scripts->add( 'jquery-effects-core', '/wp-includes/js/jquery/ui/jquery.effects.core.min.js', array('jquery'), '1.8.20', 1 );
+
+       $scripts->add( 'jquery-effects-blind', '/wp-includes/js/jquery/ui/jquery.effects.blind.min.js', array('jquery-effects-core'), '1.8.20', 1 );
+       $scripts->add( 'jquery-effects-bounce', '/wp-includes/js/jquery/ui/jquery.effects.bounce.min.js', array('jquery-effects-core'), '1.8.20', 1 );
+       $scripts->add( 'jquery-effects-clip', '/wp-includes/js/jquery/ui/jquery.effects.clip.min.js', array('jquery-effects-core'), '1.8.20', 1 );
+       $scripts->add( 'jquery-effects-drop', '/wp-includes/js/jquery/ui/jquery.effects.drop.min.js', array('jquery-effects-core'), '1.8.20', 1 );
+       $scripts->add( 'jquery-effects-explode', '/wp-includes/js/jquery/ui/jquery.effects.explode.min.js', array('jquery-effects-core'), '1.8.20', 1 );
+       $scripts->add( 'jquery-effects-fade', '/wp-includes/js/jquery/ui/jquery.effects.fade.min.js', array('jquery-effects-core'), '1.8.20', 1 );
+       $scripts->add( 'jquery-effects-fold', '/wp-includes/js/jquery/ui/jquery.effects.fold.min.js', array('jquery-effects-core'), '1.8.20', 1 );
+       $scripts->add( 'jquery-effects-highlight', '/wp-includes/js/jquery/ui/jquery.effects.highlight.min.js', array('jquery-effects-core'), '1.8.20', 1 );
+       $scripts->add( 'jquery-effects-pulsate', '/wp-includes/js/jquery/ui/jquery.effects.pulsate.min.js', array('jquery-effects-core'), '1.8.20', 1 );
+       $scripts->add( 'jquery-effects-scale', '/wp-includes/js/jquery/ui/jquery.effects.scale.min.js', array('jquery-effects-core'), '1.8.20', 1 );
+       $scripts->add( 'jquery-effects-shake', '/wp-includes/js/jquery/ui/jquery.effects.shake.min.js', array('jquery-effects-core'), '1.8.20', 1 );
+       $scripts->add( 'jquery-effects-slide', '/wp-includes/js/jquery/ui/jquery.effects.slide.min.js', array('jquery-effects-core'), '1.8.20', 1 );
+       $scripts->add( 'jquery-effects-transfer', '/wp-includes/js/jquery/ui/jquery.effects.transfer.min.js', array('jquery-effects-core'), '1.8.20', 1 );
+
+       $scripts->add( 'jquery-ui-accordion', '/wp-includes/js/jquery/ui/jquery.ui.accordion.min.js', array('jquery-ui-core', 'jquery-ui-widget'), '1.8.20', 1 );
+       $scripts->add( 'jquery-ui-autocomplete', '/wp-includes/js/jquery/ui/jquery.ui.autocomplete.min.js', array('jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position'), '1.8.20', 1 );
+       $scripts->add( 'jquery-ui-button', '/wp-includes/js/jquery/ui/jquery.ui.button.min.js', array('jquery-ui-core', 'jquery-ui-widget'), '1.8.20', 1 );
+       $scripts->add( 'jquery-ui-datepicker', '/wp-includes/js/jquery/ui/jquery.ui.datepicker.min.js', array('jquery-ui-core'), '1.8.20', 1 );
+       $scripts->add( 'jquery-ui-dialog', '/wp-includes/js/jquery/ui/jquery.ui.dialog.min.js', array('jquery-ui-resizable', 'jquery-ui-draggable', 'jquery-ui-button', 'jquery-ui-position'), '1.8.20', 1 );
+       $scripts->add( 'jquery-ui-draggable', '/wp-includes/js/jquery/ui/jquery.ui.draggable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.8.20', 1 );
+       $scripts->add( 'jquery-ui-droppable', '/wp-includes/js/jquery/ui/jquery.ui.droppable.min.js', array('jquery-ui-draggable'), '1.8.20', 1 );
+       $scripts->add( 'jquery-ui-mouse', '/wp-includes/js/jquery/ui/jquery.ui.mouse.min.js', array('jquery-ui-widget'), '1.8.20', 1 );
+       $scripts->add( 'jquery-ui-position', '/wp-includes/js/jquery/ui/jquery.ui.position.min.js', array('jquery'), '1.8.20', 1 );
+       $scripts->add( 'jquery-ui-progressbar', '/wp-includes/js/jquery/ui/jquery.ui.progressbar.min.js', array('jquery-ui-widget'), '1.8.20', 1 );
+       $scripts->add( 'jquery-ui-resizable', '/wp-includes/js/jquery/ui/jquery.ui.resizable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.8.20', 1 );
+       $scripts->add( 'jquery-ui-selectable', '/wp-includes/js/jquery/ui/jquery.ui.selectable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.8.20', 1 );
+       $scripts->add( 'jquery-ui-slider', '/wp-includes/js/jquery/ui/jquery.ui.slider.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.8.20', 1 );
+       $scripts->add( 'jquery-ui-sortable', '/wp-includes/js/jquery/ui/jquery.ui.sortable.min.js', array('jquery-ui-core', 'jquery-ui-mouse'), '1.8.20', 1 );
+       $scripts->add( 'jquery-ui-tabs', '/wp-includes/js/jquery/ui/jquery.ui.tabs.min.js', array('jquery-ui-core', 'jquery-ui-widget'), '1.8.20', 1 );
+       $scripts->add( 'jquery-ui-widget', '/wp-includes/js/jquery/ui/jquery.ui.widget.min.js', array('jquery'), '1.8.20', 1 );
 
        // deprecated, not used in core, most functionality is included in jQuery 1.3
        $scripts->add( 'jquery-form', "/wp-includes/js/jquery/jquery.form$suffix.js", array('jquery'), '2.73', 1 );
 
 
        // deprecated, not used in core, most functionality is included in jQuery 1.3
        $scripts->add( 'jquery-form', "/wp-includes/js/jquery/jquery.form$suffix.js", array('jquery'), '2.73', 1 );
 
+       // jQuery plugins
        $scripts->add( 'jquery-color', "/wp-includes/js/jquery/jquery.color$suffix.js", array('jquery'), '2.0-4561m', 1 );
        $scripts->add( 'suggest', "/wp-includes/js/jquery/suggest$suffix.js", array('jquery'), '1.1-20110113', 1 );
        $scripts->add( 'schedule', '/wp-includes/js/jquery/jquery.schedule.js', array('jquery'), '20m', 1 );
        $scripts->add( 'jquery-query', "/wp-includes/js/jquery/jquery.query.js", array('jquery'), '2.1.7', 1 );
        $scripts->add( 'jquery-serialize-object', "/wp-includes/js/jquery/jquery.serialize-object.js", array('jquery'), '0.2', 1 );
        $scripts->add( 'jquery-hotkeys', "/wp-includes/js/jquery/jquery.hotkeys$suffix.js", array('jquery'), '0.0.2m', 1 );
        $scripts->add( 'jquery-color', "/wp-includes/js/jquery/jquery.color$suffix.js", array('jquery'), '2.0-4561m', 1 );
        $scripts->add( 'suggest', "/wp-includes/js/jquery/suggest$suffix.js", array('jquery'), '1.1-20110113', 1 );
        $scripts->add( 'schedule', '/wp-includes/js/jquery/jquery.schedule.js', array('jquery'), '20m', 1 );
        $scripts->add( 'jquery-query', "/wp-includes/js/jquery/jquery.query.js", array('jquery'), '2.1.7', 1 );
        $scripts->add( 'jquery-serialize-object', "/wp-includes/js/jquery/jquery.serialize-object.js", array('jquery'), '0.2', 1 );
        $scripts->add( 'jquery-hotkeys', "/wp-includes/js/jquery/jquery.hotkeys$suffix.js", array('jquery'), '0.0.2m', 1 );
-       $scripts->add( 'jquery-table-hotkeys', "/wp-includes/js/jquery/jquery.table-hotkeys$suffix.js", array('jquery', 'jquery-hotkeys'), '20090102', 1 );
+       $scripts->add( 'jquery-table-hotkeys', "/wp-includes/js/jquery/jquery.table-hotkeys$suffix.js", array('jquery', 'jquery-hotkeys'), false, 1 );
+       $scripts->add( 'jquery-touch-punch', "/wp-includes/js/jquery/jquery.ui.touch-punch.js", array('jquery-ui-widget', 'jquery-ui-mouse'), '0.2.2', 1 );
 
        $scripts->add( 'thickbox', "/wp-includes/js/thickbox/thickbox.js", array('jquery'), '3.1-20111117', 1 );
        $scripts->localize( 'thickbox', 'thickboxL10n', array(
 
        $scripts->add( 'thickbox', "/wp-includes/js/thickbox/thickbox.js", array('jquery'), '3.1-20111117', 1 );
        $scripts->localize( 'thickbox', 'thickboxL10n', array(
@@ -179,7 +183,7 @@ function wp_default_scripts( &$scripts ) {
 
        $scripts->add( 'jcrop', "/wp-includes/js/jcrop/jquery.Jcrop$suffix.js", array('jquery'), '0.9.8-20110113');
 
 
        $scripts->add( 'jcrop', "/wp-includes/js/jcrop/jquery.Jcrop$suffix.js", array('jquery'), '0.9.8-20110113');
 
-       $scripts->add( 'swfobject', "/wp-includes/js/swfobject.js", false, '2.2-20120417');
+       $scripts->add( 'swfobject', "/wp-includes/js/swfobject.js", array(), '2.2-20120417');
 
        // common bits for both uploaders
        $max_upload_size = ( (int) ( $max_up = @ini_get('upload_max_filesize') ) < (int) ( $max_post = @ini_get('post_max_size') ) ) ? $max_up : $max_post;
 
        // common bits for both uploaders
        $max_upload_size = ( (int) ( $max_up = @ini_get('upload_max_filesize') ) < (int) ( $max_post = @ini_get('post_max_size') ) ) ? $max_up : $max_post;
@@ -213,20 +217,23 @@ function wp_default_scripts( &$scripts ) {
                'error_uploading' => __('&#8220;%s&#8221; has failed to upload.')
        );
 
                'error_uploading' => __('&#8220;%s&#8221; has failed to upload.')
        );
 
-       $scripts->add( 'plupload', '/wp-includes/js/plupload/plupload.js', false, '1511-20111112');
-       $scripts->add( 'plupload-html5', '/wp-includes/js/plupload/plupload.html5.js', array('plupload'), '1511-20111112');
-       $scripts->add( 'plupload-flash', '/wp-includes/js/plupload/plupload.flash.js', array('plupload'), '1511-20111112');
-       $scripts->add( 'plupload-silverlight', '/wp-includes/js/plupload/plupload.silverlight.js', array('plupload'), '1511-20111112');
-       $scripts->add( 'plupload-html4', '/wp-includes/js/plupload/plupload.html4.js', array('plupload'), '1511-20111112');
+       $scripts->add( 'plupload', '/wp-includes/js/plupload/plupload.js', '1.5.4' );
+       $scripts->add( 'plupload-html5', '/wp-includes/js/plupload/plupload.html5.js', array('plupload'), '1.5.4' );
+       $scripts->add( 'plupload-flash', '/wp-includes/js/plupload/plupload.flash.js', array('plupload'), '1.5.4' );
+       $scripts->add( 'plupload-silverlight', '/wp-includes/js/plupload/plupload.silverlight.js', array('plupload'), '1.5.4' );
+       $scripts->add( 'plupload-html4', '/wp-includes/js/plupload/plupload.html4.js', array('plupload'), '1.5.4' );
 
        // cannot use the plupload.full.js, as it loads browserplus init JS from Yahoo
 
        // cannot use the plupload.full.js, as it loads browserplus init JS from Yahoo
-       $scripts->add( 'plupload-all', false, array('plupload', 'plupload-html5', 'plupload-flash', 'plupload-silverlight', 'plupload-html4'), '1511-20111112');
+       $scripts->add( 'plupload-all', false, array('plupload', 'plupload-html5', 'plupload-flash', 'plupload-silverlight', 'plupload-html4'), '1.5.4' );
 
 
-       $scripts->add( 'plupload-handlers', "/wp-includes/js/plupload/handlers$suffix.js", array('plupload-all', 'jquery'), '20111120');
+       $scripts->add( 'plupload-handlers', "/wp-includes/js/plupload/handlers$suffix.js", array('plupload-all', 'jquery') );
        $scripts->localize( 'plupload-handlers', 'pluploadL10n', $uploader_l10n );
 
        $scripts->localize( 'plupload-handlers', 'pluploadL10n', $uploader_l10n );
 
+       $scripts->add( 'wp-plupload', "/wp-includes/js/plupload/wp-plupload$suffix.js", array('plupload-all', 'jquery', 'json2') );
+       $scripts->localize( 'wp-plupload', 'pluploadL10n', $uploader_l10n );
+
        // keep 'swfupload' for back-compat.
        // keep 'swfupload' for back-compat.
-       $scripts->add( 'swfupload', '/wp-includes/js/swfupload/swfupload.js', false, '2201-20110113');
+       $scripts->add( 'swfupload', '/wp-includes/js/swfupload/swfupload.js', array(), '2201-20110113');
        $scripts->add( 'swfupload-swfobject', '/wp-includes/js/swfupload/plugins/swfupload.swfobject.js', array('swfupload', 'swfobject'), '2201a');
        $scripts->add( 'swfupload-queue', '/wp-includes/js/swfupload/plugins/swfupload.queue.js', array('swfupload'), '2201');
        $scripts->add( 'swfupload-speed', '/wp-includes/js/swfupload/plugins/swfupload.speed.js', array('swfupload'), '2201');
        $scripts->add( 'swfupload-swfobject', '/wp-includes/js/swfupload/plugins/swfupload.swfobject.js', array('swfupload', 'swfobject'), '2201a');
        $scripts->add( 'swfupload-queue', '/wp-includes/js/swfupload/plugins/swfupload.queue.js', array('swfupload'), '2201');
        $scripts->add( 'swfupload-speed', '/wp-includes/js/swfupload/plugins/swfupload.speed.js', array('swfupload'), '2201');
@@ -241,13 +248,13 @@ function wp_default_scripts( &$scripts ) {
        $scripts->add( 'swfupload-handlers', "/wp-includes/js/swfupload/handlers$suffix.js", array('swfupload-all', 'jquery'), '2201-20110524');
        $scripts->localize( 'swfupload-handlers', 'swfuploadL10n', $uploader_l10n );
 
        $scripts->add( 'swfupload-handlers', "/wp-includes/js/swfupload/handlers$suffix.js", array('swfupload-all', 'jquery'), '2201-20110524');
        $scripts->localize( 'swfupload-handlers', 'swfuploadL10n', $uploader_l10n );
 
-       $scripts->add( 'comment-reply', "/wp-includes/js/comment-reply$suffix.js", false, '20090102');
+       $scripts->add( 'comment-reply', "/wp-includes/js/comment-reply$suffix.js" );
 
 
-       $scripts->add( 'json2', "/wp-includes/js/json2$suffix.js", false, '2011-02-23');
+       $scripts->add( 'json2', "/wp-includes/js/json2$suffix.js", array(), '2011-02-23');
 
 
-       $scripts->add( 'imgareaselect', "/wp-includes/js/imgareaselect/jquery.imgareaselect$suffix.js", array('jquery'), '0.9.6-20110515', 1 );
+       $scripts->add( 'imgareaselect', "/wp-includes/js/imgareaselect/jquery.imgareaselect$suffix.js", array('jquery'), '0.9.8', 1 );
 
 
-       $scripts->add( 'password-strength-meter', "/wp-admin/js/password-strength-meter$suffix.js", array('jquery'), '20101027', 1 );
+       $scripts->add( 'password-strength-meter', "/wp-admin/js/password-strength-meter$suffix.js", array('jquery'), false, 1 );
        $scripts->localize( 'password-strength-meter', 'pwsL10n', array(
                'empty' => __('Strength indicator'),
                'short' => __('Very weak'),
        $scripts->localize( 'password-strength-meter', 'pwsL10n', array(
                'empty' => __('Strength indicator'),
                'short' => __('Very weak'),
@@ -258,11 +265,13 @@ function wp_default_scripts( &$scripts ) {
                'mismatch' => __('Mismatch')
        ) );
 
                'mismatch' => __('Mismatch')
        ) );
 
-       $scripts->add( 'user-profile', "/wp-admin/js/user-profile$suffix.js", array( 'jquery', 'password-strength-meter' ), '20110628', 1 );
+       $scripts->add( 'user-profile', "/wp-admin/js/user-profile$suffix.js", array( 'jquery', 'password-strength-meter' ), false, 1 );
+
+       $scripts->add( 'user-suggest', "/wp-admin/js/user-suggest$suffix.js", array( 'jquery-ui-autocomplete' ), false, 1 );
 
 
-       $scripts->add( 'admin-bar', "/wp-includes/js/admin-bar$suffix.js", false, '20111130', 1 );
+       $scripts->add( 'admin-bar', "/wp-includes/js/admin-bar$suffix.js", array(), false, 1 );
 
 
-       $scripts->add( 'wplink', "/wp-includes/js/wplink$suffix.js", array( 'jquery', 'wpdialogs' ), '20111128', 1 );
+       $scripts->add( 'wplink', "/wp-includes/js/wplink$suffix.js", array( 'jquery', 'wpdialogs' ), false, 1 );
        $scripts->localize( 'wplink', 'wpLinkL10n', array(
                'title' => __('Insert/edit link'),
                'update' => __('Update'),
        $scripts->localize( 'wplink', 'wpLinkL10n', array(
                'title' => __('Insert/edit link'),
                'update' => __('Update'),
@@ -271,35 +280,53 @@ function wp_default_scripts( &$scripts ) {
                'noMatchesFound' => __('No matches found.')
        ) );
 
                'noMatchesFound' => __('No matches found.')
        ) );
 
-       $scripts->add( 'wpdialogs', "/wp-includes/js/tinymce/plugins/wpdialogs/js/wpdialog$suffix.js", array( 'jquery-ui-dialog' ), '20110528', 1 );
+       $scripts->add( 'wpdialogs', "/wp-includes/js/tinymce/plugins/wpdialogs/js/wpdialog$suffix.js", array( 'jquery-ui-dialog' ), false, 1 );
 
 
-       $scripts->add( 'wpdialogs-popup', "/wp-includes/js/tinymce/plugins/wpdialogs/js/popup$suffix.js", array( 'wpdialogs' ), '20110421', 1 );
+       $scripts->add( 'wpdialogs-popup', "/wp-includes/js/tinymce/plugins/wpdialogs/js/popup$suffix.js", array( 'wpdialogs' ), false, 1 );
 
 
-       $scripts->add( 'word-count', "/wp-admin/js/word-count$suffix.js", array( 'jquery' ), '20110515', 1 );
-
-       $scripts->add( 'media-upload', "/wp-admin/js/media-upload$suffix.js", array( 'thickbox' ), '20110930', 1 );
+       $scripts->add( 'word-count', "/wp-admin/js/word-count$suffix.js", array( 'jquery' ), false, 1 );
+       $scripts->localize( 'word-count', 'wordCountL10n', array(
+               /* translators: If your word count is based on single characters (East Asian characters),
+                  enter 'characters'. Otherwise, enter 'words'. Do not translate into your own language. */
+               'type' => 'characters' == _x( 'words', 'word count: words or characters?' ) ? 'c' : 'w',
+       ) );
 
 
-       $scripts->add( 'hoverIntent', "/wp-includes/js/hoverIntent$suffix.js", array('jquery'), '20090102', 1 );
+       $scripts->add( 'media-upload', "/wp-admin/js/media-upload$suffix.js", array( 'thickbox' ), false, 1 );
+
+       $scripts->add( 'hoverIntent', "/wp-includes/js/hoverIntent$suffix.js", array('jquery'), 'r6', 1 );
+
+       $scripts->add( 'customize-base',     "/wp-includes/js/customize-base$suffix.js",     array( 'jquery', 'json2' ), false, 1 );
+       $scripts->add( 'customize-loader',   "/wp-includes/js/customize-loader$suffix.js",   array( 'customize-base' ), false, 1 );
+       $scripts->add( 'customize-preview',  "/wp-includes/js/customize-preview$suffix.js",  array( 'customize-base' ), false, 1 );
+       $scripts->add( 'customize-controls', "/wp-admin/js/customize-controls$suffix.js", array( 'customize-base' ), false, 1 );
+       $scripts->localize( 'customize-controls', '_wpCustomizeControlsL10n', array(
+               'activate'  => __( 'Save &amp; Activate' ),
+               'save'      => __( 'Save &amp; Publish' ),
+               'saved'     => __( 'Saved' ),
+               'cancel'    => __( 'Cancel' ),
+               'close'     => __( 'Close' ),
+               'cheatin'   => __( 'Cheatin&#8217; uh?' ),
+       ) );
 
        if ( is_admin() ) {
 
        if ( is_admin() ) {
-               $scripts->add( 'ajaxcat', "/wp-admin/js/cat$suffix.js", array( 'wp-lists' ), '20090102' );
+               $scripts->add( 'ajaxcat', "/wp-admin/js/cat$suffix.js", array( 'wp-lists' ) );
                $scripts->add_data( 'ajaxcat', 'group', 1 );
                $scripts->localize( 'ajaxcat', 'catL10n', array(
                        'add' => esc_attr(__('Add')),
                        'how' => __('Separate multiple categories with commas.')
                ) );
 
                $scripts->add_data( 'ajaxcat', 'group', 1 );
                $scripts->localize( 'ajaxcat', 'catL10n', array(
                        'add' => esc_attr(__('Add')),
                        'how' => __('Separate multiple categories with commas.')
                ) );
 
-               $scripts->add( 'admin-categories', "/wp-admin/js/categories$suffix.js", array('wp-lists'), '20091201', 1 );
+               $scripts->add( 'admin-categories', "/wp-admin/js/categories$suffix.js", array('wp-lists'), false, 1 );
 
 
-               $scripts->add( 'admin-tags', "/wp-admin/js/tags$suffix.js", array('jquery', 'wp-ajax-response'), '20110429', 1 );
+               $scripts->add( 'admin-tags', "/wp-admin/js/tags$suffix.js", array('jquery', 'wp-ajax-response'), false, 1 );
                $scripts->localize( 'admin-tags', 'tagsl10n', array(
                        'noPerm' => __('You do not have permission to do that.'),
                        'broken' => __('An unidentified error has occurred.')
                ));
 
                $scripts->localize( 'admin-tags', 'tagsl10n', array(
                        'noPerm' => __('You do not have permission to do that.'),
                        'broken' => __('An unidentified error has occurred.')
                ));
 
-               $scripts->add( 'admin-custom-fields', "/wp-admin/js/custom-fields$suffix.js", array('wp-lists'), '20110429', 1 );
+               $scripts->add( 'admin-custom-fields', "/wp-admin/js/custom-fields$suffix.js", array('wp-lists'), false, 1 );
 
 
-               $scripts->add( 'admin-comments', "/wp-admin/js/edit-comments$suffix.js", array('wp-lists', 'quicktags', 'jquery-query'), '20111115', 1 );
+               $scripts->add( 'admin-comments', "/wp-admin/js/edit-comments$suffix.js", array('wp-lists', 'quicktags', 'jquery-query'), false, 1 );
                $scripts->localize( 'admin-comments', 'adminCommentsL10n', array(
                        'hotkeys_highlight_first' => isset($_GET['hotkeys_highlight_first']),
                        'hotkeys_highlight_last' => isset($_GET['hotkeys_highlight_last']),
                $scripts->localize( 'admin-comments', 'adminCommentsL10n', array(
                        'hotkeys_highlight_first' => isset($_GET['hotkeys_highlight_first']),
                        'hotkeys_highlight_last' => isset($_GET['hotkeys_highlight_last']),
@@ -307,11 +334,11 @@ function wp_default_scripts( &$scripts ) {
                        'reply' => __( 'Reply' )
                ) );
 
                        'reply' => __( 'Reply' )
                ) );
 
-               $scripts->add( 'xfn', "/wp-admin/js/xfn$suffix.js", array('jquery'), '20110524', 1 );
+               $scripts->add( 'xfn', "/wp-admin/js/xfn$suffix.js", array('jquery'), false, 1 );
 
 
-               $scripts->add( 'postbox', "/wp-admin/js/postbox$suffix.js", array('jquery-ui-sortable'), '20111009a', 1 );
+               $scripts->add( 'postbox', "/wp-admin/js/postbox$suffix.js", array('jquery-ui-sortable'), false, 1 );
 
 
-               $scripts->add( 'post', "/wp-admin/js/post$suffix.js", array('suggest', 'wp-lists', 'postbox'), '20111124', 1 );
+               $scripts->add( 'post', "/wp-admin/js/post$suffix.js", array('suggest', 'wp-lists', 'postbox'), false, 1 );
                $scripts->localize( 'post', 'postL10n', array(
                        'ok' => __('OK'),
                        'cancel' => __('Cancel'),
                $scripts->localize( 'post', 'postL10n', array(
                        'ok' => __('OK'),
                        'cancel' => __('Cancel'),
@@ -330,38 +357,41 @@ function wp_default_scripts( &$scripts ) {
                        'publicSticky' => __('Public, Sticky'),
                        'password' => __('Password Protected'),
                        'privatelyPublished' => __('Privately Published'),
                        'publicSticky' => __('Public, Sticky'),
                        'password' => __('Password Protected'),
                        'privatelyPublished' => __('Privately Published'),
-                       'published' => __('Published')
+                       'published' => __('Published'),
+                       'comma' => _x( ',', 'tag delimiter' ),
                ) );
 
                ) );
 
-               $scripts->add( 'link', "/wp-admin/js/link$suffix.js", array('wp-lists', 'postbox'), '20110524', 1 );
+               $scripts->add( 'link', "/wp-admin/js/link$suffix.js", array('wp-lists', 'postbox'), false, 1 );
 
 
-               $scripts->add( 'comment', "/wp-admin/js/comment$suffix.js", array('jquery'), '20110429' );
+               $scripts->add( 'comment', "/wp-admin/js/comment$suffix.js", array('jquery') );
                $scripts->add_data( 'comment', 'group', 1 );
                $scripts->localize( 'comment', 'commentL10n', array(
                        'submittedOn' => __('Submitted on:')
                ) );
 
                $scripts->add_data( 'comment', 'group', 1 );
                $scripts->localize( 'comment', 'commentL10n', array(
                        'submittedOn' => __('Submitted on:')
                ) );
 
-               $scripts->add( 'admin-gallery', "/wp-admin/js/gallery$suffix.js", array( 'jquery-ui-sortable' ), '20110930' );
+               $scripts->add( 'admin-gallery', "/wp-admin/js/gallery$suffix.js", array( 'jquery-ui-sortable' ) );
 
 
-               $scripts->add( 'admin-widgets', "/wp-admin/js/widgets$suffix.js", array( 'jquery-ui-sortable', 'jquery-ui-draggable', 'jquery-ui-droppable' ), '20110925', 1 );
+               $scripts->add( 'admin-widgets', "/wp-admin/js/widgets$suffix.js", array( 'jquery-ui-sortable', 'jquery-ui-draggable', 'jquery-ui-droppable' ), false, 1 );
 
 
-               $scripts->add( 'theme', "/wp-admin/js/theme$suffix.js", array( 'thickbox' ), '20110118', 1 );
+               $scripts->add( 'theme', "/wp-admin/js/theme$suffix.js", array( 'jquery' ), false, 1 );
 
 
-               $scripts->add( 'theme-preview', "/wp-admin/js/theme-preview$suffix.js", array( 'thickbox', 'jquery' ), '20100407', 1 );
+               // @todo: Core no longer uses theme-preview.js. Remove?
+               $scripts->add( 'theme-preview', "/wp-admin/js/theme-preview$suffix.js", array( 'thickbox', 'jquery' ), false, 1 );
 
 
-               $scripts->add( 'inline-edit-post', "/wp-admin/js/inline-edit-post$suffix.js", array( 'jquery', 'suggest' ), '20111129', 1 );
+               $scripts->add( 'inline-edit-post', "/wp-admin/js/inline-edit-post$suffix.js", array( 'jquery', 'suggest' ), false, 1 );
                $scripts->localize( 'inline-edit-post', 'inlineEditL10n', array(
                        'error' => __('Error while saving the changes.'),
                        'ntdeltitle' => __('Remove From Bulk Edit'),
                $scripts->localize( 'inline-edit-post', 'inlineEditL10n', array(
                        'error' => __('Error while saving the changes.'),
                        'ntdeltitle' => __('Remove From Bulk Edit'),
-                       'notitle' => __('(no title)')
+                       'notitle' => __('(no title)'),
+                       'comma' => _x( ',', 'tag delimiter' ),
                ) );
 
                ) );
 
-               $scripts->add( 'inline-edit-tax', "/wp-admin/js/inline-edit-tax$suffix.js", array( 'jquery' ), '20110609', 1 );
+               $scripts->add( 'inline-edit-tax', "/wp-admin/js/inline-edit-tax$suffix.js", array( 'jquery' ), false, 1 );
                $scripts->localize( 'inline-edit-tax', 'inlineEditL10n', array(
                        'error' => __('Error while saving the changes.')
                ) );
 
                $scripts->localize( 'inline-edit-tax', 'inlineEditL10n', array(
                        'error' => __('Error while saving the changes.')
                ) );
 
-               $scripts->add( 'plugin-install', "/wp-admin/js/plugin-install$suffix.js", array( 'jquery', 'thickbox' ), '20110113', 1 );
+               $scripts->add( 'plugin-install', "/wp-admin/js/plugin-install$suffix.js", array( 'jquery', 'thickbox' ), false, 1 );
                $scripts->localize( 'plugin-install', 'plugininstallL10n', array(
                        'plugin_information' => __('Plugin Information:'),
                        'ays' => __('Are you sure you want to install this plugin?')
                $scripts->localize( 'plugin-install', 'plugininstallL10n', array(
                        'plugin_information' => __('Plugin Information:'),
                        'ays' => __('Are you sure you want to install this plugin?')
@@ -369,18 +399,18 @@ function wp_default_scripts( &$scripts ) {
 
                $scripts->add( 'farbtastic', '/wp-admin/js/farbtastic.js', array('jquery'), '1.2' );
 
 
                $scripts->add( 'farbtastic', '/wp-admin/js/farbtastic.js', array('jquery'), '1.2' );
 
-               $scripts->add( 'dashboard', "/wp-admin/js/dashboard$suffix.js", array( 'jquery', 'admin-comments', 'postbox' ), '20111123', 1 );
+               $scripts->add( 'dashboard', "/wp-admin/js/dashboard$suffix.js", array( 'jquery', 'admin-comments', 'postbox' ), false, 1 );
 
 
-               $scripts->add( 'list-revisions', "/wp-includes/js/wp-list-revisions$suffix.js", null, '20091223' );
+               $scripts->add( 'list-revisions', "/wp-includes/js/wp-list-revisions$suffix.js" );
 
 
-               $scripts->add( 'media', "/wp-admin/js/media$suffix.js", array( 'jquery-ui-draggable' ), '20101022', 1 );
+               $scripts->add( 'media', "/wp-admin/js/media$suffix.js", array( 'jquery-ui-draggable' ), false, 1 );
 
 
-               $scripts->add( 'image-edit', "/wp-admin/js/image-edit$suffix.js", array('jquery', 'json2', 'imgareaselect'), '20110927', 1 );
+               $scripts->add( 'image-edit', "/wp-admin/js/image-edit$suffix.js", array('jquery', 'json2', 'imgareaselect'), false, 1 );
                $scripts->localize( 'image-edit', 'imageEditL10n', array(
                        'error' => __( 'Could not load the preview image. Please reload the page and try again.' )
                ));
 
                $scripts->localize( 'image-edit', 'imageEditL10n', array(
                        'error' => __( 'Could not load the preview image. Please reload the page and try again.' )
                ));
 
-               $scripts->add( 'set-post-thumbnail', "/wp-admin/js/set-post-thumbnail$suffix.js", array( 'jquery' ), '20100518', 1 );
+               $scripts->add( 'set-post-thumbnail', "/wp-admin/js/set-post-thumbnail$suffix.js", array( 'jquery' ), false, 1 );
                $scripts->localize( 'set-post-thumbnail', 'setPostThumbnailL10n', array(
                        'setThumbnail' => __( 'Use as featured image' ),
                        'saving' => __( 'Saving...' ),
                $scripts->localize( 'set-post-thumbnail', 'setPostThumbnailL10n', array(
                        'setThumbnail' => __( 'Use as featured image' ),
                        'saving' => __( 'Saving...' ),
@@ -389,14 +419,15 @@ function wp_default_scripts( &$scripts ) {
                ) );
 
                // Navigation Menus
                ) );
 
                // Navigation Menus
-               $scripts->add( 'nav-menu', "/wp-admin/js/nav-menu$suffix.js", array('jquery-ui-sortable'), '20111115' );
+               $scripts->add( 'nav-menu', "/wp-admin/js/nav-menu$suffix.js", array('jquery-ui-sortable') );
                $scripts->localize( 'nav-menu', 'navMenuL10n', array(
                        'noResultsFound' => _x('No results found.', 'search results'),
                        'warnDeleteMenu' => __( "You are about to permanently delete this menu. \n 'Cancel' to stop, 'OK' to delete." ),
                        'saveAlert' => __('The changes you made will be lost if you navigate away from this page.')
                ) );
 
                $scripts->localize( 'nav-menu', 'navMenuL10n', array(
                        'noResultsFound' => _x('No results found.', 'search results'),
                        'warnDeleteMenu' => __( "You are about to permanently delete this menu. \n 'Cancel' to stop, 'OK' to delete." ),
                        'saveAlert' => __('The changes you made will be lost if you navigate away from this page.')
                ) );
 
-               $scripts->add( 'custom-background', "/wp-admin/js/custom-background$suffix.js", array('farbtastic'), '20110511', 1 );
+               $scripts->add( 'custom-background', "/wp-admin/js/custom-background$suffix.js", array('farbtastic'), false, 1 );
+               $scripts->add( 'media-gallery', "/wp-admin/js/media-gallery$suffix.js", array('jquery'), false, 1 );
        }
 }
 
        }
 }
 
@@ -416,8 +447,7 @@ function wp_default_scripts( &$scripts ) {
  * @param object $styles
  */
 function wp_default_styles( &$styles ) {
  * @param object $styles
  */
 function wp_default_styles( &$styles ) {
-       // This checks to see if site_url() returns something and if it does not
-       // then it assigns $guess_url to wp_guess_url(). Strange format, but it works.
+
        if ( ! $guessurl = site_url() )
                $guessurl = wp_guess_url();
 
        if ( ! $guessurl = site_url() )
                $guessurl = wp_guess_url();
 
@@ -429,35 +459,33 @@ function wp_default_styles( &$styles ) {
 
        $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '.dev' : '';
 
 
        $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '.dev' : '';
 
-       $rtl_styles = array( 'wp-admin', 'ie', 'media', 'admin-bar', 'wplink' );
+       $rtl_styles = array( 'wp-admin', 'ie', 'media', 'admin-bar', 'wplink', 'customize-controls' );
        // Any rtl stylesheets that don't have a .dev version for ltr
        $no_suffix = array( 'farbtastic' );
 
        // Any rtl stylesheets that don't have a .dev version for ltr
        $no_suffix = array( 'farbtastic' );
 
-       $styles->add( 'wp-admin', "/wp-admin/css/wp-admin$suffix.css", array(), '20111208' );
+       $styles->add( 'wp-admin', "/wp-admin/css/wp-admin$suffix.css" );
 
 
-       $styles->add( 'ie', "/wp-admin/css/ie$suffix.css", array(), '20111130' );
+       $styles->add( 'ie', "/wp-admin/css/ie$suffix.css" );
        $styles->add_data( 'ie', 'conditional', 'lte IE 7' );
 
        $styles->add_data( 'ie', 'conditional', 'lte IE 7' );
 
-       // all colors stylesheets need to have the same query strings (cache manifest compat)
-       $colors_version = '20111206';
-
        // Register "meta" stylesheet for admin colors. All colors-* style sheets should have the same version string.
        // Register "meta" stylesheet for admin colors. All colors-* style sheets should have the same version string.
-       $styles->add( 'colors', true, array('wp-admin'), $colors_version );
+       $styles->add( 'colors', true, array('wp-admin') );
 
        // do not refer to these directly, the right one is queued by the above "meta" colors handle
 
        // do not refer to these directly, the right one is queued by the above "meta" colors handle
-       $styles->add( 'colors-fresh', "/wp-admin/css/colors-fresh$suffix.css", array('wp-admin'), $colors_version );
-       $styles->add( 'colors-classic', "/wp-admin/css/colors-classic$suffix.css", array('wp-admin'), $colors_version );
+       $styles->add( 'colors-fresh', "/wp-admin/css/colors-fresh$suffix.css", array('wp-admin') );
+       $styles->add( 'colors-classic', "/wp-admin/css/colors-classic$suffix.css", array('wp-admin') );
 
 
-       $styles->add( 'media', "/wp-admin/css/media$suffix.css", array(), '20111119' );
-       $styles->add( 'install', "/wp-admin/css/install$suffix.css", array(), '20111117' ); // Readme as well
-       $styles->add( 'thickbox', '/wp-includes/js/thickbox/thickbox.css', array(), '20111117' );
+       $styles->add( 'media', "/wp-admin/css/media$suffix.css" );
+       $styles->add( 'install', "/wp-admin/css/install$suffix.css" );
+       $styles->add( 'thickbox', '/wp-includes/js/thickbox/thickbox.css' );
        $styles->add( 'farbtastic', '/wp-admin/css/farbtastic.css', array(), '1.3u1' );
        $styles->add( 'jcrop', '/wp-includes/js/jcrop/jquery.Jcrop.css', array(), '0.9.8' );
        $styles->add( 'farbtastic', '/wp-admin/css/farbtastic.css', array(), '1.3u1' );
        $styles->add( 'jcrop', '/wp-includes/js/jcrop/jquery.Jcrop.css', array(), '0.9.8' );
-       $styles->add( 'imgareaselect', '/wp-includes/js/imgareaselect/imgareaselect.css', array(), '0.9.1' );
-       $styles->add( 'admin-bar', "/wp-includes/css/admin-bar$suffix.css", array(), '20111209' );
-       $styles->add( 'wp-jquery-ui-dialog', "/wp-includes/css/jquery-ui-dialog$suffix.css", array(), '20111107' );
-       $styles->add( 'editor-buttons', "/wp-includes/css/editor-buttons$suffix.css", array(), '20111114' );
-       $styles->add( 'wp-pointer', "/wp-includes/css/wp-pointer$suffix.css", array(), '20111205' );
+       $styles->add( 'imgareaselect', '/wp-includes/js/imgareaselect/imgareaselect.css', array(), '0.9.8' );
+       $styles->add( 'admin-bar', "/wp-includes/css/admin-bar$suffix.css" );
+       $styles->add( 'wp-jquery-ui-dialog', "/wp-includes/css/jquery-ui-dialog$suffix.css" );
+       $styles->add( 'editor-buttons', "/wp-includes/css/editor$suffix.css" );
+       $styles->add( 'wp-pointer', "/wp-includes/css/wp-pointer$suffix.css" );
+       $styles->add( 'customize-controls', "/wp-admin/css/customize-controls$suffix.css", array( 'wp-admin', 'colors', 'ie' ) );
 
        foreach ( $rtl_styles as $rtl_style ) {
                $styles->add_data( $rtl_style, 'rtl', true );
 
        foreach ( $rtl_styles as $rtl_style ) {
                $styles->add_data( $rtl_style, 'rtl', true );
@@ -628,8 +656,7 @@ function _print_scripts() {
                        echo "</script>\n";
                }
 
                        echo "</script>\n";
                }
 
-               $ver = md5("$wp_scripts->concat_version");
-               $src = $wp_scripts->base_url . "/wp-admin/load-scripts.php?c={$zip}&load=" . trim($wp_scripts->concat, ', ') . "&ver=$ver";
+               $src = $wp_scripts->base_url . "/wp-admin/load-scripts.php?c={$zip}&load=" . trim($wp_scripts->concat, ', ') . '&ver=' . $wp_scripts->default_version;
                echo "<script type='text/javascript' src='" . esc_attr($src) . "'></script>\n";
        }
 
                echo "<script type='text/javascript' src='" . esc_attr($src) . "'></script>\n";
        }
 
@@ -660,7 +687,7 @@ function wp_print_head_scripts() {
 /**
  * Private, for use in *_footer_scripts hooks
  *
 /**
  * Private, for use in *_footer_scripts hooks
  *
- * @since 3.3
+ * @since 3.3.0
  */
 function _wp_footer_scripts() {
        print_late_styles();
  */
 function _wp_footer_scripts() {
        print_late_styles();
@@ -717,7 +744,7 @@ function print_admin_styles() {
 /**
  * Prints the styles that were queued too late for the HTML head.
  *
 /**
  * Prints the styles that were queued too late for the HTML head.
  *
- * @since 3.3
+ * @since 3.3.0
  */
 function print_late_styles() {
        global $wp_styles, $concatenate_scripts;
  */
 function print_late_styles() {
        global $wp_styles, $concatenate_scripts;
@@ -747,8 +774,8 @@ function _print_styles() {
 
        if ( !empty($wp_styles->concat) ) {
                $dir = $wp_styles->text_direction;
 
        if ( !empty($wp_styles->concat) ) {
                $dir = $wp_styles->text_direction;
-               $ver = md5("$wp_styles->concat_version{$dir}");
-               $href = $wp_styles->base_url . "/wp-admin/load-styles.php?c={$zip}&dir={$dir}&load=" . trim($wp_styles->concat, ', ') . "&ver=$ver";
+               $ver = $wp_styles->default_version;
+               $href = $wp_styles->base_url . "/wp-admin/load-styles.php?c={$zip}&dir={$dir}&load=" . trim($wp_styles->concat, ', ') . '&ver=' . $ver;
                echo "<link rel='stylesheet' href='" . esc_attr($href) . "' type='text/css' media='all' />\n";
 
                if ( !empty($wp_styles->print_code) ) {
                echo "<link rel='stylesheet' href='" . esc_attr($href) . "' type='text/css' media='all' />\n";
 
                if ( !empty($wp_styles->print_code) ) {
index 1cb361377972bf27e58c4408f813fc417341cbfb..1b860d2766df8cca052a2c816279be6cd20af7d3 100644 (file)
@@ -235,7 +235,7 @@ function do_shortcode_tag( $m ) {
                return $m[1] . call_user_func( $shortcode_tags[$tag], $attr, $m[5], $tag ) . $m[6];
        } else {
                // self-closing tag
                return $m[1] . call_user_func( $shortcode_tags[$tag], $attr, $m[5], $tag ) . $m[6];
        } else {
                // self-closing tag
-               return $m[1] . call_user_func( $shortcode_tags[$tag], $attr, NULL,  $tag ) . $m[6];
+               return $m[1] . call_user_func( $shortcode_tags[$tag], $attr, null,  $tag ) . $m[6];
        }
 }
 
        }
 }
 
@@ -332,5 +332,3 @@ function strip_shortcode_tag( $m ) {
 }
 
 add_filter('the_content', 'do_shortcode', 11); // AFTER wpautop()
 }
 
 add_filter('the_content', 'do_shortcode', 11); // AFTER wpautop()
-
-?>
index 4d525d69c041ef1437f8252eb50630936bbe2e99..8ea976ffaca6e26b698c95180727abb9dc24b9e4 100644 (file)
 //
 
 /**
 //
 
 /**
- * Creates the initial taxonomies when 'init' action is fired.
+ * Creates the initial taxonomies.
+ *
+ * This function fires twice: in wp-settings.php before plugins are loaded (for
+ * backwards compatibility reasons), and again on the 'init' action. We must avoid
+ * registering rewrite rules before the 'init' action.
  */
 function create_initial_taxonomies() {
        global $wp_rewrite;
 
  */
 function create_initial_taxonomies() {
        global $wp_rewrite;
 
+       if ( ! did_action( 'init' ) ) {
+               $rewrite = array( 'category' => false, 'post_tag' => false, 'post_format' => false );
+       } else {
+               $post_format_base = apply_filters( 'post_format_rewrite_base', 'type' );
+               $rewrite = array(
+                       'category' => array(
+                               'hierarchical' => true,
+                               'slug' => get_option('category_base') ? get_option('category_base') : 'category',
+                               'with_front' => ! get_option('category_base') || $wp_rewrite->using_index_permalinks(),
+                               'ep_mask' => EP_CATEGORIES,
+                       ),
+                       'post_tag' => array(
+                               'slug' => get_option('tag_base') ? get_option('tag_base') : 'tag',
+                               'with_front' => ! get_option('tag_base') || $wp_rewrite->using_index_permalinks(),
+                               'ep_mask' => EP_TAGS,
+                       ),
+                       'post_format' => $post_format_base ? array( 'slug' => $post_format_base ) : false,
+               );
+       }
+
        register_taxonomy( 'category', 'post', array(
                'hierarchical' => true,
                'query_var' => 'category_name',
        register_taxonomy( 'category', 'post', array(
                'hierarchical' => true,
                'query_var' => 'category_name',
-               'rewrite' => did_action( 'init' ) ? array(
-                                       'hierarchical' => true,
-                                       'slug' => get_option('category_base') ? get_option('category_base') : 'category',
-                                       'with_front' => ( get_option('category_base') && ! $wp_rewrite->using_index_permalinks() ) ? false : true ) : false,
+               'rewrite' => $rewrite['category'],
                'public' => true,
                'show_ui' => true,
                '_builtin' => true,
                'public' => true,
                'show_ui' => true,
                '_builtin' => true,
@@ -32,9 +53,7 @@ function create_initial_taxonomies() {
        register_taxonomy( 'post_tag', 'post', array(
                'hierarchical' => false,
                'query_var' => 'tag',
        register_taxonomy( 'post_tag', 'post', array(
                'hierarchical' => false,
                'query_var' => 'tag',
-               'rewrite' => did_action( 'init' ) ? array(
-                                       'slug' => get_option('tag_base') ? get_option('tag_base') : 'tag',
-                                       'with_front' => ( get_option('tag_base') && ! $wp_rewrite->using_index_permalinks() ) ? false : true ) : false,
+               'rewrite' => $rewrite['post_tag'],
                'public' => true,
                'show_ui' => true,
                '_builtin' => true,
                'public' => true,
                'show_ui' => true,
                '_builtin' => true,
@@ -77,12 +96,6 @@ function create_initial_taxonomies() {
                '_builtin' => true,
        ) );
 
                '_builtin' => true,
        ) );
 
-       $rewrite = false;
-       if ( did_action( 'init' ) ) {
-               $rewrite = apply_filters( 'post_format_rewrite_base', 'type' );
-               $rewrite = $rewrite ? array( 'slug' => $rewrite ) : false;
-       }
-
        register_taxonomy( 'post_format', 'post', array(
                'public' => true,
                'hierarchical' => false,
        register_taxonomy( 'post_format', 'post', array(
                'public' => true,
                'hierarchical' => false,
@@ -91,10 +104,10 @@ function create_initial_taxonomies() {
                        'singular_name' => _x( 'Format', 'post format' ),
                ),
                'query_var' => true,
                        'singular_name' => _x( 'Format', 'post format' ),
                ),
                'query_var' => true,
-               'rewrite' => $rewrite,
+               'rewrite' => $rewrite['post_format'],
                'show_ui' => false,
                '_builtin' => true,
                'show_ui' => false,
                '_builtin' => true,
-               'show_in_nav_menus' => false,
+               'show_in_nav_menus' => current_theme_supports( 'post-formats' ),
        ) );
 }
 add_action( 'init', 'create_initial_taxonomies', 0 ); // highest priority
        ) );
 }
 add_action( 'init', 'create_initial_taxonomies', 0 ); // highest priority
@@ -122,7 +135,6 @@ function get_taxonomies( $args = array(), $output = 'names', $operator = 'and' )
        return wp_filter_object_list($wp_taxonomies, $args, $operator, $field);
 }
 
        return wp_filter_object_list($wp_taxonomies, $args, $operator, $field);
 }
 
-
 /**
  * Return all of the taxonomy names that are of $object_type.
  *
 /**
  * Return all of the taxonomy names that are of $object_type.
  *
@@ -284,7 +296,6 @@ function is_taxonomy_hierarchical($taxonomy) {
  * @subpackage Taxonomy
  * @since 2.3.0
  * @uses $wp_taxonomies Inserts new taxonomy object into the list
  * @subpackage Taxonomy
  * @since 2.3.0
  * @uses $wp_taxonomies Inserts new taxonomy object into the list
- * @uses $wp_rewrite Adds rewrite tags and permastructs
  * @uses $wp Adds query vars
  *
  * @param string $taxonomy Name of taxonomy object
  * @uses $wp Adds query vars
  *
  * @param string $taxonomy Name of taxonomy object
@@ -292,7 +303,7 @@ function is_taxonomy_hierarchical($taxonomy) {
  * @param array|string $args See above description for the two keys values.
  */
 function register_taxonomy( $taxonomy, $object_type, $args = array() ) {
  * @param array|string $args See above description for the two keys values.
  */
 function register_taxonomy( $taxonomy, $object_type, $args = array() ) {
-       global $wp_taxonomies, $wp_rewrite, $wp;
+       global $wp_taxonomies, $wp;
 
        if ( ! is_array($wp_taxonomies) )
                $wp_taxonomies = array();
 
        if ( ! is_array($wp_taxonomies) )
                $wp_taxonomies = array();
@@ -318,11 +329,12 @@ function register_taxonomy( $taxonomy, $object_type, $args = array() ) {
                $wp->add_query_var($args['query_var']);
        }
 
                $wp->add_query_var($args['query_var']);
        }
 
-       if ( false !== $args['rewrite'] && '' != get_option('permalink_structure') ) {
+       if ( false !== $args['rewrite'] && ( is_admin() || '' != get_option('permalink_structure') ) ) {
                $args['rewrite'] = wp_parse_args($args['rewrite'], array(
                        'slug' => sanitize_title_with_dashes($taxonomy),
                        'with_front' => true,
                $args['rewrite'] = wp_parse_args($args['rewrite'], array(
                        'slug' => sanitize_title_with_dashes($taxonomy),
                        'with_front' => true,
-                       'hierarchical' => false
+                       'hierarchical' => false,
+                       'ep_mask' => EP_NONE,
                ));
 
                if ( $args['hierarchical'] && $args['rewrite']['hierarchical'] )
                ));
 
                if ( $args['hierarchical'] && $args['rewrite']['hierarchical'] )
@@ -330,8 +342,8 @@ function register_taxonomy( $taxonomy, $object_type, $args = array() ) {
                else
                        $tag = '([^/]+)';
 
                else
                        $tag = '([^/]+)';
 
-               $wp_rewrite->add_rewrite_tag("%$taxonomy%", $tag, $args['query_var'] ? "{$args['query_var']}=" : "taxonomy=$taxonomy&term=");
-               $wp_rewrite->add_permastruct($taxonomy, "{$args['rewrite']['slug']}/%$taxonomy%", $args['rewrite']['with_front']);
+               add_rewrite_tag( "%$taxonomy%", $tag, $args['query_var'] ? "{$args['query_var']}=" : "taxonomy=$taxonomy&term=" );
+               add_permastruct( $taxonomy, "{$args['rewrite']['slug']}/%$taxonomy%", $args['rewrite'] );
        }
 
        if ( is_null($args['show_ui']) )
        }
 
        if ( is_null($args['show_ui']) )
@@ -379,14 +391,15 @@ function register_taxonomy( $taxonomy, $object_type, $args = array() ) {
  * - parent_item - This string isn't used on non-hierarchical taxonomies. In hierarchical ones the default is Parent Category
  * - parent_item_colon - The same as <code>parent_item</code>, but with colon <code>:</code> in the end
  * - edit_item - Default is Edit Tag/Edit Category
  * - parent_item - This string isn't used on non-hierarchical taxonomies. In hierarchical ones the default is Parent Category
  * - parent_item_colon - The same as <code>parent_item</code>, but with colon <code>:</code> in the end
  * - edit_item - Default is Edit Tag/Edit Category
+ * - view_item - Default is View Tag/View Category
  * - update_item - Default is Update Tag/Update Category
  * - add_new_item - Default is Add New Tag/Add New Category
  * - new_item_name - Default is New Tag Name/New Category Name
  * - update_item - Default is Update Tag/Update Category
  * - add_new_item - Default is Add New Tag/Add New Category
  * - new_item_name - Default is New Tag Name/New Category Name
- * - separate_items_with_commas - This string isn't used on hierarchical taxonomies. Default is "Separate tags with commas," used in the meta box.
- * - add_or_remove_items - This string isn't used on hierarchical taxonomies. Default is "Add or remove tags," used in the meta box when JavaScript is disabled.
- * - choose_from_most_used - This string isn't used on hierarchical taxonomies. Default is "Choose from the most used tags," used in the meta box.
+ * - separate_items_with_commas - This string isn't used on hierarchical taxonomies. Default is "Separate tags with commas", used in the meta box.
+ * - add_or_remove_items - This string isn't used on hierarchical taxonomies. Default is "Add or remove tags", used in the meta box when JavaScript is disabled.
+ * - choose_from_most_used - This string isn't used on hierarchical taxonomies. Default is "Choose from the most used tags", used in the meta box.
  *
  *
- * Above, the first default value is for non-hierarchical taxonomies (like tags) and the second one is for hierarchical taxonomies (like categories.)
+ * Above, the first default value is for non-hierarchical taxonomies (like tags) and the second one is for hierarchical taxonomies (like categories).
  *
  * @since 3.0.0
  * @param object $tax Taxonomy object
  *
  * @since 3.0.0
  * @param object $tax Taxonomy object
@@ -428,7 +441,7 @@ function get_taxonomy_labels( $tax ) {
  * @uses $wp_taxonomies Modifies taxonomy object
  *
  * @param string $taxonomy Name of taxonomy object
  * @uses $wp_taxonomies Modifies taxonomy object
  *
  * @param string $taxonomy Name of taxonomy object
- * @param array|string $object_type Name of the object type
+ * @param string $object_type Name of the object type
  * @return bool True if successful, false if not
  */
 function register_taxonomy_for_object_type( $taxonomy, $object_type) {
  * @return bool True if successful, false if not
  */
 function register_taxonomy_for_object_type( $taxonomy, $object_type) {
@@ -489,7 +502,7 @@ function get_objects_in_term( $term_ids, $taxonomies, $args = array() ) {
 
        foreach ( (array) $taxonomies as $taxonomy ) {
                if ( ! taxonomy_exists( $taxonomy ) )
 
        foreach ( (array) $taxonomies as $taxonomy ) {
                if ( ! taxonomy_exists( $taxonomy ) )
-                       return new WP_Error( 'invalid_taxonomy', __( 'Invalid Taxonomy' ) );
+                       return new WP_Error( 'invalid_taxonomy', __( 'Invalid taxonomy' ) );
        }
 
        $defaults = array( 'order' => 'ASC' );
        }
 
        $defaults = array( 'order' => 'ASC' );
@@ -842,7 +855,7 @@ function &get_term($term, $taxonomy, $output = OBJECT, $filter = 'raw') {
        }
 
        if ( ! taxonomy_exists($taxonomy) ) {
        }
 
        if ( ! taxonomy_exists($taxonomy) ) {
-               $error = new WP_Error('invalid_taxonomy', __('Invalid Taxonomy'));
+               $error = new WP_Error('invalid_taxonomy', __('Invalid taxonomy'));
                return $error;
        }
 
                return $error;
        }
 
@@ -971,7 +984,7 @@ function get_term_by($field, $value, $taxonomy, $output = OBJECT, $filter = 'raw
  */
 function get_term_children( $term_id, $taxonomy ) {
        if ( ! taxonomy_exists($taxonomy) )
  */
 function get_term_children( $term_id, $taxonomy ) {
        if ( ! taxonomy_exists($taxonomy) )
-               return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy'));
+               return new WP_Error('invalid_taxonomy', __('Invalid taxonomy'));
 
        $term_id = intval( $term_id );
 
 
        $term_id = intval( $term_id );
 
@@ -1083,19 +1096,19 @@ function get_term_to_edit( $id, $taxonomy ) {
  * hide_empty - Default is true. Will not return empty terms, which means
  * terms whose count is 0 according to the given taxonomy.
  *
  * hide_empty - Default is true. Will not return empty terms, which means
  * terms whose count is 0 according to the given taxonomy.
  *
- * exclude - Default is an empty array.  An array, comma- or space-delimited string
- * of term ids to exclude from the return array.  If 'include' is non-empty,
+ * exclude - Default is an empty array. An array, comma- or space-delimited string
+ * of term ids to exclude from the return array. If 'include' is non-empty,
  * 'exclude' is ignored.
  *
  * 'exclude' is ignored.
  *
- * exclude_tree - Default is an empty array.  An array, comma- or space-delimited
+ * exclude_tree - Default is an empty array. An array, comma- or space-delimited
  * string of term ids to exclude from the return array, along with all of their
  * string of term ids to exclude from the return array, along with all of their
- * descendant terms according to the primary taxonomy.  If 'include' is non-empty,
+ * descendant terms according to the primary taxonomy. If 'include' is non-empty,
  * 'exclude_tree' is ignored.
  *
  * 'exclude_tree' is ignored.
  *
- * include - Default is an empty array.  An array, comma- or space-delimited string
+ * include - Default is an empty array. An array, comma- or space-delimited string
  * of term ids to include in the return array.
  *
  * of term ids to include in the return array.
  *
- * number - The maximum number of terms to return.  Default is to return them all.
+ * number - The maximum number of terms to return. Default is to return them all.
  *
  * offset - The number by which to offset the terms query.
  *
  *
  * offset - The number by which to offset the terms query.
  *
@@ -1109,7 +1122,7 @@ function get_term_to_edit( $id, $taxonomy ) {
  * (even if 'hide_empty' is set to true).
  *
  * search - Returned terms' names will contain the value of 'search',
  * (even if 'hide_empty' is set to true).
  *
  * search - Returned terms' names will contain the value of 'search',
- * case-insensitive.  Default is an empty string.
+ * case-insensitive. Default is an empty string.
  *
  * name__like - Returned terms' names will begin with the value of 'name__like',
  * case-insensitive. Default is empty string.
  *
  * name__like - Returned terms' names will begin with the value of 'name__like',
  * case-insensitive. Default is empty string.
@@ -1120,13 +1133,13 @@ function get_term_to_edit( $id, $taxonomy ) {
  * The 'get' argument, if set to 'all' instead of its default empty string,
  * returns terms regardless of ancestry or whether the terms are empty.
  *
  * The 'get' argument, if set to 'all' instead of its default empty string,
  * returns terms regardless of ancestry or whether the terms are empty.
  *
- * The 'child_of' argument, when used, should be set to the integer of a term ID.  Its default
- * is 0.  If set to a non-zero value, all returned terms will be descendants
- * of that term according to the given taxonomy.  Hence 'child_of' is set to 0
+ * The 'child_of' argument, when used, should be set to the integer of a term ID. Its default
+ * is 0. If set to a non-zero value, all returned terms will be descendants
+ * of that term according to the given taxonomy. Hence 'child_of' is set to 0
  * if more than one taxonomy is passed in $taxonomies, because multiple taxonomies
  * make term ancestry ambiguous.
  *
  * if more than one taxonomy is passed in $taxonomies, because multiple taxonomies
  * make term ancestry ambiguous.
  *
- * The 'parent' argument, when used, should be set to the integer of a term ID.  Its default is
+ * The 'parent' argument, when used, should be set to the integer of a term ID. Its default is
  * the empty string '', which has a different meaning from the integer 0.
  * If set to an integer value, all returned terms will have as an immediate
  * ancestor the term whose ID is specified by that integer according to the given taxonomy.
  * the empty string '', which has a different meaning from the integer 0.
  * If set to an integer value, all returned terms will have as an immediate
  * ancestor the term whose ID is specified by that integer according to the given taxonomy.
@@ -1161,7 +1174,7 @@ function &get_terms($taxonomies, $args = '') {
 
        foreach ( $taxonomies as $taxonomy ) {
                if ( ! taxonomy_exists($taxonomy) ) {
 
        foreach ( $taxonomies as $taxonomy ) {
                if ( ! taxonomy_exists($taxonomy) ) {
-                       $error = new WP_Error('invalid_taxonomy', __('Invalid Taxonomy'));
+                       $error = new WP_Error('invalid_taxonomy', __('Invalid taxonomy'));
                        return $error;
                }
        }
                        return $error;
                }
        }
@@ -1431,8 +1444,6 @@ function &get_terms($taxonomies, $args = '') {
 /**
  * Check if Term exists.
  *
 /**
  * Check if Term exists.
  *
- * Returns the index of a defined term, or 0 (false) if the term doesn't exist.
- *
  * Formerly is_term(), introduced in 2.3.0.
  *
  * @package WordPress
  * Formerly is_term(), introduced in 2.3.0.
  *
  * @package WordPress
@@ -1444,7 +1455,8 @@ function &get_terms($taxonomies, $args = '') {
  * @param int|string $term The term to check
  * @param string $taxonomy The taxonomy name to use
  * @param int $parent ID of parent term under which to confine the exists search.
  * @param int|string $term The term to check
  * @param string $taxonomy The taxonomy name to use
  * @param int $parent ID of parent term under which to confine the exists search.
- * @return mixed Get the term id or Term Object, if exists.
+ * @return mixed Returns 0 if the term does not exist. Returns the term ID if no taxonomy is specified
+ *     and the term ID exists. Returns an array of the term ID and the taxonomy if the pairing exists.
  */
 function term_exists($term, $taxonomy = '', $parent = 0) {
        global $wpdb;
  */
 function term_exists($term, $taxonomy = '', $parent = 0) {
        global $wpdb;
@@ -1495,6 +1507,32 @@ function term_exists($term, $taxonomy = '', $parent = 0) {
        return $wpdb->get_var( $wpdb->prepare("SELECT term_id FROM $wpdb->terms as t WHERE $else_where", $else_where_fields) );
 }
 
        return $wpdb->get_var( $wpdb->prepare("SELECT term_id FROM $wpdb->terms as t WHERE $else_where", $else_where_fields) );
 }
 
+/**
+ * Check if a term is an ancestor of another term.
+ *
+ * You can use either an id or the term object for both parameters.
+ *
+ * @since 3.4.0
+ *
+ * @param int|object $term1 ID or object to check if this is the parent term.
+ * @param int|object $term2 The child term.
+ * @param string $taxonomy Taxonomy name that $term1 and $term2 belong to.
+ * @return bool Whether $term2 is child of $term1
+ */
+function term_is_ancestor_of( $term1, $term2, $taxonomy ) {
+       if ( ! isset( $term1->term_id ) )
+               $term1 = get_term( $term1, $taxonomy );
+       if ( ! isset( $term2->parent ) )
+               $term2 = get_term( $term2, $taxonomy );
+
+       if ( empty( $term1->term_id ) || empty( $term2->parent ) )
+               return false;
+       if ( $term2->parent == $term1->term_id )
+               return true;
+
+       return term_is_ancestor_of( $term1, get_term( $term2->parent, $taxonomy ), $taxonomy );
+}
+
 /**
  * Sanitize Term all fields.
  *
 /**
  * Sanitize Term all fields.
  *
@@ -1765,12 +1803,12 @@ function wp_delete_term( $term, $taxonomy, $args = array() ) {
                clean_object_term_cache( $objects, $object_type );
 
        do_action( 'delete_term_taxonomy', $tt_id );
                clean_object_term_cache( $objects, $object_type );
 
        do_action( 'delete_term_taxonomy', $tt_id );
-       $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->term_taxonomy WHERE term_taxonomy_id = %d", $tt_id ) );
+       $wpdb->delete( $wpdb->term_taxonomy, array( 'term_taxonomy_id' => $tt_id ) );
        do_action( 'deleted_term_taxonomy', $tt_id );
 
        // Delete the term if no taxonomies use it.
        if ( !$wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->term_taxonomy WHERE term_id = %d", $term) ) )
        do_action( 'deleted_term_taxonomy', $tt_id );
 
        // Delete the term if no taxonomies use it.
        if ( !$wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->term_taxonomy WHERE term_id = %d", $term) ) )
-               $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->terms WHERE term_id = %d", $term) );
+               $wpdb->delete( $wpdb->terms, array( 'term_id' => $term ) );
 
        clean_term_cache($term, $taxonomy);
 
 
        clean_term_cache($term, $taxonomy);
 
@@ -1824,17 +1862,20 @@ function wp_delete_category( $cat_ID ) {
  * @param int|array $object_ids The ID(s) of the object(s) to retrieve.
  * @param string|array $taxonomies The taxonomies to retrieve terms from.
  * @param array|string $args Change what is returned
  * @param int|array $object_ids The ID(s) of the object(s) to retrieve.
  * @param string|array $taxonomies The taxonomies to retrieve terms from.
  * @param array|string $args Change what is returned
- * @return array|WP_Error The requested term data or empty array if no terms found. WP_Error if $taxonomy does not exist.
+ * @return array|WP_Error The requested term data or empty array if no terms found. WP_Error if any of the $taxonomies don't exist.
  */
 function wp_get_object_terms($object_ids, $taxonomies, $args = array()) {
        global $wpdb;
 
  */
 function wp_get_object_terms($object_ids, $taxonomies, $args = array()) {
        global $wpdb;
 
+       if ( empty( $object_ids ) || empty( $taxonomies ) )
+               return array();
+
        if ( !is_array($taxonomies) )
                $taxonomies = array($taxonomies);
 
        foreach ( (array) $taxonomies as $taxonomy ) {
                if ( ! taxonomy_exists($taxonomy) )
        if ( !is_array($taxonomies) )
                $taxonomies = array($taxonomies);
 
        foreach ( (array) $taxonomies as $taxonomy ) {
                if ( ! taxonomy_exists($taxonomy) )
-                       return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy'));
+                       return new WP_Error('invalid_taxonomy', __('Invalid taxonomy'));
        }
 
        if ( !is_array($object_ids) )
        }
 
        if ( !is_array($object_ids) )
@@ -2105,7 +2146,7 @@ function wp_set_object_terms($object_id, $terms, $taxonomy, $append = false) {
        $object_id = (int) $object_id;
 
        if ( ! taxonomy_exists($taxonomy) )
        $object_id = (int) $object_id;
 
        if ( ! taxonomy_exists($taxonomy) )
-               return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy'));
+               return new WP_Error('invalid_taxonomy', __('Invalid taxonomy'));
 
        if ( !is_array($terms) )
                $terms = array($terms);
 
        if ( !is_array($terms) )
                $terms = array($terms);
@@ -2473,7 +2514,6 @@ function wp_update_term_count_now( $terms, $taxonomy ) {
 // Cache
 //
 
 // Cache
 //
 
-
 /**
  * Removes the taxonomy relationship to terms from the cache.
  *
 /**
  * Removes the taxonomy relationship to terms from the cache.
  *
@@ -2503,7 +2543,6 @@ function clean_object_term_cache($object_ids, $object_type) {
        do_action('clean_object_term_cache', $object_ids, $object_type);
 }
 
        do_action('clean_object_term_cache', $object_ids, $object_type);
 }
 
-
 /**
  * Will remove all of the term ids from the cache.
  *
 /**
  * Will remove all of the term ids from the cache.
  *
@@ -2564,7 +2603,6 @@ function clean_term_cache($ids, $taxonomy = '', $clean_taxonomy = true) {
        wp_cache_set('last_changed', time(), 'terms');
 }
 
        wp_cache_set('last_changed', time(), 'terms');
 }
 
-
 /**
  * Retrieves the taxonomy relationship to the term object id.
  *
 /**
  * Retrieves the taxonomy relationship to the term object id.
  *
@@ -2583,7 +2621,6 @@ function &get_object_term_cache($id, $taxonomy) {
        return $cache;
 }
 
        return $cache;
 }
 
-
 /**
  * Updates the cache for Term ID(s).
  *
 /**
  * Updates the cache for Term ID(s).
  *
@@ -2637,7 +2674,7 @@ function update_object_term_cache($object_ids, $object_type) {
                $object_terms[$term->object_id][$term->taxonomy][$term->term_id] = $term;
 
        foreach ( $ids as $id ) {
                $object_terms[$term->object_id][$term->taxonomy][$term->term_id] = $term;
 
        foreach ( $ids as $id ) {
-               foreach ( $taxonomies  as $taxonomy ) {
+               foreach ( $taxonomies as $taxonomy ) {
                        if ( ! isset($object_terms[$id][$taxonomy]) ) {
                                if ( !isset($object_terms[$id]) )
                                        $object_terms[$id] = array();
                        if ( ! isset($object_terms[$id][$taxonomy]) ) {
                                if ( !isset($object_terms[$id]) )
                                        $object_terms[$id] = array();
@@ -2648,12 +2685,11 @@ function update_object_term_cache($object_ids, $object_type) {
 
        foreach ( $object_terms as $id => $value ) {
                foreach ( $value as $taxonomy => $terms ) {
 
        foreach ( $object_terms as $id => $value ) {
                foreach ( $value as $taxonomy => $terms ) {
-                       wp_cache_set($id, $terms, "{$taxonomy}_relationships");
+                       wp_cache_add( $id, $terms, "{$taxonomy}_relationships" );
                }
        }
 }
 
                }
        }
 }
 
-
 /**
  * Updates Terms to Taxonomy in cache.
  *
 /**
  * Updates Terms to Taxonomy in cache.
  *
@@ -2678,7 +2714,6 @@ function update_term_cache($terms, $taxonomy = '') {
 // Private
 //
 
 // Private
 //
 
-
 /**
  * Retrieves children of taxonomy as Term IDs.
  *
 /**
  * Retrieves children of taxonomy as Term IDs.
  *
@@ -2711,7 +2746,6 @@ function _get_term_hierarchy($taxonomy) {
        return $children;
 }
 
        return $children;
 }
 
-
 /**
  * Get the subset of $terms that are descendants of $term_id.
  *
 /**
  * Get the subset of $terms that are descendants of $term_id.
  *
@@ -2768,7 +2802,6 @@ function &_get_term_children($term_id, $terms, $taxonomy) {
        return $term_list;
 }
 
        return $term_list;
 }
 
-
 /**
  * Add count of children to parent count.
  *
 /**
  * Add count of children to parent count.
  *
@@ -2878,7 +2911,6 @@ function _update_post_term_count( $terms, $taxonomy ) {
                if ( $object_types )
                        $count += (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->term_relationships, $wpdb->posts WHERE $wpdb->posts.ID = $wpdb->term_relationships.object_id AND post_status = 'publish' AND post_type IN ('" . implode("', '", $object_types ) . "') AND term_taxonomy_id = %d", $term ) );
 
                if ( $object_types )
                        $count += (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->term_relationships, $wpdb->posts WHERE $wpdb->posts.ID = $wpdb->term_relationships.object_id AND post_status = 'publish' AND post_type IN ('" . implode("', '", $object_types ) . "') AND term_taxonomy_id = %d", $term ) );
 
-
                do_action( 'edit_term_taxonomy', $term, $taxonomy );
                $wpdb->update( $wpdb->term_taxonomy, compact( 'count' ), array( 'term_taxonomy_id' => $term ) );
                do_action( 'edited_term_taxonomy', $term, $taxonomy );
                do_action( 'edit_term_taxonomy', $term, $taxonomy );
                $wpdb->update( $wpdb->term_taxonomy, compact( 'count' ), array( 'term_taxonomy_id' => $term ) );
                do_action( 'edited_term_taxonomy', $term, $taxonomy );
@@ -3094,7 +3126,7 @@ function get_post_taxonomies($post = 0) {
  *
  * @param int $object_id ID of the object (post ID, link ID, ...)
  * @param string $taxonomy Single taxonomy name
  *
  * @param int $object_id ID of the object (post ID, link ID, ...)
  * @param string $taxonomy Single taxonomy name
- * @param int|string|array $terms Optional.  Term term_id, name, slug or array of said
+ * @param int|string|array $terms Optional. Term term_id, name, slug or array of said
  * @return bool|WP_Error. WP_Error on input error.
  */
 function is_object_in_term( $object_id, $taxonomy, $terms = null ) {
  * @return bool|WP_Error. WP_Error on input error.
  */
 function is_object_in_term( $object_id, $taxonomy, $terms = null ) {
@@ -3240,7 +3272,7 @@ function wp_check_term_hierarchy_for_loops( $parent, $term_id, $taxonomy ) {
        if ( isset( $loop[$term_id] ) )
                return 0;
 
        if ( isset( $loop[$term_id] ) )
                return 0;
 
-       // There's a loop, but it doesn't contain $term_id.  Break the loop.
+       // There's a loop, but it doesn't contain $term_id. Break the loop.
        foreach ( array_keys( $loop ) as $loop_member )
                wp_update_term( $loop_member, $taxonomy, array( 'parent' => 0 ) );
 
        foreach ( array_keys( $loop ) as $loop_member )
                wp_update_term( $loop_member, $taxonomy, array( 'parent' => 0 ) );
 
index 7c72a05e13c426e0701005b4122e624d1f908c30..fdf75f15ecd65d6b00fb86e91444664f9ec85852 100644 (file)
@@ -43,5 +43,3 @@ if ( defined('WP_USE_THEMES') && WP_USE_THEMES ) :
                include( $template );
        return;
 endif;
                include( $template );
        return;
 endif;
-
-?>
diff --git a/wp-includes/template.php b/wp-includes/template.php
new file mode 100644 (file)
index 0000000..531b308
--- /dev/null
@@ -0,0 +1,394 @@
+<?php
+/**
+ * Template loading functions.
+ *
+ * @package WordPress
+ * @subpackage Template
+ */
+
+/**
+ * Retrieve path to a template
+ *
+ * Used to quickly retrieve the path of a template without including the file
+ * extension. It will also check the parent theme, if the file exists, with
+ * the use of {@link locate_template()}. Allows for more generic template location
+ * without the use of the other get_*_template() functions.
+ *
+ * @since 1.5.0
+ *
+ * @param string $type Filename without extension.
+ * @param array $templates An optional list of template candidates
+ * @return string Full path to file.
+ */
+function get_query_template( $type, $templates = array() ) {
+       $type = preg_replace( '|[^a-z0-9-]+|', '', $type );
+
+       if ( empty( $templates ) )
+               $templates = array("{$type}.php");
+
+       return apply_filters( "{$type}_template", locate_template( $templates ) );
+}
+
+/**
+ * Retrieve path of index template in current or parent template.
+ *
+ * @since 3.0.0
+ *
+ * @return string
+ */
+function get_index_template() {
+       return get_query_template('index');
+}
+
+/**
+ * Retrieve path of 404 template in current or parent template.
+ *
+ * @since 1.5.0
+ *
+ * @return string
+ */
+function get_404_template() {
+       return get_query_template('404');
+}
+
+/**
+ * Retrieve path of archive template in current or parent template.
+ *
+ * @since 1.5.0
+ *
+ * @return string
+ */
+function get_archive_template() {
+       $post_type = get_query_var( 'post_type' );
+
+       $templates = array();
+
+       if ( $post_type )
+               $templates[] = "archive-{$post_type}.php";
+       $templates[] = 'archive.php';
+
+       return get_query_template( 'archive', $templates );
+}
+
+/**
+ * Retrieve path of author template in current or parent template.
+ *
+ * @since 1.5.0
+ *
+ * @return string
+ */
+function get_author_template() {
+       $author = get_queried_object();
+
+       $templates = array();
+
+       $templates[] = "author-{$author->user_nicename}.php";
+       $templates[] = "author-{$author->ID}.php";
+       $templates[] = 'author.php';
+
+       return get_query_template( 'author', $templates );
+}
+
+/**
+ * Retrieve path of category template in current or parent template.
+ *
+ * Works by first retrieving the current slug for example 'category-default.php' and then
+ * trying category ID, for example 'category-1.php' and will finally fallback to category.php
+ * template, if those files don't exist.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls 'category_template' on file path of category template.
+ *
+ * @return string
+ */
+function get_category_template() {
+       $category = get_queried_object();
+
+       $templates = array();
+
+       $templates[] = "category-{$category->slug}.php";
+       $templates[] = "category-{$category->term_id}.php";
+       $templates[] = 'category.php';
+
+       return get_query_template( 'category', $templates );
+}
+
+/**
+ * Retrieve path of tag template in current or parent template.
+ *
+ * Works by first retrieving the current tag name, for example 'tag-wordpress.php' and then
+ * trying tag ID, for example 'tag-1.php' and will finally fallback to tag.php
+ * template, if those files don't exist.
+ *
+ * @since 2.3.0
+ * @uses apply_filters() Calls 'tag_template' on file path of tag template.
+ *
+ * @return string
+ */
+function get_tag_template() {
+       $tag = get_queried_object();
+
+       $templates = array();
+
+       $templates[] = "tag-{$tag->slug}.php";
+       $templates[] = "tag-{$tag->term_id}.php";
+       $templates[] = 'tag.php';
+
+       return get_query_template( 'tag', $templates );
+}
+
+/**
+ * Retrieve path of taxonomy template in current or parent template.
+ *
+ * Retrieves the taxonomy and term, if term is available. The template is
+ * prepended with 'taxonomy-' and followed by both the taxonomy string and
+ * the taxonomy string followed by a dash and then followed by the term.
+ *
+ * The taxonomy and term template is checked and used first, if it exists.
+ * Second, just the taxonomy template is checked, and then finally, taxonomy.php
+ * template is used. If none of the files exist, then it will fall back on to
+ * index.php.
+ *
+ * @since 2.5.0
+ * @uses apply_filters() Calls 'taxonomy_template' filter on found path.
+ *
+ * @return string
+ */
+function get_taxonomy_template() {
+       $term = get_queried_object();
+       $taxonomy = $term->taxonomy;
+
+       $templates = array();
+
+       $templates[] = "taxonomy-$taxonomy-{$term->slug}.php";
+       $templates[] = "taxonomy-$taxonomy.php";
+       $templates[] = 'taxonomy.php';
+
+       return get_query_template( 'taxonomy', $templates );
+}
+
+/**
+ * Retrieve path of date template in current or parent template.
+ *
+ * @since 1.5.0
+ *
+ * @return string
+ */
+function get_date_template() {
+       return get_query_template('date');
+}
+
+/**
+ * Retrieve path of home template in current or parent template.
+ *
+ * This is the template used for the page containing the blog posts
+ *
+ * Attempts to locate 'home.php' first before falling back to 'index.php'.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls 'home_template' on file path of home template.
+ *
+ * @return string
+ */
+function get_home_template() {
+       $templates = array( 'home.php', 'index.php' );
+
+       return get_query_template( 'home', $templates );
+}
+
+/**
+ * Retrieve path of front-page template in current or parent template.
+ *
+ * Looks for 'front-page.php'.
+ *
+ * @since 3.0.0
+ * @uses apply_filters() Calls 'front_page_template' on file path of template.
+ *
+ * @return string
+ */
+function get_front_page_template() {
+       $templates = array('front-page.php');
+
+       return get_query_template( 'front_page', $templates );
+}
+
+/**
+ * Retrieve path of page template in current or parent template.
+ *
+ * Will first look for the specifically assigned page template
+ * The will search for 'page-{slug}.php' followed by 'page-id.php'
+ * and finally 'page.php'
+ *
+ * @since 1.5.0
+ *
+ * @return string
+ */
+function get_page_template() {
+       $id = get_queried_object_id();
+       $template = get_page_template_slug();
+       $pagename = get_query_var('pagename');
+
+       if ( ! $pagename && $id ) {
+               // If a static page is set as the front page, $pagename will not be set. Retrieve it from the queried object
+               $post = get_queried_object();
+               $pagename = $post->post_name;
+       }
+
+       $templates = array();
+       if ( $template && 0 === validate_file( $template ) )
+               $templates[] = $template;
+       if ( $pagename )
+               $templates[] = "page-$pagename.php";
+       if ( $id )
+               $templates[] = "page-$id.php";
+       $templates[] = 'page.php';
+
+       return get_query_template( 'page', $templates );
+}
+
+/**
+ * Retrieve path of paged template in current or parent template.
+ *
+ * @since 1.5.0
+ *
+ * @return string
+ */
+function get_paged_template() {
+       return get_query_template('paged');
+}
+
+/**
+ * Retrieve path of search template in current or parent template.
+ *
+ * @since 1.5.0
+ *
+ * @return string
+ */
+function get_search_template() {
+       return get_query_template('search');
+}
+
+/**
+ * Retrieve path of single template in current or parent template.
+ *
+ * @since 1.5.0
+ *
+ * @return string
+ */
+function get_single_template() {
+       $object = get_queried_object();
+
+       $templates = array();
+
+       $templates[] = "single-{$object->post_type}.php";
+       $templates[] = "single.php";
+
+       return get_query_template( 'single', $templates );
+}
+
+/**
+ * Retrieve path of attachment template in current or parent template.
+ *
+ * The attachment path first checks if the first part of the mime type exists.
+ * The second check is for the second part of the mime type. The last check is
+ * for both types separated by an underscore. If neither are found then the file
+ * 'attachment.php' is checked and returned.
+ *
+ * Some examples for the 'text/plain' mime type are 'text.php', 'plain.php', and
+ * finally 'text_plain.php'.
+ *
+ * @since 2.0.0
+ *
+ * @return string
+ */
+function get_attachment_template() {
+       global $posts;
+       $type = explode('/', $posts[0]->post_mime_type);
+       if ( $template = get_query_template($type[0]) )
+               return $template;
+       elseif ( $template = get_query_template($type[1]) )
+               return $template;
+       elseif ( $template = get_query_template("$type[0]_$type[1]") )
+               return $template;
+       else
+               return get_query_template('attachment');
+}
+
+/**
+ * Retrieve path of comment popup template in current or parent template.
+ *
+ * Checks for comment popup template in current template, if it exists or in the
+ * parent template.
+ *
+ * @since 1.5.0
+ * @uses apply_filters() Calls 'comments_popup_template' filter on path.
+ *
+ * @return string
+ */
+function get_comments_popup_template() {
+       $template = get_query_template( 'comments_popup', array( 'comments-popup.php' ) );
+
+       // Backward compat code will be removed in a future release
+       if ('' == $template)
+               $template = ABSPATH . WPINC . '/theme-compat/comments-popup.php';
+
+       return $template;
+}
+
+/**
+ * Retrieve the name of the highest priority template file that exists.
+ *
+ * Searches in the STYLESHEETPATH before TEMPLATEPATH so that themes which
+ * inherit from a parent theme can just overload one file.
+ *
+ * @since 2.7.0
+ *
+ * @param string|array $template_names Template file(s) to search for, in order.
+ * @param bool $load If true the template file will be loaded if it is found.
+ * @param bool $require_once Whether to require_once or require. Default true. Has no effect if $load is false.
+ * @return string The template filename if one is located.
+ */
+function locate_template($template_names, $load = false, $require_once = true ) {
+       $located = '';
+       foreach ( (array) $template_names as $template_name ) {
+               if ( !$template_name )
+                       continue;
+               if ( file_exists(STYLESHEETPATH . '/' . $template_name)) {
+                       $located = STYLESHEETPATH . '/' . $template_name;
+                       break;
+               } else if ( file_exists(TEMPLATEPATH . '/' . $template_name) ) {
+                       $located = TEMPLATEPATH . '/' . $template_name;
+                       break;
+               }
+       }
+
+       if ( $load && '' != $located )
+               load_template( $located, $require_once );
+
+       return $located;
+}
+
+/**
+ * Require the template file with WordPress environment.
+ *
+ * The globals are set up for the template file to ensure that the WordPress
+ * environment is available from within the function. The query variables are
+ * also available.
+ *
+ * @since 1.5.0
+ *
+ * @param string $_template_file Path to template file.
+ * @param bool $require_once Whether to require_once or require. Default true.
+ */
+function load_template( $_template_file, $require_once = true ) {
+       global $posts, $post, $wp_did_header, $wp_query, $wp_rewrite, $wpdb, $wp_version, $wp, $id, $comment, $user_ID;
+
+       if ( is_array( $wp_query->query_vars ) )
+               extract( $wp_query->query_vars, EXTR_SKIP );
+
+       if ( $require_once )
+               require_once( $_template_file );
+       else
+               require( $_template_file );
+}
+
index 5bbfe15790ba633d1f008463d3ad6ae6e73b6520..89a888c75d9c99cb91d85afd18b07f52f12a7e29 100644 (file)
@@ -51,7 +51,6 @@ _deprecated_file( sprintf( __( 'Theme without %1$s' ), basename(__FILE__) ), '3.
        <?php endif; ?>
 <?php endif; ?>
 
        <?php endif; ?>
 <?php endif; ?>
 
-
 <?php if ( comments_open() ) : ?>
 
 <div id="respond">
 <?php if ( comments_open() ) : ?>
 
 <div id="respond">
index 6795b1653433cf0aa4bb4b1236f6f13553e989c3..2758773b1e5c87d17f236aade62cf06990e68fd2 100644 (file)
@@ -40,7 +40,6 @@ if ( empty($withcomments) && !is_single() ) {
 <body <?php body_class(); ?>>
 <div id="page">
 
 <body <?php body_class(); ?>>
 <div id="page">
 
-
 <div id="header" role="banner">
        <div id="headerimg">
                <h1><a href="<?php echo home_url(); ?>/"><?php bloginfo('name'); ?></a></h1>
 <div id="header" role="banner">
        <div id="headerimg">
                <h1><a href="<?php echo home_url(); ?>/"><?php bloginfo('name'); ?></a></h1>
index c703949c1965421a80e43e240315c68bb7cba233..7c0939b6b8cf542370ac6170f011c475b8b495e1 100644 (file)
@@ -81,4 +81,3 @@ _deprecated_file( sprintf( __( 'Theme without %1$s' ), basename(__FILE__) ), '3.
                        <?php endif; ?>
                </ul>
        </div>
                        <?php endif; ?>
                </ul>
        </div>
-
index b132364b4b1caa42746a0f69c0f047de8a5680a6..db7b0a2c720df966b5a422d13215ba11ebc19966 100644 (file)
@@ -3,9 +3,109 @@
  * Theme, template, and stylesheet functions.
  *
  * @package WordPress
  * Theme, template, and stylesheet functions.
  *
  * @package WordPress
- * @subpackage Template
+ * @subpackage Theme
  */
 
  */
 
+/**
+ * Returns an array of WP_Theme objects based on the arguments.
+ *
+ * Despite advances over get_themes(), this function is quite expensive, and grows
+ * linearly with additional themes. Stick to wp_get_theme() if possible.
+ *
+ * @since 3.4.0
+ *
+ * @param array $args The search arguments. Optional.
+ * - errors      mixed  True to return themes with errors, false to return themes without errors, null
+ *                      to return all themes. Defaults to false.
+ * - allowed     mixed  (Multisite) True to return only allowed themes for a site. False to return only
+ *                      disallowed themes for a site. 'site' to return only site-allowed themes. 'network'
+ *                      to return only network-allowed themes. Null to return all themes. Defaults to null.
+ * - blog_id     int    (Multisite) The blog ID used to calculate which themes are allowed. Defaults to 0,
+ *                      synonymous for the current blog.
+ * @return Array of WP_Theme objects.
+ */
+function wp_get_themes( $args = array() ) {
+       global $wp_theme_directories;
+
+       $defaults = array( 'errors' => false, 'allowed' => null, 'blog_id' => 0 );
+       $args = wp_parse_args( $args, $defaults );
+
+       $theme_directories = search_theme_directories();
+
+       if ( count( $wp_theme_directories ) > 1 ) {
+               // Make sure the current theme wins out, in case search_theme_directories() picks the wrong
+               // one in the case of a conflict. (Normally, last registered theme root wins.)
+               $current_theme = get_stylesheet();
+               if ( isset( $theme_directories[ $current_theme ] ) ) {
+                       $root_of_current_theme = get_raw_theme_root( $current_theme );
+                       if ( ! in_array( $root_of_current_theme, $wp_theme_directories ) )
+                               $root_of_current_theme = WP_CONTENT_DIR . $root_of_current_theme;
+                       $theme_directories[ $current_theme ]['theme_root'] = $root_of_current_theme;
+               }
+       }
+
+       if ( empty( $theme_directories ) )
+               return array();
+
+       if ( is_multisite() && null !== $args['allowed'] ) {
+               $allowed = $args['allowed'];
+               if ( 'network' === $allowed )
+                       $theme_directories = array_intersect_key( $theme_directories, WP_Theme::get_allowed_on_network() );
+               elseif ( 'site' === $allowed )
+                       $theme_directories = array_intersect_key( $theme_directories, WP_Theme::get_allowed_on_site( $args['blog_id'] ) );
+               elseif ( $allowed )
+                       $theme_directories = array_intersect_key( $theme_directories, WP_Theme::get_allowed( $args['blog_id'] ) );
+               else
+                       $theme_directories = array_diff_key( $theme_directories, WP_Theme::get_allowed( $args['blog_id'] ) );
+       }
+
+       $themes = array();
+       static $_themes = array();
+
+       foreach ( $theme_directories as $theme => $theme_root ) {
+               if ( isset( $_themes[ $theme_root['theme_root'] . '/' . $theme ] ) )
+                       $themes[ $theme ] = $_themes[ $theme_root['theme_root'] . '/' . $theme ];
+               else
+                       $themes[ $theme ] = $_themes[ $theme_root['theme_root'] . '/' . $theme ] = new WP_Theme( $theme, $theme_root['theme_root'] );
+       }
+
+       if ( null !== $args['errors'] ) {
+               foreach ( $themes as $theme => $wp_theme ) {
+                       if ( $wp_theme->errors() != $args['errors'] )
+                               unset( $themes[ $theme ] );
+               }
+       }
+
+       return $themes;
+}
+
+/**
+ * Gets a WP_Theme object for a theme.
+ *
+ * @since 3.4.0
+ *
+ * @param string $stylesheet Directory name for the theme. Optional. Defaults to current theme.
+ * @param string $theme_root Absolute path of the theme root to look in. Optional. If not specified, get_raw_theme_root()
+ *     is used to calculate the theme root for the $stylesheet provided (or current theme).
+ * @return WP_Theme Theme object. Be sure to check the object's exists() method if you need to confirm the theme's existence.
+ */
+function wp_get_theme( $stylesheet = null, $theme_root = null ) {
+       global $wp_theme_directories;
+
+       if ( empty( $stylesheet ) )
+               $stylesheet = get_stylesheet();
+
+       if ( empty( $theme_root ) ) {
+               $theme_root = get_raw_theme_root( $stylesheet );
+               if ( false === $theme_root )
+                       $theme_root = WP_CONTENT_DIR . '/themes';
+               elseif ( ! in_array( $theme_root, (array) $wp_theme_directories ) )
+                       $theme_root = WP_CONTENT_DIR . $theme_root;
+       }
+
+       return new WP_Theme( $stylesheet, $theme_root );
+}
+
 /**
  * Whether a child theme is in use.
  *
 /**
  * Whether a child theme is in use.
  *
@@ -160,310 +260,6 @@ function get_template_directory_uri() {
        return apply_filters( 'template_directory_uri', $template_dir_uri, $template, $theme_root_uri );
 }
 
        return apply_filters( 'template_directory_uri', $template_dir_uri, $template, $theme_root_uri );
 }
 
-/**
- * Retrieve theme data from parsed theme file.
- *
- * The description will have the tags filtered with the following HTML elements
- * whitelisted. The <b>'a'</b> element with the <em>href</em> and <em>title</em>
- * attributes. The <b>abbr</b> element with the <em>title</em> attribute. The
- * <b>acronym</b> element with the <em>title</em> attribute allowed. The
- * <b>code</b>, <b>em</b>, and <b>strong</b> elements also allowed.
- *
- * The style.css file must contain theme name, theme URI, and description. The
- * data can also contain author URI, author, template (parent template),
- * version, status, and finally tags. Some of these are not used by WordPress
- * administration panels, but are used by theme directory web sites which list
- * the theme.
- *
- * @since 1.5.0
- *
- * @param string $theme_file Theme file path.
- * @return array Theme data.
- */
-function get_theme_data( $theme_file ) {
-       $default_headers = array(
-               'Name' => 'Theme Name',
-               'URI' => 'Theme URI',
-               'Description' => 'Description',
-               'Author' => 'Author',
-               'AuthorURI' => 'Author URI',
-               'Version' => 'Version',
-               'Template' => 'Template',
-               'Status' => 'Status',
-               'Tags' => 'Tags'
-               );
-
-       $themes_allowed_tags = array(
-               'a' => array(
-                       'href' => array(),'title' => array()
-                       ),
-               'abbr' => array(
-                       'title' => array()
-                       ),
-               'acronym' => array(
-                       'title' => array()
-                       ),
-               'code' => array(),
-               'em' => array(),
-               'strong' => array()
-       );
-
-       $theme_data = get_file_data( $theme_file, $default_headers, 'theme' );
-
-       $theme_data['Name'] = $theme_data['Title'] = wp_kses( $theme_data['Name'], $themes_allowed_tags );
-
-       $theme_data['URI'] = esc_url( $theme_data['URI'] );
-
-       $theme_data['Description'] = wptexturize( wp_kses( $theme_data['Description'], $themes_allowed_tags ) );
-
-       $theme_data['AuthorURI'] = esc_url( $theme_data['AuthorURI'] );
-
-       $theme_data['Template'] = wp_kses( $theme_data['Template'], $themes_allowed_tags );
-
-       $theme_data['Version'] = wp_kses( $theme_data['Version'], $themes_allowed_tags );
-
-       if ( $theme_data['Status'] == '' )
-               $theme_data['Status'] = 'publish';
-       else
-               $theme_data['Status'] = wp_kses( $theme_data['Status'], $themes_allowed_tags );
-
-       if ( $theme_data['Tags'] == '' )
-               $theme_data['Tags'] = array();
-       else
-               $theme_data['Tags'] = array_map( 'trim', explode( ',', wp_kses( $theme_data['Tags'], array() ) ) );
-
-       if ( $theme_data['Author'] == '' ) {
-               $theme_data['Author'] = $theme_data['AuthorName'] = __('Anonymous');
-       } else {
-               $theme_data['AuthorName'] = wp_kses( $theme_data['Author'], $themes_allowed_tags );
-               if ( empty( $theme_data['AuthorURI'] ) ) {
-                       $theme_data['Author'] = $theme_data['AuthorName'];
-               } else {
-                       $theme_data['Author'] = sprintf( '<a href="%1$s" title="%2$s">%3$s</a>', $theme_data['AuthorURI'], esc_attr__( 'Visit author homepage' ), $theme_data['AuthorName'] );
-               }
-       }
-
-       return $theme_data;
-}
-
-/**
- * Retrieve list of themes with theme data in theme directory.
- *
- * The theme is broken, if it doesn't have a parent theme and is missing either
- * style.css and, or index.php. If the theme has a parent theme then it is
- * broken, if it is missing style.css; index.php is optional. The broken theme
- * list is saved in the {@link $wp_broken_themes} global, which is displayed on
- * the theme list in the administration panels.
- *
- * @since 1.5.0
- * @global array $wp_broken_themes Stores the broken themes.
- * @global array $wp_themes Stores the working themes.
- *
- * @return array Theme list with theme data.
- */
-function get_themes() {
-       global $wp_themes, $wp_broken_themes;
-
-       if ( isset($wp_themes) )
-               return $wp_themes;
-
-       if ( !$theme_files = search_theme_directories() )
-               return false;
-
-       asort( $theme_files );
-
-       $wp_themes = array();
-
-       foreach ( (array) $theme_files as $theme_file ) {
-               $theme_root = $theme_file['theme_root'];
-               $theme_file = $theme_file['theme_file'];
-
-               if ( !is_readable("$theme_root/$theme_file") ) {
-                       $wp_broken_themes[$theme_file] = array('Name' => $theme_file, 'Title' => $theme_file, 'Description' => __('File not readable.'));
-                       continue;
-               }
-
-               $theme_data = get_theme_data("$theme_root/$theme_file");
-
-               $name        = $theme_data['Name'];
-               $title       = $theme_data['Title'];
-               $description = wptexturize($theme_data['Description']);
-               $version     = $theme_data['Version'];
-               $author      = $theme_data['Author'];
-               $template    = $theme_data['Template'];
-               $stylesheet  = dirname($theme_file);
-
-               $screenshot = false;
-               foreach ( array('png', 'gif', 'jpg', 'jpeg') as $ext ) {
-                       if (file_exists("$theme_root/$stylesheet/screenshot.$ext")) {
-                               $screenshot = "screenshot.$ext";
-                               break;
-                       }
-               }
-
-               if ( empty($name) ) {
-                       $name = dirname($theme_file);
-                       $title = $name;
-               }
-
-               $parent_template = $template;
-
-               if ( empty($template) ) {
-                       if ( file_exists("$theme_root/$stylesheet/index.php") )
-                               $template = $stylesheet;
-                       else
-                               continue;
-               }
-
-               $template = trim( $template );
-
-               if ( !file_exists("$theme_root/$template/index.php") ) {
-                       $parent_dir = dirname(dirname($theme_file));
-                       if ( file_exists("$theme_root/$parent_dir/$template/index.php") ) {
-                               $template = "$parent_dir/$template";
-                               $template_directory = "$theme_root/$template";
-                       } else {
-                               /**
-                                * The parent theme doesn't exist in the current theme's folder or sub folder
-                                * so lets use the theme root for the parent template.
-                                */
-                               if ( isset($theme_files[$template]) && file_exists( $theme_files[$template]['theme_root'] . "/$template/index.php" ) ) {
-                                       $template_directory = $theme_files[$template]['theme_root'] . "/$template";
-                               } else {
-                                       if ( empty( $parent_template) )
-                                               $wp_broken_themes[$name] = array('Name' => $name, 'Title' => $title, 'Description' => __('Template is missing.'), 'error' => 'no_template');
-                                       else
-                                               $wp_broken_themes[$name] = array('Name' => $name, 'Title' => $title, 'Description' => sprintf( __('The parent theme is missing. Please install the "%s" parent theme.'),  $parent_template ), 'error' => 'no_parent', 'parent' => $parent_template );
-                                       continue;
-                               }
-
-                       }
-               } else {
-                       $template_directory = trim( $theme_root . '/' . $template );
-               }
-
-               $stylesheet_files = array();
-               $template_files = array();
-
-               $stylesheet_dir = @ dir("$theme_root/$stylesheet");
-               if ( $stylesheet_dir ) {
-                       while ( ($file = $stylesheet_dir->read()) !== false ) {
-                               if ( !preg_match('|^\.+$|', $file) ) {
-                                       if ( preg_match('|\.css$|', $file) )
-                                               $stylesheet_files[] = "$theme_root/$stylesheet/$file";
-                                       elseif ( preg_match('|\.php$|', $file) )
-                                               $template_files[] = "$theme_root/$stylesheet/$file";
-                               }
-                       }
-                       @ $stylesheet_dir->close();
-               }
-
-               $template_dir = @ dir("$template_directory");
-               if ( $template_dir ) {
-                       while ( ($file = $template_dir->read()) !== false ) {
-                               if ( preg_match('|^\.+$|', $file) )
-                                       continue;
-                               if ( preg_match('|\.php$|', $file) ) {
-                                       $template_files[] = "$template_directory/$file";
-                               } elseif ( is_dir("$template_directory/$file") ) {
-                                       $template_subdir = @ dir("$template_directory/$file");
-                                       if ( !$template_subdir )
-                                               continue;
-                                       while ( ($subfile = $template_subdir->read()) !== false ) {
-                                               if ( preg_match('|^\.+$|', $subfile) )
-                                                       continue;
-                                               if ( preg_match('|\.php$|', $subfile) )
-                                                       $template_files[] = "$template_directory/$file/$subfile";
-                                       }
-                                       @ $template_subdir->close();
-                               }
-                       }
-                       @ $template_dir->close();
-               }
-
-               //Make unique and remove duplicates when stylesheet and template are the same i.e. most themes
-               $template_files = array_unique($template_files);
-               $stylesheet_files = array_unique($stylesheet_files);
-
-               $template_dir = $template_directory;
-               $stylesheet_dir = $theme_root . '/' . $stylesheet;
-
-               if ( empty($template_dir) )
-                       $template_dir = '/';
-               if ( empty($stylesheet_dir) )
-                       $stylesheet_dir = '/';
-
-               // Check for theme name collision.  This occurs if a theme is copied to
-               // a new theme directory and the theme header is not updated.  Whichever
-               // theme is first keeps the name.  Subsequent themes get a suffix applied.
-               // The Twenty Eleven, Twenty Ten, Default and Classic themes always trump
-               // their pretenders.
-               if ( isset($wp_themes[$name]) ) {
-                       $trump_cards = array(
-                               'classic'      => 'WordPress Classic',
-                               'default'      => 'WordPress Default',
-                               'twentyten'    => 'Twenty Ten',
-                               'twentyeleven' => 'Twenty Eleven',
-                       );
-                       if ( isset( $trump_cards[ $stylesheet ] ) && $name == $trump_cards[ $stylesheet ] ) {
-                               // If another theme has claimed to be one of our default themes, move
-                               // them aside.
-                               $suffix = $wp_themes[$name]['Stylesheet'];
-                               $new_name = "$name/$suffix";
-                               $wp_themes[$new_name] = $wp_themes[$name];
-                               $wp_themes[$new_name]['Name'] = $new_name;
-                       } else {
-                               $name = "$name/$stylesheet";
-                       }
-               }
-
-               $theme_roots[$stylesheet] = str_replace( WP_CONTENT_DIR, '', $theme_root );
-               $wp_themes[$name] = array(
-                       'Name' => $name,
-                       'Title' => $title,
-                       'Description' => $description,
-                       'Author' => $author,
-                       'Author Name' => $theme_data['AuthorName'],
-                       'Author URI' => $theme_data['AuthorURI'],
-                       'Version' => $version,
-                       'Template' => $template,
-                       'Stylesheet' => $stylesheet,
-                       'Template Files' => $template_files,
-                       'Stylesheet Files' => $stylesheet_files,
-                       'Template Dir' => $template_dir,
-                       'Stylesheet Dir' => $stylesheet_dir,
-                       'Status' => $theme_data['Status'],
-                       'Screenshot' => $screenshot,
-                       'Tags' => $theme_data['Tags'],
-                       'Theme Root' => $theme_root,
-                       'Theme Root URI' => str_replace( WP_CONTENT_DIR, content_url(), $theme_root ),
-               );
-       }
-
-       unset($theme_files);
-
-       /* Store theme roots in the DB */
-       if ( get_site_transient( 'theme_roots' ) != $theme_roots )
-               set_site_transient( 'theme_roots', $theme_roots, 7200 ); // cache for two hours
-       unset($theme_roots);
-
-       /* Resolve theme dependencies. */
-       $theme_names = array_keys( $wp_themes );
-       foreach ( (array) $theme_names as $theme_name ) {
-               $wp_themes[$theme_name]['Parent Theme'] = '';
-               if ( $wp_themes[$theme_name]['Stylesheet'] != $wp_themes[$theme_name]['Template'] ) {
-                       foreach ( (array) $theme_names as $parent_theme_name ) {
-                               if ( ($wp_themes[$parent_theme_name]['Stylesheet'] == $wp_themes[$parent_theme_name]['Template']) && ($wp_themes[$parent_theme_name]['Template'] == $wp_themes[$theme_name]['Template']) ) {
-                                       $wp_themes[$theme_name]['Parent Theme'] = $wp_themes[$parent_theme_name]['Name'];
-                                       break;
-                               }
-                       }
-               }
-       }
-
-       return $wp_themes;
-}
-
 /**
  * Retrieve theme roots.
  *
 /**
  * Retrieve theme roots.
  *
@@ -479,66 +275,12 @@ function get_theme_roots() {
 
        $theme_roots = get_site_transient( 'theme_roots' );
        if ( false === $theme_roots ) {
 
        $theme_roots = get_site_transient( 'theme_roots' );
        if ( false === $theme_roots ) {
-               get_themes();
-               $theme_roots = get_site_transient( 'theme_roots' ); // this is set in get_theme()
+               search_theme_directories( true ); // Regenerate the transient.
+               $theme_roots = get_site_transient( 'theme_roots' );
        }
        return $theme_roots;
 }
 
        }
        return $theme_roots;
 }
 
-/**
- * Retrieve theme data.
- *
- * @since 1.5.0
- *
- * @param string $theme Theme name.
- * @return array|null Null, if theme name does not exist. Theme data, if exists.
- */
-function get_theme($theme) {
-       $themes = get_themes();
-
-       if ( is_array( $themes ) && array_key_exists( $theme, $themes ) )
-               return $themes[$theme];
-
-       return null;
-}
-
-/**
- * Retrieve current theme display name.
- *
- * If the 'current_theme' option has already been set, then it will be returned
- * instead. If it is not set, then each theme will be iterated over until both
- * the current stylesheet and current template name.
- *
- * @since 1.5.0
- *
- * @return string
- */
-function get_current_theme() {
-       if ( $theme = get_option('current_theme') )
-               return $theme;
-
-       $themes = get_themes();
-       $current_theme = 'Twenty Eleven';
-
-       if ( $themes ) {
-               $theme_names = array_keys( $themes );
-               $current_template = get_option( 'template' );
-               $current_stylesheet = get_option( 'stylesheet' );
-
-               foreach ( (array) $theme_names as $theme_name ) {
-                       if ( $themes[$theme_name]['Stylesheet'] == $current_stylesheet &&
-                                       $themes[$theme_name]['Template'] == $current_template ) {
-                               $current_theme = $themes[$theme_name]['Name'];
-                               break;
-                       }
-               }
-       }
-
-       update_option('current_theme', $current_theme);
-
-       return $current_theme;
-}
-
 /**
  * Register a directory that contains themes.
  *
 /**
  * Register a directory that contains themes.
  *
@@ -547,21 +289,18 @@ function get_current_theme() {
  * @param string $directory Either the full filesystem path to a theme folder or a folder within WP_CONTENT_DIR
  * @return bool
  */
  * @param string $directory Either the full filesystem path to a theme folder or a folder within WP_CONTENT_DIR
  * @return bool
  */
-function register_theme_directory( $directory) {
+function register_theme_directory( $directory ) {
        global $wp_theme_directories;
 
        global $wp_theme_directories;
 
-       /* If this folder does not exist, return and do not register */
-       if ( !file_exists( $directory ) )
-                       /* Try prepending as the theme directory could be relative to the content directory */
-               $registered_directory = WP_CONTENT_DIR . '/' . $directory;
-       else
-               $registered_directory = $directory;
-
-       /* If this folder does not exist, return and do not register */
-       if ( !file_exists( $registered_directory ) )
-               return false;
+       if ( ! file_exists( $directory ) ) {
+               // Try prepending as the theme directory could be relative to the content directory
+               $directory = WP_CONTENT_DIR . '/' . $directory;
+               // If this directory does not exist, return and do not register
+               if ( ! file_exists( $directory ) )
+                       return false;
+       }
 
 
-       $wp_theme_directories[] = $registered_directory;
+       $wp_theme_directories[] = $directory;
 
        return true;
 }
 
        return true;
 }
@@ -571,550 +310,211 @@ function register_theme_directory( $directory) {
  *
  * @since 2.9.0
  *
  *
  * @since 2.9.0
  *
+ * @param bool $force Optional. Whether to force a new directory scan. Defaults to false.
  * @return array Valid themes found
  */
  * @return array Valid themes found
  */
-function search_theme_directories() {
-       global $wp_theme_directories, $wp_broken_themes;
+function search_theme_directories( $force = false ) {
+       global $wp_theme_directories;
        if ( empty( $wp_theme_directories ) )
                return false;
 
        if ( empty( $wp_theme_directories ) )
                return false;
 
-       $theme_files = array();
-       $wp_broken_themes = array();
-
-       /* Loop the registered theme directories and extract all themes */
-       foreach ( (array) $wp_theme_directories as $theme_root ) {
-               $theme_loc = $theme_root;
+       static $found_themes;
+       if ( ! $force && isset( $found_themes ) )
+               return $found_themes;
 
 
-               /* We don't want to replace all forward slashes, see Trac #4541 */
-               if ( '/' != WP_CONTENT_DIR )
-                       $theme_loc = str_replace(WP_CONTENT_DIR, '', $theme_root);
+       $found_themes = array();
 
 
-               /* Files in the root of the current theme directory and one subdir down */
-               $themes_dir = @ opendir($theme_root);
+       $wp_theme_directories = (array) $wp_theme_directories;
 
 
-               if ( !$themes_dir )
-                       return false;
+       // Set up maybe-relative, maybe-absolute array of theme directories.
+       // We always want to return absolute, but we need to cache relative
+       // use in for get_theme_root().
+       foreach ( $wp_theme_directories as $theme_root ) {
+               if ( 0 === strpos( $theme_root, WP_CONTENT_DIR ) )
+                       $relative_theme_roots[ str_replace( WP_CONTENT_DIR, '', $theme_root ) ] = $theme_root;
+               else
+                       $relative_theme_roots[ $theme_root ] = $theme_root;
+       }
 
 
-               while ( ($theme_dir = readdir($themes_dir)) !== false ) {
-                       if ( is_dir($theme_root . '/' . $theme_dir) && is_readable($theme_root . '/' . $theme_dir) ) {
-                               if ( $theme_dir[0] == '.' || $theme_dir == 'CVS' )
+       if ( $cache_expiration = apply_filters( 'wp_cache_themes_persistently', false, 'search_theme_directories' ) ) {
+               $cached_roots = get_site_transient( 'theme_roots' );
+               if ( is_array( $cached_roots ) ) {
+                       foreach ( $cached_roots as $theme_dir => $theme_root ) {
+                               // A cached theme root is no longer around, so skip it.
+                               if ( ! isset( $relative_theme_roots[ $theme_root ] ) )
                                        continue;
                                        continue;
-
-                               $stylish_dir = @opendir($theme_root . '/' . $theme_dir);
-                               $found_stylesheet = false;
-
-                               while ( ($theme_file = readdir($stylish_dir)) !== false ) {
-                                       if ( $theme_file == 'style.css' ) {
-                                               $theme_files[$theme_dir] = array( 'theme_file' => $theme_dir . '/' . $theme_file, 'theme_root' => $theme_root );
-                                               $found_stylesheet = true;
-                                               break;
-                                       }
-                               }
-                               @closedir($stylish_dir);
-
-                               if ( !$found_stylesheet ) { // look for themes in that dir
-                                       $subdir = "$theme_root/$theme_dir";
-                                       $subdir_name = $theme_dir;
-                                       $theme_subdirs = @opendir( $subdir );
-
-                                       $found_subdir_themes = false;
-                                       while ( ($theme_subdir = readdir($theme_subdirs)) !== false ) {
-                                               if ( is_dir( $subdir . '/' . $theme_subdir) && is_readable($subdir . '/' . $theme_subdir) ) {
-                                                       if ( $theme_subdir[0] == '.' || $theme_subdir == 'CVS' )
-                                                               continue;
-
-                                                       $stylish_dir = @opendir($subdir . '/' . $theme_subdir);
-                                                       $found_stylesheet = false;
-
-                                                       while ( ($theme_file = readdir($stylish_dir)) !== false ) {
-                                                               if ( $theme_file == 'style.css' ) {
-                                                                       $theme_files["$theme_dir/$theme_subdir"] = array( 'theme_file' => $subdir_name . '/' . $theme_subdir . '/' . $theme_file, 'theme_root' => $theme_root );
-                                                                       $found_stylesheet = true;
-                                                                       $found_subdir_themes = true;
-                                                                       break;
-                                                               }
-                                                       }
-                                                       @closedir($stylish_dir);
-                                               }
-                                       }
-                                       @closedir($theme_subdirs);
-                                       if ( !$found_subdir_themes )
-                                               $wp_broken_themes[$theme_dir] = array('Name' => $theme_dir, 'Title' => $theme_dir, 'Description' => __('Stylesheet is missing.'));
-                               }
+                               $found_themes[ $theme_dir ] = array(
+                                       'theme_file' => $theme_dir . '/style.css',
+                                       'theme_root' => $relative_theme_roots[ $theme_root ], // Convert relative to absolute.
+                               );
                        }
                        }
+                       return $found_themes;
                }
                }
-               @closedir( $themes_dir );
-       }
-       return $theme_files;
-}
-
-/**
- * Retrieve path to themes directory.
- *
- * Does not have trailing slash.
- *
- * @since 1.5.0
- * @uses apply_filters() Calls 'theme_root' filter on path.
- *
- * @param string $stylesheet_or_template The stylesheet or template name of the theme
- * @return string Theme path.
- */
-function get_theme_root( $stylesheet_or_template = false ) {
-       if ( $stylesheet_or_template ) {
-               if ( $theme_root = get_raw_theme_root($stylesheet_or_template) )
-                       $theme_root = WP_CONTENT_DIR . $theme_root;
-               else
-                       $theme_root = WP_CONTENT_DIR . '/themes';
+               if ( ! is_int( $cache_expiration ) )
+                       $cache_expiration = 1800; // half hour
        } else {
        } else {
-               $theme_root = WP_CONTENT_DIR . '/themes';
+               $cache_expiration = 1800; // half hour
        }
 
        }
 
-       return apply_filters( 'theme_root', $theme_root );
-}
-
-/**
- * Retrieve URI for themes directory.
- *
- * Does not have trailing slash.
- *
- * @since 1.5.0
- *
- * @param string $stylesheet_or_template The stylesheet or template name of the theme
- * @return string Themes URI.
- */
-function get_theme_root_uri( $stylesheet_or_template = false ) {
-       if ( $stylesheet_or_template ) {
-               if ( $theme_root = get_raw_theme_root($stylesheet_or_template) )
-                       $theme_root_uri = content_url( $theme_root );
-               else
-                       $theme_root_uri = content_url( 'themes' );
-       } else {
-               $theme_root_uri = content_url( 'themes' );
-       }
-
-       return apply_filters( 'theme_root_uri', $theme_root_uri, get_option('siteurl'), $stylesheet_or_template );
-}
-
-/**
- * Get the raw theme root relative to the content directory with no filters applied.
- *
- * @since 3.1.0
- *
- * @param string $stylesheet_or_template The stylesheet or template name of the theme
- * @return string Theme root
- */
-function get_raw_theme_root( $stylesheet_or_template, $no_cache = false ) {
-       global $wp_theme_directories;
-
-       if ( count($wp_theme_directories) <= 1 )
-               return '/themes';
-
-       $theme_root = false;
-
-       // If requesting the root for the current theme, consult options to avoid calling get_theme_roots()
-       if ( !$no_cache ) {
-               if ( get_option('stylesheet') == $stylesheet_or_template )
-                       $theme_root = get_option('stylesheet_root');
-               elseif ( get_option('template') == $stylesheet_or_template )
-                       $theme_root = get_option('template_root');
-       }
-
-       if ( empty($theme_root) ) {
-               $theme_roots = get_theme_roots();
-               if ( !empty($theme_roots[$stylesheet_or_template]) )
-                       $theme_root = $theme_roots[$stylesheet_or_template];
-       }
-
-       return $theme_root;
-}
-
-/**
- * Retrieve path to a template
- *
- * Used to quickly retrieve the path of a template without including the file
- * extension. It will also check the parent theme, if the file exists, with
- * the use of {@link locate_template()}. Allows for more generic template location
- * without the use of the other get_*_template() functions.
- *
- * @since 1.5.0
- *
- * @param string $type Filename without extension.
- * @param array $templates An optional list of template candidates
- * @return string Full path to file.
- */
-function get_query_template( $type, $templates = array() ) {
-       $type = preg_replace( '|[^a-z0-9-]+|', '', $type );
-
-       if ( empty( $templates ) )
-               $templates = array("{$type}.php");
-
-       return apply_filters( "{$type}_template", locate_template( $templates ) );
-}
-
-/**
- * Retrieve path of index template in current or parent template.
- *
- * @since 3.0.0
- *
- * @return string
- */
-function get_index_template() {
-       return get_query_template('index');
-}
-
-/**
- * Retrieve path of 404 template in current or parent template.
- *
- * @since 1.5.0
- *
- * @return string
- */
-function get_404_template() {
-       return get_query_template('404');
-}
-
-/**
- * Retrieve path of archive template in current or parent template.
- *
- * @since 1.5.0
- *
- * @return string
- */
-function get_archive_template() {
-       $post_type = get_query_var( 'post_type' );
-
-       $templates = array();
-
-       if ( $post_type )
-               $templates[] = "archive-{$post_type}.php";
-       $templates[] = 'archive.php';
-
-       return get_query_template( 'archive', $templates );
-}
-
-/**
- * Retrieve path of author template in current or parent template.
- *
- * @since 1.5.0
- *
- * @return string
- */
-function get_author_template() {
-       $author = get_queried_object();
-
-       $templates = array();
-
-       $templates[] = "author-{$author->user_nicename}.php";
-       $templates[] = "author-{$author->ID}.php";
-       $templates[] = 'author.php';
-
-       return get_query_template( 'author', $templates );
-}
-
-/**
- * Retrieve path of category template in current or parent template.
- *
- * Works by first retrieving the current slug for example 'category-default.php' and then
- * trying category ID, for example 'category-1.php' and will finally fallback to category.php
- * template, if those files don't exist.
- *
- * @since 1.5.0
- * @uses apply_filters() Calls 'category_template' on file path of category template.
- *
- * @return string
- */
-function get_category_template() {
-       $category = get_queried_object();
-
-       $templates = array();
-
-       $templates[] = "category-{$category->slug}.php";
-       $templates[] = "category-{$category->term_id}.php";
-       $templates[] = 'category.php';
-
-       return get_query_template( 'category', $templates );
-}
-
-/**
- * Retrieve path of tag template in current or parent template.
- *
- * Works by first retrieving the current tag name, for example 'tag-wordpress.php' and then
- * trying tag ID, for example 'tag-1.php' and will finally fallback to tag.php
- * template, if those files don't exist.
- *
- * @since 2.3.0
- * @uses apply_filters() Calls 'tag_template' on file path of tag template.
- *
- * @return string
- */
-function get_tag_template() {
-       $tag = get_queried_object();
-
-       $templates = array();
-
-       $templates[] = "tag-{$tag->slug}.php";
-       $templates[] = "tag-{$tag->term_id}.php";
-       $templates[] = 'tag.php';
-
-       return get_query_template( 'tag', $templates );
-}
-
-/**
- * Retrieve path of taxonomy template in current or parent template.
- *
- * Retrieves the taxonomy and term, if term is available. The template is
- * prepended with 'taxonomy-' and followed by both the taxonomy string and
- * the taxonomy string followed by a dash and then followed by the term.
- *
- * The taxonomy and term template is checked and used first, if it exists.
- * Second, just the taxonomy template is checked, and then finally, taxonomy.php
- * template is used. If none of the files exist, then it will fall back on to
- * index.php.
- *
- * @since 2.5.0
- * @uses apply_filters() Calls 'taxonomy_template' filter on found path.
- *
- * @return string
- */
-function get_taxonomy_template() {
-       $term = get_queried_object();
-       $taxonomy = $term->taxonomy;
-
-       $templates = array();
-
-       $templates[] = "taxonomy-$taxonomy-{$term->slug}.php";
-       $templates[] = "taxonomy-$taxonomy.php";
-       $templates[] = 'taxonomy.php';
-
-       return get_query_template( 'taxonomy', $templates );
-}
-
-/**
- * Retrieve path of date template in current or parent template.
- *
- * @since 1.5.0
- *
- * @return string
- */
-function get_date_template() {
-       return get_query_template('date');
-}
-
-/**
- * Retrieve path of home template in current or parent template.
- *
- * This is the template used for the page containing the blog posts
- *
- * Attempts to locate 'home.php' first before falling back to 'index.php'.
- *
- * @since 1.5.0
- * @uses apply_filters() Calls 'home_template' on file path of home template.
- *
- * @return string
- */
-function get_home_template() {
-       $templates = array( 'home.php', 'index.php' );
-
-       return get_query_template( 'home', $templates );
-}
-
-/**
- * Retrieve path of front-page template in current or parent template.
- *
- * Looks for 'front-page.php'.
- *
- * @since 3.0.0
- * @uses apply_filters() Calls 'front_page_template' on file path of template.
- *
- * @return string
- */
-function get_front_page_template() {
-       $templates = array('front-page.php');
-
-       return get_query_template( 'front_page', $templates );
-}
-
-/**
- * Retrieve path of page template in current or parent template.
- *
- * Will first look for the specifically assigned page template
- * The will search for 'page-{slug}.php' followed by 'page-id.php'
- * and finally 'page.php'
- *
- * @since 1.5.0
- *
- * @return string
- */
-function get_page_template() {
-       $id = get_queried_object_id();
-       $template = get_post_meta($id, '_wp_page_template', true);
-       $pagename = get_query_var('pagename');
-
-       if ( !$pagename && $id > 0 ) {
-               // If a static page is set as the front page, $pagename will not be set. Retrieve it from the queried object
-               $post = get_queried_object();
-               $pagename = $post->post_name;
-       }
-
-       if ( 'default' == $template )
-               $template = '';
-
-       $templates = array();
-       if ( !empty($template) && !validate_file($template) )
-               $templates[] = $template;
-       if ( $pagename )
-               $templates[] = "page-$pagename.php";
-       if ( $id )
-               $templates[] = "page-$id.php";
-       $templates[] = 'page.php';
-
-       return get_query_template( 'page', $templates );
-}
-
-/**
- * Retrieve path of paged template in current or parent template.
- *
- * @since 1.5.0
- *
- * @return string
- */
-function get_paged_template() {
-       return get_query_template('paged');
-}
-
-/**
- * Retrieve path of search template in current or parent template.
- *
- * @since 1.5.0
- *
- * @return string
- */
-function get_search_template() {
-       return get_query_template('search');
-}
-
-/**
- * Retrieve path of single template in current or parent template.
- *
- * @since 1.5.0
- *
- * @return string
- */
-function get_single_template() {
-       $object = get_queried_object();
-
-       $templates = array();
-
-       $templates[] = "single-{$object->post_type}.php";
-       $templates[] = "single.php";
-
-       return get_query_template( 'single', $templates );
-}
+       /* Loop the registered theme directories and extract all themes */
+       foreach ( $wp_theme_directories as $theme_root ) {
 
 
-/**
- * Retrieve path of attachment template in current or parent template.
- *
- * The attachment path first checks if the first part of the mime type exists.
- * The second check is for the second part of the mime type. The last check is
- * for both types separated by an underscore. If neither are found then the file
- * 'attachment.php' is checked and returned.
- *
- * Some examples for the 'text/plain' mime type are 'text.php', 'plain.php', and
- * finally 'text_plain.php'.
- *
- * @since 2.0.0
- *
- * @return string
- */
-function get_attachment_template() {
-       global $posts;
-       $type = explode('/', $posts[0]->post_mime_type);
-       if ( $template = get_query_template($type[0]) )
-               return $template;
-       elseif ( $template = get_query_template($type[1]) )
-               return $template;
-       elseif ( $template = get_query_template("$type[0]_$type[1]") )
-               return $template;
-       else
-               return get_query_template('attachment');
+               // Start with directories in the root of the current theme directory.
+               $dirs = @ scandir( $theme_root );
+               if ( ! $dirs )
+                       return false;
+               foreach ( $dirs as $dir ) {
+                       if ( ! is_dir( $theme_root . '/' . $dir ) || $dir[0] == '.' || $dir == 'CVS' )
+                               continue;
+                       if ( file_exists( $theme_root . '/' . $dir . '/style.css' ) ) {
+                               // wp-content/themes/a-single-theme
+                               // wp-content/themes is $theme_root, a-single-theme is $dir
+                               $found_themes[ $dir ] = array(
+                                       'theme_file' => $dir . '/style.css',
+                                       'theme_root' => $theme_root,
+                               );
+                       } else {
+                               $found_theme = false;
+                               // wp-content/themes/a-folder-of-themes/*
+                               // wp-content/themes is $theme_root, a-folder-of-themes is $dir, then themes are $sub_dirs
+                               $sub_dirs = @ scandir( $theme_root . '/' . $dir );
+                               if ( ! $sub_dirs )
+                                       return false;
+                               foreach ( $sub_dirs as $sub_dir ) {
+                                       if ( ! is_dir( $theme_root . '/' . $dir ) || $dir[0] == '.' || $dir == 'CVS' )
+                                               continue;
+                                       if ( ! file_exists( $theme_root . '/' . $dir . '/' . $sub_dir . '/style.css' ) )
+                                               continue;
+                                       $found_themes[ $dir . '/' . $sub_dir ] = array(
+                                               'theme_file' => $dir . '/' . $sub_dir . '/style.css',
+                                               'theme_root' => $theme_root,
+                                       );
+                                       $found_theme = true;
+                               }
+                               // Never mind the above, it's just a theme missing a style.css.
+                               // Return it; WP_Theme will catch the error.
+                               if ( ! $found_theme )
+                                       $found_themes[ $dir ] = array(
+                                               'theme_file' => $dir . '/style.css',
+                                               'theme_root' => $theme_root,
+                                       );
+                       }
+               }
+       }
+
+       asort( $found_themes );
+
+       $theme_roots = array();
+       $relative_theme_roots = array_flip( $relative_theme_roots );
+
+       foreach ( $found_themes as $theme_dir => $theme_data ) {
+               $theme_roots[ $theme_dir ] = $relative_theme_roots[ $theme_data['theme_root'] ]; // Convert absolute to relative.
+       }
+
+       if ( $theme_roots != get_site_transient( 'theme_roots' ) )
+               set_site_transient( 'theme_roots', $theme_roots, $cache_expiration );
+
+       return $found_themes;
 }
 
 /**
 }
 
 /**
- * Retrieve path of comment popup template in current or parent template.
+ * Retrieve path to themes directory.
  *
  *
- * Checks for comment popup template in current template, if it exists or in the
- * parent template.
+ * Does not have trailing slash.
  *
  * @since 1.5.0
  *
  * @since 1.5.0
- * @uses apply_filters() Calls 'comments_popup_template' filter on path.
+ * @uses apply_filters() Calls 'theme_root' filter on path.
  *
  *
- * @return string
+ * @param string $stylesheet_or_template The stylesheet or template name of the theme
+ * @return string Theme path.
  */
  */
-function get_comments_popup_template() {
-       $template = get_query_template( 'comments_popup', array( 'comments-popup.php' ) );
+function get_theme_root( $stylesheet_or_template = false ) {
+       global $wp_theme_directories;
 
 
-       // Backward compat code will be removed in a future release
-       if ('' == $template)
-               $template = ABSPATH . WPINC . '/theme-compat/comments-popup.php';
+       if ( $stylesheet_or_template && $theme_root = get_raw_theme_root( $stylesheet_or_template ) ) {
+               // Always prepend WP_CONTENT_DIR unless the root currently registered as a theme directory.
+               // This gives relative theme roots the benefit of the doubt when things go haywire.
+               if ( ! in_array( $theme_root, (array) $wp_theme_directories ) )
+                       $theme_root = WP_CONTENT_DIR . $theme_root;
+       } else {
+               $theme_root = WP_CONTENT_DIR . '/themes';
+       }
 
 
-       return $template;
+       return apply_filters( 'theme_root', $theme_root );
 }
 
 /**
 }
 
 /**
- * Retrieve the name of the highest priority template file that exists.
+ * Retrieve URI for themes directory.
  *
  *
- * Searches in the STYLESHEETPATH before TEMPLATEPATH so that themes which
- * inherit from a parent theme can just overload one file.
+ * Does not have trailing slash.
  *
  *
- * @since 2.7.0
+ * @since 1.5.0
  *
  *
- * @param string|array $template_names Template file(s) to search for, in order.
- * @param bool $load If true the template file will be loaded if it is found.
- * @param bool $require_once Whether to require_once or require. Default true. Has no effect if $load is false.
- * @return string The template filename if one is located.
+ * @param string $stylesheet_or_template Optional. The stylesheet or template name of the theme.
+ *     Default is to leverage the main theme root.
+ * @param string $theme_root Optional. The theme root for which calculations will be based, preventing
+ *     the need for a get_raw_theme_root() call.
+ * @return string Themes URI.
  */
  */
-function locate_template($template_names, $load = false, $require_once = true ) {
-       $located = '';
-       foreach ( (array) $template_names as $template_name ) {
-               if ( !$template_name )
-                       continue;
-               if ( file_exists(STYLESHEETPATH . '/' . $template_name)) {
-                       $located = STYLESHEETPATH . '/' . $template_name;
-                       break;
-               } else if ( file_exists(TEMPLATEPATH . '/' . $template_name) ) {
-                       $located = TEMPLATEPATH . '/' . $template_name;
-                       break;
+function get_theme_root_uri( $stylesheet_or_template = false, $theme_root = false ) {
+       global $wp_theme_directories;
+
+       if ( $stylesheet_or_template && ! $theme_root )
+               $theme_root = get_raw_theme_root( $stylesheet_or_template );
+
+       if ( $stylesheet_or_template && $theme_root ) {
+               if ( in_array( $theme_root, (array) $wp_theme_directories ) ) {
+                       // Absolute path. Make an educated guess. YMMV -- but note the filter below.
+                       if ( 0 === strpos( $theme_root, WP_CONTENT_DIR ) )
+                               $theme_root_uri = content_url( str_replace( WP_CONTENT_DIR, '', $theme_root ) );
+                       elseif ( 0 === strpos( $theme_root, ABSPATH ) )
+                               $theme_root_uri = site_url( str_replace( ABSPATH, '', $theme_root ) );
+                       elseif ( 0 === strpos( $theme_root, WP_PLUGIN_DIR ) || 0 === strpos( $theme_root, WPMU_PLUGIN_DIR ) )
+                               $theme_root_uri = plugins_url( basename( $theme_root ), $theme_root );
+                       else
+                               $theme_root_uri = $theme_root;
+               } else {
+                       $theme_root_uri = content_url( $theme_root );
                }
                }
+       } else {
+               $theme_root_uri = content_url( 'themes' );
        }
 
        }
 
-       if ( $load && '' != $located )
-               load_template( $located, $require_once );
-
-       return $located;
+       return apply_filters( 'theme_root_uri', $theme_root_uri, get_option('siteurl'), $stylesheet_or_template );
 }
 
 /**
 }
 
 /**
- * Require the template file with WordPress environment.
- *
- * The globals are set up for the template file to ensure that the WordPress
- * environment is available from within the function. The query variables are
- * also available.
+ * Get the raw theme root relative to the content directory with no filters applied.
  *
  *
- * @since 1.5.0
+ * @since 3.1.0
  *
  *
- * @param string $_template_file Path to template file.
- * @param bool $require_once Whether to require_once or require. Default true.
+ * @param string $stylesheet_or_template The stylesheet or template name of the theme
+ * @param bool $skip_cache Optional. Whether to skip the cache. Defaults to false, meaning the cache is used.
+ * @return string Theme root
  */
  */
-function load_template( $_template_file, $require_once = true ) {
-       global $posts, $post, $wp_did_header, $wp_did_template_redirect, $wp_query, $wp_rewrite, $wpdb, $wp_version, $wp, $id, $comment, $user_ID;
+function get_raw_theme_root( $stylesheet_or_template, $skip_cache = false ) {
+       global $wp_theme_directories;
+
+       if ( count($wp_theme_directories) <= 1 )
+               return '/themes';
 
 
-       if ( is_array( $wp_query->query_vars ) )
-               extract( $wp_query->query_vars, EXTR_SKIP );
+       $theme_root = false;
 
 
-       if ( $require_once )
-               require_once( $_template_file );
-       else
-               require( $_template_file );
+       // If requesting the root for the current theme, consult options to avoid calling get_theme_roots()
+       if ( ! $skip_cache ) {
+               if ( get_option('stylesheet') == $stylesheet_or_template )
+                       $theme_root = get_option('stylesheet_root');
+               elseif ( get_option('template') == $stylesheet_or_template )
+                       $theme_root = get_option('template_root');
+       }
+
+       if ( empty($theme_root) ) {
+               $theme_roots = get_theme_roots();
+               if ( !empty($theme_roots[$stylesheet_or_template]) )
+                       $theme_root = $theme_roots[$stylesheet_or_template];
+       }
+
+       return $theme_root;
 }
 
 /**
 }
 
 /**
@@ -1163,7 +563,7 @@ function preview_theme() {
        }
 
        // Prevent theme mods to current theme being used on theme being previewed
        }
 
        // Prevent theme mods to current theme being used on theme being previewed
-       add_filter( 'pre_option_mods_' . get_current_theme(), '__return_empty_array' );
+       add_filter( 'pre_option_theme_mods_' . get_option( 'stylesheet' ), '__return_empty_array' );
 
        ob_start( 'preview_theme_ob_filter' );
 }
 
        ob_start( 'preview_theme_ob_filter' );
 }
@@ -1231,7 +631,7 @@ function preview_theme_ob_filter_callback( $matches ) {
        )
                return $matches[1] . "#$matches[2] onclick=$matches[2]return false;" . $matches[4];
 
        )
                return $matches[1] . "#$matches[2] onclick=$matches[2]return false;" . $matches[4];
 
-       $link = add_query_arg( array('preview' => 1, 'template' => $_GET['template'], 'stylesheet' => @$_GET['stylesheet'] ), $matches[3] );
+       $link = add_query_arg( array( 'preview' => 1, 'template' => $_GET['template'], 'stylesheet' => @$_GET['stylesheet'], 'preview_iframe' => 1 ), $matches[3] );
        if ( 0 === strpos($link, 'preview=1') )
                $link = "?$link";
        return $matches[1] . esc_attr( $link ) . $matches[4];
        if ( 0 === strpos($link, 'preview=1') )
                $link = "?$link";
        return $matches[1] . esc_attr( $link ) . $matches[4];
@@ -1241,37 +641,38 @@ function preview_theme_ob_filter_callback( $matches ) {
  * Switches current theme to new template and stylesheet names.
  *
  * @since 2.5.0
  * Switches current theme to new template and stylesheet names.
  *
  * @since 2.5.0
- * @uses do_action() Calls 'switch_theme' action on updated theme display name.
+ * @uses do_action() Calls 'switch_theme' action, passing the new theme.
  *
  * @param string $template Template name
  * @param string $stylesheet Stylesheet name.
  */
  *
  * @param string $template Template name
  * @param string $stylesheet Stylesheet name.
  */
-function switch_theme($template, $stylesheet) {
+function switch_theme( $template, $stylesheet ) {
        global $wp_theme_directories, $sidebars_widgets;
 
        if ( is_array( $sidebars_widgets ) )
                set_theme_mod( 'sidebars_widgets', array( 'time' => time(), 'data' => $sidebars_widgets ) );
 
        global $wp_theme_directories, $sidebars_widgets;
 
        if ( is_array( $sidebars_widgets ) )
                set_theme_mod( 'sidebars_widgets', array( 'time' => time(), 'data' => $sidebars_widgets ) );
 
-       $old_theme = get_current_theme();
+       $old_theme  = wp_get_theme();
+       $new_theme = wp_get_theme( $stylesheet );
+       $new_name  = $new_theme->get('Name');
 
 
-       update_option('template', $template);
-       update_option('stylesheet', $stylesheet);
+       update_option( 'template', $template );
+       update_option( 'stylesheet', $stylesheet );
 
 
-       if ( count($wp_theme_directories) > 1 ) {
-               update_option('template_root', get_raw_theme_root($template, true));
-               update_option('stylesheet_root', get_raw_theme_root($stylesheet, true));
+       if ( count( $wp_theme_directories ) > 1 ) {
+               update_option( 'template_root', get_raw_theme_root( $template, true ) );
+               update_option( 'stylesheet_root', get_raw_theme_root( $stylesheet, true ) );
        }
 
        }
 
-       delete_option('current_theme');
-       $theme = get_current_theme();
+       update_option( 'current_theme', $new_name );
 
 
-       if ( is_admin() && false === get_option( "theme_mods_$stylesheet" ) ) {
-               $default_theme_mods = (array) get_option( "mods_$theme" );
+       if ( is_admin() && false === get_option( 'theme_mods_' . $stylesheet ) ) {
+               $default_theme_mods = (array) get_option( 'mods_' . $new_name );
                add_option( "theme_mods_$stylesheet", $default_theme_mods );
        }
 
                add_option( "theme_mods_$stylesheet", $default_theme_mods );
        }
 
-       update_option( 'theme_switched', $old_theme );
-       do_action( 'switch_theme', $theme );
+       update_option( 'theme_switched', $old_theme->get_stylesheet() );
+       do_action( 'switch_theme', $new_name, $new_theme );
 }
 
 /**
 }
 
 /**
@@ -1279,7 +680,7 @@ function switch_theme($template, $stylesheet) {
  *
  * Does not check the default theme, which is the fallback and should always exist.
  * Will switch theme to the fallback theme if current theme does not validate.
  *
  * Does not check the default theme, which is the fallback and should always exist.
  * Will switch theme to the fallback theme if current theme does not validate.
- * You can use the 'validate_current_theme' filter to return FALSE to
+ * You can use the 'validate_current_theme' filter to return false to
  * disable this functionality.
  *
  * @since 1.5.0
  * disable this functionality.
  *
  * @since 1.5.0
@@ -1320,7 +721,9 @@ function validate_current_theme() {
 function get_theme_mods() {
        $theme_slug = get_option( 'stylesheet' );
        if ( false === ( $mods = get_option( "theme_mods_$theme_slug" ) ) ) {
 function get_theme_mods() {
        $theme_slug = get_option( 'stylesheet' );
        if ( false === ( $mods = get_option( "theme_mods_$theme_slug" ) ) ) {
-               $theme_name = get_current_theme();
+               $theme_name = get_option( 'current_theme' );
+               if ( false === $theme_name )
+                       $theme_name = wp_get_theme()->get('Name');
                $mods = get_option( "mods_$theme_name" ); // Deprecated location.
                if ( is_admin() && false !== $mods ) {
                        update_option( "theme_mods_$theme_slug", $mods );
                $mods = get_option( "mods_$theme_name" ); // Deprecated location.
                if ( is_admin() && false !== $mods ) {
                        update_option( "theme_mods_$theme_slug", $mods );
@@ -1351,7 +754,10 @@ function get_theme_mod( $name, $default = false ) {
        if ( isset( $mods[ $name ] ) )
                return apply_filters( "theme_mod_$name", $mods[ $name ] );
 
        if ( isset( $mods[ $name ] ) )
                return apply_filters( "theme_mod_$name", $mods[ $name ] );
 
-       return apply_filters( "theme_mod_$name", sprintf( $default, get_template_directory_uri(), get_stylesheet_directory_uri() ) );
+       if ( is_string( $default ) )
+               $default = sprintf( $default, get_template_directory_uri(), get_stylesheet_directory_uri() );
+
+       return apply_filters( "theme_mod_$name", $default );
 }
 
 /**
 }
 
 /**
@@ -1404,21 +810,23 @@ function remove_theme_mod( $name ) {
  */
 function remove_theme_mods() {
        delete_option( 'theme_mods_' . get_option( 'stylesheet' ) );
  */
 function remove_theme_mods() {
        delete_option( 'theme_mods_' . get_option( 'stylesheet' ) );
-       delete_option( 'mods_' . get_current_theme() );
+
+       // Old style.
+       $theme_name = get_option( 'current_theme' );
+       if ( false === $theme_name )
+               $theme_name = wp_get_theme()->get('Name');
+       delete_option( 'mods_' . $theme_name );
 }
 
 /**
  * Retrieve text color for custom header.
  *
  * @since 2.1.0
 }
 
 /**
  * Retrieve text color for custom header.
  *
  * @since 2.1.0
- * @uses HEADER_TEXTCOLOR
  *
  * @return string
  */
 function get_header_textcolor() {
  *
  * @return string
  */
 function get_header_textcolor() {
-       $default = defined('HEADER_TEXTCOLOR') ? HEADER_TEXTCOLOR : '';
-
-       return get_theme_mod('header_textcolor', $default);
+       return get_theme_mod('header_textcolor', get_theme_support( 'custom-header', 'default-text-color' ) );
 }
 
 /**
 }
 
 /**
@@ -1430,17 +838,30 @@ function header_textcolor() {
        echo get_header_textcolor();
 }
 
        echo get_header_textcolor();
 }
 
+/**
+ * Whether to display the header text.
+ *
+ * @since 3.4.0
+ *
+ * @return bool
+ */
+function display_header_text() {
+       if ( ! current_theme_supports( 'custom-header', 'header-text' ) )
+               return false;
+
+       $text_color = get_theme_mod( 'header_textcolor', get_theme_support( 'custom-header', 'default-text-color' ) );
+       return 'blank' != $text_color;
+}
+
 /**
  * Retrieve header image for custom header.
  *
  * @since 2.1.0
 /**
  * Retrieve header image for custom header.
  *
  * @since 2.1.0
- * @uses HEADER_IMAGE
  *
  * @return string
  */
 function get_header_image() {
  *
  * @return string
  */
 function get_header_image() {
-       $default = defined( 'HEADER_IMAGE' ) ? HEADER_IMAGE : '';
-       $url = get_theme_mod( 'header_image', $default );
+       $url = get_theme_mod( 'header_image', get_theme_support( 'custom-header', 'default-image' ) );
 
        if ( 'remove-header' == $url )
                return false;
 
        if ( 'remove-header' == $url )
                return false;
@@ -1457,37 +878,58 @@ function get_header_image() {
 }
 
 /**
 }
 
 /**
- * Get random header image from registered images in theme.
+ * Get random header image data from registered images in theme.
  *
  *
- * @since 3.2.0
+ * @since 3.4.0
+ *
+ * @access private
  *
  * @return string Path to header image
  */
  *
  * @return string Path to header image
  */
-function get_random_header_image() {
-       global $_wp_default_headers;
 
 
-       $header_image_mod = get_theme_mod( 'header_image', '' );
-       $headers = array();
+function _get_random_header_data() {
+       static $_wp_random_header;
 
 
-       if ( 'random-uploaded-image' == $header_image_mod )
-               $headers = get_uploaded_header_images();
-       elseif ( ! empty( $_wp_default_headers ) ) {
-               if ( 'random-default-image' == $header_image_mod ) {
-                       $headers = $_wp_default_headers;
-               } else {
-                       $is_random = get_theme_support( 'custom-header' );
-                       if ( isset( $is_random[ 0 ] ) && !empty( $is_random[ 0 ][ 'random-default' ] ) )
+       if ( empty( $_wp_random_header ) ) {
+               global $_wp_default_headers;
+               $header_image_mod = get_theme_mod( 'header_image', '' );
+               $headers = array();
+
+               if ( 'random-uploaded-image' == $header_image_mod )
+                       $headers = get_uploaded_header_images();
+               elseif ( ! empty( $_wp_default_headers ) ) {
+                       if ( 'random-default-image' == $header_image_mod ) {
                                $headers = $_wp_default_headers;
                                $headers = $_wp_default_headers;
+                       } else {
+                               if ( current_theme_supports( 'custom-header', 'random-default' ) )
+                                       $headers = $_wp_default_headers;
+                       }
                }
                }
-       }
 
 
-       if ( empty( $headers ) )
-               return '';
+               if ( empty( $headers ) )
+                       return new stdClass;
+
+               $_wp_random_header = (object) $headers[ array_rand( $headers ) ];
+
+               $_wp_random_header->url =  sprintf( $_wp_random_header->url, get_template_directory_uri(), get_stylesheet_directory_uri() );
+               $_wp_random_header->thumbnail_url =  sprintf( $_wp_random_header->thumbnail_url, get_template_directory_uri(), get_stylesheet_directory_uri() );
+       }
+       return $_wp_random_header;
+}
 
 
-       $random_image = array_rand( $headers );
-       $header_url = sprintf( $headers[$random_image]['url'], get_template_directory_uri(), get_stylesheet_directory_uri() );
+/**
+ * Get random header image url from registered images in theme.
+ *
+ * @since 3.2.0
+ *
+ * @return string Path to header image
+ */
 
 
-       return $header_url;
+function get_random_header_image() {
+       $random_image = _get_random_header_data();
+       if ( empty( $random_image->url ) )
+               return '';
+       return $random_image->url;
 }
 
 /**
 }
 
 /**
@@ -1498,14 +940,12 @@ function get_random_header_image() {
  * is chosen, and theme turns on random headers with add_theme_support().
  *
  * @since 3.2.0
  * is chosen, and theme turns on random headers with add_theme_support().
  *
  * @since 3.2.0
- * @uses HEADER_IMAGE
  *
  * @param string $type The random pool to use. any|default|uploaded
  * @return boolean
  */
 function is_random_header_image( $type = 'any' ) {
  *
  * @param string $type The random pool to use. any|default|uploaded
  * @return boolean
  */
 function is_random_header_image( $type = 'any' ) {
-       $default = defined( 'HEADER_IMAGE' ) ? HEADER_IMAGE : '';
-       $header_image_mod = get_theme_mod( 'header_image', $default );
+       $header_image_mod = get_theme_mod( 'header_image', get_theme_support( 'custom-header', 'default-image' ) );
 
        if ( 'any' == $type ) {
                if ( 'random-default-image' == $header_image_mod || 'random-uploaded-image' == $header_image_mod || ( '' != get_random_header_image() && empty( $header_image_mod ) ) )
 
        if ( 'any' == $type ) {
                if ( 'random-default-image' == $header_image_mod || 'random-uploaded-image' == $header_image_mod || ( '' != get_random_header_image() && empty( $header_image_mod ) ) )
@@ -1547,75 +987,35 @@ function get_uploaded_header_images() {
 
        foreach ( (array) $headers as $header ) {
                $url = esc_url_raw( $header->guid );
 
        foreach ( (array) $headers as $header ) {
                $url = esc_url_raw( $header->guid );
-               $header = basename($url);
-               $header_images[$header] = array();
-               $header_images[$header]['url'] =  $url;
-               $header_images[$header]['thumbnail_url'] =  $url;
-               $header_images[$header]['uploaded'] = true;
+               $header_data = wp_get_attachment_metadata( $header->ID );
+               $header_index = basename($url);
+               $header_images[$header_index] = array();
+               $header_images[$header_index]['attachment_id'] =  $header->ID;
+               $header_images[$header_index]['url'] =  $url;
+               $header_images[$header_index]['thumbnail_url'] =  $url;
+               $header_images[$header_index]['width'] = $header_data['width'];
+               $header_images[$header_index]['height'] = $header_data['height'];
        }
 
        return $header_images;
 }
 
 /**
        }
 
        return $header_images;
 }
 
 /**
- * Add callbacks for image header display.
- *
- * The parameter $header_callback callback will be required to display the
- * content for the 'wp_head' action. The parameter $admin_header_callback
- * callback will be added to Custom_Image_Header class and that will be added
- * to the 'admin_menu' action.
- *
- * @since 2.1.0
- * @uses Custom_Image_Header Sets up for $admin_header_callback for administration panel display.
- *
- * @param callback $header_callback Call on 'wp_head' action.
- * @param callback $admin_header_callback Call on custom header administration screen.
- * @param callback $admin_image_div_callback Output a custom header image div on the custom header administration screen. Optional.
- */
-function add_custom_image_header( $header_callback, $admin_header_callback, $admin_image_div_callback = '' ) {
-       if ( ! empty( $header_callback ) )
-               add_action('wp_head', $header_callback);
-
-       $support = array( 'callback' => $header_callback );
-       $theme_support = get_theme_support( 'custom-header' );
-       if ( ! empty( $theme_support ) && is_array( $theme_support[ 0 ] ) )
-               $support = array_merge( $theme_support[ 0 ], $support );
-       add_theme_support( 'custom-header',  $support );
-       add_theme_support( 'custom-header-uploads' );
-
-       if ( ! is_admin() )
-               return;
-
-       global $custom_image_header;
-
-       require_once( ABSPATH . 'wp-admin/custom-header.php' );
-       $custom_image_header = new Custom_Image_Header( $admin_header_callback, $admin_image_div_callback );
-       add_action( 'admin_menu', array( &$custom_image_header, 'init' ) );
-}
-
-/**
- * Remove image header support.
+ * Get the header image data.
  *
  *
- * @since 3.1.0
- * @see add_custom_image_header()
+ * @since 3.4.0
  *
  *
- * @return bool Whether support was removed.
+ * @return object
  */
  */
-function remove_custom_image_header() {
-       if ( ! current_theme_supports( 'custom-header' ) )
-               return false;
-
-       $callback = get_theme_support( 'custom-header' );
-       remove_action( 'wp_head', $callback[0]['callback'] );
-       _remove_theme_support( 'custom-header' );
-       remove_theme_support( 'custom-header-uploads' );
-
-       if ( is_admin() ) {
-               remove_action( 'admin_menu', array( &$GLOBALS['custom_image_header'], 'init' ) );
-               unset( $GLOBALS['custom_image_header'] );
-       }
-
-       return true;
+function get_custom_header() {
+       $data = is_random_header_image()? _get_random_header_data() : get_theme_mod( 'header_image_data' );
+       $default = array(
+               'url'           => '',
+               'thumbnail_url' => '',
+               'width'         => get_theme_support( 'custom-header', 'width' ),
+               'height'        => get_theme_support( 'custom-header', 'height' ),
+       );
+       return (object) wp_parse_args( $data, $default );
 }
 
 /**
 }
 
 /**
@@ -1663,9 +1063,7 @@ function unregister_default_headers( $header ) {
  * @return string
  */
 function get_background_image() {
  * @return string
  */
 function get_background_image() {
-       $default = defined('BACKGROUND_IMAGE') ? BACKGROUND_IMAGE : '';
-
-       return get_theme_mod('background_image', $default);
+       return get_theme_mod('background_image', get_theme_support( 'custom-background', 'default-image' ) );
 }
 
 /**
 }
 
 /**
@@ -1681,14 +1079,11 @@ function background_image() {
  * Retrieve value for custom background color.
  *
  * @since 3.0.0
  * Retrieve value for custom background color.
  *
  * @since 3.0.0
- * @uses BACKGROUND_COLOR
  *
  * @return string
  */
 function get_background_color() {
  *
  * @return string
  */
 function get_background_color() {
-       $default = defined('BACKGROUND_COLOR') ? BACKGROUND_COLOR : '';
-
-       return get_theme_mod('background_color', $default);
+       return get_theme_mod('background_color', get_theme_support( 'custom-background', 'default-color' ) );
 }
 
 /**
 }
 
 /**
@@ -1700,73 +1095,20 @@ function background_color() {
        echo get_background_color();
 }
 
        echo get_background_color();
 }
 
-/**
- * Add callbacks for background image display.
- *
- * The parameter $header_callback callback will be required to display the
- * content for the 'wp_head' action. The parameter $admin_header_callback
- * callback will be added to Custom_Background class and that will be added
- * to the 'admin_menu' action.
- *
- * @since 3.0.0
- * @uses Custom_Background Sets up for $admin_header_callback for administration panel display.
- *
- * @param callback $header_callback Call on 'wp_head' action.
- * @param callback $admin_header_callback Call on custom background administration screen.
- * @param callback $admin_image_div_callback Output a custom background image div on the custom background administration screen. Optional.
- */
-function add_custom_background( $header_callback = '', $admin_header_callback = '', $admin_image_div_callback = '' ) {
-       if ( isset( $GLOBALS['custom_background'] ) )
-               return;
-
-       if ( empty( $header_callback ) )
-               $header_callback = '_custom_background_cb';
-
-       add_action( 'wp_head', $header_callback );
-
-       add_theme_support( 'custom-background', array( 'callback' => $header_callback ) );
-
-       if ( ! is_admin() )
-               return;
-       require_once( ABSPATH . 'wp-admin/custom-background.php' );
-       $GLOBALS['custom_background'] = new Custom_Background( $admin_header_callback, $admin_image_div_callback );
-       add_action( 'admin_menu', array( &$GLOBALS['custom_background'], 'init' ) );
-}
-
-/**
- * Remove custom background support.
- *
- * @since 3.1.0
- * @see add_custom_background()
- *
- * @return bool Whether support was removed.
- */
-function remove_custom_background() {
-       if ( ! current_theme_supports( 'custom-background' ) )
-               return false;
-
-       $callback = get_theme_support( 'custom-background' );
-       remove_action( 'wp_head', $callback[0]['callback'] );
-       _remove_theme_support( 'custom-background' );
-
-       if ( is_admin() ) {
-               remove_action( 'admin_menu', array( &$GLOBALS['custom_background'], 'init' ) );
-               unset( $GLOBALS['custom_background'] );
-       }
-
-       return true;
-}
-
 /**
  * Default custom background callback.
  *
  * @since 3.0.0
 /**
  * Default custom background callback.
  *
  * @since 3.0.0
- * @see add_custom_background()
  * @access protected
  */
 function _custom_background_cb() {
  * @access protected
  */
 function _custom_background_cb() {
+       // $background is the saved custom image, or the default image.
        $background = get_background_image();
        $background = get_background_image();
-       $color = get_background_color();
+
+       // $color is the saved custom color.
+       // A default has to be specified in style.css. It will not be printed here.
+       $color = get_theme_mod( 'background_color' );
+
        if ( ! $background && ! $color )
                return;
 
        if ( ! $background && ! $color )
                return;
 
@@ -1793,7 +1135,7 @@ function _custom_background_cb() {
                $style .= $image . $repeat . $position . $attachment;
        }
 ?>
                $style .= $image . $repeat . $position . $attachment;
        }
 ?>
-<style type="text/css">
+<style type="text/css" id="custom-background-css">
 body.custom-background { <?php echo trim( $style ); ?> }
 </style>
 <?php
 body.custom-background { <?php echo trim( $style ); ?> }
 </style>
 <?php
@@ -1806,10 +1148,14 @@ body.custom-background { <?php echo trim( $style ); ?> }
  * the theme root. It also accepts an array of stylesheets.
  * It is optional and defaults to 'editor-style.css'.
  *
  * the theme root. It also accepts an array of stylesheets.
  * It is optional and defaults to 'editor-style.css'.
  *
- * Supports RTL stylesheets automatically by searching for the -rtl prefix, e.g.
- * editor-style-rtl.css. If an array of stylesheets is passed to add_editor_style(),
+ * This function automatically adds another stylesheet with -rtl prefix, e.g. editor-style-rtl.css.
+ * If that file doesn't exist, it is removed before adding the stylesheet(s) to TinyMCE.
+ * If an array of stylesheets is passed to add_editor_style(),
  * RTL is only added for the first stylesheet.
  *
  * RTL is only added for the first stylesheet.
  *
+ * Since version 3.4 the TinyMCE body has .rtl CSS class.
+ * It is a better option to use that class and add any RTL styles to the main stylesheet.
+ *
  * @since 3.0.0
  *
  * @param mixed $stylesheet Optional. Stylesheet name or array thereof, relative to theme root.
  * @since 3.0.0
  *
  * @param mixed $stylesheet Optional. Stylesheet name or array thereof, relative to theme root.
@@ -1863,13 +1209,172 @@ function add_theme_support( $feature ) {
        global $_wp_theme_features;
 
        if ( func_num_args() == 1 )
        global $_wp_theme_features;
 
        if ( func_num_args() == 1 )
-               $_wp_theme_features[$feature] = true;
+               $args = true;
        else
        else
-               $_wp_theme_features[$feature] = array_slice( func_get_args(), 1 );
+               $args = array_slice( func_get_args(), 1 );
+
+       switch ( $feature ) {
+               case 'post-formats' :
+                       if ( is_array( $args[0] ) )
+                               $args[0] = array_intersect( $args[0], array_keys( get_post_format_slugs() ) );
+                       break;
+
+               case 'custom-header-uploads' :
+                       return add_theme_support( 'custom-header', array( 'uploads' => true ) );
+                       break;
+
+               case 'custom-header' :
+                       if ( ! is_array( $args ) )
+                               $args = array( 0 => array() );
+
+                       $defaults = array(
+                               'default-image' => '',
+                               'random-default' => false,
+                               'width' => 0,
+                               'height' => 0,
+                               'flex-height' => false,
+                               'flex-width' => false,
+                               'default-text-color' => '',
+                               'header-text' => true,
+                               'uploads' => true,
+                               'wp-head-callback' => '',
+                               'admin-head-callback' => '',
+                               'admin-preview-callback' => '',
+                       );
+
+                       $jit = isset( $args[0]['__jit'] );
+                       unset( $args[0]['__jit'] );
+
+                       // Merge in data from previous add_theme_support() calls.
+                       // The first value registered wins. (A child theme is set up first.)
+                       if ( isset( $_wp_theme_features['custom-header'] ) )
+                               $args[0] = wp_parse_args( $_wp_theme_features['custom-header'][0], $args[0] );
+
+                       // Load in the defaults at the end, as we need to insure first one wins.
+                       // This will cause all constants to be defined, as each arg will then be set to the default.
+                       if ( $jit )
+                               $args[0] = wp_parse_args( $args[0], $defaults );
+
+                       // If a constant was defined, use that value. Otherwise, define the constant to ensure
+                       // the constant is always accurate (and is not defined later,  overriding our value).
+                       // As stated above, the first value wins.
+                       // Once we get to wp_loaded (just-in-time), define any constants we haven't already.
+                       // Constants are lame. Don't reference them. This is just for backwards compatibility.
+
+                       if ( defined( 'NO_HEADER_TEXT' ) )
+                               $args[0]['header-text'] = ! NO_HEADER_TEXT;
+                       elseif ( isset( $args[0]['header-text'] ) )
+                               define( 'NO_HEADER_TEXT', empty( $args[0]['header-text'] ) );
+
+                       if ( defined( 'HEADER_IMAGE_WIDTH' ) )
+                               $args[0]['width'] = (int) HEADER_IMAGE_WIDTH;
+                       elseif ( isset( $args[0]['width'] ) )
+                               define( 'HEADER_IMAGE_WIDTH', (int) $args[0]['width'] );
+
+                       if ( defined( 'HEADER_IMAGE_HEIGHT' ) )
+                               $args[0]['height'] = (int) HEADER_IMAGE_HEIGHT;
+                       elseif ( isset( $args[0]['height'] ) )
+                               define( 'HEADER_IMAGE_HEIGHT', (int) $args[0]['height'] );
+
+                       if ( defined( 'HEADER_TEXTCOLOR' ) )
+                               $args[0]['default-text-color'] = HEADER_TEXTCOLOR;
+                       elseif ( isset( $args[0]['default-text-color'] ) )
+                               define( 'HEADER_TEXTCOLOR', $args[0]['default-text-color'] );
+
+                       if ( defined( 'HEADER_IMAGE' ) )
+                               $args[0]['default-image'] = HEADER_IMAGE;
+                       elseif ( isset( $args[0]['default-image'] ) )
+                               define( 'HEADER_IMAGE', $args[0]['default-image'] );
+
+                       if ( $jit && ! empty( $args[0]['default-image'] ) )
+                               $args[0]['random-default'] = false;
+
+                       // If headers are supported, and we still don't have a defined width or height,
+                       // we have implicit flex sizes.
+                       if ( $jit ) {
+                               if ( empty( $args[0]['width'] ) && empty( $args[0]['flex-width'] ) )
+                                       $args[0]['flex-width'] = true;
+                               if ( empty( $args[0]['height'] ) && empty( $args[0]['flex-height'] ) )
+                                       $args[0]['flex-height'] = true;
+                       }
+
+                       break;
+
+               case 'custom-background' :
+                       if ( ! is_array( $args ) )
+                               $args = array( 0 => array() );
+
+                       $defaults = array(
+                               'default-image' => '',
+                               'default-color' => '',
+                               'wp-head-callback' => '_custom_background_cb',
+                               'admin-head-callback' => '',
+                               'admin-preview-callback' => '',
+                       );
+
+                       $jit = isset( $args[0]['__jit'] );
+                       unset( $args[0]['__jit'] );
+
+                       // Merge in data from previous add_theme_support() calls. The first value registered wins.
+                       if ( isset( $_wp_theme_features['custom-background'] ) )
+                               $args[0] = wp_parse_args( $_wp_theme_features['custom-background'][0], $args[0] );
+
+                       if ( $jit )
+                               $args[0] = wp_parse_args( $args[0], $defaults );
+
+                       if ( defined( 'BACKGROUND_COLOR' ) )
+                               $args[0]['default-color'] = BACKGROUND_COLOR;
+                       elseif ( isset( $args[0]['default-color'] ) || $jit )
+                               define( 'BACKGROUND_COLOR', $args[0]['default-color'] );
+
+                       if ( defined( 'BACKGROUND_IMAGE' ) )
+                               $args[0]['default-image'] = BACKGROUND_IMAGE;
+                       elseif ( isset( $args[0]['default-image'] ) || $jit )
+                               define( 'BACKGROUND_IMAGE', $args[0]['default-image'] );
+
+                       break;
+       }
+
+       $_wp_theme_features[ $feature ] = $args;
+}
 
 
-       if ( $feature == 'post-formats' && is_array( $_wp_theme_features[$feature][0] ) )
-               $_wp_theme_features[$feature][0] = array_intersect( $_wp_theme_features[$feature][0], array_keys( get_post_format_slugs() ) );
+/**
+ * Registers the internal custom header and background routines.
+ *
+ * @since 3.4.0
+ * @access private
+ */
+function _custom_header_background_just_in_time() {
+       global $custom_image_header, $custom_background;
+
+       if ( current_theme_supports( 'custom-header' ) ) {
+               // In case any constants were defined after an add_custom_image_header() call, re-run.
+               add_theme_support( 'custom-header', array( '__jit' => true ) );
+
+               $args = get_theme_support( 'custom-header' );
+               if ( $args[0]['wp-head-callback'] )
+                       add_action( 'wp_head', $args[0]['wp-head-callback'] );
+
+               if ( is_admin() ) {
+                       require_once( ABSPATH . 'wp-admin/custom-header.php' );
+                       $custom_image_header = new Custom_Image_Header( $args[0]['admin-head-callback'], $args[0]['admin-preview-callback'] );
+               }
+       }
+
+       if ( current_theme_supports( 'custom-background' ) ) {
+               // In case any constants were defined after an add_custom_background() call, re-run.
+               add_theme_support( 'custom-background', array( '__jit' => true ) );
+
+               $args = get_theme_support( 'custom-background' );
+               add_action( 'wp_head', $args[0]['wp-head-callback'] );
+
+               if ( is_admin() ) {
+                       require_once( ABSPATH . 'wp-admin/custom-background.php' );
+                       $custom_background = new Custom_Background( $args[0]['admin-head-callback'], $args[0]['admin-preview-callback'] );
+               }
+       }
 }
 }
+add_action( 'wp_loaded', '_custom_header_background_just_in_time' );
 
 /**
  * Gets the theme support arguments passed when registering that support
 
 /**
  * Gets the theme support arguments passed when registering that support
@@ -1880,10 +1385,24 @@ function add_theme_support( $feature ) {
  */
 function get_theme_support( $feature ) {
        global $_wp_theme_features;
  */
 function get_theme_support( $feature ) {
        global $_wp_theme_features;
-       if ( !isset( $_wp_theme_features[$feature] ) )
+       if ( ! isset( $_wp_theme_features[ $feature ] ) )
                return false;
                return false;
-       else
-               return $_wp_theme_features[$feature];
+
+       if ( func_num_args() <= 1 )
+               return $_wp_theme_features[ $feature ];
+
+       $args = array_slice( func_get_args(), 1 );
+       switch ( $feature ) {
+               case 'custom-header' :
+               case 'custom-background' :
+                       if ( isset( $_wp_theme_features[ $feature ][0][ $args[0] ] ) )
+                               return $_wp_theme_features[ $feature ][0][ $args[0] ];
+                       return false;
+                       break;
+               default :
+                       return $_wp_theme_features[ $feature ];
+                       break;
+       }
 }
 
 /**
 }
 
 /**
@@ -1899,8 +1418,9 @@ function get_theme_support( $feature ) {
  */
 function remove_theme_support( $feature ) {
        // Blacklist: for internal registrations not used directly by themes.
  */
 function remove_theme_support( $feature ) {
        // Blacklist: for internal registrations not used directly by themes.
-       if ( in_array( $feature, array( 'custom-background', 'custom-header', 'editor-style', 'widgets', 'menus' ) ) )
+       if ( in_array( $feature, array( 'editor-style', 'widgets', 'menus' ) ) )
                return false;
                return false;
+
        return _remove_theme_support( $feature );
 }
 
        return _remove_theme_support( $feature );
 }
 
@@ -1913,9 +1433,35 @@ function remove_theme_support( $feature ) {
 function _remove_theme_support( $feature ) {
        global $_wp_theme_features;
 
 function _remove_theme_support( $feature ) {
        global $_wp_theme_features;
 
-       if ( ! isset( $_wp_theme_features[$feature] ) )
+       switch ( $feature ) {
+               case 'custom-header-uploads' :
+                       if ( ! isset( $_wp_theme_features['custom-header'] ) )
+                               return false;
+                       add_theme_support( 'custom-header', array( 'uploads' => false ) );
+                       return; // Do not continue - custom-header-uploads no longer exists.
+       }
+
+       if ( ! isset( $_wp_theme_features[ $feature ] ) )
                return false;
                return false;
-       unset( $_wp_theme_features[$feature] );
+
+       switch ( $feature ) {
+               case 'custom-header' :
+                       $support = get_theme_support( 'custom-header' );
+                       if ( $support[0]['wp-head-callback'] )
+                               remove_action( 'wp_head', $support[0]['wp-head-callback'] );
+                       remove_action( 'admin_menu', array( $GLOBALS['custom_image_header'], 'init' ) );
+                       unset( $GLOBALS['custom_image_header'] );
+                       break;
+
+               case 'custom-background' :
+                       $support = get_theme_support( 'custom-background' );
+                       remove_action( 'wp_head', $support[0]['wp-head-callback'] );
+                       remove_action( 'admin_menu', array( $GLOBALS['custom_background'], 'init' ) );
+                       unset( $GLOBALS['custom_background'] );
+                       break;
+       }
+
+       unset( $_wp_theme_features[ $feature ] );
        return true;
 }
 
        return true;
 }
 
@@ -1929,6 +1475,9 @@ function _remove_theme_support( $feature ) {
 function current_theme_supports( $feature ) {
        global $_wp_theme_features;
 
 function current_theme_supports( $feature ) {
        global $_wp_theme_features;
 
+       if ( 'custom-header-uploads' == $feature )
+               return current_theme_supports( 'custom-header', 'uploads' );
+
        if ( !isset( $_wp_theme_features[$feature] ) )
                return false;
 
        if ( !isset( $_wp_theme_features[$feature] ) )
                return false;
 
@@ -1938,11 +1487,10 @@ function current_theme_supports( $feature ) {
 
        $args = array_slice( func_get_args(), 1 );
 
 
        $args = array_slice( func_get_args(), 1 );
 
-       // @todo Allow pluggable arg checking
        switch ( $feature ) {
                case 'post-thumbnails':
                        // post-thumbnails can be registered for only certain content/post types by passing
        switch ( $feature ) {
                case 'post-thumbnails':
                        // post-thumbnails can be registered for only certain content/post types by passing
-                       // an array of types to add_theme_support().  If no array was passed, then
+                       // an array of types to add_theme_support(). If no array was passed, then
                        // any type is accepted
                        if ( true === $_wp_theme_features[$feature] )  // Registered for all types
                                return true;
                        // any type is accepted
                        if ( true === $_wp_theme_features[$feature] )  // Registered for all types
                                return true;
@@ -1956,9 +1504,17 @@ function current_theme_supports( $feature ) {
                        $post_format = $args[0];
                        return in_array( $post_format, $_wp_theme_features[$feature][0] );
                        break;
                        $post_format = $args[0];
                        return in_array( $post_format, $_wp_theme_features[$feature][0] );
                        break;
+
+               case 'custom-header':
+               case 'custom-background' :
+                       // specific custom header and background capabilities can be registered by passing
+                       // an array to add_theme_support()
+                       $header_support = $args[0];
+                       return ( isset( $_wp_theme_features[$feature][0][$header_support] ) && $_wp_theme_features[$feature][0][$header_support] );
+                       break;
        }
 
        }
 
-       return true;
+       return apply_filters('current_theme_supports-' . $feature, true, $args, $_wp_theme_features[$feature]);
 }
 
 /**
 }
 
 /**
@@ -2000,11 +1556,121 @@ add_action( 'delete_attachment', '_delete_attachment_theme_mod' );
 /**
  * Checks if a theme has been changed and runs 'after_switch_theme' hook on the next WP load
  *
 /**
  * Checks if a theme has been changed and runs 'after_switch_theme' hook on the next WP load
  *
- * @since 3.3
+ * @since 3.3.0
  */
 function check_theme_switched() {
  */
 function check_theme_switched() {
-       if ( false !== ( $old_theme = get_option( 'theme_switched' ) ) && !empty( $old_theme ) ) {
-               do_action( 'after_switch_theme', $old_theme );
+       if ( $stylesheet = get_option( 'theme_switched' ) ) {
+               $old_theme = wp_get_theme( $stylesheet );
+
+               if ( $old_theme->exists() )
+                       do_action( 'after_switch_theme', $old_theme->get('Name'), $old_theme );
+               else
+                       do_action( 'after_switch_theme', $stylesheet );
+
                update_option( 'theme_switched', false );
        }
 }
                update_option( 'theme_switched', false );
        }
 }
+
+/**
+ * Includes and instantiates the WP_Customize_Manager class.
+ *
+ * Fires when ?wp_customize=on or on wp-admin/customize.php.
+ *
+ * @since 3.4.0
+ */
+function _wp_customize_include() {
+       if ( ! ( ( isset( $_REQUEST['wp_customize'] ) && 'on' == $_REQUEST['wp_customize'] )
+               || ( is_admin() && 'customize.php' == basename( $_SERVER['PHP_SELF'] ) )
+       ) )
+               return;
+
+       require( ABSPATH . WPINC . '/class-wp-customize-manager.php' );
+       // Init Customize class
+       $GLOBALS['wp_customize'] = new WP_Customize_Manager;
+}
+add_action( 'plugins_loaded', '_wp_customize_include' );
+
+/**
+ * Adds settings for the customize-loader script.
+ *
+ * @since 3.4.0
+ */
+function _wp_customize_loader_settings() {
+       global $wp_scripts;
+
+       $admin_origin = parse_url( admin_url() );
+       $home_origin  = parse_url( home_url() );
+       $cross_domain = ( strtolower( $admin_origin[ 'host' ] ) != strtolower( $home_origin[ 'host' ] ) );
+
+       $browser = array(
+               'mobile' => wp_is_mobile(),
+               'ios'    => wp_is_mobile() && preg_match( '/iPad|iPod|iPhone/', $_SERVER['HTTP_USER_AGENT'] ),
+       );
+
+       $settings = array(
+               'url'           => esc_url( admin_url( 'customize.php' ) ),
+               'isCrossDomain' => $cross_domain,
+               'browser'       => $browser,
+       );
+
+       $script = 'var _wpCustomizeLoaderSettings = ' . json_encode( $settings ) . ';';
+
+       $data = $wp_scripts->get_data( 'customize-loader', 'data' );
+       if ( $data )
+               $script = "$data\n$script";
+
+       $wp_scripts->add_data( 'customize-loader', 'data', $script );
+}
+add_action( 'admin_enqueue_scripts', '_wp_customize_loader_settings' );
+
+/**
+ * Returns a URL to load the theme customizer.
+ *
+ * @since 3.4.0
+ *
+ * @param string $stylesheet Optional. Theme to customize. Defaults to current theme.
+ */
+function wp_customize_url( $stylesheet = null ) {
+       $url = admin_url( 'customize.php' );
+       if ( $stylesheet )
+               $url .= '?theme=' . $stylesheet;
+       return esc_url( $url );
+}
+
+/**
+ * Prints a script to check whether or not the customizer is supported,
+ * and apply either the no-customize-support or customize-support class
+ * to the body.
+ *
+ * This function MUST be called inside the body tag.
+ *
+ * Ideally, call this function immediately after the body tag is opened.
+ * This prevents a flash of unstyled content.
+ *
+ * It is also recommended that you add the "no-customize-support" class
+ * to the body tag by default.
+ *
+ * @since 3.4.0
+ */
+function wp_customize_support_script() {
+       $admin_origin = parse_url( admin_url() );
+       $home_origin  = parse_url( home_url() );
+       $cross_domain = ( strtolower( $admin_origin[ 'host' ] ) != strtolower( $home_origin[ 'host' ] ) );
+
+       ?>
+       <script type="text/javascript">
+               (function() {
+                       var request, b = document.body, c = 'className', cs = 'customize-support', rcs = new RegExp('(^|\\s+)(no-)?'+cs+'(\\s+|$)');
+
+<?php          if ( $cross_domain ): ?>
+                       request = (function(){ var xhr = new XMLHttpRequest(); return ('withCredentials' in xhr); })();
+<?php          else: ?>
+                       request = true;
+<?php          endif; ?>
+
+                       b[c] = b[c].replace( rcs, '' );
+                       b[c] += ( window.postMessage && request ? ' ' : ' no-' ) + cs;
+               }());
+       </script>
+       <?php
+}
\ No newline at end of file
index f832dc28501745d1c82e646485e6dac9d97693ab..7fdaede33cdcf8ab4dfbe60722c8dcdf32609754 100644 (file)
@@ -34,6 +34,12 @@ function wp_version_check() {
                $current->version_checked = $wp_version;
        }
 
                $current->version_checked = $wp_version;
        }
 
+       // Wait 60 seconds between multiple version check requests
+       $timeout = 60;
+       $time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked );
+       if ( $time_not_changed )
+               return false;
+
        $locale = apply_filters( 'core_version_check_locale', get_locale() );
 
        // Update last_checked for current to prevent multiple blocking requests if request hangs
        $locale = apply_filters( 'core_version_check_locale', get_locale() );
 
        // Update last_checked for current to prevent multiple blocking requests if request hangs
@@ -85,10 +91,11 @@ function wp_version_check() {
                return false;
 
        $body = trim( wp_remote_retrieve_body( $response ) );
                return false;
 
        $body = trim( wp_remote_retrieve_body( $response ) );
-       if ( ! $body = maybe_unserialize( $body ) )
-               return false;
-       if ( ! isset( $body['offers'] ) )
+       $body = maybe_unserialize( $body );
+
+       if ( ! is_array( $body ) || ! isset( $body['offers'] ) )
                return false;
                return false;
+
        $offers = $body['offers'];
 
        foreach ( $offers as &$offer ) {
        $offers = $body['offers'];
 
        foreach ( $offers as &$offer ) {
@@ -143,30 +150,44 @@ function wp_update_plugins() {
 
        $new_option = new stdClass;
        $new_option->last_checked = time();
 
        $new_option = new stdClass;
        $new_option->last_checked = time();
-       // Check for updated every 60 minutes if hitting update pages; else, check every 12 hours.
-       $timeout = in_array( current_filter(), array( 'load-plugins.php', 'load-update.php', 'load-update-core.php' ) ) ? 3600 : 43200;
-       $time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked );
-
-       $plugin_changed = false;
-       foreach ( $plugins as $file => $p ) {
-               $new_option->checked[ $file ] = $p['Version'];
 
 
-               if ( !isset( $current->checked[ $file ] ) || strval($current->checked[ $file ]) !== strval($p['Version']) )
-                       $plugin_changed = true;
+       // Check for update on a different schedule, depending on the page.
+       switch ( current_filter() ) {
+               case 'load-update-core.php' :
+                       $timeout = 60; // 1 min
+                       break;
+               case 'load-plugins.php' :
+               case 'load-update.php' :
+                       $timeout = 3600; // 1 hour
+                       break;
+               default :
+                       $timeout = 43200; // 12 hours
        }
 
        }
 
-       if ( isset ( $current->response ) && is_array( $current->response ) ) {
-               foreach ( $current->response as $plugin_file => $update_details ) {
-                       if ( ! isset($plugins[ $plugin_file ]) ) {
+       $time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked );
+
+       if ( $time_not_changed ) {
+               $plugin_changed = false;
+               foreach ( $plugins as $file => $p ) {
+                       $new_option->checked[ $file ] = $p['Version'];
+
+                       if ( !isset( $current->checked[ $file ] ) || strval($current->checked[ $file ]) !== strval($p['Version']) )
                                $plugin_changed = true;
                                $plugin_changed = true;
-                               break;
+               }
+
+               if ( isset ( $current->response ) && is_array( $current->response ) ) {
+                       foreach ( $current->response as $plugin_file => $update_details ) {
+                               if ( ! isset($plugins[ $plugin_file ]) ) {
+                                       $plugin_changed = true;
+                                       break;
+                               }
                        }
                }
                        }
                }
-       }
 
 
-       // Bail if we've checked in the last 12 hours and if nothing has changed
-       if ( $time_not_changed && !$plugin_changed )
-               return false;
+               // Bail if we've checked recently and if nothing has changed
+               if ( ! $plugin_changed )
+                       return false;
+       }
 
        // Update last_checked for current to prevent multiple blocking requests if request hangs
        $current->last_checked = time();
 
        // Update last_checked for current to prevent multiple blocking requests if request hangs
        $current->last_checked = time();
@@ -185,9 +206,9 @@ function wp_update_plugins() {
        if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) )
                return false;
 
        if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) )
                return false;
 
-       $response = unserialize( wp_remote_retrieve_body( $raw_response ) );
+       $response = maybe_unserialize( wp_remote_retrieve_body( $raw_response ) );
 
 
-       if ( false !== $response )
+       if ( is_array( $response ) )
                $new_option->response = $response;
        else
                $new_option->response = array();
                $new_option->response = $response;
        else
                $new_option->response = array();
@@ -214,57 +235,68 @@ function wp_update_themes() {
        if ( defined( 'WP_INSTALLING' ) )
                return false;
 
        if ( defined( 'WP_INSTALLING' ) )
                return false;
 
-       if ( !function_exists( 'get_themes' ) )
-               require_once( ABSPATH . 'wp-includes/theme.php' );
-
-       $installed_themes = get_themes( );
+       $installed_themes = wp_get_themes();
        $last_update = get_site_transient( 'update_themes' );
        if ( ! is_object($last_update) )
                $last_update = new stdClass;
 
        $last_update = get_site_transient( 'update_themes' );
        if ( ! is_object($last_update) )
                $last_update = new stdClass;
 
-       // Check for updated every 60 minutes if hitting update pages; else, check every 12 hours.
-       $timeout = in_array( current_filter(), array( 'load-themes.php', 'load-update.php', 'load-update-core.php' ) ) ? 3600 : 43200;
-       $time_not_changed = isset( $last_update->last_checked ) && $timeout > ( time( ) - $last_update->last_checked );
-
        $themes = array();
        $checked = array();
        $themes = array();
        $checked = array();
-       $exclude_fields = array('Template Files', 'Stylesheet Files', 'Status', 'Theme Root', 'Theme Root URI', 'Template Dir', 'Stylesheet Dir', 'Description', 'Tags', 'Screenshot');
 
        // Put slug of current theme into request.
        $themes['current_theme'] = get_option( 'stylesheet' );
 
 
        // Put slug of current theme into request.
        $themes['current_theme'] = get_option( 'stylesheet' );
 
-       foreach ( (array) $installed_themes as $theme_title => $theme ) {
-               $themes[$theme['Stylesheet']] = array();
-               $checked[$theme['Stylesheet']] = $theme['Version'];
-
-               $themes[$theme['Stylesheet']]['Name'] = $theme['Name'];
-               $themes[$theme['Stylesheet']]['Version'] = $theme['Version'];
+       foreach ( $installed_themes as $theme ) {
+               $checked[ $theme->get_stylesheet() ] = $theme->get('Version');
+
+               $themes[ $theme->get_stylesheet() ] = array(
+                       'Name'       => $theme->get('Name'),
+                       'Title'      => $theme->get('Name'),
+                       'Version'    => $theme->get('Version'),
+                       'Author'     => $theme->get('Author'),
+                       'Author URI' => $theme->get('AuthorURI'),
+                       'Template'   => $theme->get_template(),
+                       'Stylesheet' => $theme->get_stylesheet(),
+               );
+       }
 
 
-               foreach ( (array) $theme as $key => $value ) {
-                       if ( !in_array($key, $exclude_fields) )
-                               $themes[$theme['Stylesheet']][$key] = $value;
-               }
+       // Check for update on a different schedule, depending on the page.
+       switch ( current_filter() ) {
+               case 'load-update-core.php' :
+                       $timeout = 60; // 1 min
+                       break;
+               case 'load-themes.php' :
+               case 'load-update.php' :
+                       $timeout = 3600; // 1 hour
+                       break;
+               default :
+                       $timeout = 43200; // 12 hours
        }
 
        }
 
-       $theme_changed = false;
-       foreach ( $checked as $slug => $v ) {
-               $update_request->checked[ $slug ] = $v;
+       $time_not_changed = isset( $last_update->last_checked ) && $timeout > ( time( ) - $last_update->last_checked );
 
 
-               if ( !isset( $last_update->checked[ $slug ] ) || strval($last_update->checked[ $slug ]) !== strval($v) )
-                       $theme_changed = true;
-       }
+       if ( $time_not_changed ) {
+               $theme_changed = false;
+               foreach ( $checked as $slug => $v ) {
+                       $update_request->checked[ $slug ] = $v;
 
 
-       if ( isset ( $last_update->response ) && is_array( $last_update->response ) ) {
-               foreach ( $last_update->response as $slug => $update_details ) {
-                       if ( ! isset($checked[ $slug ]) ) {
+                       if ( !isset( $last_update->checked[ $slug ] ) || strval($last_update->checked[ $slug ]) !== strval($v) )
                                $theme_changed = true;
                                $theme_changed = true;
-                               break;
+               }
+
+               if ( isset ( $last_update->response ) && is_array( $last_update->response ) ) {
+                       foreach ( $last_update->response as $slug => $update_details ) {
+                               if ( ! isset($checked[ $slug ]) ) {
+                                       $theme_changed = true;
+                                       break;
+                               }
                        }
                }
                        }
                }
-       }
 
 
-       if ( $time_not_changed && !$theme_changed )
-               return false;
+               // Bail if we've checked recently and if nothing has changed
+               if ( ! $theme_changed )
+                       return false;
+       }
 
        // Update last_checked for current to prevent multiple blocking requests if request hangs
        $last_update->last_checked = time();
 
        // Update last_checked for current to prevent multiple blocking requests if request hangs
        $last_update->last_checked = time();
@@ -285,8 +317,8 @@ function wp_update_themes() {
        $new_update->last_checked = time( );
        $new_update->checked = $checked;
 
        $new_update->last_checked = time( );
        $new_update->checked = $checked;
 
-       $response = unserialize( wp_remote_retrieve_body( $raw_response ) );
-       if ( false !== $response )
+       $response = maybe_unserialize( wp_remote_retrieve_body( $raw_response ) );
+       if ( is_array( $response ) )
                $new_update->response = $response;
 
        set_site_transient( 'update_themes', $new_update );
                $new_update->response = $response;
 
        set_site_transient( 'update_themes', $new_update );
@@ -397,7 +429,7 @@ function wp_schedule_update_checks() {
                wp_schedule_event(time(), 'twicedaily', 'wp_update_themes');
 }
 
                wp_schedule_event(time(), 'twicedaily', 'wp_update_themes');
 }
 
-if ( ! is_main_site() && ! is_network_admin() )
+if ( ( ! is_main_site() && ! is_network_admin() ) || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) )
        return;
 
 add_action( 'admin_init', '_maybe_update_core' );
        return;
 
 add_action( 'admin_init', '_maybe_update_core' );
@@ -416,5 +448,3 @@ add_action( 'admin_init', '_maybe_update_themes' );
 add_action( 'wp_update_themes', 'wp_update_themes' );
 
 add_action('init', 'wp_schedule_update_checks');
 add_action( 'wp_update_themes', 'wp_update_themes' );
 
 add_action('init', 'wp_schedule_update_checks');
-
-?>
index cdec57e2cb1d7d033c4e1b0903ba2b64d961ed4c..6b342c8576d046ca6fd1d65fb22b5239b1f24674 100644 (file)
@@ -65,7 +65,6 @@ function wp_signon( $credentials = '', $secure_cookie = '' ) {
        return $user;
 }
 
        return $user;
 }
 
-
 /**
  * Authenticate the user using the username and password.
  */
 /**
  * Authenticate the user using the username and password.
  */
@@ -154,7 +153,7 @@ function wp_authenticate_cookie($user, $username, $password) {
 function count_user_posts($userid) {
        global $wpdb;
 
 function count_user_posts($userid) {
        global $wpdb;
 
-       $where = get_posts_by_author_sql('post', TRUE, $userid);
+       $where = get_posts_by_author_sql('post', true, $userid);
 
        $count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts $where" );
 
 
        $count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts $where" );
 
@@ -165,11 +164,12 @@ function count_user_posts($userid) {
  * Number of posts written by a list of users.
  *
  * @since 3.0.0
  * Number of posts written by a list of users.
  *
  * @since 3.0.0
- * @param array $user_ids Array of user IDs.
+ *
+ * @param array $users Array of user IDs.
  * @param string|array $post_type Optional. Post type to check. Defaults to post.
  * @return array Amount of posts each user has written.
  */
  * @param string|array $post_type Optional. Post type to check. Defaults to post.
  * @return array Amount of posts each user has written.
  */
-function count_many_users_posts($users, $post_type = 'post' ) {
+function count_many_users_posts( $users, $post_type = 'post' ) {
        global $wpdb;
 
        $count = array();
        global $wpdb;
 
        $count = array();
@@ -259,7 +259,7 @@ function get_user_option( $option, $user = 0, $deprecated = '' ) {
        else
                $user = new WP_User( $user );
 
        else
                $user = new WP_User( $user );
 
-       if ( ! isset( $user->ID ) )
+       if ( ! $user->exists() )
                return false;
 
        if ( $user->has_prop( $wpdb->prefix . $option ) ) // Blog specific
                return false;
 
        if ( $user->has_prop( $wpdb->prefix . $option ) ) // Blog specific
@@ -359,7 +359,6 @@ class WP_User_Query {
        var $query_orderby;
        var $query_limit;
 
        var $query_orderby;
        var $query_limit;
 
-
        /**
         * PHP5 constructor
         *
        /**
         * PHP5 constructor
         *
@@ -379,6 +378,7 @@ class WP_User_Query {
                                'include' => array(),
                                'exclude' => array(),
                                'search' => '',
                                'include' => array(),
                                'exclude' => array(),
                                'search' => '',
+                               'search_columns' => array(),
                                'orderby' => 'login',
                                'order' => 'ASC',
                                'offset' => '',
                                'orderby' => 'login',
                                'order' => 'ASC',
                                'offset' => '',
@@ -477,14 +477,19 @@ class WP_User_Query {
                        if ( $wild )
                                $search = trim($search, '*');
 
                        if ( $wild )
                                $search = trim($search, '*');
 
-                       if ( false !== strpos( $search, '@') )
-                               $search_columns = array('user_email');
-                       elseif ( is_numeric($search) )
-                               $search_columns = array('user_login', 'ID');
-                       elseif ( preg_match('|^https?://|', $search) )
-                               $search_columns = array('user_url');
-                       else
-                               $search_columns = array('user_login', 'user_nicename');
+                       $search_columns = array();
+                       if ( $qv['search_columns'] )
+                               $search_columns = array_intersect( $qv['search_columns'], array( 'ID', 'user_login', 'user_email', 'user_url', 'user_nicename' ) );
+                       if ( ! $search_columns ) {
+                               if ( false !== strpos( $search, '@') )
+                                       $search_columns = array('user_email');
+                               elseif ( is_numeric($search) )
+                                       $search_columns = array('user_login', 'ID');
+                               elseif ( preg_match('|^https?://|', $search) && ! wp_is_large_network( 'users' ) )
+                                       $search_columns = array('user_url');
+                               else
+                                       $search_columns = array('user_login', 'user_nicename');
+                       }
 
                        $this->query_where .= $this->get_search_sql( $search, $search_columns, $wild );
                }
 
                        $this->query_where .= $this->get_search_sql( $search, $search_columns, $wild );
                }
@@ -647,7 +652,7 @@ function get_users( $args = array() ) {
  *
  * @param int $user_id User ID
  * @param bool $all Whether to retrieve all blogs, or only blogs that are not marked as deleted, archived, or spam.
  *
  * @param int $user_id User ID
  * @param bool $all Whether to retrieve all blogs, or only blogs that are not marked as deleted, archived, or spam.
- * @return array A list of the user's blogs. False if the user was not found or an empty array if the user has no blogs.
+ * @return array A list of the user's blogs. An empty array if the user doesn't exist or belongs to no blogs.
  */
 function get_blogs_of_user( $user_id, $all = false ) {
        global $wpdb;
  */
 function get_blogs_of_user( $user_id, $all = false ) {
        global $wpdb;
@@ -656,11 +661,11 @@ function get_blogs_of_user( $user_id, $all = false ) {
 
        // Logged out users can't have blogs
        if ( empty( $user_id ) )
 
        // Logged out users can't have blogs
        if ( empty( $user_id ) )
-               return false;
+               return array();
 
        $keys = get_user_meta( $user_id );
        if ( empty( $keys ) )
 
        $keys = get_user_meta( $user_id );
        if ( empty( $keys ) )
-               return false;
+               return array();
 
        if ( ! is_multisite() ) {
                $blog_id = get_current_blog_id();
 
        if ( ! is_multisite() ) {
                $blog_id = get_current_blog_id();
@@ -725,8 +730,8 @@ function get_blogs_of_user( $user_id, $all = false ) {
  * @since MU 1.1
  * @uses get_blogs_of_user()
  *
  * @since MU 1.1
  * @uses get_blogs_of_user()
  *
- * @param int $user_id The unique ID of the user
- * @param int $blog Optional. If no blog_id is provided, current site is used
+ * @param int $user_id Optional. The unique ID of the user. Defaults to the current user.
+ * @param int $blog_id Optional. ID of the blog to check. Defaults to the current site.
  * @return bool
  */
 function is_user_member_of_blog( $user_id = 0, $blog_id = 0 ) {
  * @return bool
  */
 function is_user_member_of_blog( $user_id = 0, $blog_id = 0 ) {
@@ -740,10 +745,7 @@ function is_user_member_of_blog( $user_id = 0, $blog_id = 0 ) {
                $blog_id = get_current_blog_id();
 
        $blogs = get_blogs_of_user( $user_id );
                $blog_id = get_current_blog_id();
 
        $blogs = get_blogs_of_user( $user_id );
-       if ( is_array( $blogs ) )
-               return array_key_exists( $blog_id, $blogs );
-       else
-               return false;
+       return array_key_exists( $blog_id, $blogs );
 }
 
 /**
 }
 
 /**
@@ -793,7 +795,7 @@ function delete_user_meta($user_id, $meta_key, $meta_value = '') {
  * @link http://codex.wordpress.org/Function_Reference/get_user_meta
  *
  * @param int $user_id Post ID.
  * @link http://codex.wordpress.org/Function_Reference/get_user_meta
  *
  * @param int $user_id Post ID.
- * @param string $key The meta key to retrieve.
+ * @param string $key Optional. The meta key to retrieve. By default, returns data for all keys.
  * @param bool $single Whether to return a single value.
  * @return mixed Will be an array if $single is false. Will be value of meta data field if $single
  *  is true.
  * @param bool $single Whether to return a single value.
  * @return mixed Will be an array if $single is false. Will be value of meta data field if $single
  *  is true.
@@ -828,7 +830,7 @@ function update_user_meta($user_id, $meta_key, $meta_value, $prev_value = '') {
  * Count number of users who have each of the user roles.
  *
  * Assumes there are neither duplicated nor orphaned capabilities meta_values.
  * Count number of users who have each of the user roles.
  *
  * Assumes there are neither duplicated nor orphaned capabilities meta_values.
- * Assumes role names are unique phrases.  Same assumption made by WP_User_Query::prepare_query()
+ * Assumes role names are unique phrases. Same assumption made by WP_User_Query::prepare_query()
  * Using $strategy = 'time' this is CPU-intensive and should handle around 10^7 users.
  * Using $strategy = 'memory' this is memory-intensive and should handle around 10^5 users, but see WP Bug #12257.
  *
  * Using $strategy = 'time' this is CPU-intensive and should handle around 10^7 users.
  * Using $strategy = 'memory' this is memory-intensive and should handle around 10^5 users, but see WP Bug #12257.
  *
@@ -855,7 +857,7 @@ function count_users($strategy = 'time') {
                // Build a CPU-intensive query that will return concise information.
                $select_count = array();
                foreach ( $avail_roles as $this_role => $name ) {
                // Build a CPU-intensive query that will return concise information.
                $select_count = array();
                foreach ( $avail_roles as $this_role => $name ) {
-                       $select_count[] = "COUNT(NULLIF(`meta_value` LIKE '%" . like_escape($this_role) . "%', FALSE))";
+                       $select_count[] = "COUNT(NULLIF(`meta_value` LIKE '%\"" . like_escape( $this_role ) . "\"%', false))";
                }
                $select_count = implode(', ', $select_count);
 
                }
                $select_count = implode(', ', $select_count);
 
@@ -883,14 +885,14 @@ function count_users($strategy = 'time') {
                $users_of_blog = $wpdb->get_col( "SELECT meta_value FROM $wpdb->usermeta WHERE meta_key = '{$blog_prefix}capabilities'" );
 
                foreach ( $users_of_blog as $caps_meta ) {
                $users_of_blog = $wpdb->get_col( "SELECT meta_value FROM $wpdb->usermeta WHERE meta_key = '{$blog_prefix}capabilities'" );
 
                foreach ( $users_of_blog as $caps_meta ) {
-                       $b_roles = unserialize($caps_meta);
-                       if ( is_array($b_roles) ) {
-                               foreach ( $b_roles as $b_role => $val ) {
-                                       if ( isset($avail_roles[$b_role]) ) {
-                                               $avail_roles[$b_role]++;
-                                       } else {
-                                               $avail_roles[$b_role] = 1;
-                                       }
+                       $b_roles = maybe_unserialize($caps_meta);
+                       if ( ! is_array( $b_roles ) )
+                               continue;
+                       foreach ( $b_roles as $b_role => $val ) {
+                               if ( isset($avail_roles[$b_role]) ) {
+                                       $avail_roles[$b_role]++;
+                               } else {
+                                       $avail_roles[$b_role] = 1;
                                }
                        }
                }
                                }
                        }
                }
@@ -935,17 +937,17 @@ function setup_userdata($for_user_id = '') {
        $user_ID    = (int) $user->ID;
        $user_level = (int) isset($user->user_level) ? $user->user_level : 0;
 
        $user_ID    = (int) $user->ID;
        $user_level = (int) isset($user->user_level) ? $user->user_level : 0;
 
-       if ( 0 == $user->ID ) {
+       if ( ! $user->exists() ) {
                $user_login = $user_email = $user_url = $user_pass_md5 = $user_identity = '';
                return;
        }
 
                $user_login = $user_email = $user_url = $user_pass_md5 = $user_identity = '';
                return;
        }
 
-       $userdata       = $user;
-       $user_login     = $user->user_login;
-       $user_email     = $user->user_email;
-       $user_url       = $user->user_url;
-       $user_pass_md5  = md5($user->user_pass);
-       $user_identity  = $user->display_name;
+       $userdata   = $user;
+       $user_login = $user->user_login;
+       $user_email = $user->user_email;
+       $user_url   = $user->user_url;
+       $user_pass_md5 = md5( $user->user_pass );
+       $user_identity = $user->display_name;
 }
 
 /**
 }
 
 /**
@@ -974,7 +976,7 @@ function setup_userdata($for_user_id = '') {
  * <li>id - Default is the value of the 'name' parameter. ID attribute of select element.</li>
  * <li>class - Class attribute of select element.</li>
  * <li>blog_id - ID of blog (Multisite only). Defaults to ID of current blog.</li>
  * <li>id - Default is the value of the 'name' parameter. ID attribute of select element.</li>
  * <li>class - Class attribute of select element.</li>
  * <li>blog_id - ID of blog (Multisite only). Defaults to ID of current blog.</li>
- * <li>who - Which users to query.  Currently only 'authors' is supported. Default is all users.</li>
+ * <li>who - Which users to query. Currently only 'authors' is supported. Default is all users.</li>
  * </ol>
  *
  * @since 2.3.0
  * </ol>
  *
  * @since 2.3.0
@@ -1056,17 +1058,12 @@ function wp_dropdown_users( $args = '' ) {
  * when calling filters.
  *
  * @since 2.3.0
  * when calling filters.
  *
  * @since 2.3.0
- * @uses apply_filters() Calls 'edit_$field' and '{$field_no_prefix}_edit_pre' passing $value and
- *  $user_id if $context == 'edit' and field name prefix == 'user_'.
- *
- * @uses apply_filters() Calls 'edit_user_$field' passing $value and $user_id if $context == 'db'.
- * @uses apply_filters() Calls 'pre_$field' passing $value if $context == 'db' and field name prefix == 'user_'.
- * @uses apply_filters() Calls '{$field}_pre' passing $value if $context == 'db' and field name prefix != 'user_'.
- *
+ * @uses apply_filters() Calls 'edit_$field' passing $value and $user_id if $context == 'edit'.
+ *  $field is prefixed with 'user_' if it isn't already.
+ * @uses apply_filters() Calls 'pre_$field' passing $value if $context == 'db'. $field is prefixed with
+ *  'user_' if it isn't already.
  * @uses apply_filters() Calls '$field' passing $value, $user_id and $context if $context == anything
  * @uses apply_filters() Calls '$field' passing $value, $user_id and $context if $context == anything
- *  other than 'raw', 'edit' and 'db' and field name prefix == 'user_'.
- * @uses apply_filters() Calls 'user_$field' passing $value if $context == anything other than 'raw',
- *  'edit' and 'db' and field name prefix != 'user_'.
+ *  other than 'raw', 'edit' and 'db'. $field is prefixed with 'user_' if it isn't already.
  *
  * @param string $field The user Object field name.
  * @param mixed $value The user Object value.
  *
  * @param string $field The user Object field name.
  * @param mixed $value The user Object value.
@@ -1086,11 +1083,7 @@ function sanitize_user_field($field, $value, $user_id, $context) {
        if ( !is_string($value) && !is_numeric($value) )
                return $value;
 
        if ( !is_string($value) && !is_numeric($value) )
                return $value;
 
-       $prefixed = false;
-       if ( false !== strpos($field, 'user_') ) {
-               $prefixed = true;
-               $field_no_prefix = str_replace('user_', '', $field);
-       }
+       $prefixed = false !== strpos( $field, 'user_' );
 
        if ( 'edit' == $context ) {
                if ( $prefixed ) {
 
        if ( 'edit' == $context ) {
                if ( $prefixed ) {
@@ -1147,15 +1140,19 @@ function update_user_caches($user) {
  *
  * @since 3.0.0
  *
  *
  * @since 3.0.0
  *
- * @param int $id User ID
+ * @param WP_User|int $user User object or ID to be cleaned from the cache
  */
  */
-function clean_user_cache($id) {
-       $user = WP_User::get_data_by( 'id', $id );
+function clean_user_cache( $user ) {
+       if ( is_numeric( $user ) )
+               $user = new WP_User( $user );
 
 
-       wp_cache_delete($id, 'users');
-       wp_cache_delete($user->user_login, 'userlogins');
-       wp_cache_delete($user->user_email, 'useremail');
-       wp_cache_delete($user->user_nicename, 'userslugs');
+       if ( ! $user->exists() )
+               return;
+
+       wp_cache_delete( $user->ID, 'users' );
+       wp_cache_delete( $user->user_login, 'userlogins' );
+       wp_cache_delete( $user->user_email, 'useremail' );
+       wp_cache_delete( $user->user_nicename, 'userslugs' );
 }
 
 /**
 }
 
 /**
@@ -1461,7 +1458,6 @@ function wp_create_user($username, $password, $email = '') {
        return wp_insert_user($userdata);
 }
 
        return wp_insert_user($userdata);
 }
 
-
 /**
  * Return a list of meta keys that wp_insert_user() is supposed to set.
  *
 /**
  * Return a list of meta keys that wp_insert_user() is supposed to set.
  *
@@ -1493,5 +1489,3 @@ function _wp_get_user_contactmethods( $user = null ) {
        );
        return apply_filters( 'user_contactmethods', $user_contactmethods, $user );
 }
        );
        return apply_filters( 'user_contactmethods', $user_contactmethods, $user );
 }
-
-?>
index 3b824a959ab23881468d76c74c2676915df3e136..7585793df7ea5594ce41b65fce68a83f2cd423d2 100644 (file)
@@ -98,4 +98,29 @@ $is_IIS = !$is_apache && (strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') !
  */
 $is_iis7 = $is_IIS && (strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS/7.') !== false);
 
  */
 $is_iis7 = $is_IIS && (strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS/7.') !== false);
 
-?>
+/**
+ * Test if the current browser runs on a mobile device (smart phone, tablet, etc.)
+ *
+ * @return bool true|false
+ */
+function wp_is_mobile() {
+       static $is_mobile;
+
+       if ( isset($is_mobile) )
+               return $is_mobile;
+
+       if ( empty($_SERVER['HTTP_USER_AGENT']) ) {
+               $is_mobile = false;
+       } elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false // many mobile devices (all iPhone, iPad, etc.)
+               || strpos($_SERVER['HTTP_USER_AGENT'], 'Android') !== false
+               || strpos($_SERVER['HTTP_USER_AGENT'], 'Silk/') !== false
+               || strpos($_SERVER['HTTP_USER_AGENT'], 'Kindle') !== false
+               || strpos($_SERVER['HTTP_USER_AGENT'], 'BlackBerry') !== false
+               || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mini') !== false ) {
+                       $is_mobile = true;
+       } else {
+               $is_mobile = false;
+       }
+
+       return $is_mobile;
+}
index 67e53dcd0b337fadbd710f1819e48531c777a53a..e65b0c8dc6c22bdb08dbc3d7385e8e4e2bafd5b0 100644 (file)
@@ -4,21 +4,21 @@
  *
  * @global string $wp_version
  */
  *
  * @global string $wp_version
  */
-$wp_version = '3.3.2';
+$wp_version = '3.4';
 
 /**
  * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
  *
  * @global int $wp_db_version
  */
 
 /**
  * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
  *
  * @global int $wp_db_version
  */
-$wp_db_version = 19470;
+$wp_db_version = 20596;
 
 /**
  * Holds the TinyMCE version
  *
  * @global string $tinymce_version
  */
 
 /**
  * Holds the TinyMCE version
  *
  * @global string $tinymce_version
  */
-$tinymce_version = '345-20111127';
+$tinymce_version = '349-20805';
 
 /**
  * Holds the cache manifest version
 
 /**
  * Holds the cache manifest version
index 2dfafcb5da4bc65c26bc876d3fc4b3efb13d8fc7..765bbffcfce17850a80c550a0ec86e7df801d546 100644 (file)
@@ -681,7 +681,6 @@ function wp_sidebar_description( $id ) {
                return esc_html( $wp_registered_sidebars[$id]['description'] );
 }
 
                return esc_html( $wp_registered_sidebars[$id]['description'] );
 }
 
-
 /**
  * Remove widget from sidebar.
  *
 /**
  * Remove widget from sidebar.
  *
@@ -1149,7 +1148,7 @@ function _get_widget_id_base($id) {
  * Handle sidebars config after theme change
  *
  * @access private
  * Handle sidebars config after theme change
  *
  * @access private
- * @since 3.3
+ * @since 3.3.0
  */
 function _wp_sidebars_changed() {
        global $sidebars_widgets;
  */
 function _wp_sidebars_changed() {
        global $sidebars_widgets;
index eb131473304902952b007864f457b57060261f59..98504ee4070c640e95c42f166d1d25baa7a4392d 100644 (file)
@@ -41,4 +41,3 @@
   </buttons>
 
 </manifest>
   </buttons>
 
 </manifest>
-
index e9ada84dcc02b43f8bc7c027c0e07a7ea22bd612..f418745929e79943ab48d10951a2da54b65ad716 100644 (file)
@@ -404,9 +404,10 @@ class wpdb {
         * Keys are column names, values are format types: 'ID' => '%d'
         *
         * @since 2.8.0
         * Keys are column names, values are format types: 'ID' => '%d'
         *
         * @since 2.8.0
-        * @see wpdb:prepare()
-        * @see wpdb:insert()
-        * @see wpdb:update()
+        * @see wpdb::prepare()
+        * @see wpdb::insert()
+        * @see wpdb::update()
+        * @see wpdb::delete()
         * @see wp_set_wpdb_vars()
         * @access public
         * @var array
         * @see wp_set_wpdb_vars()
         * @access public
         * @var array
@@ -573,7 +574,7 @@ class wpdb {
        function set_prefix( $prefix, $set_table_names = true ) {
 
                if ( preg_match( '|[^a-z0-9_]|i', $prefix ) )
        function set_prefix( $prefix, $set_table_names = true ) {
 
                if ( preg_match( '|[^a-z0-9_]|i', $prefix ) )
-                       return new WP_Error('invalid_db_prefix', /*WP_I18N_DB_BAD_PREFIX*/'Invalid database prefix'/*/WP_I18N_DB_BAD_PREFIX*/);
+                       return new WP_Error('invalid_db_prefix', 'Invalid database prefix' );
 
                $old_prefix = is_multisite() ? '' : $prefix;
 
 
                $old_prefix = is_multisite() ? '' : $prefix;
 
@@ -745,14 +746,15 @@ class wpdb {
 
                if ( !@mysql_select_db( $db, $dbh ) ) {
                        $this->ready = false;
 
                if ( !@mysql_select_db( $db, $dbh ) ) {
                        $this->ready = false;
-                       $this->bail( sprintf( /*WP_I18N_DB_SELECT_DB*/'<h1>Can&#8217;t select database</h1>
+                       wp_load_translations_early();
+                       $this->bail( sprintf( __( '<h1>Can&#8217;t select database</h1>
 <p>We were able to connect to the database server (which means your username and password is okay) but not able to select the <code>%1$s</code> database.</p>
 <ul>
 <li>Are you sure it exists?</li>
 <li>Does the user <code>%2$s</code> have permission to use the <code>%1$s</code> database?</li>
 <li>On some systems the name of your database is prefixed with your username, so it would be like <code>username_%1$s</code>. Could that be the problem?</li>
 </ul>
 <p>We were able to connect to the database server (which means your username and password is okay) but not able to select the <code>%1$s</code> database.</p>
 <ul>
 <li>Are you sure it exists?</li>
 <li>Does the user <code>%2$s</code> have permission to use the <code>%1$s</code> database?</li>
 <li>On some systems the name of your database is prefixed with your username, so it would be like <code>username_%1$s</code>. Could that be the problem?</li>
 </ul>
-<p>If you don\'t know how to set up a database you should <strong>contact your host</strong>. If all else fails you may find help at the <a href="http://wordpress.org/support/">WordPress Support Forums</a>.</p>'/*/WP_I18N_DB_SELECT_DB*/, htmlspecialchars( $db, ENT_QUOTES ), htmlspecialchars( $this->dbuser, ENT_QUOTES ) ), 'db_select_fail' );
+<p>If you don\'t know how to set up a database you should <strong>contact your host</strong>. If all else fails you may find help at the <a href="http://wordpress.org/support/">WordPress Support Forums</a>.</p>' ), htmlspecialchars( $db, ENT_QUOTES ), htmlspecialchars( $this->dbuser, ENT_QUOTES ) ), 'db_select_fail' );
                        return;
                }
        }
                        return;
                }
        }
@@ -923,10 +925,12 @@ class wpdb {
                if ( $this->suppress_errors )
                        return false;
 
                if ( $this->suppress_errors )
                        return false;
 
+               wp_load_translations_early();
+
                if ( $caller = $this->get_caller() )
                if ( $caller = $this->get_caller() )
-                       $error_str = sprintf( /*WP_I18N_DB_QUERY_ERROR_FULL*/'WordPress database error %1$s for query %2$s made by %3$s'/*/WP_I18N_DB_QUERY_ERROR_FULL*/, $str, $this->last_query, $caller );
+                       $error_str = sprintf( __( 'WordPress database error %1$s for query %2$s made by %3$s' ), $str, $this->last_query, $caller );
                else
                else
-                       $error_str = sprintf( /*WP_I18N_DB_QUERY_ERROR*/'WordPress database error %1$s for query %2$s'/*/WP_I18N_DB_QUERY_ERROR*/, $str, $this->last_query );
+                       $error_str = sprintf( __( 'WordPress database error %1$s for query %2$s' ), $str, $this->last_query );
 
                if ( function_exists( 'error_log' )
                        && ( $log_file = @ini_get( 'error_log' ) )
 
                if ( function_exists( 'error_log' )
                        && ( $log_file = @ini_get( 'error_log' ) )
@@ -1037,7 +1041,8 @@ class wpdb {
                }
 
                if ( !$this->dbh ) {
                }
 
                if ( !$this->dbh ) {
-                       $this->bail( sprintf( /*WP_I18N_DB_CONN_ERROR*/"
+                       wp_load_translations_early();
+                       $this->bail( sprintf( __( "
 <h1>Error establishing a database connection</h1>
 <p>This either means that the username and password information in your <code>wp-config.php</code> file is incorrect or we can't contact the database server at <code>%s</code>. This could mean your host's database server is down.</p>
 <ul>
 <h1>Error establishing a database connection</h1>
 <p>This either means that the username and password information in your <code>wp-config.php</code> file is incorrect or we can't contact the database server at <code>%s</code>. This could mean your host's database server is down.</p>
 <ul>
@@ -1046,7 +1051,7 @@ class wpdb {
        <li>Are you sure that the database server is running?</li>
 </ul>
 <p>If you're unsure what these terms mean you should probably contact your host. If you still need help you can always visit the <a href='http://wordpress.org/support/'>WordPress Support Forums</a>.</p>
        <li>Are you sure that the database server is running?</li>
 </ul>
 <p>If you're unsure what these terms mean you should probably contact your host. If you still need help you can always visit the <a href='http://wordpress.org/support/'>WordPress Support Forums</a>.</p>
-"/*/WP_I18N_DB_CONN_ERROR*/, htmlspecialchars( $this->dbhost, ENT_QUOTES ) ), 'db_connect_fail' );
+" ), htmlspecialchars( $this->dbhost, ENT_QUOTES ) ), 'db_connect_fail' );
 
                        return;
                }
 
                        return;
                }
@@ -1073,8 +1078,7 @@ class wpdb {
                        return false;
 
                // some queries are made before the plugins have been loaded, and thus cannot be filtered with this method
                        return false;
 
                // some queries are made before the plugins have been loaded, and thus cannot be filtered with this method
-               if ( function_exists( 'apply_filters' ) )
-                       $query = apply_filters( 'query', $query );
+               $query = apply_filters( 'query', $query );
 
                $return_val = 0;
                $this->flush();
 
                $return_val = 0;
                $this->flush();
@@ -1191,7 +1195,7 @@ class wpdb {
         * @see wp_set_wpdb_vars()
         *
         * @param string $table table name
         * @see wp_set_wpdb_vars()
         *
         * @param string $table table name
-        * @param array $data Data to insert (in column => value pairs).  Both $data columns and $data values should be "raw" (neither should be SQL escaped).
+        * @param array $data Data to insert (in column => value pairs). Both $data columns and $data values should be "raw" (neither should be SQL escaped).
         * @param array|string $format Optional. An array of formats to be mapped to each of the value in $data. If string, that format will be used for all of the values in $data.
         *      A format is one of '%d', '%f', '%s' (integer, float, string). If omitted, all values in $data will be treated as strings unless otherwise specified in wpdb::$field_types.
         * @param string $type Optional. What type of operation is this? INSERT or REPLACE. Defaults to INSERT.
         * @param array|string $format Optional. An array of formats to be mapped to each of the value in $data. If string, that format will be used for all of the values in $data.
         *      A format is one of '%d', '%f', '%s' (integer, float, string). If omitted, all values in $data will be treated as strings unless otherwise specified in wpdb::$field_types.
         * @param string $type Optional. What type of operation is this? INSERT or REPLACE. Defaults to INSERT.
@@ -1212,7 +1216,7 @@ class wpdb {
                                $form = '%s';
                        $formatted_fields[] = $form;
                }
                                $form = '%s';
                        $formatted_fields[] = $form;
                }
-               $sql = "{$type} INTO `$table` (`" . implode( '`,`', $fields ) . "`) VALUES ('" . implode( "','", $formatted_fields ) . "')";
+               $sql = "{$type} INTO `$table` (`" . implode( '`,`', $fields ) . "`) VALUES (" . implode( ",", $formatted_fields ) . ")";
                return $this->query( $this->prepare( $sql, $data ) );
        }
 
                return $this->query( $this->prepare( $sql, $data ) );
        }
 
@@ -1234,7 +1238,7 @@ class wpdb {
         * @param array $where A named array of WHERE clauses (in column => value pairs). Multiple clauses will be joined with ANDs. Both $where columns and $where values should be "raw".
         * @param array|string $format Optional. An array of formats to be mapped to each of the values in $data. If string, that format will be used for all of the values in $data.
         *      A format is one of '%d', '%f', '%s' (integer, float, string). If omitted, all values in $data will be treated as strings unless otherwise specified in wpdb::$field_types.
         * @param array $where A named array of WHERE clauses (in column => value pairs). Multiple clauses will be joined with ANDs. Both $where columns and $where values should be "raw".
         * @param array|string $format Optional. An array of formats to be mapped to each of the values in $data. If string, that format will be used for all of the values in $data.
         *      A format is one of '%d', '%f', '%s' (integer, float, string). If omitted, all values in $data will be treated as strings unless otherwise specified in wpdb::$field_types.
-        * @param array|string $where_format Optional. An array of formats to be mapped to each of the values in $where. If string, that format will be used for all of the items in $where.  A format is one of '%d', '%f', '%s' (integer, float, string).  If omitted, all values in $where will be treated as strings.
+        * @param array|string $where_format Optional. An array of formats to be mapped to each of the values in $where. If string, that format will be used for all of the items in $where. A format is one of '%d', '%f', '%s' (integer, float, string). If omitted, all values in $where will be treated as strings.
         * @return int|false The number of rows updated, or false on error.
         */
        function update( $table, $data, $where, $format = null, $where_format = null ) {
         * @return int|false The number of rows updated, or false on error.
         */
        function update( $table, $data, $where, $format = null, $where_format = null ) {
@@ -1268,6 +1272,49 @@ class wpdb {
                return $this->query( $this->prepare( $sql, array_merge( array_values( $data ), array_values( $where ) ) ) );
        }
 
                return $this->query( $this->prepare( $sql, array_merge( array_values( $data ), array_values( $where ) ) ) );
        }
 
+       /**
+        * Delete a row in the table
+        *
+        * <code>
+        * wpdb::delete( 'table', array( 'ID' => 1 ) )
+        * wpdb::delete( 'table', array( 'ID' => 1 ), array( '%d' ) )
+        * </code>
+        *
+        * @since 3.4.0
+        * @see wpdb::prepare()
+        * @see wpdb::$field_types
+        * @see wp_set_wpdb_vars()
+        *
+        * @param string $table table name
+        * @param array $where A named array of WHERE clauses (in column => value pairs). Multiple clauses will be joined with ANDs. Both $where columns and $where values should be "raw".
+        * @param array|string $where_format Optional. An array of formats to be mapped to each of the values in $where. If string, that format will be used for all of the items in $where. A format is one of '%d', '%f', '%s' (integer, float, string). If omitted, all values in $where will be treated as strings unless otherwise specified in wpdb::$field_types.
+        * @return int|false The number of rows updated, or false on error.
+        */
+       function delete( $table, $where, $where_format = null ) {
+               if ( ! is_array( $where ) )
+                       return false;
+
+               $bits = $wheres = array();
+
+               $where_formats = $where_format = (array) $where_format;
+
+               foreach ( array_keys( $where ) as $field ) {
+                       if ( !empty( $where_format ) ) {
+                               $form = ( $form = array_shift( $where_formats ) ) ? $form : $where_format[0];
+                       } elseif ( isset( $this->field_types[ $field ] ) ) {
+                               $form = $this->field_types[ $field ];
+                       } else {
+                               $form = '%s';
+                       }
+
+                       $wheres[] = "$field = $form";
+               }
+
+               $sql = "DELETE FROM $table WHERE " . implode( ' AND ', $wheres );
+               return $this->query( $this->prepare( $sql, $where ) );
+       }
+
+
        /**
         * Retrieve one variable from the database.
         *
        /**
         * Retrieve one variable from the database.
         *
@@ -1278,8 +1325,8 @@ class wpdb {
         * @since 0.71
         *
         * @param string|null $query Optional. SQL query. Defaults to null, use the result from the previous query.
         * @since 0.71
         *
         * @param string|null $query Optional. SQL query. Defaults to null, use the result from the previous query.
-        * @param int $x Optional. Column of value to return.  Indexed from 0.
-        * @param int $y Optional. Row of value to return.  Indexed from 0.
+        * @param int $x Optional. Column of value to return. Indexed from 0.
+        * @param int $y Optional. Row of value to return. Indexed from 0.
         * @return string|null Database query result (as string), or null on failure
         */
        function get_var( $query = null, $x = 0, $y = 0 ) {
         * @return string|null Database query result (as string), or null on failure
         */
        function get_var( $query = null, $x = 0, $y = 0 ) {
@@ -1326,7 +1373,7 @@ class wpdb {
                } elseif ( $output == ARRAY_N ) {
                        return $this->last_result[$y] ? array_values( get_object_vars( $this->last_result[$y] ) ) : null;
                } else {
                } elseif ( $output == ARRAY_N ) {
                        return $this->last_result[$y] ? array_values( get_object_vars( $this->last_result[$y] ) ) : null;
                } else {
-                       $this->print_error(/*WP_I18N_DB_GETROW_ERROR*/" \$db->get_row(string query, output type, int offset) -- Output type must be one of: OBJECT, ARRAY_A, ARRAY_N"/*/WP_I18N_DB_GETROW_ERROR*/);
+                       $this->print_error( " \$db->get_row(string query, output type, int offset) -- Output type must be one of: OBJECT, ARRAY_A, ARRAY_N" );
                }
        }
 
                }
        }
 
@@ -1365,7 +1412,7 @@ class wpdb {
         * @param string $query SQL query.
         * @param string $output Optional. Any of ARRAY_A | ARRAY_N | OBJECT | OBJECT_K constants. With one of the first three, return an array of rows indexed from 0 by SQL result row number.
         *      Each row is an associative array (column => value, ...), a numerically indexed array (0 => value, ...), or an object. ( ->column = value ), respectively.
         * @param string $query SQL query.
         * @param string $output Optional. Any of ARRAY_A | ARRAY_N | OBJECT | OBJECT_K constants. With one of the first three, return an array of rows indexed from 0 by SQL result row number.
         *      Each row is an associative array (column => value, ...), a numerically indexed array (0 => value, ...), or an object. ( ->column = value ), respectively.
-        *      With OBJECT_K, return an associative array of row objects keyed by the value of each row's first column's value.  Duplicate keys are discarded.
+        *      With OBJECT_K, return an associative array of row objects keyed by the value of each row's first column's value. Duplicate keys are discarded.
         * @return mixed Database query results
         */
        function get_results( $query = null, $output = OBJECT ) {
         * @return mixed Database query results
         */
        function get_results( $query = null, $output = OBJECT ) {
@@ -1441,8 +1488,7 @@ class wpdb {
         * @return true
         */
        function timer_start() {
         * @return true
         */
        function timer_start() {
-               $mtime            = explode( ' ', microtime() );
-               $this->time_start = $mtime[1] + $mtime[0];
+               $this->time_start = microtime( true );
                return true;
        }
 
                return true;
        }
 
@@ -1451,13 +1497,10 @@ class wpdb {
         *
         * @since 1.5.0
         *
         *
         * @since 1.5.0
         *
-        * @return int Total time spent on the query, in milliseconds
+        * @return float Total time spent on the query, in seconds
         */
        function timer_stop() {
         */
        function timer_stop() {
-               $mtime      = explode( ' ', microtime() );
-               $time_end   = $mtime[1] + $mtime[0];
-               $time_total = $time_end - $this->time_start;
-               return $time_total;
+               return ( microtime( true ) - $this->time_start );
        }
 
        /**
        }
 
        /**
@@ -1546,16 +1589,7 @@ class wpdb {
         * @return string The name of the calling function
         */
        function get_caller() {
         * @return string The name of the calling function
         */
        function get_caller() {
-               $trace  = array_reverse( debug_backtrace() );
-               $caller = array();
-
-               foreach ( $trace as $call ) {
-                       if ( isset( $call['class'] ) && __CLASS__ == $call['class'] )
-                               continue; // Filter out wpdb calls.
-                       $caller[] = isset( $call['class'] ) ? "{$call['class']}->{$call['function']}" : $call['function'];
-               }
-
-               return join( ', ', $caller );
+               return wp_debug_backtrace_summary( __CLASS__ );
        }
 
        /**
        }
 
        /**
@@ -1569,5 +1603,3 @@ class wpdb {
                return preg_replace( '/[^0-9.].*/', '', mysql_get_server_info( $this->dbh ) );
        }
 }
                return preg_replace( '/[^0-9.].*/', '', mysql_get_server_info( $this->dbh ) );
        }
 }
-
-?>
index ed36ee908ba403a1dba9c89ceac628e6a0ae25e4..052bf133458f5c662fe760e1494ec05f75db88cd 100644 (file)
@@ -202,15 +202,14 @@ class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer {
                $r = '';
 
                // Does the aforementioned additional processing
                $r = '';
 
                // Does the aforementioned additional processing
-               // *_matches tell what rows are "the same" in orig and final.  Those pairs will be diffed to get word changes
+               // *_matches tell what rows are "the same" in orig and final. Those pairs will be diffed to get word changes
                //      match is numeric: an index in other column
                //      match is numeric: an index in other column
-               //      match is 'X': no match.  It is a new row
+               //      match is 'X': no match. It is a new row
                // *_rows are column vectors for the orig column and the final column.
                //      row >= 0: an indix of the $orig or $final array
                //      row  < 0: a blank row for that column
                list($orig_matches, $final_matches, $orig_rows, $final_rows) = $this->interleave_changed_lines( $orig, $final );
 
                // *_rows are column vectors for the orig column and the final column.
                //      row >= 0: an indix of the $orig or $final array
                //      row  < 0: a blank row for that column
                list($orig_matches, $final_matches, $orig_rows, $final_rows) = $this->interleave_changed_lines( $orig, $final );
 
-
                // These will hold the word changes as determined by an inline diff
                $orig_diffs  = array();
                $final_diffs = array();
                // These will hold the word changes as determined by an inline diff
                $orig_diffs  = array();
                $final_diffs = array();
@@ -231,7 +230,7 @@ class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer {
                                        $stripped_diff = strlen(strip_tags( $diff )) * 2 - $stripped_matches;
                                        $diff_ratio = $stripped_matches / $stripped_diff;
                                        if ( $diff_ratio > $this->_diff_threshold )
                                        $stripped_diff = strlen(strip_tags( $diff )) * 2 - $stripped_matches;
                                        $diff_ratio = $stripped_matches / $stripped_diff;
                                        if ( $diff_ratio > $this->_diff_threshold )
-                                               continue; // Too different.  Don't save diffs.
+                                               continue; // Too different. Don't save diffs.
                                }
 
                                // Un-inline the diffs by removing del or ins
                                }
 
                                // Un-inline the diffs by removing del or ins
@@ -241,11 +240,11 @@ class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer {
                }
 
                foreach ( array_keys($orig_rows) as $row ) {
                }
 
                foreach ( array_keys($orig_rows) as $row ) {
-                       // Both columns have blanks.  Ignore them.
+                       // Both columns have blanks. Ignore them.
                        if ( $orig_rows[$row] < 0 && $final_rows[$row] < 0 )
                                continue;
 
                        if ( $orig_rows[$row] < 0 && $final_rows[$row] < 0 )
                                continue;
 
-                       // If we have a word based diff, use it.  Otherwise, use the normal line.
+                       // If we have a word based diff, use it. Otherwise, use the normal line.
                        if ( isset( $orig_diffs[$orig_rows[$row]] ) )
                                $orig_line = $orig_diffs[$orig_rows[$row]];
                        elseif ( isset( $orig[$orig_rows[$row]] ) )
                        if ( isset( $orig_diffs[$orig_rows[$row]] ) )
                                $orig_line = $orig_diffs[$orig_rows[$row]];
                        elseif ( isset( $orig[$orig_rows[$row]] ) )
@@ -260,9 +259,9 @@ class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer {
                        else
                                $final_line = '';
 
                        else
                                $final_line = '';
 
-                       if ( $orig_rows[$row] < 0 ) { // Orig is blank.  This is really an added row.
+                       if ( $orig_rows[$row] < 0 ) { // Orig is blank. This is really an added row.
                                $r .= $this->_added( array($final_line), false );
                                $r .= $this->_added( array($final_line), false );
-                       } elseif ( $final_rows[$row] < 0 ) { // Final is blank.  This is really a deleted row.
+                       } elseif ( $final_rows[$row] < 0 ) { // Final is blank. This is really a deleted row.
                                $r .= $this->_deleted( array($orig_line), false );
                        } else { // A true changed row.
                                $r .= '<tr>' . $this->deletedLine( $orig_line ) . $this->addedLine( $final_line ) . "</tr>\n";
                                $r .= $this->_deleted( array($orig_line), false );
                        } else { // A true changed row.
                                $r .= '<tr>' . $this->deletedLine( $orig_line ) . $this->addedLine( $final_line ) . "</tr>\n";
@@ -288,7 +287,7 @@ class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer {
         */
        function interleave_changed_lines( $orig, $final ) {
 
         */
        function interleave_changed_lines( $orig, $final ) {
 
-               // Contains all pairwise string comparisons.  Keys are such that this need only be a one dimensional array.
+               // Contains all pairwise string comparisons. Keys are such that this need only be a one dimensional array.
                $matches = array();
                foreach ( array_keys($orig) as $o ) {
                        foreach ( array_keys($final) as $f ) {
                $matches = array();
                foreach ( array_keys($orig) as $o ) {
                        foreach ( array_keys($final) as $f ) {
@@ -309,7 +308,7 @@ class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer {
                        if ( isset($orig_matches[$o]) && isset($final_matches[$f]) )
                                continue;
 
                        if ( isset($orig_matches[$o]) && isset($final_matches[$f]) )
                                continue;
 
-                       // First match for these guys.  Must be best match
+                       // First match for these guys. Must be best match
                        if ( !isset($orig_matches[$o]) && !isset($final_matches[$f]) ) {
                                $orig_matches[$o] = $f;
                                $final_matches[$f] = $o;
                        if ( !isset($orig_matches[$o]) && !isset($final_matches[$f]) ) {
                                $orig_matches[$o] = $f;
                                $final_matches[$f] = $o;
@@ -329,7 +328,6 @@ class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer {
                ksort($orig_matches);
                ksort($final_matches);
 
                ksort($orig_matches);
                ksort($final_matches);
 
-
                // Stores rows and blanks for each column.
                $orig_rows = $orig_rows_copy = array_keys($orig_matches);
                $final_rows = array_keys($final_matches);
                // Stores rows and blanks for each column.
                $orig_rows = $orig_rows_copy = array_keys($orig_matches);
                $final_rows = array_keys($final_matches);
@@ -342,18 +340,17 @@ class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer {
 
                        if ( false === $final_pos ) { // This orig is paired with a blank final.
                                array_splice( $final_rows, $orig_pos, 0, -1 );
 
                        if ( false === $final_pos ) { // This orig is paired with a blank final.
                                array_splice( $final_rows, $orig_pos, 0, -1 );
-                       } elseif ( $final_pos < $orig_pos ) { // This orig's match is up a ways.  Pad final with blank rows.
+                       } elseif ( $final_pos < $orig_pos ) { // This orig's match is up a ways. Pad final with blank rows.
                                $diff_pos = $final_pos - $orig_pos;
                                while ( $diff_pos < 0 )
                                        array_splice( $final_rows, $orig_pos, 0, $diff_pos++ );
                                $diff_pos = $final_pos - $orig_pos;
                                while ( $diff_pos < 0 )
                                        array_splice( $final_rows, $orig_pos, 0, $diff_pos++ );
-                       } elseif ( $final_pos > $orig_pos ) { // This orig's match is down a ways.  Pad orig with blank rows.
+                       } elseif ( $final_pos > $orig_pos ) { // This orig's match is down a ways. Pad orig with blank rows.
                                $diff_pos = $orig_pos - $final_pos;
                                while ( $diff_pos < 0 )
                                        array_splice( $orig_rows, $orig_pos, 0, $diff_pos++ );
                        }
                }
 
                                $diff_pos = $orig_pos - $final_pos;
                                while ( $diff_pos < 0 )
                                        array_splice( $orig_rows, $orig_pos, 0, $diff_pos++ );
                        }
                }
 
-
                // Pad the ends with blank rows if the columns aren't the same length
                $diff_count = count($orig_rows) - count($final_rows);
                if ( $diff_count < 0 ) {
                // Pad the ends with blank rows if the columns aren't the same length
                $diff_count = count($orig_rows) - count($final_rows);
                if ( $diff_count < 0 ) {
@@ -427,7 +424,7 @@ class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer {
                // L1-norm of difference vector.
                $difference = array_sum( array_map( array(&$this, 'difference'), $chars1, $chars2 ) );
 
                // L1-norm of difference vector.
                $difference = array_sum( array_map( array(&$this, 'difference'), $chars1, $chars2 ) );
 
-               // $string1 has zero length? Odd.  Give huge penalty by not dividing.
+               // $string1 has zero length? Odd. Give huge penalty by not dividing.
                if ( !$string1 )
                        return $difference;
 
                if ( !$string1 )
                        return $difference;
 
@@ -473,5 +470,3 @@ class WP_Text_Diff_Renderer_inline extends Text_Diff_Renderer_inline {
        }
 
 }
        }
 
 }
-
-?>
index b9ae7e8a0891b06e0ab38158dd2e471b753deb29..600805a2d14019a5041f63db4765273e02b6726e 100644 (file)
@@ -18,7 +18,7 @@
  * @package WordPress
  */
 
  * @package WordPress
  */
 
-/** Define ABSPATH as this files directory */
+/** Define ABSPATH as this file's directory */
 define( 'ABSPATH', dirname(__FILE__) . '/' );
 
 error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR );
 define( 'ABSPATH', dirname(__FILE__) . '/' );
 
 error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR );
@@ -30,7 +30,7 @@ if ( file_exists( ABSPATH . 'wp-config.php') ) {
 
 } elseif ( file_exists( dirname(ABSPATH) . '/wp-config.php' ) && ! file_exists( dirname(ABSPATH) . '/wp-settings.php' ) ) {
 
 
 } elseif ( file_exists( dirname(ABSPATH) . '/wp-config.php' ) && ! file_exists( dirname(ABSPATH) . '/wp-settings.php' ) ) {
 
-       /** The config file resides one level above ABSPATH but is not part of another install*/
+       /** The config file resides one level above ABSPATH but is not part of another install */
        require_once( dirname(ABSPATH) . '/wp-config.php' );
 
 } else {
        require_once( dirname(ABSPATH) . '/wp-config.php' );
 
 } else {
@@ -39,22 +39,23 @@ if ( file_exists( ABSPATH . 'wp-config.php') ) {
 
        // Set a path for the link to the installer
        if ( strpos($_SERVER['PHP_SELF'], 'wp-admin') !== false )
 
        // Set a path for the link to the installer
        if ( strpos($_SERVER['PHP_SELF'], 'wp-admin') !== false )
-               $path = '';
+               $path = 'setup-config.php';
        else
        else
-               $path = 'wp-admin/';
+               $path = 'wp-admin/setup-config.php';
 
 
-       require_once( ABSPATH . '/wp-includes/load.php' );
-       require_once( ABSPATH . '/wp-includes/version.php' );
+       define( 'WPINC', 'wp-includes' );
        define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' );
        define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' );
+       require_once( ABSPATH . WPINC . '/load.php' );
+       require_once( ABSPATH . WPINC . '/version.php' );
+
+       wp_load_translations_early();
        wp_check_php_mysql_versions();
 
        // Die with an error message
        wp_check_php_mysql_versions();
 
        // Die with an error message
-       require_once( ABSPATH . '/wp-includes/class-wp-error.php' );
-       require_once( ABSPATH . '/wp-includes/functions.php' );
-       require_once( ABSPATH . '/wp-includes/plugin.php' );
-       $text_direction = /*WP_I18N_TEXT_DIRECTION*/'ltr'/*/WP_I18N_TEXT_DIRECTION*/;
-       wp_die(sprintf(/*WP_I18N_NO_CONFIG*/"<p>There doesn't seem to be a <code>wp-config.php</code> file. I need this before we can get started.</p> <p>Need more help? <a href='http://codex.wordpress.org/Editing_wp-config.php'>We got it</a>.</p> <p>You can create a <code>wp-config.php</code> file through a web interface, but this doesn't work for all server setups. The safest way is to manually create the file.</p><p><a href='%ssetup-config.php' class='button'>Create a Configuration File</a></p>"/*/WP_I18N_NO_CONFIG*/, $path), /*WP_I18N_ERROR_TITLE*/'WordPress &rsaquo; Error'/*/WP_I18N_ERROR_TITLE*/, array('text_direction' => $text_direction));
+       $die  = __( "There doesn't seem to be a <code>wp-config.php</code> file. I need this before we can get started." ) . '</p>';
+       $die .= '<p>' . __( "Need more help? <a href='http://codex.wordpress.org/Editing_wp-config.php'>We got it</a>." ) . '</p>';
+       $die .= '<p>' . __( "You can create a <code>wp-config.php</code> file through a web interface, but this doesn't work for all server setups. The safest way is to manually create the file." ) . '</p>';
+       $die .= '<p><a href="' . $path . '" class="button">' . __( "Create a Configuration File" ) . '</a>';
 
 
+       wp_die( $die, __( 'WordPress &rsaquo; Error' ) );
 }
 }
-
-?>
\ No newline at end of file
index efd03736552e35f0a6790b6c043f4becbe3d35b1..0b1df6078178d444bda0ec798d6760cd74bfada2 100644 (file)
@@ -39,7 +39,7 @@ if ( force_ssl_admin() && !is_ssl() ) {
  * @param WP_Error $wp_error Optional. WordPress Error Object
  */
 function login_header($title = 'Log In', $message = '', $wp_error = '') {
  * @param WP_Error $wp_error Optional. WordPress Error Object
  */
 function login_header($title = 'Log In', $message = '', $wp_error = '') {
-       global $error, $is_iphone, $interim_login, $current_site;
+       global $error, $interim_login, $current_site, $customize_login;
 
        // Don't index any of these forms
        add_action( 'login_head', 'wp_no_robots' );
 
        // Don't index any of these forms
        add_action( 'login_head', 'wp_no_robots' );
@@ -54,39 +54,53 @@ function login_header($title = 'Log In', $message = '', $wp_error = '') {
        if ( $shake_error_codes && $wp_error->get_error_code() && in_array( $wp_error->get_error_code(), $shake_error_codes ) )
                add_action( 'login_head', 'wp_shake_js', 12 );
 
        if ( $shake_error_codes && $wp_error->get_error_code() && in_array( $wp_error->get_error_code(), $shake_error_codes ) )
                add_action( 'login_head', 'wp_shake_js', 12 );
 
-       ?>
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
-<head>
+       ?><!DOCTYPE html>
+       <html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
+       <head>
        <meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
        <title><?php bloginfo('name'); ?> &rsaquo; <?php echo $title; ?></title>
        <meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
        <title><?php bloginfo('name'); ?> &rsaquo; <?php echo $title; ?></title>
-<?php
+       <?php
+
        wp_admin_css( 'wp-admin', true );
        wp_admin_css( 'colors-fresh', true );
 
        wp_admin_css( 'wp-admin', true );
        wp_admin_css( 'colors-fresh', true );
 
-       if ( $is_iphone ) { ?>
-       <meta name="viewport" content="width=320; initial-scale=0.9; maximum-scale=1.0; user-scalable=0;" />
-       <style type="text/css" media="screen">
-       .login form, .login .message, #login_error { margin-left: 0px; }
-       .login #nav, .login #backtoblog { margin-left: 8px; }
-       .login h1 a { width: auto; }
-       #login { padding: 20px 0; }
-       </style>
-<?php
+       if ( wp_is_mobile() ) { ?>
+               <meta name="viewport" content="width=320; initial-scale=0.9; maximum-scale=1.0; user-scalable=0;" /><?php
        }
 
        }
 
+       if ( $customize_login )
+               wp_enqueue_script( 'customize-base' );
+
        do_action( 'login_enqueue_scripts' );
        do_action( 'login_enqueue_scripts' );
-       do_action( 'login_head' ); ?>
-</head>
-<body class="login">
-<?php   if ( !is_multisite() ) { ?>
-<div id="login"><h1><a href="<?php echo esc_url( apply_filters('login_headerurl', 'http://wordpress.org/') ); ?>" title="<?php echo esc_attr( apply_filters('login_headertitle', __( 'Powered by WordPress' ) ) ); ?>"><?php bloginfo('name'); ?></a></h1>
-<?php   } else { ?>
-<div id="login"><h1><a href="<?php echo esc_url( apply_filters('login_headerurl', network_home_url() ) ); ?>" title="<?php echo esc_attr( apply_filters('login_headertitle', $current_site->site_name ) ); ?>"><span class="hide"><?php bloginfo('name'); ?></span></a></h1>
-<?php   }
+       do_action( 'login_head' );
+
+       if ( is_multisite() ) {
+               $login_header_url   = network_home_url();
+               $login_header_title = $current_site->site_name;
+       } else {
+               $login_header_url   = __( 'http://wordpress.org/' );
+               $login_header_title = __( 'Powered by WordPress' );
+       }
+
+       $login_header_url   = apply_filters( 'login_headerurl',   $login_header_url   );
+       $login_header_title = apply_filters( 'login_headertitle', $login_header_title );
+
+       // Don't allow interim logins to navigate away from the page.
+       if ( $interim_login )
+               $login_header_url = '#';
+
+       ?>
+       </head>
+       <body class="login<?php if ( wp_is_mobile() ) echo ' mobile'; ?>">
+       <div id="login">
+               <h1><a href="<?php echo esc_url( $login_header_url ); ?>" title="<?php echo esc_attr( $login_header_title ); ?>"><?php bloginfo( 'name' ); ?></a></h1>
+       <?php
+
+       unset( $login_header_url, $login_header_title );
 
        $message = apply_filters('login_message', $message);
 
        $message = apply_filters('login_message', $message);
-       if ( !empty( $message ) ) echo $message . "\n";
+       if ( !empty( $message ) )
+               echo $message . "\n";
 
        // In case a plugin uses $error rather than the $wp_errors object
        if ( !empty( $error ) ) {
 
        // In case a plugin uses $error rather than the $wp_errors object
        if ( !empty( $error ) ) {
@@ -119,27 +133,31 @@ function login_header($title = 'Log In', $message = '', $wp_error = '') {
  * @param string $input_id Which input to auto-focus
  */
 function login_footer($input_id = '') {
  * @param string $input_id Which input to auto-focus
  */
 function login_footer($input_id = '') {
-       ?>
+       global $interim_login;
+
+       // Don't allow interim logins to navigate away from the page.
+       if ( ! $interim_login ): ?>
        <p id="backtoblog"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php esc_attr_e( 'Are you lost?' ); ?>"><?php printf( __( '&larr; Back to %s' ), get_bloginfo( 'title', 'display' ) ); ?></a></p>
        <p id="backtoblog"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php esc_attr_e( 'Are you lost?' ); ?>"><?php printf( __( '&larr; Back to %s' ), get_bloginfo( 'title', 'display' ) ); ?></a></p>
-       </div>
+       <?php endif; ?>
 
 
-<?php if ( !empty($input_id) ) : ?>
-<script type="text/javascript">
-try{document.getElementById('<?php echo $input_id; ?>').focus();}catch(e){}
-if(typeof wpOnload=='function')wpOnload();
-</script>
-<?php endif; ?>
+       </div>
 
 
-<?php do_action('login_footer'); ?>
-<div class="clear"></div>
-</body>
-</html>
-<?php
+       <?php if ( !empty($input_id) ) : ?>
+       <script type="text/javascript">
+       try{document.getElementById('<?php echo $input_id; ?>').focus();}catch(e){}
+       if(typeof wpOnload=='function')wpOnload();
+       </script>
+       <?php endif; ?>
+
+       <?php do_action('login_footer'); ?>
+       <div class="clear"></div>
+       </body>
+       </html>
+       <?php
 }
 
 function wp_shake_js() {
 }
 
 function wp_shake_js() {
-       global $is_iphone;
-       if ( $is_iphone )
+       if ( wp_is_mobile() )
                return;
 ?>
 <script type="text/javascript">
                return;
 ?>
 <script type="text/javascript">
@@ -208,7 +226,7 @@ function retrieve_password() {
                $wpdb->update($wpdb->users, array('user_activation_key' => $key), array('user_login' => $user_login));
        }
        $message = __('Someone requested that the password be reset for the following account:') . "\r\n\r\n";
                $wpdb->update($wpdb->users, array('user_activation_key' => $key), array('user_login' => $user_login));
        }
        $message = __('Someone requested that the password be reset for the following account:') . "\r\n\r\n";
-       $message .= network_site_url() . "\r\n\r\n";
+       $message .= network_home_url( '/' ) . "\r\n\r\n";
        $message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n";
        $message .= __('If this was a mistake, just ignore this email and nothing will happen.') . "\r\n\r\n";
        $message .= __('To reset your password, visit the following address:') . "\r\n\r\n";
        $message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n";
        $message .= __('If this was a mistake, just ignore this email and nothing will happen.') . "\r\n\r\n";
        $message .= __('To reset your password, visit the following address:') . "\r\n\r\n";
@@ -239,8 +257,7 @@ function retrieve_password() {
  *
  * @param string $key Hash to validate sending user's password
  * @param string $login The user login
  *
  * @param string $key Hash to validate sending user's password
  * @param string $login The user login
- *
- * @return object|WP_Error
+ * @return object|WP_Error User's database row on success, error object for invalid keys
  */
 function check_password_reset_key($key, $login) {
        global $wpdb;
  */
 function check_password_reset_key($key, $login) {
        global $wpdb;
@@ -264,9 +281,8 @@ function check_password_reset_key($key, $login) {
 /**
  * Handles resetting the user's password.
  *
 /**
  * Handles resetting the user's password.
  *
- * @uses $wpdb WordPress Database object
- *
- * @param string $key Hash to validate sending user's password
+ * @param object $user The user
+ * @param string $new_pass New password for the user in plaintext
  */
 function reset_password($user, $new_pass) {
        do_action('password_reset', $user, $new_pass);
  */
 function reset_password($user, $new_pass) {
        do_action('password_reset', $user, $new_pass);
@@ -341,7 +357,7 @@ if ( isset($_GET['key']) )
        $action = 'resetpass';
 
 // validate action so as to default to the login screen
        $action = 'resetpass';
 
 // validate action so as to default to the login screen
-if ( !in_array($action, array('logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login'), true) && false === has_filter('login_form_' . $action) )
+if ( !in_array( $action, array( 'postpass', 'logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login' ), true ) && false === has_filter( 'login_form_' . $action ) )
        $action = 'login';
 
 nocache_headers();
        $action = 'login';
 
 nocache_headers();
@@ -369,6 +385,21 @@ do_action( 'login_form_' . $action );
 $http_post = ('POST' == $_SERVER['REQUEST_METHOD']);
 switch ($action) {
 
 $http_post = ('POST' == $_SERVER['REQUEST_METHOD']);
 switch ($action) {
 
+case 'postpass' :
+       if ( empty( $wp_hasher ) ) {
+               require_once( ABSPATH . 'wp-includes/class-phpass.php' );
+               // By default, use the portable hash from phpass
+               $wp_hasher = new PasswordHash(8, true);
+       }
+
+       // 10 days
+       setcookie( 'wp-postpass_' . COOKIEHASH, $wp_hasher->HashPassword( stripslashes( $_POST['post_password'] ) ), time() + 864000, COOKIEPATH );
+
+       wp_safe_redirect( wp_get_referer() );
+       exit();
+
+break;
+
 case 'logout' :
        check_admin_referer('log-out');
        wp_logout();
 case 'logout' :
        check_admin_referer('log-out');
        wp_logout();
@@ -536,6 +567,7 @@ case 'login' :
 default:
        $secure_cookie = '';
        $interim_login = isset($_REQUEST['interim-login']);
 default:
        $secure_cookie = '';
        $interim_login = isset($_REQUEST['interim-login']);
+       $customize_login = isset( $_REQUEST['customize-login'] );
 
        // If the user wants ssl but the session is not ssl, force a secure cookie.
        if ( !empty($_POST['log']) && !force_ssl_admin() ) {
 
        // If the user wants ssl but the session is not ssl, force a secure cookie.
        if ( !empty($_POST['log']) && !force_ssl_admin() ) {
@@ -560,7 +592,7 @@ default:
        $reauth = empty($_REQUEST['reauth']) ? false : true;
 
        // If the user was redirected to a secure login form from a non-secure admin page, and secure login is required but secure admin is not, then don't use a secure
        $reauth = empty($_REQUEST['reauth']) ? false : true;
 
        // If the user was redirected to a secure login form from a non-secure admin page, and secure login is required but secure admin is not, then don't use a secure
-       // cookie and redirect back to the referring non-secure admin page.  This allows logins to always be POSTed over SSL while allowing the user to choose visiting
+       // cookie and redirect back to the referring non-secure admin page. This allows logins to always be POSTed over SSL while allowing the user to choose visiting
        // the admin via http or https.
        if ( !$secure_cookie && is_ssl() && force_ssl_login() && !force_ssl_admin() && ( 0 !== strpos($redirect_to, 'https') ) && ( 0 === strpos($redirect_to, 'http') ) )
                $secure_cookie = false;
        // the admin via http or https.
        if ( !$secure_cookie && is_ssl() && force_ssl_login() && !force_ssl_admin() && ( 0 !== strpos($redirect_to, 'https') ) && ( 0 === strpos($redirect_to, 'http') ) )
                $secure_cookie = false;
@@ -572,11 +604,22 @@ default:
        if ( !is_wp_error($user) && !$reauth ) {
                if ( $interim_login ) {
                        $message = '<p class="message">' . __('You have logged in successfully.') . '</p>';
        if ( !is_wp_error($user) && !$reauth ) {
                if ( $interim_login ) {
                        $message = '<p class="message">' . __('You have logged in successfully.') . '</p>';
-                       login_header( '', $message ); ?>
-                       <script type="text/javascript">setTimeout( function(){window.close()}, 8000);</script>
-                       <p class="alignright">
-                       <input type="button" class="button-primary" value="<?php esc_attr_e('Close'); ?>" onclick="window.close()" /></p>
-                       </div></body></html>
+                       login_header( '', $message );
+
+                       if ( ! $customize_login ) : ?>
+                               <script type="text/javascript">setTimeout( function(){window.close()}, 8000);</script>
+                               <p class="alignright">
+                               <input type="button" class="button-primary" value="<?php esc_attr_e('Close'); ?>" onclick="window.close()" /></p>
+<?php          endif;
+
+                       ?></div><?php
+
+                       do_action('login_footer');
+
+                       if ( $customize_login ) : ?>
+                               <script type="text/javascript">setTimeout( function(){ new wp.customize.Messenger({ url: '<?php echo wp_customize_url(); ?>', channel: 'login' }).send('login') }, 1000 );</script>
+<?php          endif; ?>
+                       </body></html>
 <?php          exit;
                }
 
 <?php          exit;
                }
 
@@ -603,7 +646,7 @@ default:
                $errors->add('test_cookie', __("<strong>ERROR</strong>: Cookies are blocked or not supported by your browser. You must <a href='http://www.google.com/cookies.html'>enable cookies</a> to use WordPress."));
 
        // Some parts of this script use the main login form to display a message
                $errors->add('test_cookie', __("<strong>ERROR</strong>: Cookies are blocked or not supported by your browser. You must <a href='http://www.google.com/cookies.html'>enable cookies</a> to use WordPress."));
 
        // Some parts of this script use the main login form to display a message
-       if              ( isset($_GET['loggedout']) && TRUE == $_GET['loggedout'] )
+       if              ( isset($_GET['loggedout']) && true == $_GET['loggedout'] )
                $errors->add('loggedout', __('You are now logged out.'), 'message');
        elseif  ( isset($_GET['registration']) && 'disabled' == $_GET['registration'] )
                $errors->add('registerdisabled', __('User registration is currently not allowed.'));
                $errors->add('loggedout', __('You are now logged out.'), 'message');
        elseif  ( isset($_GET['registration']) && 'disabled' == $_GET['registration'] )
                $errors->add('registerdisabled', __('User registration is currently not allowed.'));
@@ -615,6 +658,8 @@ default:
                $errors->add('registered', __('Registration complete. Please check your e-mail.'), 'message');
        elseif  ( $interim_login )
                $errors->add('expired', __('Your session has expired. Please log-in again.'), 'message');
                $errors->add('registered', __('Registration complete. Please check your e-mail.'), 'message');
        elseif  ( $interim_login )
                $errors->add('expired', __('Your session has expired. Please log-in again.'), 'message');
+       elseif ( strpos( $redirect_to, 'about.php?updated' ) )
+               $errors->add('updated', __( '<strong>You have successfully updated WordPress!</strong> Please log back in to experience the awesomeness.' ), 'message' );
 
        // Clear any stale cookies.
        if ( $reauth )
 
        // Clear any stale cookies.
        if ( $reauth )
@@ -645,6 +690,9 @@ default:
 <?php  } else { ?>
                <input type="hidden" name="redirect_to" value="<?php echo esc_attr($redirect_to); ?>" />
 <?php  } ?>
 <?php  } else { ?>
                <input type="hidden" name="redirect_to" value="<?php echo esc_attr($redirect_to); ?>" />
 <?php  } ?>
+<?php   if ( $customize_login ) : ?>
+               <input type="hidden" name="customize-login" value="1" />
+<?php   endif; ?>
                <input type="hidden" name="testcookie" value="1" />
        </p>
 </form>
                <input type="hidden" name="testcookie" value="1" />
        </p>
 </form>
@@ -691,4 +739,3 @@ if(typeof wpOnload=='function')wpOnload();
 login_footer();
 break;
 } // end action switch
 login_footer();
 break;
 } // end action switch
-?>
index 4ecc9548ef9b22321c6fdaac03fdfa7ea7588ba0..7fc3967b6a74ff7132f5849ce8942a8522435141 100644 (file)
@@ -105,7 +105,7 @@ for ( $i = 1; $i <= $count; $i++ ) {
 
                        // Set the author using the email address (From or Reply-To, the last used)
                        // otherwise use the site admin
 
                        // Set the author using the email address (From or Reply-To, the last used)
                        // otherwise use the site admin
-                       if ( preg_match('/(From|Reply-To): /', $line) )  {
+                       if ( ! $author_found && preg_match( '/^(From|Reply-To): /', $line ) ) {
                                if ( preg_match('|[a-z0-9_.-]+@[a-z0-9_.-]+(?!.*<)|i', $line, $matches) )
                                        $author = $matches[0];
                                else
                                if ( preg_match('|[a-z0-9_.-]+@[a-z0-9_.-]+(?!.*<)|i', $line, $matches) )
                                        $author = $matches[0];
                                else
@@ -114,14 +114,10 @@ for ( $i = 1; $i <= $count; $i++ ) {
                                if ( is_email($author) ) {
                                        echo '<p>' . sprintf(__('Author is %s'), $author) . '</p>';
                                        $userdata = get_user_by('email', $author);
                                if ( is_email($author) ) {
                                        echo '<p>' . sprintf(__('Author is %s'), $author) . '</p>';
                                        $userdata = get_user_by('email', $author);
-                                       if ( empty($userdata) ) {
-                                               $author_found = false;
-                                       } else {
+                                       if ( ! empty( $userdata ) ) {
                                                $post_author = $userdata->ID;
                                                $author_found = true;
                                        }
                                                $post_author = $userdata->ID;
                                                $author_found = true;
                                        }
-                               } else {
-                                       $author_found = false;
                                }
                        }
 
                                }
                        }
 
@@ -161,7 +157,7 @@ for ( $i = 1; $i <= $count; $i++ ) {
                $user = new WP_User($post_author);
                $post_status = ( $user->has_cap('publish_posts') ) ? 'publish' : 'pending';
        } else {
                $user = new WP_User($post_author);
                $post_status = ( $user->has_cap('publish_posts') ) ? 'publish' : 'pending';
        } else {
-               // Author not found in DB, set status to pending.  Author already set to admin.
+               // Author not found in DB, set status to pending. Author already set to admin.
                $post_status = 'pending';
        }
 
                $post_status = 'pending';
        }
 
@@ -226,11 +222,9 @@ for ( $i = 1; $i <= $count; $i++ ) {
                $pop3->reset();
                exit;
        } else {
                $pop3->reset();
                exit;
        } else {
-               echo '<p>' . sprintf(__('Mission complete.  Message <strong>%s</strong> deleted.'), $i) . '</p>';
+               echo '<p>' . sprintf(__('Mission complete. Message <strong>%s</strong> deleted.'), $i) . '</p>';
        }
 
 }
 
 $pop3->quit();
        }
 
 }
 
 $pop3->quit();
-
-?>
diff --git a/wp-pass.php b/wp-pass.php
deleted file mode 100644 (file)
index 556deab..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/**
- * Creates the password cookie and redirects back to where the
- * visitor was before.
- *
- * @package WordPress
- */
-
-/** Make sure that the WordPress bootstrap has run before continuing. */
-require( dirname(__FILE__) . '/wp-load.php');
-
-// 10 days
-setcookie('wp-postpass_' . COOKIEHASH, stripslashes( $_POST['post_password'] ), time() + 864000, COOKIEPATH);
-
-wp_safe_redirect(wp_get_referer());
-exit;
-?>
diff --git a/wp-register.php b/wp-register.php
deleted file mode 100644 (file)
index 0b1a769..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-/**
- * Used to be the page which displayed the registration form.
- *
- * This file is no longer used in WordPress and is
- * deprecated.
- *
- * @package WordPress
- * @deprecated Use wp_register() to create a registration link instead
- */
-
-require('./wp-load.php');
-wp_redirect( site_url('wp-login.php?action=register') );
-exit;
-?>
index 7897e7347831ef9a9c4692f8bf66375a49b61c5e..cb950184f8426d51101e6e21db3f23c3800110db 100644 (file)
@@ -70,6 +70,7 @@ require( ABSPATH . WPINC . '/functions.php' );
 require( ABSPATH . WPINC . '/class-wp.php' );
 require( ABSPATH . WPINC . '/class-wp-error.php' );
 require( ABSPATH . WPINC . '/plugin.php' );
 require( ABSPATH . WPINC . '/class-wp.php' );
 require( ABSPATH . WPINC . '/class-wp-error.php' );
 require( ABSPATH . WPINC . '/plugin.php' );
+require( ABSPATH . WPINC . '/pomo/mo.php' );
 
 // Include the wpdb class and, if present, a db.php database drop-in.
 require_wp_db();
 
 // Include the wpdb class and, if present, a db.php database drop-in.
 require_wp_db();
@@ -81,9 +82,8 @@ wp_set_wpdb_vars();
 // Start the WordPress object cache, or an external object cache if the drop-in is present.
 wp_start_object_cache();
 
 // Start the WordPress object cache, or an external object cache if the drop-in is present.
 wp_start_object_cache();
 
-// Load early WordPress files.
+// Attach the default filters.
 require( ABSPATH . WPINC . '/default-filters.php' );
 require( ABSPATH . WPINC . '/default-filters.php' );
-require( ABSPATH . WPINC . '/pomo/mo.php' );
 
 // Initialize multisite if enabled.
 if ( is_multisite() ) {
 
 // Initialize multisite if enabled.
 if ( is_multisite() ) {
@@ -99,13 +99,12 @@ register_shutdown_function( 'shutdown_action_hook' );
 if ( SHORTINIT )
        return false;
 
 if ( SHORTINIT )
        return false;
 
-// Load the l18n library.
-require( ABSPATH . WPINC . '/l10n.php' );
+// Load the L10n library.
+require_once( ABSPATH . WPINC . '/l10n.php' );
 
 // Run the installer if WordPress is not installed.
 wp_not_installed();
 
 
 // Run the installer if WordPress is not installed.
 wp_not_installed();
 
-
 // Load most of WordPress.
 require( ABSPATH . WPINC . '/class-wp-walker.php' );
 require( ABSPATH . WPINC . '/class-wp-ajax-response.php' );
 // Load most of WordPress.
 require( ABSPATH . WPINC . '/class-wp-walker.php' );
 require( ABSPATH . WPINC . '/class-wp-ajax-response.php' );
@@ -113,6 +112,8 @@ require( ABSPATH . WPINC . '/formatting.php' );
 require( ABSPATH . WPINC . '/capabilities.php' );
 require( ABSPATH . WPINC . '/query.php' );
 require( ABSPATH . WPINC . '/theme.php' );
 require( ABSPATH . WPINC . '/capabilities.php' );
 require( ABSPATH . WPINC . '/query.php' );
 require( ABSPATH . WPINC . '/theme.php' );
+require( ABSPATH . WPINC . '/class-wp-theme.php' );
+require( ABSPATH . WPINC . '/template.php' );
 require( ABSPATH . WPINC . '/user.php' );
 require( ABSPATH . WPINC . '/meta.php' );
 require( ABSPATH . WPINC . '/general-template.php' );
 require( ABSPATH . WPINC . '/user.php' );
 require( ABSPATH . WPINC . '/meta.php' );
 require( ABSPATH . WPINC . '/general-template.php' );
@@ -120,6 +121,7 @@ require( ABSPATH . WPINC . '/link-template.php' );
 require( ABSPATH . WPINC . '/author-template.php' );
 require( ABSPATH . WPINC . '/post.php' );
 require( ABSPATH . WPINC . '/post-template.php' );
 require( ABSPATH . WPINC . '/author-template.php' );
 require( ABSPATH . WPINC . '/post.php' );
 require( ABSPATH . WPINC . '/post-template.php' );
+require( ABSPATH . WPINC . '/post-thumbnail-template.php' );
 require( ABSPATH . WPINC . '/category.php' );
 require( ABSPATH . WPINC . '/category-template.php' );
 require( ABSPATH . WPINC . '/comment.php' );
 require( ABSPATH . WPINC . '/category.php' );
 require( ABSPATH . WPINC . '/category-template.php' );
 require( ABSPATH . WPINC . '/comment.php' );
@@ -237,7 +239,7 @@ $wp_query =& $wp_the_query;
  * @global object $wp_rewrite
  * @since 1.5.0
  */
  * @global object $wp_rewrite
  * @since 1.5.0
  */
-$wp_rewrite = new WP_Rewrite();
+$GLOBALS['wp_rewrite'] = new WP_Rewrite();
 
 /**
  * WordPress Object
 
 /**
  * WordPress Object
@@ -261,15 +263,14 @@ wp_templating_constants(  );
 // Load the default text localization domain.
 load_default_textdomain();
 
 // Load the default text localization domain.
 load_default_textdomain();
 
-// Find the blog locale.
 $locale = get_locale();
 $locale_file = WP_LANG_DIR . "/$locale.php";
 if ( ( 0 === validate_file( $locale ) ) && is_readable( $locale_file ) )
        require( $locale_file );
 $locale = get_locale();
 $locale_file = WP_LANG_DIR . "/$locale.php";
 if ( ( 0 === validate_file( $locale ) ) && is_readable( $locale_file ) )
        require( $locale_file );
-unset($locale_file);
+unset( $locale_file );
 
 // Pull in locale data after loading text domain.
 
 // Pull in locale data after loading text domain.
-require( ABSPATH . WPINC . '/locale.php' );
+require_once( ABSPATH . WPINC . '/locale.php' );
 
 /**
  * WordPress Locale object for loading locale domain date and various strings.
 
 /**
  * WordPress Locale object for loading locale domain date and various strings.
@@ -288,9 +289,6 @@ if ( ! defined( 'WP_INSTALLING' ) || 'wp-activate.php' === $pagenow ) {
 
 do_action( 'after_setup_theme' );
 
 
 do_action( 'after_setup_theme' );
 
-// Load any template functions the theme supports.
-require_if_theme_supports( 'post-thumbnails', ABSPATH . WPINC . '/post-thumbnail-template.php' );
-
 // Set up current user.
 $wp->init();
 
 // Set up current user.
 $wp->init();
 
@@ -323,4 +321,3 @@ if ( is_multisite() ) {
  * @since 3.0.0
  */
 do_action('wp_loaded');
  * @since 3.0.0
  */
 do_action('wp_loaded');
-?>
index 6fa1742f0d891d6ec30e0d34404bfab25b760681..2cd93c82100311e785ec7a94299eba3f511e56a7 100644 (file)
@@ -95,7 +95,7 @@ function show_blog_form($blogname = '', $blog_title = '', $errors = '') {
        <div id="privacy">
         <p class="privacy-intro">
             <label for="blog_public_on"><?php _e('Privacy:') ?></label>
        <div id="privacy">
         <p class="privacy-intro">
             <label for="blog_public_on"><?php _e('Privacy:') ?></label>
-            <?php _e('Allow my site to appear in search engines like Google, Technorati, and in public listings around this network.'); ?>
+            <?php _e( 'Allow search engines to index this site.' ); ?>
             <br style="clear:both" />
             <label class="checkbox" for="blog_public_on">
                 <input type="radio" id="blog_public_on" name="blog_public" value="1" <?php if ( !isset( $_POST['blog_public'] ) || $_POST['blog_public'] == '1' ) { ?>checked="checked"<?php } ?> />
             <br style="clear:both" />
             <label class="checkbox" for="blog_public_on">
                 <input type="radio" id="blog_public_on" name="blog_public" value="1" <?php if ( !isset( $_POST['blog_public'] ) || $_POST['blog_public'] == '1' ) { ?>checked="checked"<?php } ?> />
@@ -218,7 +218,7 @@ function confirm_another_blog_signup($domain, $path, $blog_title, $user_name, $u
        ?>
        <h2><?php printf( __( 'The site %s is yours.' ), "<a href='http://{$domain}{$path}'>{$blog_title}</a>" ) ?></h2>
        <p>
        ?>
        <h2><?php printf( __( 'The site %s is yours.' ), "<a href='http://{$domain}{$path}'>{$blog_title}</a>" ) ?></h2>
        <p>
-               <?php printf( __( '<a href="http://%1$s">http://%2$s</a> is your new site.  <a href="%3$s">Log in</a> as &#8220;%4$s&#8221; using your existing password.' ), $domain.$path, $domain.$path, "http://" . $domain.$path . "wp-login.php", $user_name ) ?>
+               <?php printf( __( '<a href="http://%1$s">http://%2$s</a> is your new site. <a href="%3$s">Log in</a> as &#8220;%4$s&#8221; using your existing password.' ), $domain.$path, $domain.$path, "http://" . $domain.$path . "wp-login.php", $user_name ) ?>
        </p>
        <?php
        do_action( 'signup_finished' );
        </p>
        <?php
        do_action( 'signup_finished' );
@@ -229,13 +229,8 @@ function signup_user($user_name = '', $user_email = '', $errors = '') {
 
        if ( !is_wp_error($errors) )
                $errors = new WP_Error();
 
        if ( !is_wp_error($errors) )
                $errors = new WP_Error();
-       if ( isset( $_POST[ 'signup_for' ] ) )
-               $signup[ esc_html( $_POST[ 'signup_for' ] ) ] = 'checked="checked"';
-       else
-               $signup[ 'blog' ] = 'checked="checked"';
 
 
-       //TODO - This doesn't seem to do anything do we really need it?
-       $signup['user'] = isset( $signup['user'] ) ? $signup['user'] : '';
+       $signup_for = isset( $_POST[ 'signup_for' ] ) ? esc_html( $_POST[ 'signup_for' ] ) : 'blog';
 
        // allow definition of default variables
        $filtered_results = apply_filters('signup_user_init', array('user_name' => $user_name, 'user_email' => $user_email, 'errors' => $errors ));
 
        // allow definition of default variables
        $filtered_results = apply_filters('signup_user_init', array('user_name' => $user_name, 'user_email' => $user_email, 'errors' => $errors ));
@@ -257,10 +252,10 @@ function signup_user($user_name = '', $user_email = '', $errors = '') {
                <?php } elseif ( $active_signup == 'user' ) { ?>
                        <input id="signupblog" type="hidden" name="signup_for" value="user" />
                <?php } else { ?>
                <?php } elseif ( $active_signup == 'user' ) { ?>
                        <input id="signupblog" type="hidden" name="signup_for" value="user" />
                <?php } else { ?>
-                       <input id="signupblog" type="radio" name="signup_for" value="blog" <?php echo $signup['blog'] ?> />
+                       <input id="signupblog" type="radio" name="signup_for" value="blog" <?php checked( $signup_for, 'blog' ); ?> />
                        <label class="checkbox" for="signupblog"><?php _e('Gimme a site!') ?></label>
                        <br />
                        <label class="checkbox" for="signupblog"><?php _e('Gimme a site!') ?></label>
                        <br />
-                       <input id="signupuser" type="radio" name="signup_for" value="user" <?php echo $signup['user'] ?> />
+                       <input id="signupuser" type="radio" name="signup_for" value="user" <?php checked( $signup_for, 'user' ); ?> />
                        <label class="checkbox" for="signupuser"><?php _e('Just a username, please.') ?></label>
                <?php } ?>
                </p>
                        <label class="checkbox" for="signupuser"><?php _e('Just a username, please.') ?></label>
                <?php } ?>
                </p>
@@ -294,7 +289,7 @@ function confirm_user_signup($user_name, $user_email) {
        ?>
        <h2><?php printf( __( '%s is your new username' ), $user_name) ?></h2>
        <p><?php _e( 'But, before you can start using your new username, <strong>you must activate it</strong>.' ) ?></p>
        ?>
        <h2><?php printf( __( '%s is your new username' ), $user_name) ?></h2>
        <p><?php _e( 'But, before you can start using your new username, <strong>you must activate it</strong>.' ) ?></p>
-       <p><?php printf(__( 'Check your inbox at <strong>%1$s</strong> and click the link given.' ),  $user_email) ?></p>
+       <p><?php printf( __( 'Check your inbox at <strong>%s</strong> and click the link given.' ), $user_email ); ?></p>
        <p><?php _e( 'If you do not activate your username within two days, you will have to sign up again.' ); ?></p>
        <?php
        do_action( 'signup_finished' );
        <p><?php _e( 'If you do not activate your username within two days, you will have to sign up again.' ); ?></p>
        <?php
        do_action( 'signup_finished' );
index 737fbcecd5d17145a8647f77b1dbc90cae6df84e..06e47507be221d742765f0463ce7f3fc9cd9f945 100644 (file)
@@ -108,4 +108,3 @@ if ( !empty($tb_url) && !empty($title) ) {
        do_action('trackback_post', $wpdb->insert_id);
        trackback_response(0);
 }
        do_action('trackback_post', $wpdb->insert_id);
        trackback_response(0);
 }
-?>
\ No newline at end of file
index ff7bfcde9e54ddfc14ea2b1b9bd403a21f556c32..2d3822ca511b8513400c0dc73a122c332d4b7593 100644 (file)
@@ -54,9 +54,6 @@ include_once(ABSPATH . 'wp-admin/includes/admin.php');
 include_once(ABSPATH . WPINC . '/class-IXR.php');
 include_once(ABSPATH . WPINC . '/class-wp-xmlrpc-server.php');
 
 include_once(ABSPATH . WPINC . '/class-IXR.php');
 include_once(ABSPATH . WPINC . '/class-wp-xmlrpc-server.php');
 
-// Turn off all warnings and errors.
-// error_reporting(0);
-
 /**
  * Posts submitted via the xmlrpc interface get that title
  * @name post_default_title
 /**
  * Posts submitted via the xmlrpc interface get that title
  * @name post_default_title
@@ -64,47 +61,26 @@ include_once(ABSPATH . WPINC . '/class-wp-xmlrpc-server.php');
  */
 $post_default_title = "";
 
  */
 $post_default_title = "";
 
-/**
- * Whether to enable XMLRPC Logging.
- *
- * @name xmlrpc_logging
- * @var int|bool
- */
-$xmlrpc_logging = 0;
+// Allow for a plugin to insert a different class to handle requests.
+$wp_xmlrpc_server_class = apply_filters('wp_xmlrpc_server_class', 'wp_xmlrpc_server');
+$wp_xmlrpc_server = new $wp_xmlrpc_server_class;
+
+// Fire off the request
+$wp_xmlrpc_server->serve_request();
+
+exit;
 
 /**
  * logIO() - Writes logging info to a file.
  *
 
 /**
  * logIO() - Writes logging info to a file.
  *
- * @uses $xmlrpc_logging
- * @package WordPress
- * @subpackage Logging
+ * @deprecated 3.4.0
+ * @deprecated Use error_log()
  *
  * @param string $io Whether input or output
  * @param string $msg Information describing logging reason.
  *
  * @param string $io Whether input or output
  * @param string $msg Information describing logging reason.
- * @return bool Always return true
  */
  */
-function logIO($io,$msg) {
-       global $xmlrpc_logging;
-       if ($xmlrpc_logging) {
-               $fp = fopen("../xmlrpc.log","a+");
-               $date = gmdate("Y-m-d H:i:s ");
-               $iot = ($io == "I") ? " Input: " : " Output: ";
-               fwrite($fp, "\n\n".$date.$iot.$msg);
-               fclose($fp);
-       }
-       return true;
-}
-
-if ( isset($HTTP_RAW_POST_DATA) )
-       logIO("I", $HTTP_RAW_POST_DATA);
-
-// Make sure wp_die output is XML
-add_filter( 'wp_die_handler', '_xmlrpc_wp_die_filter' );
-
-// Allow for a plugin to insert a different class to handle requests.
-$wp_xmlrpc_server_class = apply_filters('wp_xmlrpc_server_class', 'wp_xmlrpc_server');
-$wp_xmlrpc_server = new $wp_xmlrpc_server_class;
-
-// Fire off the request
-$wp_xmlrpc_server->serve_request();
-?>
\ No newline at end of file
+function logIO( $io, $msg ) {
+       _deprecated_function( __FUNCTION__, '3.4', 'error_log()' );
+       if ( ! empty( $GLOBALS['xmlrpc_logging'] ) )
+               error_log( $io . ' - ' . $msg );
+}
\ No newline at end of file